ISE聯合modelsim功能仿真和綜合後仿真
一、代碼輸入
(1)、新建一個ISE工程,名字爲count4。
(2)、新建一個verilog文件
(3)、選擇verilog module 輸入file name爲count4,單擊next默認知道finish。
(4)、在count4.v文件中輸入如下代碼
module count4(out,reset,clk
);
output [3:0] out;
input reset,clk;
reg [3:0] out;
always@(posedge clk) begin
if(reset)
out<=0;
else
out<=out+1;
end
endmodule
(5)、新建一個testbench文件(綜合時,不參與綜合),和第(2)步驟相同
(6)、選擇 verilog Test Fixture。
(7)、建立完成後,輸入如下代碼
module count4_tb;
reg clk,reset;
wire [3:0] out;
parameter DELY=100;
count4 mycount(.out(out),.reset(reset),.clk(clk));
//count4 mycount(out,reset,clk); 若簡寫,功能仿真正確,時序仿真會由於端口不匹配,//會出錯
always #(DELY/2) clk=~clk;
initial begin
clk=0;
reset=0;
#DELY reset=1;
#DELY reset=0;
#(DELY*200) $finish;
end
initial $monitor($time,,,"clk=%d reset=%d out=%d",clk,reset,out);
endmodule
注:能夠修改文件的屬性,是否爲testbench或者爲verilog文件。右擊要修改的文件。選擇source properties
修改屬性,simulation爲testbench
.implementation爲正常的verilog文件
二、功能仿真
功能仿真放在綜合前面,是由於大型程序綜合須要很長的時間,而功能仿真不須要綜合,能夠先功能仿真,確保代碼的正確性。功能仿真正確後,再綜合,而後進行綜合後仿真。
(1)、切換到simulation。選擇behavioral。
(2)、單擊選中count4_tb文件,而後雙擊simulate behavioral model。
(3)、在modelsim,查看波形等內容。
三、時序(綜合後)仿真
時序仿真將時延考慮進去,包括綜合後產生的(與、或、非)門時延,還有佈局佈線產生的時延。
綜合(Synthesize),就是將HDL語言設計輸入翻譯成由與、或、非門和RAM、觸發器等邏輯單元組成的網表。綜合後可生成綜合後仿真模型(Generate Post-Synthesis Simulation Model)。
綜合後,進行ISE的實現(Implement),包括翻譯、映射、佈局佈線。在這三個過程當中均可以生成一個仿真模型(翻譯和映射不會產生延時,所以經常使用佈局佈線後產生的仿真模型進行時序仿真)
(1)、進行綜合,雙擊 Synthesize – XST ,想生成 Post-Synthesis Simulation Model,雙擊Generate Post-Synthesis Simulation Model便可,會在工程文件夾下生成netgen\synthesis\count4_synthesis.v等文件
(2)、進行實現,雙擊 Implement Design ,完成後,雙擊Generate Post-Place & Route Simulation Model.。生成佈局佈線後仿真模型。
(3)、切換到 Simulation ,選中Post-route。
(4)、而後選中count4_tb文件,雙擊下面的Simulate Post-Place&Route Model,啓動modelsim。
(5)、在modelsim中觀察仿真波形。能夠看到輸出out有明顯的延時。