原创
testbench文件编写风格
2008-7-3 21:26
3363
3
3
分类:
测试测量
不建议在设计文件里写 `timescale,建议在一个单独的文件里写
理由之一,容易漏写,导致模拟报错,改起来费时间;理由之二,容易不一致,导致模拟报错,改起来费时间;理由之三,即使每个文件都写了,而且都写得一样,当需要调整精度时,还是要一个一个地修改,还是费时间。
建议创建一个专门的文件定义timescale,最后include 进去就可以了。
很多集成开发环境都是在生成 Verilog 文件时自动插入`timescale定义的,纯属画蛇添脚。推荐使用 EmacsVerilogMode,生成干净的 Verilog 代码。
加载测试向量时,避免在时钟的上下沿变化
为了模拟真实器件的行为,加载测试向量时,避免在时钟的上下沿变化,而是在时钟的上升沿延时一个时间单位后,加载的测试向量发生变化。如
......
assign #5 c="a"^b
......
@(posedge clk) #(0.1*`cycle) A="1";
......
wire #5 z = a&b;
......
or #5 u3(C,A,B);
......
assign #(rise,fall) c = a^b;
......
buf #(10,25,35) zbuf(z,a,en)
......
避免对同一测试向量同时进行不同的操作
如果模拟时有对同一测试向量的操作,要避免同时出不同的操作,通过增加不同的延时单位,将操作串行化。例如模拟FIFO的行为,对FIFO有效计数的加和减操作,要在不同的时间进行。
用$strobe调用显示用非阻塞赋值语句赋的值
不要用 $display
文章评论(0条评论)
登录后参与讨论