第5章 Testbench及其仿真 5.1Testbench设计 5.1.1Testbench简介 Testbench是一种验证工具。首先,大部分设计都需要输入输出。但是在软环境中没有激励输入,也不会对设计的输出正确性进行评估。那么需要有模拟实际环境的输入激励和输出校验的一种“虚拟平台”出现了。在这个平台上可以对设计从软件层面上进行分析和校验,这个就是Testbench的含义。 Testbench包含两部分。 (1) 激励生成。这部分只用来生成输出而自己没有输入。生成的激励信号通过用户的设计输入端口进行互连。这里的激励,都是预先设想好的,比如根据某个协议或者某种通信方式传递。 (2) 输出校验。即接收设计的输入,然后通过校验,找出对应的问题。通俗地讲,就是利用Testbench把自己解脱出来,让软件来帮助自己找错误,并以打印、通知等方式来了解设计的正确性。 设计与验证框图如图51所示。 图51设计与验证 如图52所示,测试结果不仅可以通过观察、对比波形来验证,而且可以灵活地使用脚本命令将有用的输出信息打印到终端或者产生文本进行观察,也可以写一段代码自动比较输出结果。总之,Testbench的设计是多种多样的,它的语法也是很随意的,不像RTL级设计代码那么严格,很多高级的语法都可以在脚本中使用。因为它不需要实现到硬件中,是运行在PC上的一段脚本。但是,使用Verilog的验证脚本也有很多需要设计者留意的地方,它是一种基于硬件语言又服务于软件测试的语言,不过,只要掌握好了Verilog语言的关键点,是可以更好地利用它来满足设计验证。 图52验证输出 图53Verilog的仿真模型 5.1.2Testbench的搭建 Verilog硬件描述语言在数字电路的设计中使用非常普遍,无论是哪种语言,仿真都是必不可少的。随着设计复杂度的提高,仿真工具的重要性也越来越凸显。在一些小的设计中,用Testbench来进行仿真是一个不错的选择。VHDL与Verilog语言的语法规则不同,它们的Testbench的具体写法也不同,但是基本结构大体相似。在VHDL的仿真文件中应包含以下几点: 实体和结构体声明、信号声明、顶层设计实例化、提供激励; Verilog的仿真文件应包括模块声明、信号声明、顶层设计实例化、提供激励。Verilog在设计中使用更普遍,这里以Verilog的仿真模型为例进行介绍,如图53所示。 5.2ModelSim 介绍及仿真 5.2.1ModelSim简介 Mentor公司的 ModelSim 软件是业界最优秀的 HDL 语言仿真软件之一。它提供个性化图形界面和用户接口,编译仿真速度快,而且所编译的代码与平台无关,是 FPGA/ASIC 设计的首选仿真软件。 仿真的主要目的是验证功能是否与设想的一致。仿真分为功能仿真和时序仿真,功能仿真是不带芯片时间延迟的仿真方法,主要用来验证功能; 时序仿真加入了时间延迟,可以考查在一定条件下功能是否符合设想。 5.2.2ModelSim仿真 如图54所示,打开ModelSim软件,新建一个 Library。 如图55所示,给新建的Library命名。 图54File→New→Library菜单命令 图55给Library命名 如图56和图57所示,新建一个工程,并给工程命名。 图56File→New→Project菜单命令 图57给工程命名 图58Add items to the Project 界面 在如图58所示的界面,单击Close按钮。 如图59所示,新建一个 Verilog文件。 图59File→New→Source→Verilog菜单命令 如图510所示,进入主程序,下面以全加器为例介绍。编辑完成后,单击保存按钮。文件名要与module后面的名称相同,文件扩展名改为.v。 图510编写程序窗口 如图511所示,再新建一个测试文件,步骤同上面新建的主程序文件,文件扩展名改为.vt。 如图512所示,添加文件,再编译文件。先右击左边空白处,选择Add to Project→Existing File命令。 图511测试程序窗口 图512添加文件 如图513所示,选择刚刚新建的两个文件。按Ctrl键可以同时选择两个文件,单击“打开”按钮。 图513文件选择界面 如图514所示,选择菜单命令Compile→Compile All,若出现两个“√”,则说明编译通过; 若出现“×”,则说明文件编译出错,双击“×”,可以查看错误。 如图515所示,选择菜单命令Simulate→Start Simulation,开始仿真。 图514编译 图515开始仿真 如图516所示,选择work库中的top_tb,或者测试文件名称,一定不要选中左下角的Enable optimization复选框,否则不会出现波形。 图516仿真设置 如图517所示,在弹出的界面中右击测试文件,选择Add Wave命令。 如图518所示,选择菜单命令Simulate→Run→RunAll,再单击缩小按钮,即可看到波形,仿真结果如图519所示。 图517添加波形 图518运行仿真 图519仿真结果 5.3PDS与ModelSim联合仿真 要进行仿真库编译,可在 PDS主界面选择菜单命令Tools→Compile Simulation Libraries。在弹出的界面中,按图520进行路径设置,将编译库pango_sim_libraries放在C:modeltech64_10.5仿真软件文件夹下,单击Compile按钮即开始编译。 如图521所示,由于前面没有创建文件夹,所以在这里会弹出询问是否创建文件夹的提示,单击Yes按钮,开始进行编译,编译成功界面如图522所示。至此,PDS软件与ModelSim就可以进行联合仿真了。 图520编译库设置 图521创建文件夹 图522编译完成