版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://mathon.blogbus.com/logs/2050996.html
| testbench文件编写风格 |
| |
|
| 作者: xixilu 发布日期: 2006-1-06 出自: http://www.edacn.net |
|
| |
[RF] 不建议在设计文件里写 `timescale,建议在一个单独的文件里写 理由之一,容易漏写,导致模拟报错,改起来费时间;理由之二,容易不一致,导致模拟报错,改起来费时间;理由之三,即使每个文件都写了,而且都写得一样,当需要调整精度时,还是要一个一个地修改,还是费时间。
建议创建一个专门的文件定义timescale,最后include 进去就可以了。
很多集成开发环境都是在生成 Verilog 文件时自动插入`timescale定义的,纯属画蛇添脚。推荐使用 EmacsVerilogMode,生成干净的 Verilog 代码。
[GL] 加载测试向量时,避免在时钟的上下沿变化 为了模拟真实器件的行为,加载测试向量时,避免在时钟的上下沿变化,而是在时钟的上升沿延时一个时间单位后,加载的测试向量发生变化。如
...... 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) ......
[GL] 避免对同一测试向量同时进行不同的操作 如果模拟时有对同一测试向量的操作,要避免同时出不同的操作,通过增加不同的延时单位,将操作串行化。例如模拟FIFO的行为,对FIFO有效计数的加和减操作,要在不同的时间进行。
[GL] 用$strobe调用显示用非阻塞赋值语句赋的值 不要用 $display |
|