Intelligent verification

Intelligent Verification, including intelligent testbench automation, is a form of functional verification of electronic hardware designs used to verify that a design conforms to specification before device fabrication. Intelligent verification uses information derived from the design and specification(s) to expose bugs in and between hardware IP's. Intelligent verification tools require considerably less engineering effort and user guidance to achieve verification results that meet or exceed the standard approach of writing a testbench program.

The first generation of intelligent verification tools optimized one part of the verification process known as Regression testing with a feature called automated coverage feedback. With automated coverage feedback, the test description is automatically adjusted to target design functionality that has not been previously verified (or "covered") by other tests existing tests. A key property of automated coverage feedback is that, given the same test environment, the software will automatically change the tests to improve functional design coverage in response to changes in the design.

Newer intelligent verification tools are able to derive the essential functions one would expect of a testbench (stimulus, coverage, and checking) from a single, compact, high-level model. Using a single model that represents and resembles the original specification greatly reduces the chance of human error in the testbench development process that can lead to both missed bugs and false failures.

Other properties of intelligent verification may include:

  • Providing verification results on or above par with a testbench program but driven by a compact high-level model
  • Applicability to all levels of simulation to decrease reliance on testbench programs
  • Eliminating opportunities for programming errors and divergent interpretations of the specification, esp. between IP and SoC teams
  • Providing direction as to why certain coverage points were not detected.
  • Automatically tracking paths through design structure to coverage points, to create new tests.
  • Ensuring that various aspects of the design are only verified once in the same test sets.
  • Scaling the test automatically for different hardware and software configurations of a system.
  • Support for different verification methodologies like constrained random, directed, graph-based, use-case based in the same tool.

"Intelligent Verification" uses existing logic simulation testbenches, and automatically targets and maximizes the following types of design coverage:

  • Code coverage
  • Branch coverage
  • Expression coverage
  • Functional coverage
  • Assertion coverage

History

Achieving confidence that a design is functionally correct continues to become more difficult. To counter these problems, in the late 1980s fast logic simulators and specialized hardware description languages such as Verilog and VHDL became popular. In the 1990s, constrained random simulation methodologies emerged using hardware verification languages such as Vera[1] and e, as well as SystemVerilog (in 2002), to further improve verification quality and time.

Intelligent verification approaches supplement constrained random simulation methodologies, which bases test generation on external input rather than design structure.[2] Intelligent verification is intended to automatically utilize design knowledge during simulation, which has become increasingly important over the last decade due to increased design size and complexity, and a separation between the engineering team that created a design and the team verifying its correct operation.[1]

There has been substantial research into the intelligent verification area, and commercial tools that leverage this technique are just beginning to emerge.

gollark: The AST one sounds easier, do so.
gollark: ```osmarks@procyon ~> lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTmmcblk0 179:0 0 7.3G 0 disk ├─mmcblk0p1 179:1 0 2M 0 part ├─mmcblk0p2 179:2 0 2M 0 part ├─mmcblk0p3 179:3 0 1M 0 part ├─mmcblk0p4 179:4 0 1M 0 part ├─mmcblk0p5 179:5 0 1M 0 part ├─mmcblk0p6 179:6 0 1M 0 part ├─mmcblk0p7 179:7 0 4M 0 part ├─mmcblk0p8 179:8 0 8M 0 part ├─mmcblk0p9 179:9 0 8M 0 part ├─mmcblk0p10 179:10 0 4M 0 part ├─mmcblk0p11 179:11 0 1M 0 part ├─mmcblk0p12 179:12 0 1M 0 part ├─mmcblk0p13 179:13 0 1M 0 part ├─mmcblk0p14 179:14 0 1M 0 part ├─mmcblk0p15 179:15 0 1M 0 part ├─mmcblk0p16 179:16 0 2M 0 part ├─mmcblk0p17 179:17 0 20M 0 part ├─mmcblk0p18 179:18 0 5M 0 part ├─mmcblk0p19 179:19 0 1M 0 part ├─mmcblk0p20 179:20 0 16M 0 part ├─mmcblk0p21 179:21 0 16M 0 part ├─mmcblk0p22 179:22 0 200M 0 part ├─mmcblk0p23 179:23 0 1.5G 0 part │ ├─mmcblk0p23p1 254:0 0 94M 0 part /boot│ └─mmcblk0p23p2 254:1 0 1.4G 0 part /├─mmcblk0p24 179:24 0 150M 0 part ├─mmcblk0p25 179:25 0 9M 0 part └─mmcblk0p26 179:26 0 5.4G 0 part mmcblk0boot0 179:32 0 4M 1 disk mmcblk0boot1 179:64 0 4M 1 disk mmcblk0rpmb 179:96 0 4M 0 disk ```android_partition_scheme_irl
gollark: The GTech™ ones, with infinite processing power but somewhat limited memory.
gollark: Oh, I mostly use an infinitely powerful computer.
gollark: Yes, I assume it's wine badness.

See also

Vendors offering Intelligent Verification

Footnotes

References

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.