gpt4 book ai didi

yosys - 如何使用 IceStorm iCE40 FPGA 流程运行综合后仿真

转载 作者:行者123 更新时间:2023-12-05 01:44:38 25 4
gpt4 key购买 nike

良好的设计实践不仅要使用常规的综合前(行为)仿真来验证 Verilog 设计,还要使用综合后仿真。在调试仿真和硬件之间的不匹配时,这实际上是强制性的。如何使用适用于 iCE40 FPGA 的开源 IceStorm 流程实现这一点?

最佳答案

参见 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

使用像gtkwave 这样的VCD 查看器来查看这两个命令生成的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 处有时钟边沿,因为这会导致时钟寄存器更新和寄存器初始化之间出现竞争条件。 IE。以下用于生成时钟的测试平台代码存在问题:

    reg clk = 1;
always #5 clk = ~clk;

相反,您应该使用类似以下的方法,使时钟信号在初始阶段未定义:

    reg clk;
always #5 clk = (clk === 1'b0);

(2) 一些信号(或矢量的个别位)可以在合成过程中被优化掉。该位可以设置为常量值(通常为 x)或由工具保持 float 。在尝试检查综合后仿真结果时,这可能会造成混淆。在您希望工具保留的网络上设置 keep 属性:

    (* keep *) reg [31:0] foobar;

关于yosys - 如何使用 IceStorm iCE40 FPGA 流程运行综合后仿真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45172834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com