Professional Documents
Culture Documents
Modelsim - AI搜尋資料
Modelsim - AI搜尋資料
注意,您需要使用層次名稱來指定不同模塊內的信號,例如 testbench.uut.a 表
示 testbench 模塊下的 uut 子模塊內的 a 信號。您也可以使用萬用字元(如*)來
匹配多個信號,例如 add wave testbench.uut.*表示添加 testbench 模塊下的 uut
子模塊內的所有信號。
• 一種可能的原因是您在編譯源代碼檔案時,沒有使用+acc 參數來開啟所有信
號的可見性。這會導致 Objects 內部只顯示模塊的輸入和輸出信號,而不顯示模
塊內部的其他信號。要解決這個問題,您可以在執行 vlog 命令時,加上+acc 參
數,例如 vlog -work work +acc testbench.v design.v,這樣就可以使所有信號都可
見。https://zhidao.baidu.com/question/648321340894992645.htmlhttps://
blog.csdn.net/AGOU_/article/details/112567014
• 另一種可能的原因是您在啟動模擬時,沒有使用-voptargs=+acc 參數來開啟所
有信號的可見性。這會導致 Objects 內部只顯示模塊的輸入和輸出信號,而不顯
示模塊內部的其他信號。要解決這個問題,您可以在執行 vsim 命令時,加上-
voptargs=+acc 參數,例如 vsim -voptargs=+acc work.testbench,這樣就可以使所
有信號都可見。https://blog.csdn.net/weixin_42169298/article/details/121157933
• 還有一種可能的原因是您在添加波形時,沒有使用正確的層次名稱來指定不
同模塊內的信號。這會導致無法找到 Objects 內部沒有的信號,而無法添加波形。
要解決這個問題,您可以在執行 add wave 命令時,使用層次名稱來指定不同模
塊內的信號,例如 add wave testbench.uut.a 表示添加 testbench 模塊下的 uut 子
模塊內的 a 信號。
• 一個簡單的例子是如下:
// counter.v
module counter(
input clk, rst,
output reg [3:0] count
);
always @(posedge clk or posedge rst) begin
if (rst) begin
count <= 4'b0000;
end else begin
count <= count + 4'b0001;
end
end
endmodule
// testbench.v
module testbench;
counter u_counter(
.clk(clk),
.rst(rst),
.count(count)
);
initial begin
clk = 0;
forever #5 clk = ~clk;
end
initial begin
rst = 1;
#10 rst = 0;
end
initial begin
$dumpfile("testbench.vcd");
$dumpvars(0, testbench);
end
endmodule
• 在 design compiler 中,可以使用以下命令來編譯和綜合這兩個檔:
• 在 modelsim 中,可以使用以下命令來創建一個工程,並添加門級網表、SDF
時序檔、testbench 檔和模擬指令檔:
# create a project directory and a work library
vlib work
vmap work work
要导入技术库中的逻辑门描述文件和映射文件,您可以按照以下步骤操作:
1. 在 Modelsim 中创建一个新的工程,或者打开一个已有的工程。
2. 在工程中添加您要仿真的 Verilog 或 VHDL 源文件,以及相应的测试平台文件。
3. 在菜单栏中选择 Library -> Import Library...,这时会弹出一个对话框,让您选
择要导入的技术库文件夹。
4. 在对话框中浏览到您要导入的技术库文件夹,然后点击 OK。这时 Modelsim
会自动扫描该文件夹下的所有逻辑门描述文件,并将它们导入到工程中。
5. 在菜单栏中选择 Compile -> Compile All,这时 Modelsim 会编译您添加的源文
件和测试平台文件,以及导入的技术库文件。
6. 在菜单栏中选择 Simulation -> Start Simulation...,这时会弹出一个对话框,让
您选择要仿真的设计单元。
7. 在对话框中展开 work 库,然后选择您要仿真的设计单元,比如测试平台文件。
然后点击 OK。这时 Modelsim 会启动仿真,并显示波形窗口。
8. 在波形窗口中,您可以添加、删除、编辑、强制等操作信号,以观察仿真结
果。
下面是一个简单的例子,说明如何导入一个包含两个逻辑门(与门和或门)的
技术库,并用它们实现一个异或门。
xor.v
xor_tb.v
module xor_tb;
reg a, b;
wire y;
xor uut (a, b, y);
initial begin
$dumpfile("xor_test.vcd");
$dumpvars(0, xor_tb);
a = 0; b = 0; #10;
a = 0; b = 1; #10;
a = 1; b = 0; #10;
a = 1; b = 1; #10;
$finish;
end
endmodule
and.v
or.v
and and(y,a,b)
or or(y,a,b)
兩種仿真的共同步驟是:
• 在 Modelsim 中創建或打開一個工程,並添加源文件,測試平台文件,以及技
術庫文件。
• 在 Modelsim 中編譯所有文件,並啟動仿真,選擇頂層模塊。
• 在 Modelsim 中使用 sdf annotate 命令將時延文件注釋到頂層模塊上,以考慮
門延遲和線延遲。
• 在 Modelsim 中執行指定時間的仿真,並在波形窗口中觀察輸入和輸出信號。
兩種仿真的不同步驟是:
• Modelsim gate-level simulation 需要先在電路設計軟件中對電路進行合成,並
生成網表文件和時延文件。
• post-layout simulation 需要先在電路設計軟件中對電路進行合成和佈局,並生
成網表文件和時延文件。