我们以一个简单的加法器为例,来看下如何用vcs+verdi仿真verilog文件并查看波形。
源文件内容如下:
//adder.vmodule adder( input clk, input rst, input [9:0] a, input [9:0] b, output reg [10:0] c);always @ ( posedge clk ) begin if(rst) c <= #`ffd 'b0; else c <= #`ffd a + b;endendmodule
我们再定义一个宏定义的文件:
//macro_define.sv`define ffd 1ns
我们需要再定义一个testbench文件:
//test.svmodule test;reg clk;reg rst;reg [9:0] a;reg [9:0] b;wire [10:0] c;initial begin rst = 1; a = 0; b = 0; #1us; rst = 0; #1us; a = 10'd100; b = 10'd200; #1us; a = 10'd300; b = 10'd400; #20us; $finish;endinitial begin clk = 0; forever #10ns clk <= ~clk;endadder add_inst( .clk(clk), .rst(rst), .a(a), .b(b), .c(c));`ifdef dump_fsdb initial begin $fsdbdumpfile(tb.fsdb); $fsdbdumpvars(+all); //string testname; //if($value$plusargs(testname=%s, testname)) begin // $fsdbdumpfile({testname, _sim_dir/, testname, .fsdb}); //end else begin // $fsdbdumpfile(tb.fsdb); //end end `endif endmodule
再定义一个filelist文件:dut.f
./macro_define.sv./adder.v./test.sv
最后就是需要一个makefile文件了:
#!/bin/makeall: comp simcomp: vcs -full64 -timescale=1ns/1ps -v -r -sverilog -debug_access+all +vc +v2k -kdb -l vcs.log -f dut.f +define+dump_fsdb=1 -top test sim: ./simv -l simv.logclean: rm -rf *~ core csrc simv* vc_hdrs.h ucli.key urg* *.log novas.* *.fsdb* verdilog 64* dvefiles *.vpd
总的文件如下:
执行make all:
跑完后如下:
生成的文件如下:
用verdi打开波形:verdi -ssf tb.fsdb
可以看到波形如下:
对讲机语音芯片方案选型!
电源设计中电容到底有多重要
二极管知识:串联防反接原理 并联防反接原理
设计管理系统消除了ASIC捷径风险
数控机床电气系统故障常用诊断方法
如何用vcs+verdi仿真Verilog文件并查看波形呢?
Hi3861V100创建Wi-Fi驱动应用的步骤
机床的轴越多越好吗,机床五轴该如何选择
TF-A的不同启动阶段有哪些
Arduino的碰撞检测警告系统的工作方式
新能源汽车正迎来一个全新发展时代
电阻涨价80% 国巨电子回应市场供需决定
基于KY32MT028主控的高压工业风扇PCBA方案
基于网络存储技术实现地震数据处理解释一体化的布诸和管理应用
红米pro2最新消息:红米Pro2来袭,这部手机当首当其冲,哪些手机会受波及?
集线器的局域网标准
盘点2022年半导体行业:国产化路在何方
扬尘监测设备可以实时监测扬尘
11月自动驾驶行业发展取得了哪些新成果?
LED手电筒DIY自制