利用常规的预综合(行为)仿真验证Verilog设计,并使用后综合仿真,是一种很好的设计实践。在调试仿真和硬件之间的不匹配时,这实际上是强制性的。如何使用开源的IceStorm流来实现iCE40 FPGA?
发布于 2017-07-18 16:52:11
有关示例,请参见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文件。
为了运行后综合仿真,必须首先将网表(合成输出)转换为Verilog netlist:yosys -p 'read_blif -wideports example.blif; write_verilog example_syn.v'。
此netlist将实例化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;https://stackoverflow.com/questions/45172834
复制相似问题