Specification-driven functional verification with Verilog PLI & VPI and SystemVerilog DPI

Verilog—through its Programming Language Interface (PLI) and Verilog Procedural Interface (VPI)—and SystemVerilog—through its Direct Programming Interface (DPI)—enable simulators to invoke user-defined C functions, which then verify some aspect of an instantiated Verilog or SystemVerilog design. This simulator-centric transfer of control inhibits specification-driven functional verification, where an executable specification verifies a design firsthand by progressively (1) applying a stimulus to the design, (2) simulating the design by temporarily transferring control to the simulator, and (3) verifying the design’s response to the applied stimulus. This thesis presents (1) a way to achieve specification-driven functional verification with Verilog PLI & VPI and SystemVerilog DPI; (2) a technique that eliminates unnecessary code coupling between a design and its executable specification; and (3) an application of these ideas using Verilog VPI and the Ruby programming language.

[1]  Aarti Gupta,et al.  Verification Languages , 2005, The Industrial Information Technology Handbook.

[2]  Jim Waldo Remote procedure calls and Java Remote Method Invocation , 1998, IEEE Concurr..

[3]  Andrew M. Kuhn,et al.  Code Complete , 2005, Technometrics.

[4]  Dave Thomas,et al.  Agile Web Development with Rails , 2005 .

[5]  Janick Bergeron,et al.  Writing Testbenches using SystemVerilog , 2006 .

[6]  Angela Greiling Keane,et al.  NO SILVER BULLET , 2003 .

[7]  David Thomas,et al.  Programming Ruby: the pragmatic programmer's guide , 2000 .

[8]  Laurie A. Williams,et al.  Agile software development: it's about feedback and change , 2003, Computer.

[9]  Mark Glasser,et al.  The Transaction-Based Verification Methodology , 2000 .

[10]  Paul Hamill Unit Test Frameworks , 2004 .

[11]  Seyed Ghassem Miremadi,et al.  Fast Prototyping with Co-operation of Simulation and Emulation , 2002, FPL.

[12]  Stuart Sutherland The Verilog PLI Is Dead (maybe) Long Live The SystemVerilog DPI , 2004 .

[13]  Alistair Cockburn,et al.  Agile Software Development , 2001 .

[14]  David S. Janzen,et al.  Test-driven development concepts, taxonomy, and future direction , 2005, Computer.

[15]  Roger Riggs,et al.  A Distributed Object Model for the Java System , 1996, Comput. Syst..

[16]  D. Abts,et al.  Verifying large-scale multiprocessors using an abstract verification environment , 1999, Proceedings 1999 Design Automation Conference (Cat. No. 99CH36361).

[17]  S. Meyer,et al.  Verilog plus C language modeling with PLI 2.0: The next generation simulation language , 1998, Proceedings International Verilog HDL Conference and VHDL International Users Forum.

[18]  Youn-Long Lin,et al.  Concurrent-simulation-based remote IP evaluation over the Internet for system-on-a-chip design , 2001, International Symposium on System Synthesis (IEEE Cat. No.01EX526).

[19]  Vaidy S. Sunderam,et al.  Heterogeneous Network Computing: The Next Generation , 1997, Parallel Comput..

[20]  Renaud Delbru,et al.  ActiveRDF : object-oriented RDF in Ruby ? , 2006 .

[21]  Arie van Deursen,et al.  Domain-specific languages: an annotated bibliography , 2000, SIGP.