modelsim仿真基本流程
好久没再用过modelsim,都忘的一干二净了。刚换了份工作,又要重新拾起来,不过现在感觉modelsim的仿真其实是比较快的,很有用处。再者这么长时间老是学了忘,忘了再学,觉得真浪费时间,平时确实应该好好总结下的,关于modelsim的仿真这一次一定要系统的总结出来,顺便再练下写文档的能力。
modelsim仿真方法1:用modelsim直接建立工程。
1、建工程
输入工程名,选择工程路径。
添加源文件及测试文件。
在这里为什么要选择第二项,我也不在了然的,改天再查下。
文件添加进来之后就是编译了。
如果编译通过会出现下面的对勾,如果不对当然就是XX了
下一步是仿真
选择测试脚本。另外把下面的优化去掉,不然有些信号优化就没有了,具体是怎么回事我还不明白,再查吧。
单击OK进入下面的界面,选择信号右击添加信号到wave文件中。
设置下仿真时间。就可以run了。
可以看到波形了
这个过程还是比较简单的,有些Ip的仿真却要添加库,怎样处理,在随后的modelsim仿真2中再说了。
附录:
源文件.v
module counter(
rst_n,
clk,
valid
);
parameter CNT_WIDTH = 3'd4 ;
parameter CNT_NUM = 4'd15;
input clk ;
input rst_n ;
output valid ;
reg valid;
reg [CNT_WIDTH-1:0] cnt ;
always@( posedge clk )
begin
if (rst_n == 0)
begin
cnt <= 4'd15;
end
else
begin
cnt <= cnt + 1'b1;
end
end
always@( posedge clk)
begin
if(rst_n == 0)
begin
valid <= 1'b0;
end
else if(cnt == CNT_NUM)
begin
valid <= 1'b1;
end
else
begin
valid <= 1'b0;
end
end
endmodule
测试脚本.v
module counter_tb;
reg rst_n;
reg clk;
wire valid;
counter u_counter(
.rst_n (rst_n),
.clk(clk),
.valid(valid)
);
initial
begin
#0 rst_n = 0;
clk = 0;
#100
rst_n = 1;
end
always
begin
#10 clk = ~clk;
end
endmodule