VCS,Verdi 是什么,为何要用 VCS 和 Verdi?
相信大家都用过 Vivado
,Quartus
等,这里以 Vivado 为例,它集成了 RTL的编译,仿真,综合,看波形及烧录镜像等业务,相比之下,VCS
和 Verdi
就很专业:
如上问所述 既然 Vivado 功能如此之全,为何要大费周折用 VCS 和 Verdi 呢?
Vivado
其实只能算个写 Verilog
的(而且还很慢),只不过集成了综合,仿真,看波形等功能,如果要真正做ASIC
设计,还是得在各个步骤用上用更加专业的EDA
软件。首先VCS编译仿真速度极快,效率极高,节约时间,Verdi 看波形也十分方便 debug,它支持信号追溯,无缝增加信号波形等功能。
注意:仿真包含前仿和后仿,如果单纯的前仿,VCS就绰绰有余了,然后想后仿,那就得需要再用DC (Design Complier)来“综合”
使用 VCS 等工具进行仿真最少要准备 3 个文件
full_adder_tb.sv full_adder.v Makefile
full_adder.v 内容如下:
module full_addr(
input wire a_in,
input wire b_in,
input wire c_in,
output wire sum_out,
output wire c_out
);
assign sum_out = a_in ^ b_in ^ c_in;
assign c_out = (a_in & b_in) | (b_in & c_in) | (a_in & c_in);
endmoudle
full_adder_tb.sv 内容如下:
`timescale 1ns/1ns
module full_adder_tb;
reg ain, bin, cin;
wire sumout, cout;
full_adder u_full_adder(
.a_in (ain),
.b_in (bin),
.c_in (cin),
.sumout (sumout),
.c_out (cout)
);
parameter CLK_PERIOD = 20;
reg clk, reset_n;
initial begin
clk = 0;
forever begin
#(CLK_PERIOD/2) clk =~ clk;
end
end
initial begin
reset_n = 0;
#100
reset_n = 1
end
initial begin
#110 ain = 0; bin = 0; cin = 0;
#20 ain = 0; bin = 1; cin = 0;
#20 ain = 1; bin = 0; cin = 0;
#20 ain = 1; bin = 1; cin = 0;
#20 ain = 0; bin = 0; cin = 1;
#20 ain = 1; bin = 0; cin = 1;
#20 ain = 1; bin = 1; cin = 0;
#50 $finish;
end
initial begin
$vcdplusson;
end
endmodule
Makefile 文件内容类似如下:
RTL :=./full_adder.v
RB :=./full_addr_tb.sv
SEED ?=$(shell data+%s)
# Target: Dependency
all: compile simulate
compile:
vcs -sverilog -debug_acc+all+dmptf -debug_region+cell+encrypt $(RTL) $(TB) -l com.log
simulate:
./simv +ntb_random_seed$(SEED) -l sim.log
run_dev:
dev -vpd vcdplus.vpd # check waveform
clean:
rm -rf *.log csrc simv* *.key *.vpd DEVfiles coverage *.vdb
timescale 也可以在 makefile 里加上
-timescale=1ns/1ps
即可
Perforce SCM System是一款构建于可伸缩客户/服务器结构之上的软件配置管理工具。仅仅应用TCP/IP,开发人员就能够通过多种Perforce客户端(几种平台的GUI、WEB、或命令行)访问Perforce服务器。Perforce能够被快速和容易地部署,即使对大型或分布式的站点,也只要求最小限度的管理。Perforce可以使用在50多个操作系统中,它包括版本控制、工作空间管理、变更处理和一个强大的分支模型。
P4V 主要有可视化操作和 Linux操作,linux 环境下的 RTL code 管理, 很多公司会使用 perforce 来管理,所以下文主要介绍linux环境下常用的一些命令。
环境变量的配置一般都是在 .tcshrc
文件中添加:
P4USER = <username>
P4PORT = <ip>
P4CLIENT = <workspace_name>
P4EDITOR "gvim -f"
export P4PASSWD=abcdefg
如果嫌使用环境变量的方式有一点麻烦,比如如果是代码方式,在不同的机器上运行需要在不同机器去设置环境变量;
workspace 如果发生更改的话; 修改也不方便,是否可以直接在命令中指定这些需要的信息呢? 答案当然是可以的:
p4 -C utf8 -p IP:port -u user -p password -c workspace_name
这条命名就代替了上面环境变量设置的方式。
p4 login
Enter password:
使用下面一条命令即可输入用户和密码:
p4 -u user -P password
建立 depot 后,就可以正常的文件操作了,一些常用的命令如下所示,还是遇到不熟的建议查看手册:
p4 add
;p4 client
;p4 sync -f
…(-f
代表强制刷新);p4 edit ...
;p4 delete
;p4 diff #<版本号> #<版本号>
;p4 opened
或当前目录下:p4 opened ..
.;p4 filelog
;p4 have
;p4 changes -m 10 ..
.(-m:显示多少记录) ;p4 submit -d "" ...
;p4 revert
;p4 resolve
。1) 更新单个文件
p4 sync //serverpath/filename.txt
2)更新目录下某种后缀名的文件
p4 sync //serverpath/*.txt
3)获取目录下版本号为 2 的某种后缀名的文件
p4 sync //serverpath/*.txt#2
P4 和 P4C都是与 Perforce有关的工具,但它们的作用不同。
P4是Perforce的命令行界面工具,它提供了一系列命令,可以用于管理Perforce服务器和客户端之间的交互。使用P4,您可以提交和检出文件,查看文件历史记录,创建和管理分支等。
P4C是Perforce的客户端工具,它可以与Perforce服务器进行交互,并提供了一个图形用户界面,使用户可以更方便地管理Perforce服务器上的文件和代码。P4C还提供了一些高级功能,如代码审查、版本控制、合并等。
总的来说,P4是Perforce的命令行工具,而P4C是Perforce的客户端工具,两者的作用不同。如果您需要管理Perforce服务器和客户端之间的交互,可以使用P4;如果您需要更方便地管理Perforce服务器上的文件和代码,可以使用P4C。
推荐阅读:
https://blog.csdn.net/JasonFuyz/article/details/107508893
https://blog.csdn.net/e295166319/article/details/54017408