> 文章列表 > vcs makefile脚本学习

vcs makefile脚本学习

vcs makefile脚本学习

文章目录

  • 前言
  • 1、各种波形文件
  • 2、makefile赋值
  • 3、vcs+dve:最简单查看波形
  • 4、vcs+verdi:把编译选项设置为变量

前言

2023.3.16 🌸都开了
2023.3.29 月末


1、各种波形文件

vpd:Value Plus Dump,vcs自带的DVE的波形
fsdb:Fast Signal Database,Verdi波形
shm:Cadence NC verilog支持
VCD:Value Change Dump,通用波形格式
WLF:Wave Log File,Modelsim支持波形

2、makefile赋值

?=:条件赋值,缺省
=:递归赋值,影响多个变量
:=:简单赋值,只对当前语句的变量有效
+=:追加赋值

3、vcs+dve:最简单查看波形

dve是vcs自带的查看波形的软件,波形格式为.vpd(Value Plus Dump),生成的波形文件可以单独发给其他用户查阅。
vcdplus.vpd:默认波形文件的名称,可以通过函数vcdplusfile("xxx.vpd")或者编译选项+vpdfile+filename进行修改
&:后台打开 dve 并加载 vpd 文件,以免终端被占用

all: com sim run_dvecom:vcs -full64 -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed -sverilog -debug_all -timescale=1ns/1ns -f file.list -l com.logsim:./simv -l sim.logrun_dve:dve -vpd vcdplus.vpd &clean:rm -rf *.vpd csrc *.log *.key *.vdb simv* DVE*

相应的在testbench里面要加上vcd dump波形的相关函数
$vcdpluson():自动dump dve的波形,使能波形
$vcdplusfile():设置波形文件名称
$dumpvar(level, module_name):表示要dump的信号,level是层次, module_name就是模块名。默认是(0,top),top层及下面所有层的信号,(1,top):只有top的信号,(2,top):top层及下一层的信号

initial begin$vcdplusfile("fifo.vpd");$vcdpluson();
end

RTL file 全加器

 module add(input		a,b,c_in,output		sum,c_out); assign sum = a ^ b ^ c_in; assign c_out = (c_in & b)|(a & b)|(a & c_in);endmodule

testbench

 `timescale 1 ns/1 ns module add_tb();//输入用regreg          a;reg          b;reg	     c_in;reg	     clk;//输出用wirewire	     sum;wire	     c_out;	//时钟周期,单位为nsparameter CYCLE    = 20;//生成本地时钟initial beginclk = 0;forever#(CYCLE/2)clk=~clk;end//信号初始化initial begin#1a    = 0;b    = 0;c_in = 0;end//待测试的模块例化add u1(.a	(a),.b	(b),.c_in   (c_in),.c_out  (c_out),.sum	(sum));//其他输入信号赋值always @(posedge clk)begina    = {$random}%2;b    = {$random}%2;c_in = {$random}%2;endinitial begin$vcdpluson;endinitial begin# 200 $finish;endendmodule

4、vcs+verdi:把编译选项设置为变量

下面代码中的${VCS}是设置的变量,再直接引用

.PHONY:防止在Makefile中定义的执行命令的目标和工作目录下的实际文件出现名字冲突,假如有个run的文件,设置了之后,就会去执行makefile里面的run指令,也就是说执行命令make run会自动忽略名为"run"文件的存在,使make命令会自动绕过隐含规则搜索过程,改善性能

.PHONY : clean sim com  OUTPUT = adder_top
VCS = vcs -sverilog +v2k -timescale=1ns/1ns                             \\-debug_all							\\   //换行标志\\-o ${OUTPUT}							\\   //默认是simv文件-l compile.log						\\ 
SIM = ./${OUTPUT} -l run.log   //定义了一些变量,然后下面就使用这些变量com:${VCS} -f verilog_file.f 
sim:${SIM} 
clean:rm -rf ./csrc *.daidir *.log simv* *.key