Oct
24
Notes: Xapp199 - Writing Efficient Testbenches
Xapp199 - Writing Efficient Testbenches 是一篇挺老的Application Note了,我以前也读过,不过今天再读还是有所收获的。这篇文档还是讲了不少内容的。
最基本的加激励:分为绝对时间激励和相对时间激励
绝对就是说写了具体时间的,无论是从0仿真时间开始算,还是上一次事件后多少时间,都算作绝对时间激励;
相对是指没办法定出什么时候会有激励,激励是取决于一定条件的,一般由if语句实现。
用文字显示运行结果:
Verilog很方便,$display, $monitor语言都直接有,VHDL也可以实现,只是相对麻烦,需要通过TEXTIO重定向到显示器或文件。
自动验证:
1、与文本数据库比较 - 首先得有期望得到的结果数据,然后重定向仿真结果到文件,在通过diff工具比较;
2、波形比较 - 其实ModelSim和ISIM都可以实现的
3、自动检查 - 在HDL语言内写入期望结果,然后比较(还不懂-_-)
初始化BRAM的方法
用Verilog - Task / VHDL - Procedure 将激励组合为成块,方便大设计的仿真。
双向信号的仿真:
VHDL用 when else赋值语句
Verilog用 ? : 结构
最基本的加激励:分为绝对时间激励和相对时间激励
绝对就是说写了具体时间的,无论是从0仿真时间开始算,还是上一次事件后多少时间,都算作绝对时间激励;
相对是指没办法定出什么时候会有激励,激励是取决于一定条件的,一般由if语句实现。
用文字显示运行结果:
Verilog很方便,$display, $monitor语言都直接有,VHDL也可以实现,只是相对麻烦,需要通过TEXTIO重定向到显示器或文件。
自动验证:
1、与文本数据库比较 - 首先得有期望得到的结果数据,然后重定向仿真结果到文件,在通过diff工具比较;
2、波形比较 - 其实ModelSim和ISIM都可以实现的
3、自动检查 - 在HDL语言内写入期望结果,然后比较(还不懂-_-)
初始化BRAM的方法
用Verilog - Task / VHDL - Procedure 将激励组合为成块,方便大设计的仿真。
双向信号的仿真:
VHDL用 when else赋值语句
Verilog用 ? : 结构
Xplorer
Spartan3E上的PreAmp和ADC




