The Cadence Academic Network helps build strong relationships between academia and industry, and promotes the proliferation of leading-edge technologies and methodologies at universities renowned for their engineering and design excellence.

A huge knowledge exchange platform for academia to network with industry. We are looking for academic speakers to talk about their research to the industry attendees at the Academic Track at CDNLive EMEA and Silicon Valley.

Specman in Xcelium

Just recently Cadence announced the new superb simulator, Xcelium. Just as Specman was part of the previous simulator, IES, it is now part of Xcelium.

As always, we keep enhancing and developing Specman, and the new Specman release, now part of Xcelium, contains great new capabilities. The focus in the last year was on tools that will enable you, the verification experts, to create easy to use powerful verification environments.

Here are some of the highlights of Specman 16.11 (aka “First Xcelium”).

interface type was added to the e language. e interface is similar to Java interface—an abstract type used to specify a behavior that a component is supposed to implement. Unlike other languages, an e unit implementing an interface does not have to implement all the interface methods. They can be implemented in a later extension, or not implemented at all (error will be issued only if an unimplemented method is being called).

The basic usage of the interface is to standardize the verification environment, as it defines not only what behavior is required, but also the api of the implementation.

For example, one can define the following interface named monitoring. Each unit that declares itself as implementing this interface, is expected to implement its three methods.

In the above code, note how using interface we achieve something similar to multiple inheritance; the abc_monitor inherits a company or project base type (project_abc_base_unit, in this example), and “inherits” the monitoring interface behavior.

With interface, you can implement polymorphism. You can instantiate a list of interfaces - containing all units that implement this interface - and thus activate many interfaces in a loop. The list of the interface can be built in many ways, in this example – each unit that implements the interface, adds itself to the list.

Another great construct that was added to Specman is the table. This is one of my favorites, so I already wrote about it in creating-code-from-tables.

To make a long story short – you can provide input to the verification environment in table format. The table can be written in e files, CSV, and even Excel, meaning that there is no need to “code” the configuration; one can use in the testbench the same excel files written by the manager or the architect. The very basic use model is for defining configuration, but you can use tables to create code that follows any kind of regular pattern. This is a real eye opener experience, do take a look in creating-code-from-tables.

One of the areas of Specman that is keep evolving, is its interface to other tools, languages and platforms.

To improve the interface with SystemC models, we added two types to the e language - numeric,and fixed point.

The numeric is a template of an interface containing all the methods that are needed in order to define a numeric type. numeric_add(), numeric_to_int(), real_to_numeric(), numeric_ipow() , and many more.

As we got a request to implement fixed point in e—we defined this new type using the new numeric template. The fixed point type is implemented in UVM e, as open source, so you can view it and see how you can define any numeric type.

For the UVM-SV and UVM-SC users, we added multi languageEnd of Test synchronization; when running in a multi-language environment, Specman synchronizes with the UVM-SV objection mechanism. The test will stop only when all components, in all languages, have dropped their objections.

As you can see, we enjoy extending e and Specman toolkit, maintaining it the most powerful (not to mention—cool) verification language.