Out-of-the-box UVM experience with modern day EDA tools
It surprises me often how many young engineers (read "fresh graduates/Recent College Graduates") struggle when it comes to the UNIX/GCC/Makefiles etc. I still recall our old IIT days when we did Yahoo/Altavista (Google wasn't around back in 1996) search to resolve most of such issues and of-course use some common sense.
Coming to the recent experience, as we were preparing for our recent demo at SNUG India 2013 DCE booth, I asked some of our young team members to run few UVM tests. When it came to the 11th hour preparations I got several error reports from these young engineers with various errors related to gcc/PATH etc. In our regular UVM training sessions the Makefiles exist so not much challenge in this regard. But when you ask these folks to create Makefile on their own to run UVM, things start getting interesting. A recent error message showed to me was:
recompiling module apb_subsystem_top
All of 30 modules doneg++ -w -pipe -O -I/home/student/tools/eda/synopsys/vcs-mx_VE-2011.03-SP1-2/include \
-c /home/student/tools/uvm-1.1c/src/dpi/uvm_dpi.cc
/home/student/tools/uvm-1.1c/src/dpi/uvm_hdl.c: In function ‘int uvm_hdl_set_vlog(char*, \
t_vpi_vecval*, PLI_INT32)’:
/home/student/tools/uvm-1.1c/src/dpi/uvm_hdl.c:235: error: ‘vpi_release_handle’ was \
not declared in this scope
make[1]: *** [uvm_dpi.o] Error 1
A quick check with them revealed they were NOT really behind any custom UVM base library/version, any recent one would do. That led us to a much simpler fix - use the out-of-the-box UVM that gets shipped along with the modern day EDA tools. For the starters, here are the 3 most popular tools and their options to run UVM out-of-the-box:
Cadence: IUS
irun -uvm -f file_list_with_your_src_files
The -uvm option will take care of all the include-dir and the DPI stuff needed to get UVM base-lib visible and usable for your code.
Synopsys: VCS
vcs -ntb_opts uvm -f file_list_with_your_src_files
The option -ntb_opts uvm takes care of the UVM base class for you! BTW, NTB stands for "Native TestBench" in VCS lingo.
Mentor: Questa
qverilog -f file_list_with_your_src_files
If you are wondering who takes of the "UVM" here - your most friendly EDA simulator does that "automatically" for you - the moment it "detects" uvm_pkg in your code.
Sure you will need to learn how to use "customized UVM-lib" at times, but the above can well be a good start. Please note that the version of UVM could be different in different tools and even among different versions of the same tool (say IUS), but assuming you are just a beginner these details shouldn't matter much to you to start with.
Good Luck with your UVM voyage!
Comments
Post a Comment