1 编写全加器和全加器放着顶层


linux VCS+verdi的仿真教程(1)_右键

使用vim或者其他编辑器编写fulladd.v和tb_fulladd.v


1 ) 全加器verilog代码



module fulladd(sum,c_out,a,b,c_in);output sum,c_out;input a,b,c_in;

wire s1,c1,c2;

xor (s1,a,b);and (c1,a,b);xor (sum,s1,c_in);and (c2,s1,c_in);or (c_out,c2,c1);

endmodule



2) 全加器仿真顶层



module tb_fulladd;wire sum,c_out;reg a,b,c_in;

fulladd fadd(sum,c_out,a,b,c_in);

/*//输出fsdb格式的波形文件,使verdi能够查看initialbegin $fsdbDumpfile("tb_fulladd.fsdb"); $fsdbDumpvars(0,fadd); $fsdbDumpon();end */

initial begin $vcdpluson();endinitialbegin a=0;b=0;c_in=0; #10 a=0;b=0;c_in=1; #10 a=0;b=1;c_in=0; #10 a=0;b=1;c_in=1; #10 a=1;b=0;c_in=0; #10 a=1;b=0;c_in=1; #10 a=1;b=1;c_in=0; #10 a=1;b=1;c_in=1; #10 $stop;endendmodule


2 VCS仿真

vcs +v2k tb_fulladd.v fulladd.v -debug_all

linux VCS+verdi的仿真教程(1)_电路图_02

linux VCS+verdi的仿真教程(1)_电路图_03

./simv  -gui  &

linux VCS+verdi的仿真教程(1)_电路图_04

10003为进程号。

3 查看波形和电路

linux VCS+verdi的仿真教程(1)_电路图_05

linux VCS+verdi的仿真教程(1)_vim_06

仿真电路图


linux VCS+verdi的仿真教程(1)_vim_07

全加器内部电路图

选中需要观察的信号,右键 add To waves 然后 New Wave view

linux VCS+verdi的仿真教程(1)_vim_08

点击箭头所指的地方完成仿真。

linux VCS+verdi的仿真教程(1)_电路图_09

仿真波形如下所示:

linux VCS+verdi的仿真教程(1)_技术信息_10