• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Blogs
  2. Verification
  3. Applying Software-Driven Development Techniques to Testbench…
teamspecman
teamspecman

Community Member

Blog Activity
Options
  • Subscribe by email
  • More
  • Cancel
AF
Specman
debug
e code
Funcional Verification
unit testing
Incisive Enterprise Simulator (IES)

Applying Software-Driven Development Techniques to Testbench Development

9 Apr 2014 • 1 minute read

Over the past couple of years there has been some interest in applying a software development technique called unit testing in the hardware development flow. One of the reasons is that unit tests allow customers to validate their testbench in isolation, enabling very fast and thorough tests. Some customers have developed their own framework to accomplish this testing. In the Incisive 13.2 release, Cadence has introduced this functionality with Specman/e to enable customers to apply the unit test approach to save long simulation times, since they can isolate functions and test them without actually running any simulation, thus improving the testbench quality and potentially reducing the debug time for testbench code more than 30%.

What are unit tests?

-          Simple and directed tests

-          Checks that a feature does something as expected (e.g. a parity calculation method returns the correct parity for a handful of values)

-          Created by the developer that develops/writes the source code

 

What are unit tests used for?

-          To check that the implementation of a small piece of code (e.g. a single method/function) is correct

Some customers may think that unit testing is an extra overhead, and there is little automation for creating test cases. So, why should they develop and use unit tests?

-          Customers can check the implementation of a method that normally takes many simulation cycles in no simulation time (e.g. a complex checking method which requires streams of input, output, and control data). in unit testing, you would provide all the input/output and control data, call the method, and check that is calculates the correct result

-          If other teams reuse code (and this happens a lot with verification code), they can check if the core testbench functions still work, or if something is broken

If you want some more details, have a look at this archived webinar - Testing the Testbench on the e-unit package and/or read the blog on Agile SOC ... Finally... A Reason For Me to Try Specman

Other references worthwhile reviewing are some articles and a unit test framework utility by AgileSOC

Happy testing,


-Hannes Froehlich

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information