Linux下VCS与Verdi联合仿真简易教程及例⼦⽰范
VCS与Verdi联合仿真简易教程及例⼦⽰范
最近在公司实习,最近也恰好在学习Linux下的IC设计环境,涉及到了VCS与Verdi联合仿真等内容,也切⾝感觉到,和学校学习的内容是如此的不同,此篇便来讲下:
1. VCS,Verdi是什么,为何要⽤VCS和Verdi?
2. ⽤⼀个简短的例⼦展⽰如何在Linux下使⽤VCS,Verdi对Verilog⽂件进⾏功能仿真;
3. ⼀些⽤VCS,Verdi的提⾼效率的⽅式;
1. VCS,Verdi介绍
相信⼤家都⽤过Vivado,Quartus等,这⾥以Vivado为例,他包含了RTL,编译,仿真,综合,看波形,烧板⼦等,集⼤成为⼀体。相⽐之下,VCS和Verdi就很专⼀了,VCS专注于编译及仿真,Verdi专注于看波形,仅此⽽已,安分守⼰。那Vivado这种功能这么全,⼯业界直接全⽤⼀个Vivado⾛天下不就⾏了,为何要⼤费周折⽤VCS和Verdi呢?
按我公司⽼板的话来讲,Vivado其实只能算个写Verilog的(⽽且还很慢),只不过集成了综合,仿真,看波形等功能,如果要真正做Asic 设计,还是得在各个步骤⽤上⽤更加专业的软件,⽤那些在领域中做到顶峰的EDA,对,那就是Synopsys的VCS,Verdi这种(毕竟Vivado的优化⼤多也只针对于⾃家FPGA)。⾸先VCS编译仿真速度极快,效率极⾼,为⼤家节约时间,Verdi看波形也⼗分⽅便debug,它⽀持信号追溯,⽆缝增加信号波形等功能。虽然上⼿⽐Vivado难,但学习之后能感受到其美丽之处的。
(注意:仿真包含前仿和后仿,如果单纯的前仿,VCS就绰绰有余了,然后想后仿,那就得需要再⽤DC (Design Complier) 来“综合”,此篇专注于前仿)
2. VCS,Verdi使⽤教程
环境:Linux
编写Verilog:Vim or Gedit
编译仿真:VCS
波形查看:Verdi
这⾥默认VCS和Verdi环境都已配好,需要配环境的朋友可以⾃⾏百度~
1. 可以Terminal输⼊vcs,verdi来验证下环境有没有配置成功(若安装成功⼀般会如下图所⽰,但出现下图也不能确保环境⼀定是正确
的);
Terminal输⼊vcs会显⽰如下:
Terminal输⼊verdi会直接调⽤出verdi的GUI
2. 这样我们先新建⼀个计数器的verilog⽂件以及testbench⽂件(流程是:在桌⾯新建Counter⽂件夹,并在⽂件夹内新建
counter.v,tb_counter.v和timescale.v⽂件。如果不熟悉可以⿏标操作);
cd Desktop
mkdir Counter
cd Counter
3. ⾄此已完成Counter⽂件夹建⽴以及Terminal路径现在在\Desktop\Counter⾥,我们继续:在⽂件夹⾥新建
counter.v,tb_counter.v和timescale.v⽂件,其内容如下:
vim counter.v
module counter(
input                  clk,
input                  rst,
output  reg    [5:0]  count
);
linux教程第五版pdf下载always @(posedge clk or negedge rst)
begin
if(!rst)
count <= 0;
else
count <= count + 1;
end
endmodule
vim tb_counter.v
module tb_counter();
reg  clk,rst;
wire [5:0] counter;
counter u1(clk,rst,counter);
always #(5) clk = ~clk;
initial begin
clk <= 0;
rst <= 0;
#20;
rst <= 1;
#50;
if(counter != 5)
$display("Failure 1: the counter should be 5 but it is %d",counter);
else
$display("You gotta the right result!");
$finish;
end
`ifdef FSDB
initial begin
$fsdbDumpfile("tb_counter.fsdb");
$fsdbDumpvars;
end
`endif
endmodule
vim timescale.v
`timescale 1ns/10ps
取,不然不会输出波形)
4. 我们已经有了RTL代码了,现在开始⽤vcs调⽤这两⽂件,对counter进⾏功能仿真;
5. 在Terminal输⼊如下代码并运⾏
vcs -R -full64 +v2k -fsdb +define+FSDB -sverilog counter.v tb_counter.v timescale.v -l run.log
其中-R表⽰⾃动运⾏仿真,+v2k表⽰使⽤Verilog-2001标准,-fsdb表⽰⽀持对fsdb相应操作,+define
+FSDB相当于在verilog头⽂件⾥加上`define FSDB,-sverilog表⽰⽀持system verilog,输⼊.v⽂件的顺序可以不同(顺序是随意的)-l run.log表⽰将终端显⽰的信息在run.log中储存;
6. 当Terminal显⽰下图,并在⽂件夹中出现fsdb⽂件时,代表vcs已经对counter编译仿真成功了:
7. 现在我们可以打开verdi来看波形了,在Terminal输⼊:
verdi
再按下图点击相应选项,它们的意思也很直⽩,就不解释了;
8. 然后按图依次点击,导⼊代码,然后会变下图所⽰,恭喜,⾄此您已经完成了verdi看代码了,开⼼吧!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。