mardi 24 février 2015

A Decade of SystemVerilog: Unifying Design and Verification?

It’s hard for me to believe that SystemVerilog 3.1 was released just over 10 years ago. The 3.1 version added Object-Oriented Programming features for testbench development to a language predominately used for RTL design synthesis. Making debug easier was one of the driving forces in unifying testbench and design features into a single language. The semantics for evaluating expressions and executing statements would be the same in the testbench and design. Setting breakpoints and stepping through the code would be seamless. That should have made it easier for either a verification or a design engineer to understand a complete verification environment. Or maybe it would enable either one to at least understand enough of the environment to isolate a particular problem.
Ten years later, I have yet to see that promise fulfilled. Most design engineers still debug their simulations the same way they debug in the lab: they look at waveforms. During simulation, they rarely look at the design source code, and certainly never look at the testbench code (unless it’s just basic pin wiggling like a waveform). Verification engineers are not much different. They rely on waveform debugging because that is what they were brought up on, and many do not even realize source-level debugging is available to them. However the test/testbench is more like a piece of software than a hardware description, and there are many things about a modern testbench that is difficult to display in a waveform (e.g. call stacks, local variables, and random constraints). And methodologies like the UVM add many layers of source-level complexity that most users do not have the time to wade through.

UVM 1.2: Open Public Review

UVM 1.2 Release is Imminent

As vice chair of DVCon 2014, I can share with you that the Universal Verification Methodology (UVM) remains a topic of great interest. It sets the pace for tutorials and given the pending release by Accellera, learning what is new in UVM 1.2 is a compelling reason to attend DVCon.
The Accellera Day tutorial series on Monday at DVCon is popular with UVM being a session of great interest. Aside from the “verification crisis” driving the need to explore this industry standard, the first major update is also a reason to generate this interest. The UVM tutorial is meant for the novice and expert alike. UVM experts can expect to walk away with more information on the new UVM 1.2 features and how they might plan to deploy them.
Naturally, I suggest you consider registering for the conference to attend this tutorial. (There are still a few seats left; but you will need to hurry!)

UVM Working Group Discussions

As a member of the Accellera UVM Working Group, I have asked the team to consider adopting the SystemC development scheme of an open public review of a pending release of open source code. While the merger of OSCI and Accellera to form Accellera Systems Initiative inherited the OSCI style of public review, Accellera has not fully embraced it for all its projects.
In a disclosure of a bit of insider conversation I had with the UVM WG this last week, I asked the group to confirm that we were going to bypass the “official” public review option and go to an internal 30-day review cycle only – then release to the public. While the conclusion was to stay on the 30-day internal review path, the group also noted that one who may be familiar with Git might be able to locate the source code (and many have) and do testing.
Since the bleeding-edge users know they can access as it is being developed, why not share the Git commands for everyone to gain access? So the group has done just this. When last minute changes for Release Candidate 4 were put in place, the Git script to offer access for early review was shared publicly. You can find can find this public message here, thanks to UVM WG member Adiel Khan (from Synopsys).
If you are a seasoned UVM user and are attending DVCon the week of March 3rd, I would encourage you to do some testing now so you can connect with the developers first hand. And even if you are not attending DVCon but want to migrate to UVM 1.2, you might want to get an early start to determine what you might need to do to adopt this release.
If you are not going to attend the DVCon UVM tutorial and want a short update on what this version will offer, the UVM WG secretary, Adam Sherer (from Cadence), put together a brief slide set that he presented at the TVS DVClub event in September 2013 that you can download. You may find it a useful companion to the download of the open source code.
Even if you are not attending DVCon, the adoption of UVM is globally substantial and it might be good to reflect on the need for broader testing. In the first releases of UVM, this may not have been as important as few were using it and the number of tests limited to the main developers. However, as its popularity has grown and adoption increased, it is probably a good idea for the Accellera UVM Working Group to consider the impact of a new release on teams actively using it now. While the UVM WG drives to closure on its release candidate and the UVM 1.2 standard, you are offered the opportunity to give us feedback. For those who have time, please do!

Mentor Commentary on Standards Development

Lastly, for those attending DVCon, check out our own Tom Fitzpatrick’s Wednesday morning paper – Of Camels and Committees: Standards Should Enable Innovation, Not Strangle It. His commentary on the development process may shed some additional light into how technology additions, changes and enhancements are judged for inclusion in updates to standards, like UVM

Accellera Approves UVM 1.2

Accellera has announced the completion of a multi-year effort to update its latest edition of the Universal Verification Methodology (UVM). In completing this effort, the UVM 1.2 Class Reference Document was approved as an Accellera standard and the UVM Working Group has supplied an accompanying open-source reference implementation. Questa supports UVM 1.2.
In addition to the resources you can download from Accellera, additional information on UVM 1.2 can be found at the Verification Academy. HTML documentation can easily be found at the Verification Academy too.
If you are a user of UVM 1.1 and have not been part of the UVM 1.2 development effort, you should know your peers have been busy the past few years since the stabilization and completion of UVM 1.1 to drive global adoption of UVM and to add, enhance and extend UVM. In UVM 1.2 Messaging is now object-oriented, Sequences can automatically raise and drop objects, the register layer can now control transaction order within bursts and numerous bugs in UVM 1.1 have been fixed to improve quality.

Backward Incompatibility

All these changes come with a cost to the current UVM 1.1 user community. When Accellera announced UVM 1.2 availability, it also disclosed some of the new features introduce backward incompatibility. To reduce those issues, Accellera is making release notes and a one way conversion script part of the UVM 1.2 kit to ease the migration path forward.
If you follow the Verification Academy Cookbook rules, you will probably not see any impact from the backward compatibility issues. And if you control your total verification environment, you will probably find it simpler to migrate forward as well. Those who depend on outside resources will need to make sure those resources (like Verification IP) migrate forward to UVM 1.2 so you can migrate forward to UVM 1.2. Mixing UVM 1.1 and UVM 1.2 was not considered by the Accellera UVM Working Group and is fraught with unknown issues. We consider the migration an all or nothing proposition. If you have multi-division, multi-company projects underway, it would be prudent to plan you move to UVM 1.2 with care at the conclusion of projects and when all suppliers and participating teams can migrate to UVM 1.2.

Public Review Period

Accellera seeks your input and feedback on UVM 1.2. To support this, a public review forum on the Accellera website has been established to allow users to catalog issues, ask questions and generally offer feedback to help improve UVM 1.2 quality.
The public review process will end on October 1, 2014. We encourage users to take the time now to test UVM 1.2 in their own environments and share their feedback to expidite the migration to UVM 1.2.

Path to IEEE

Public feedback will be taken into account along with further Accellera member testing to update UVM 1.2 prior to a committed hand-off to the IEEE for further standardization there later this year. As this path unfolds, I will share updates on the standardization effort in the IEEE.

Verification Academy DAC 2014 UVM 1.2 Presentation

You will find many resources around the world on UVM 1.2. At DAC 2014, the Verification Academy booth sponsored a session on UVM 1.2 titled “UVM: What’s New, What’s Next, and Why You Care.” If you did not attend DAC, you can still download the presentation and watch a video replay of it if you are a Verification Academy “full access” member (free registration required; restrictions apply).
The presentation by Tom Fitzpatrick goes into detail on the UVM 1.2 topic. Importantly in Tom’s presentation is a discussion about what you should care about today. You may find that software is a big issue and that his thesis challenges one to ask if UVM 1.2 is stuck in the past rather than addressing what should be addressed next. I invite you to download the presentation and watch the video and share with me your thoughts. What do you think?

jeudi 15 septembre 2011

Microsoft présente une première version de Windows 8

La prochaine mouture de Windows, numérotée 8, a été dévoilée hier à la conférence des développeurs Build. Elle se fait remarquer par une double interface, l'une traditionnelle, semblable au bureau de Windows 7, pour les applications classiques sur ordinateurs de bureau, et l'autre fortement inspirée des appareils mobiles, donc de Windows Phone 7, prévue surtout pour les tablettes. Le nouveau système Windows acceptera les commandes provenant de surfaces tactiles, de stylos ou de la reconnaissance de gestes, comme sur le boîtier Kinect.
Microsoft a vanté mardi la versatilité de son prochain système d'exploitation Windows 8, qui pourra aussi bien faire fonctionner des ordinateurs que des tablettes, afin de mieux rivaliser avec l'iPad d'Apple. « Windows 8 fonctionne magnifiquement sur toute une gamme d'appareils, des tablettes aux ordinateurs portables de 10 pouces (25 cm de diagonale) et jusqu'aux ordinateurs tout-en-un avec des écrans haute définition de 27 pouces », s'est autofélicité le président de la division Windows de Microsoft, Steven Sinofsky, durant la conférence Build, destinée aux développeurs.
Le système doit notamment permettre de faire fonctionner plusieurs applications ensemble et de synchroniser les dossiers entre plusieurs appareils. En guise d'illustration, Steven Sinofsky s'est fait prendre en photo par une caméra montée sur ordinateur, et le cliché est apparu sur une tablette.
Une version encore expérimentale
Le géant de Redmond (État de Washington, nord-ouest des États-Unis) a offert des prototypes de tablettes aux 5.000 participants à la conférence afin qu'ils puissent commencer à travailler sur ce programme. Les développeurs ne participant pas à l'événement pourront télécharger une version préliminaire de Windows 8 disponible depuis cette nuit.
Steven Sinofsky a souligné qu'il s'agissait d'une version expérimentale, et pas d'un programme fini destiné à être diffusé en l'état auprès du grand public, et il s'est refusé à évoquer une date de lancement. « Nous nous laissons guider par la qualité, pas par le calendrier, et pour l'instant nous nous concentrons sur les applications », a-t-il dit.

dimanche 11 septembre 2011

Calypto Design Systems Acquires Mentor Catapult C Synthesis Tool



SANTA CLARA, Calif. August 26, 2011 – Calypto Design Systems today announced it has acquired Catapult C Synthesis from Mentor Graphics Corporation (NASDAQ: MENT). The merger of two market-leading electronic system level (ESL) products, Catapult C Synthesis and Calypto SLEC System-HLS verification tool, will create a better integrated ESL hardware realization flow, and enhance the company’s partnership with Mentor Graphics, a leader in ESL technology. Terms of the transaction were not disclosed.
”ESL synthesis offers our design community the next great leap in productivity. Much like the move to RTL years ago, the move to higher levels of abstraction based on C and SystemC offers the promise of better quality of results in a shorter amount of time. By combining the market leading products in C synthesis, sequential verification, and power optimization within Calypto, we will be the only company capable of delivering a fully integrated flow, and delivering on that promise of ESL,” said Doug Aitelli, Chief Executive Officer of Calypto Design Systems. “In addition, we remain fully committed to our existing high level synthesis partnerships and to industry-wide interoperability.”
“This is a great deal for Calypto,” said Gary Smith, Chief Analyst at GSEDA. “They are clearly one of the companies on the rise in ESL, and this gives them the chance to offer a compelling power-optimized C to RTL flow if they can integrate all the pieces.”
ESL methods allow designers to work at a higher level of abstraction, greatly reducing errors and allowing greater optimization of integrated circuits (IC) in key attributes like speed and power. To adopt ESL methods, designers need to have confidence that tools, as they translate from the higher level of abstraction to lower levels, don’t introduce errors. Typically, designers have used extensive RTL verification to ensure that no errors have been introduced.
SLEC System-HLS uniquely addresses this challenge with C to RTL formal equivalence checking using patented sequential analysis technology to create an easy to use synthesis and verification flow environment. Designers can perform comprehensive functional verification using SLEC System‐HLS to formally verify equivalence between SystemC ESL models and RTL implementations. This leads to up to 100x speed up times in RTL verification as it removes the need for significant and time consuming RTL simulation to validate that the RTL matches the C or SystemC source. Tight integration between Calypto’s SLEC System-HLS and Catapult C Synthesis will give designers confidence that the IC they designed in C or SystemC is the IC that is being delivered in RTL.
Additionally, the PowerPro SoC Power Reduction Platform can do RTL level power optimizations. Added to the Catapult C Synthesis and SLEC System-HLS hardware realization flow, this allows designers to swiftly go from C and System C designs to power-optimized RTL.
“We remain deeply committed to ESL. We view this transaction as an innovative way to accelerate adoption of ESL methodologies, to strengthen our partnership with Calypto, and as one that complements our continued investment in ESL virtual prototyping environments led by our Vista product,” said Brian Derrick, vice president of marketing at Mentor Graphics. “Calypto’s Sequential Logic Equivalency Checker is a critical and unique technology for enabling the adoption of ESL. Its combination with the market-leading Catapult C Synthesis product and the PowerPro SoC Power Reduction Platform, should give designers the confidence to adopt ESL methods and enjoy the significant benefits that designing at higher levels of abstraction brings.”
Current customers of the Mentor Graphics Catapult C Synthesis tool will continue to be supported by Mentor Graphics. Moving forward, any new customer sales and support will be supplied by Calypto.

About Calypto Design Systems
Calypto Design Systems, Inc. empowers designers to create high‐quality, low-power electronic systems by providing best‐in‐class power optimization and functional verification software, based on its patented Sequential Analysis Technology. Calypto, whose customers include Fortune 500 companies worldwide, is a member of the Cadence Connections program, the IEEE‐SA, Synopsys SystemVerilog Catalyst Program, the Mentor Graphics OpenDoor program, Si2, ARM Connected Community and is an active participant in the Power Forward Initiative. Calypto has offices in Europe, India, Japan and North America. More information can be found at: www.calypto.com.

Calypto Joins ARM Connected Community

SANTA CLARA, Calif., – July 20, 2011 -- Calypto® Design Systems, Inc., the leader in Sequential Analysis Technology, today announced it is a new member in the ARM® Connected Community, the industry’s largest ecosystem of ARM technology-based products and services. As part of the ARM Connected Community, Calypto gains access to a full range of resources to help it market and deploy innovative design platforms that enable developers to get ARM Powered® products to market faster.
Calypto’s SLEC® (Sequential Logic Equivalence Checking) and PowerPro® platforms are used by seven out of the top ten semiconductor companies and most leading consumer electronics companies. Calypto’s products enable electronic designers, including ARM customers, to dramatically improve design quality and reduce power consumption of their system-on-chip (SOC) devices.
“Our products help engineers improve the quality of their ARM hardening flow in two ways,” said Doug Aitelli, Chief Executive Officer at Calypto. “PowerPro reduces the power of the ARM processor and surrounding SOC, and SLEC provides a comprehensive formal verification of the RTL to make sure that no functional errors were introduced during the ARM hardening process. This verification eliminates the need to redesign testbenches and rerun exhaustive simulations, enabling ARM customers to tapeout SOCs with ARM intellectual property faster. As a member of the ARM Connected Community, we now have the opportunity to extend our reach and add value to more of ARM’s customers.”
 “The Connected Community is all about companies working together to provide the most complete solutions in the shortest possible time. By joining the Community, which now comprises more than 850 companies, Calypto increases the large portfolio of skills, products and services that are centered around the ARM architecture, and currently available to developers worldwide,” said Lori Kate Smith, Senior Manager Community Programs for ARM.
Calypto Verification and Power Consumption Benefits for ARM Connected Community
PowerPro CG is used to help ARM’s Connected Community reduce the power consumption of their ARM processors or the surrounding SOC design. Using Calypto’s patented Sequential Analysis Technology, PowerPro CG (Clock Gating) analyzes the design intent of the ARM processor and derives areas where additional clock gating can be implemented or improved. PowerPro then can be used to automatically or manually reduce the power consumption, and SLEC formally verifies the result. In addition, PowerPro MG (Memory Gating) reduces power in the memory sections of a design, creating controllers to shut off the memories for longer period of times. This saves dynamic power, through gating of the memory enable, or leakage power, through activation of light sleep mode.
About the ARM Connected Community
The ARM Connected Community is a global network of companies aligned to provide a complete solution, from design to manufacture and end use, for products based on the ARM architecture. ARM offers a variety of resources to Community members, including promotional programs and peer-networking opportunities that enable a variety of ARM Partners to come together to provide end-to-end customer solutions. Visitors to the ARM Connected Community have the ability to contact members directly through the website.
For more information about the ARM Connected Community, please visit http://cc.arm.com.
About Calypto
Calypto Design Systems, Inc. empowers designers to create high‐quality, low-power electronic systems by providing best‐in‐class power optimization and functional verification software, based on its patented Sequential Analysis Technology. Calypto, whose customers include Fortune 500 companies worldwide, is a member of the Cadence Connections program, the IEEE‐SA, Synopsys SystemVerilog Catalyst Program, the Mentor Graphics OpenDoor program, Si2 and is an active participant in the Power Forward Initiative.
Calypto has offices in Europe, India, Japan and North America.
More information can be found at: www.calypto.com.

TLM 2.0, UVM 1.0 and Functional Verification


The DVCon 2011 conference was held this week and the Accellera Universal Verification Methodology (UVM) 1.0 release is breaking records in term of interest and attendance.  UVM 1.0 is a big deal(!) The core functionality is solid and ready for deployment.  Accellera held a full day tutorial on UVM 1.0 on Monday.  And during a panel discussion on Tuesday afternoon, AMD and Intel announced that they are in the process of adopting it.

TLM 1.0 ports were heavily used in OVM and in UVM 1.0EA (Early Adopter). The UVM 1.0 release adds a partial SystemVerilog implementation of the Open SystemC Initiative TLM 2.0 capabilities. At DVCon John Aynsley, author of TLM 2.0 spec, did a great introduction of TLM 1.0 and TLM 2.0 concepts and capabilities (one of the best I’ve seen so far for TLM). Later he moved on to UVM TLM implementation both in terms of TLM 1.0 and TLM 2.0, covering the benefits and contrasting it with the OSCI SystemC capabilities. His slide is shown below:

 

The TLM2.0 standard was created for modeling memory-mapped buses in SystemC.  Most of the DVCon discussion was devoted to the concepts of TLM 2.0, with a rich (or complex) set of capabilities. For example sockets and interfaces, blocking and non-blocking transports, the generic payload, hierarchical connection, temporal decoupling and more were covered. The main questions asked were: How much of this is relevant to functional verification and, specifically, UVM environments? What do I need to do differently in a UVM verification environment to leverage the TLM 2.0 potential?

Let’s start by focusing on agents that reside within an interface UVC.  As you can see below, monitors contain analysis ports. The monitor does interface level coverage and checking, and distributes events and monitored information to the sequencer, scoreboard, and other components. Obviously, there is nothing different in UVM from OVM to replace this kind of distributed one-to-many  communication. While this is trivial, this brings us to Guideline # 1: In the monitor, keep using the analysis port.

 


Another communication channel is needed between the sequencer that creates transactions and the driver that sends these to the Device Under Test (DUT). What we have in UVM (introduced in OVM) is a producer/consumer port (uvm_seq_item_pull_port) that has the needed API and hides the actual channels (TLM or others) from the implementation. I know that there was not always an agreement on this by all vendors, but Cadence was constantly recommending users to use this abstract layer, as opposed to the direct TLM ports.  TLM 2.0 sockets do not solve all the communication requirements between the sequencer and the driver (for example try_next_item semantic is hard to resolve in either TLM 1.0 or TLM 2.0).

Also, as was mentioned in the Accellera tutorial, the multi-language support is not solved with UVM 1.0 yet -- and for now, this is a vendor specific implementation. This is a great time to re-iterate our existing recommendation:  Guideline #2:  For sequencer-driver communication, use the abstract producer/consumer ports in your code and avoid using the TLM connections directly. This will keep your code forward compatible with existing or future solutions that the implementation uses (we might need extensions to facilitate cross language communication).  Usage of the high-level functions also allow us, the library developers to add more functionality on get_next_item() and iten_done() calls.  

Another communication layer you may need is for stimuli protocol layering. There are multiple ways to implement layering, but Guideline #2 is valid for this use case as well, where one downstream component need to pull items from a different component. If you stick with the abstract API of the producer/consumer port, you are going to keep your environment safe as we take the liberty of improving the communication facilities for you.

Let’s review other benefits of the TLM 2.0 and the value that they can provide to the verification environment. Again, I include John Aynsley’s slide covering the benefits of TLM 2.0 below. See also my analysis for the individual potential benefits.

 

Let’s review the “value” of these benefits in the context of verification:
  • Isn’t TLM 2.0 pass-by-reference capability faster than TLM 1.0, which is is critical for speed?  Indeed, pass by reference is critical for speed and memory usage, but the TLM 1.0 implementation in UVM does not copy by value, so no speed advantages are expected from adopting TLM2.0.
  • What about TLM 2.0 support for timing and phases? TLM 2.0 allows defining the transaction status and phases as part of the transaction. NOTE – This is unrelated to UVM phases. This might be a consideration for UVM. I will argue that the timing and status are more important in verification context for the analysis ports and monitors, as this is the channel that is used for such introspection. This can be considered in the next version of the UVM library as part of replacing the underlying implementation of the producer/consumer ports. In general timing annotation in TLM2.0 is complex especially as it is related to “temporal decoupling.” These are too difficult to be used with little return on investment.
  • A well defined completion model? We need to think of a use case for this … As we listed all the communication use cases for verification, we could not map this one into a mainstream functional verification need.
  • What about the generic payload (GP)? The generic payload is a standard abstract data type that includes typical attributes of memory mapped busses. For example it includes attributes like command, address, data, byte enable and more. An array of extensions exists to enhance this layer with protocol-specific attributes (for example, an AXI transaction defines attributes such as cacheable privileges that are not part of the generic payload definition) .  The generic payload can be used to create protocol independent sequences that can be layered on top of any bus. It is also useful as you communicate to a very abstract model, in early design model before the actual protocols have been decided upon and should be united at some point with the register operation. The generic payload usage does not replace the existing protocol specific sequencer. It also does not lend itself nicely to sequences and randomization as it is hard to constrain the extensions that are stored as array items. To put things in the right perspective, we find the generic payload a good addition to UVM . We used it as part of the Cadence ESL solution and will be happy to share more of our recommendation on the correct usage of the generic payload class. Guideline #3:  check if and how usage of GP can help your specific verification challenges.
  • What about the multi-language potential of TLM 2.0? OSCI TLM 2.0, as specified, is a C++ standard. Portions of it cannot be implemented in SystemVerilog nor does it enable or simplify multi-language communication (in fact passing by reference makes it more challenging to support than TLM 1.0). However, what we hear from users is that communicating to high-level models that use TLM 2.0 interfaces is the main requirement of TLM 2.0, which involves multi-language support. As officially stated multiple times in the Accellera tutorial, the multi-language transaction level communication support is not part of the standard library and was left for the individual vendors to support. This will be tricky for users who would like to keep their testbench  vendor-independent. Guideline #4:  Remember that the current UVM TLM 2.0 multi-language support is not part of the standard library and may lock you to a specific vendor and implementation.

To solve this main TLM2.0 requirement, Cadence is working within IEEE 1800 committee to propose extending the DPI to handle passing of objects between different object-oriented languages. Requirements such as passing items by reference or querying hierarchy and others that are not part of TLM 2.0 will be standardized as language features and will hopefully be supported by all vendors. Cadence is working with multiple users that ask for this solution. If you wish to support this effort follow Guideline #5: Join a standardization body or encourage your vendor to support standard multi-language communication  :-)
Summary of recommendations regarding TLM2.0 and verification:

Guideline #1:  In the monitor, keep using the analysis port.
Guideline #2: 
Use the abstract producer/consumer ports in your code and avoid using the TLM connections directly.
Guideline #3: 
Check if and how usage of GP can help your specific verification challenges.
Guideline #4: 
Remember that the current UVM TLM2.0 multi-language support is not part of the standard library and may lock you to a specific vendor and implementation.
Guideline #5:
Join a standardization body or encourage your vendor to support standard multi-language communication.

In summary, if you find the TLM 2.0 extensions to UVM to be complex, don't worry, you don't really need to bother with them.  You will probably find the TLM 1.0 communication more than sufficient for most of your testbench development needs.  You might find the Generic Payload useful for abstract modeling of transactions, and you can easily adopt GP without worrying about the rest of the TLM 2.0 complexity.  The main requirement for verifying/integrating SystemC TLM 2.0 models with a SystemVerilog testbench is not yet part of the UVM standard, so we invite you to join the effort to standardize a solution for this problem.