1.什么是好的仿真环境?
能够产生足够多的测试向量,把功能覆盖全面;
能够自动知道仿真是pass或fail;
能够自动停止。
2.如何把功能覆盖全面?
测试点分解:详细列出测试条目;
测试pattern编写,依次覆盖每个测试点;
使用定向测试:测试主要功能与corner case;
使用random 测试:测试信号/时序间的随机情况。
3.Pattern输出给DUT的信号最好不要跟clk edge对齐。在tb顶层故意加一个#0.1;
DUT输出给pattern的信号也在tb的顶层故意加一个#0.1。
4.timescale 定义延时的时间单位/时间精度。
timescale 1ns/100ps; //100ps精确到0.1ns
#1; //delay 1ns
#1.2; //delay 1.2ns
#1.24; //delay 1.2ns
#1.25; //delay 1.3ns,作四舍五入
timescale 1ns/10ps; //10ps精确到0.01ns
timescale 10ns/100ps; //100ps精确到0.1ns
#1; //delay 10ns
#1.2; //delay 12ns
$display("Time is : %t.", $realtime);//系统函数获取仿真时间