使用CVS仿真的两个简单的Makefile

本文分享了两种在Linux环境下进行RTL级仿真的Makefile编写方法,一种用于纯Verilog的DUT和测试平台,另一种适用于使用UVM的测试平台。详细介绍了Makefile的配置、编译和运行命令,以及使用UVM时的特定步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Linux/Unix下,提交RTL仿真常用的有两种方法,一个靠perl脚本,一个靠Makefile。当然更多的是将两者组合到一块来用。这里分享下我用过的两个功能比较简单的Makefile。

1. 编译纯verilog DUT+TB

在这个Makefile中, CODE_PATH是dut的源文件存放路径。
filelist 文件名为file.f。case名字是通过TEST变量在command line中制定。这是一个纯verilog的TB+DUT,没有使用SV和UVM。

CODE_PATH = /home/xxx/work/rtlcode/dut    # dut rtl path
CASE :=
GUI :=
TEST  = $(CASE)   # case name from command line

CASEFILE = $(CODE_PATH)/tb/tcase_$(TEST)_test.v  # the testbench including testcase
LOG = tcase_$(TEST)_test.log
all: comp run
all_cov: comp_cov run_cov
dbg: comp rung
debug: comp rung
comp:
	vlogan -f file.f $(CASEFILE)   
	vcs  -lca -noIncrComp +lint=TFIPC-L +lint=PCWM -debug_all   tb_dut_top    
comp_cov:
	vlogan -f file.f $(CASEFILE)   
	vcs  -lca -noIncrComp +lint=TFIPC-L +lint=PCWM -cm line+cond+fsm+tgl+branch -cm_scope "tree+tb_dut_top.dut_top"  -debug_all   tb_uicc_top    
run:
	./simv -l  $(LOG) $(GUI)
run_cov:
	./simv  -cm line+cond+fsm+tgl+branch -l $(LOG) 
rung:
	./simv -gui -l $(LOG) &  

使用时的命令行:

make comp CASE=test_name          # 编译dut + test_name对于的tb file
make comp_cov CASE=test_name      # 编译dut,仿真时会生成覆盖率数据
make run CASE=test_name           # 编译 + run
make run GUI=-gui CASE=test_name  # 编译+ GUI模式的run
make rung CASE=test_name          # 编译+ GUI模式的run

2. 使用了UVM TB编译

CODE_PATH = # /home/x'x'x/work/rtlcode/xxx
CASE :=
GUI :=
TEST  = $(CASE)

CASEFILE = #$(CODE_PATH)/tb/tcase_$(TEST)_test.v
LOG = run.log #tcase_$(TEST)_test.log
all: comp run
dbg: comp rung
debug: comp rung
comp_uvm:
	vlogan -sverilog  +incdir+$(UVM_HOME)/src -nc  $(UVM_HOME)/src/uvm.sv -l uvm_comp.log    
comp_tb:
	vlogan -sverilog -timescale=1ns/1ps  +incdir+$(UVM_HOME)/src -nc  -f filelist.f -l comp.log
elab:    
	vcs  -full64 -debug_all $(UVM_HOME)/src/dpi/uvm_dpi.cc -timescale=1ns/1ps -CFLAGS -DVCS -l elab.log top_tb    
comp: comp_uvm comp_tb  
run:
	./simv -l  $(LOG) $(GUI)
rung:
	./simv -gui -l $(LOG) & 
clean:
	rm -rf *~ core csrc simv* AN.DB DVEfiles vc_hdrs.h ucli.key urg* *.log

使用时的命令行:

make comp_uvm          # 编译uvm
make comp_tb           # 编译DUT+TB
make elab              # 编译DUT+TB
make run               # 编译+ batch模式的run
make rung              # 编译+ GUI模式的run

3.使用UVM时需要做的3步


  1. 首先要编译 $UVM_HOME/src/uvm.sv,在编译命令中需要include这个目录: +incdir+$UVM_HOME/src

  2. 在代码里要 import uvm_pkg:: *. 如果使用UVM的宏定义,还需要include “uvm_macros.svh”。
    import uvm_pkg:: *;
    `include “uvm_macros.svh”

  3. 还要编译 $UVM_HOME/src/dpi/uvm_dpi.cc,或者给仿真器指明使用的UVM DPI shared library的位置。

本博客所有文章均同步发表于www.mx1980.cn/blog

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值