vhdltestbench怎么写

1.如何编写 test bench来仿真VHDL程序本文介绍如何写testbench来仿真VHDL程序 。
通常testbench完成如下的任务:1. 实例化需要测试的设计(DUT);2. 通过对DUT模型加载测试向量来仿真设计;3. 将输出结果到终端或波形窗口中加以视觉检视;4. 另外,将实际结果和预期结果进行比较 。一、构建Testbench 本文用VHDL来写,由于testbench只用来进行仿真,它们没有那些适用于综合的RTL语言子集的语法约束限制,而是所有的行为结构都可以使用 。
所有testbench包含了以下的基本程序段:Entity and Architecture Declaration ;Signal Declaration ;Instantiation of Top-level Design ;Provide Stimulus. 在ISE工程中添加source:VHDL Test Bench到顶层文件,在source for 选项中选择Behavioral Simulation 。你会发现Test Bench中有很多已经自动写好,可根据自己的设计需要改写程序 。
其中Entity是空的,由于是仿真,不必有管脚的输入输出,只要写好激励信号就可以了 。二、双击Simulate Behavioral Model进行Modelsim仿真 我们在modelsim仿真的过程中,如果想改写激励程序,点击environment back(图中向左的箭头),回到激励程序的编写环境 。
可以利用其提供的模板直接改写testbench,点source->show language template,需要将read only取消掉,否则无法改写 。本人建议,在这个环境中可以看到模板,你可以根据需要将相应的语句拷到VHDL Testbench中去 。
这里只是简单介绍如何用test bench来仿真VHDL程序,其中各种激励信号的编写、时序的安排要依靠设计的需要,这些只能靠平时不断的积累 。这里介绍的是从ISE中直接调用modelsim进行仿真,因此关于ISE和modelsim的关联也是大家经常遇到的问题 。
这个下次再总结 。
2.如何写TESTBENCH, 给个教程吧一、基本概念和基础知识Testbench 不仅要产生激励也就是输入,还要验证响应也就是输出 。
当然也可以只产生激励,然后通过波形窗口通过人工的方法去验证波形,这种方法只能适用于小规模的设计 。在ISE 环境中,当前资源操作窗显示了资源管理窗口中选中的资源文件能进行的相关操作 。
在资源管理窗口选中了testbench 文件后,在当前资源操作窗显示的ModelSimSimulator 中显示了4 种能进行的模拟操作,分别是:Simulator Behavioral Model(功能仿真)、Simulator Post-translate VHDL Model(翻译后仿真)、Simulator Post-Map VHDLModel(映射后仿真)、Simulator Post-Place & Route VHDL Model(布局布线后仿真) 。如图1 所示:图1l Simulator Behavioral Model 也就是所说的功能仿真、行为仿真、前仿真 。
验证功能是否正确,这是设计的第一步 。功能仿真正确的程序不一定能被正确综合,也就是硬件实现 。
有的在综合时报错误,有的虽然能综合但结果并不正确 。当然,功能仿真如果都不能通过,以后的步骤也就无法进行 。
这是必做的仿真 。l Simulator Post-translate VHDL Model 也就是翻译后仿真 。
对源程序进行编译后首先排除了语法错误,对一些像类属命令(Generic)、生成语句(Generate)等进行了展开 。不是必做的仿真 。
l Simulator Post-Map VHDL Model也就是映射后仿真 。不同的器件内部结构也不尽相同,映射的作用就是将综合后产生的网表文件对应到实际的器件上去 。
由于映射不包含布线,也就是要用什么类型的逻辑单元虽然已经确定但要用哪个位置的还没有确定,因此,映射后仿真不包含布线延时 。不是必做的仿真 。
l Simulator Post-Place & Route VHDL Model 也就是所说的布局布线后仿真、时序仿真、后仿真 。这是最完整的仿真,既包含逻辑延时又包含布线延时 。
在做布局布线后仿真时要用到一个叫SDF的文件 。SDF文件包含设计中每个单元(Cell)的延时和时序约束数据 。