SANTA CRUZ, Calif. Many IC verification teams use C++, but there are few resources or tools to help them develop verification environments. Two engineers have launched a web site with open-source tools that can help, and they've also co-authored a book on the topic.
Mike Mintz, verification engineer with a large systems company that prefers to remain unnamed, developed Teal, a C++ class library that adapts C++ to Verilog and provides threading support. He also created Truss, an applications framework for C++ verification that sits on top of Teal.
Along with Robert Ekendahl, principal verification engineer at Sun Microsystems,
Mintz launched the www.trusster.com web site to offer the open-source tools. Additionally, Mintz and Ekendahl have just published "Hardware Verification with C++: A Practitioners Handbook," available now from Amazon.com. Teal and Truss are provided in a companion CD.
"So far as I know there are no books on verification with C++, and a lot of people are using C++ for verification," said Mintz.
"It's clear to me that object oriented verification is becoming an industry best practice," Ekendahl said. The new book, he said, covers basic through advanced uses of object-oriented programming, and is directly applicable to languages such as SystemVerilog, Vera or Specman.
Mintz, who had previously spent 15 years as a software engineer, wrote Teal at his first verification job six years ago. After re-implementing it a number of times, he asked his current employer if he could put it in the public domain.
Truss came about last year when Mintz and Ekendahl were both working at Freescale Semiconductor, and Ekendahl suggested that Mintz offer some of the methodology he'd developed internally. Mintz compared Truss to the Synopsys-ARM Verification Methodology Manual (VMM) or Mentor Graphics Advanced Verification Methodology (AVM), "except it's out there, it's free and it's C++," Mintz said.
Mintz describes Teal as a "gasket" that connects C++ code to Verilog simulation environments through the Verilog programming language interface (PLI). Further, Teal provides a wrapper around portable Posix threads, thus providing multi-threading support. Other features of Teal include stable random number generators, a flexible logging facility, and a dictionary namespace for passing parameters among different parts of the verification system.
Truss consists of a set of classes, templates and conventions that sit on top of Teal. It describes how tests, testbenches, and drivers should function. Truss, said Mintz, is really all about the "dance" between the top-level controller, testbench, and watchdog timer.
Further information is available in an article in the print edition of this week's EE Times.
Related links
Methodology opens new links
SystemVerilog reference verification methodology: ESL
ARM, Synopsys make book on SystemVerilog