(笔记) 如何使用ModelSim作前仿真与后仿真? (SOC) (Quartus II) (ModelSim)
2009-06-04 15:00
Abstract
本文介绍使用ModelSim做前仿真,并搭配Quartus II与ModelSim作后仿真。
Introduction
使用环境:Quartus II
+ ModelSim-Altera
由于FPGA可重复编程,所以不少开发人员就不写testbench,直接使用Quartus II的programmer烧进开发板看结果,或者使用Quartus II自带的Waveform Editor进行仿真,这种方式虽然可行,但仅适用于小project,若project越写越大,Quartus II光做fitter就很耗时间,一整天下来都在作Quartus II编译。
比较建议的方式,还是学ASIC那招:『写testbench先对每个module作前仿真,再对每个module作后仿真,最后再烧入FPGA测试。』
这种方式的优点是:
editor可更灵活的描述电路规格。
,如$display()、$fwrite()...等。
但要使用testbench作仿真,单独Qaurtus II并无法做到,就得使用ModelSim了,这又牵涉到『前仿真』与『后仿真』。
所谓的『前仿真』,就是Quartus II的Functional Simulation,不考虑电路的门延迟与线延迟,重点在观察电路在理想环境下的行为与设计构想是否一致[1]。由于没经过fitter阶段,所以仿真速度很快。前仿真结果正确,并不表示将来结果结果正确,但若前仿真结果不正确,则将来结果一定不正确。
所谓的『后仿真』,就是Quartus II的Timing Simulation,考虑了电路的门延迟与线延迟,由于经过fitter阶段,所以模拟结果最为精准。但fitter在Quartus II编译需耗费很多时间,所以建议『前仿真』正确后,再考虑『后仿真』。
使用Quartus II的waveform editor作前仿真与后仿真,我就不再多谈,本文主要是谈如何使用ModelSim-Altera作前仿与后仿。
-Altera作前仿真。
macro在ModelSim-Altera作前仿真。
II + ModelSim-Altera作后仿真。
/ Verilog
1 /*
2 (C) OOMusou 2008
3
4 Filename :
piler : Quartus II / ModelSim-Altera
6 Description : simple counter
7 Release : 01/30/2009
8 */
9
10 `timescale 1ns/100ps
11
12 module Counter (
13 input CLK,
14 input RST_N,
15 output [3:0] CNT
16 );
17
18 reg [3:0] cnt;
19 T = cnt;
20
21 always@(posedge CLK, negedge RST_N) begin
22 if (!RST_N)
23 cnt <= #5 4'h0;
24 else
25 cnt <= #t + 1'b1;
26 end
27
28 endmodule
一个很简单的counter,从0数到15重复数。由于要使用ModelSim作前仿,所以在reg做了delay,不过这在Quartus II作合成时会自动忽略, 因为delay并非可合成的Verilog。
一般写给FPGA的RTL,都不会去设定timescale,不过由于要用ModelSim作前仿,所以要加上timescale。
/ Verilog
1 /*
2 (C) OOMusou 2008
3
4 Filename :
piler : Quartus II / ModelSim-Altera
6 Description : simple counter testbench
7 Release : 01/30/2009
8 */
如何使用ModelSim作前仿真与后仿真 来自淘豆网www.taodocs.com转载请标明出处.