這是一個好的設計實踐,不僅可以驗證Verilog設計的定期預綜合(行爲)仿真,還可以使用後綜合仿真。調試模擬和硬件之間的不匹配時,這實際上是強制性的。用於iCE40 FPGA的開源IceStorm流程如何實現?如何使用IceStorm iCE40 FPGA流程運行合成後仿真
1
A
回答
2
查看https://github.com/cliffordwolf/icestorm/tree/master/examples/icestick舉例。該「rs232demo」項目配備了一個試驗檯和Makefile文件中包含之前和之後的綜合模擬規則:
make rs232demo_tb.vcd # pre-synthesis simulation
make rs232demo_syntb.vcd # post-synthesis simulation
使用VCD觀衆喜歡gtkwave來查看這個兩個命令生成的VCD文件。
爲了運行綜合後仿真一個必須首先將網表BLIF(合成輸出)轉換爲網表的Verilog:yosys -p 'read_blif -wideports example.blif; write_verilog example_syn.v'
此網表將實例iCE40設備的基元。 Yosys爲這些基元提供了模擬模型。運行命令yosys-config --datdir/ice40/cells_sim.v
以打印該模擬庫的完整路徑名稱。編譯仿真時使用此Verilog文件。
編輯:
(1)時鐘不應該使用時刻0,因爲這樣一個時鐘邊沿會導致時鐘之間的競爭條件寄存器的更新和註冊初始化:兩個關於合成後的模擬其他常見問題解答。即用於生成時鐘下面的測試平臺的代碼是有問題的:
reg clk = 1;
always #5 clk = ~clk;
相反,你應該使用類似下面,離開時鐘信號不確定在最初階段:
reg clk;
always #5 clk = (clk === 1'b0);
(2)一些信號(或矢量的各個位)可以在合成過程中被優化掉。這些位可以設置爲一個常數值(通常爲x
)或者由工具保持懸空。在嘗試檢查合成後仿真結果時,這可能會造成混淆。在要保留該工具的網上設置keep
屬性:
(* keep *) reg [31:0] foobar;
相關問題
- 1. 仿真程序在運行Android程序後掛起
- 2. 仿真運行命令?
- 3. 仿真程序沒有運行hello world
- 4. Windows Phone 7仿真程序不運行
- 5. 在仿真器上仿真運動API
- 6. 讓仿真器運行
- 7. 如何在真實手機而不是仿真器上運行應用程序。
- 8. 仿真滯後
- 9. 我無法在Windows 7中使用omnet ++運行仿真程序
- 10. HAX不能正常使用仿真器在Windows仿真模式運行10
- 11. ICE40 up5k內部內置振盪器和ip的
- 12. 如何在DocumentDb仿真器上運行存儲過程
- 13. Android應用程序無法在任何仿真器中運行
- 14. 無法在任何仿真器上運行應用程序
- 15. 修改iCE40比特流以加載新的塊RAM內容
- 16. 在使用流時仿真node.js上的網絡擁塞/滯後
- 17. 仿真altera比特流
- 18. 在EC2上運行C仿真
- 19. 運行設備仿真器3.0(WM6.5)
- 20. Android仿真程序未運行科爾多瓦應用程序 - adb -s仿真程序-5584殼貓/ proc/cpuinfo
- 21. Yosys優化走環形振盪器上ice40 FPGA
- 22. 仿真器不在Xubuntu上運行12.04
- 23. 從Android仿真器運行.apk文件
- 24. 運行仿真器時出現故障
- 25. 運行時擦除仿真器數據
- 26. Mac - Android運行Intel版仿真器
- 27. 如何使用流程生成器運行.sh文件?
- 28. 運行3個Android仿真器 - 失敗
- 29. 在modelsim中運行時序仿真í
- 30. 仿真在運行ode45時掛起