原创 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条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /2 下一条