Q. Why would I use SVUnit?
Good question. You’ll want to use SVUnit if you and your customers value defect free systemverilog code. Simple as that.
Q. What do I do with SVUnit?
The SVUnit framework allows you to easily isolate modules, classes and/or interfaces in your designs and testbenches so you can kill bugs at a granularity that is most productive: the unit test level. It’s good for design and verification engineers. It’s also great for test-driven development if you care enough to prevent defects in the first place.
Q. Why would I not use SVUnit?
A. If you love garbage code and irate customers, then SVUnit is not for you.
Q. How do I get SVUnit?
A. Instructions for downloading and using SVUnit are on the Getting Started page.
Q. It used to be that SVUnit was only available to early adopters. That still the case?
A. Nope… not any more. Now anyone can download SVUnit.
Q. What’s the best way to learn how to use SVUnit?
A. It’s best to start with the Getting Started page. The SVUnit Demo Series videos are also pretty decent.
Q. If I find a problem or have questions about SVUnit, what do I do?
A. Best to file a ticket on sourceforge at: https://sourceforge.net/p/svunit/tickets/. Or, you can send me an email at neil.johnson@agilesoc.com and I’ll do my best to help you out.
Q. Can anyone file a ticket against the project?
A. Yes… though you’ll have to be logged into sourceforge to do so.
Q. The SVUnit: Up and Running video says I need to use Git to obtain SVUnit? Is that still the case?
A. Nope. You can get SVUnit via the links on the Getting Started page.
Q. The SVUnit: Up and Running video shows you defining test methods in the unit test class and then invoking them in the run method. Should I do that, too?
A. Nope… you shouldn’t. The usage model has changes slightly since I posted that video. Instead, it is recommended to use the SVTEST(<testname>)/SVTEST_END(<testname>) macros. Like this…
`SVUNIT_TESTS_BEGIN
`SVTEST(first_test)
// test code
`SVTEST_END(first_test)`SVTEST(second_test)
// test code
`SVTEST_END(second_test)`SVUNIT_TESTS_END
Q. How do I use SVUnit with UVM?
A. Best to start by watching SVUnit: Unit Testing UVM Components and cross-referencing the video with the simple model example at svunit-code/examples/uvm/simple_model. Where there are minor differences in the video and example code, I’d recommend following the example code.
Q. I get this error when I try and unit test UVM components: “You’re running svunit with uvm without defining RUN_SVUNIT_WITH_UVM. Please add ‘+define+RUN_SVUNIT_WITH_UVM’ to your svunit.f file.”. What’s going on?
A. Users need to tell SVUnit that they are testing UVM components. You do that by pasting this this line into your svunit.f file:
+define+RUN_SVUNIT_WITH_UVM
…or by pasting the equivalent line into your svunit.mk file:
SIM_ARGS += +define+RUN_SVUNIT_WITH_UVM
Q. In the SVUnit: Unit Testing UVM Components video, you call the svunit_uvm_test_start() and svunit_uvm_test_finish() methods in each test. Should I do that, too?
A. Nope. That would still work, but it’s best to relocate those method invocations to the setup and teardown methods instead so you don’t have to keep typing them!
Q. I hate makefiles. How do I avoid specifying files, etc in the svunit.mk?
A. I’ve added the option of specifying files, command line switches, etc in svunit.f. The svunit.f becomes simulator input automatically via ‘-file svunit.f’ so simply creating the file and adding content is enough.