基于命令
vlib work //建库//新建工作目录
vmap work work //映射//该命令的作用是将目前的逻辑工作库work和实际工作库work映射对应
vlog div.v tdiv.v //编译//编译这些文件,要注意的是文件可以单独分开编译,但是一定要先编译被调用的 文件。假如是VHDL文件就可以用vcom file1,file2命令来编译
vsim testdiv //仿真//仿真命令,注意后面的参数必须为tdiv.v中的模块名。
add wave/testdiv/ * // 该命令的作用是将testbench文件tdiv.v中模块testdiv下所有的信号变量加到 波形文件中去。这时候你也可以看到wave文件被打开。
run 2000 //该命令的作用是运行2000个单位时间的仿真。也可以用run –all命令来一直仿 真下去。
view dataflow // 用navigate view all nets观察dataflow,不想观察就可以不
// 加这条指令
每次用命令do div.do 就可以自动执行想要的仿真动作。
div.v 描述文件
module div(clk_i,clk_o,reset); parameter DIV_N = 4; input clk_i; input reset; output clk_o; reg clk_o; integer count;
always @ (negedge reset or posedge clk_i) begin if(!reset) count <= 0; else if(count == 3) count <= 0; else count <= count + 1; end
always @ (negedge reset or posedge clk_i) begin if(!reset) clk_o <= 0; else begin if(count <= (DIV_N/2 - 1)) clk_o <= 0; else clk_o <= 1; end end
|
tdiv.v
testbench文件
module testdiv; reg clk_i; reg reset; wire clk_o;
always #50 clk_i = ~clk_i;
initial begin #0 reset = 0;clk_i = 0; #100 reset = 1; #2000 $stop; end
div div1(.clk_i(clk_i),.clk_o(clk_o),.reset(reset)); endmodule
|
阅读(1109) | 评论(0) | 转发(0) |