独立写testbench注意的几点
在单独使用Modelsim有时候需要自己独立书写testbench,对于应用QII所自带的Start testbench Template writer确实方便,但是有时对于一个小的独立模块进行仿真时就需要独立调用Modelsim,这样在Modelsim中编写testbench,下面对于testbench的书写总结一下。
首先在写testbench时,应注意名称要和自己待仿真的工程名称要对应,比如自己的待仿真文件名称叫grey_even,那么对于teshbench的名称则取一个叫grey_even_tst,在书写testbench module name则取名叫grey_even_vlg_tst();
这样对于自己有好处,以免自己找不到自己写的文件。
书写grey_even_vlg_tst();
时,原来module grey_even();
中的input端口在grey_even_vlg_tst();
中要定义为同名reg变量,output 端口要定义为同名wire变量,然后在grey_even_vlg_tst();
例化module grey_even();
并调用module grey_even();
这样构成一个测试反馈回路,即例化的步骤:
grey_even i1(
.iCLK(iCLK), .iG_grey(iG_grey), .iH_cont(iH_cont), .iRST_N(iRST_N), .iVGA_VS(iVGA_VS), .iV_cont(iV_cont), .oFIFO_syn(oFIFO_syn), .o_even(o_even)
);
端口一定要和定义的接口对应,输入口与reg相连,输出口同wire相连。代码如下
`timescale 1 ps/ 1 ps module grey_even_vlg_tst(); // constants // general purpose registers // test vector input registers reg iCLK; reg [9:0] iG_grey; reg [10:0] iH_cont; reg iRST_N; reg iVGA_VS; reg [10:0] iV_cont; // wires wire oFIFO_syn; wire [9:0]o_even; // assign statements (if any) grey_even i1 ( // port map - connection between master ports and signals/registers .iCLK(iCLK), .iG_grey(iG_grey), .iH_cont(iH_cont), .iRST_N(iRST_N), .iVGA_VS(iVGA_VS), .iV_cont(iV_cont), .oFIFO_syn(oFIFO_syn), .o_even(o_even) ); initial begin // code that executes only once // insert code here --> begin$display("Running testbench"); end always // optional sensitivity list // @(event1 or event2 or .... eventn) beginend endmodule
然后再在例化后的部分开始编写测试代码。
testbench name :grey_even_tst(testbench的文件名)
Top level module :grey_even_vlg_tst(testbench的module名)
Design instance module name:i1(待测试module 在testbench的例化module名)
这个关系要明白
【独立写testbench注意的几点】转载于:https://www.cnblogs.com/woshitianma/archive/2012/12/19/2824776.html
推荐阅读
- 忽略大小写查看文件夹下重复的文件方法
- 使用vscode快速编写k8s资源清单yaml
- PHP使用SW-X框架的Redis-UML组件,对用户信息进行缓存读写
- C#/VB.NET 将文本内容更改为大写
- Python之读写Excel
- 写着简单跑得又快的数据库语言 SPL
- 操作系统开发(BIOS/MBR 编写开机引导)
- Springboot+thymeleaf+IDEA——在html内写变量时,IDEA 在每个变量下有红色的波浪线,如何解决
- Linux驱动开发(从零开始编写一个驱动程序)
- Dockerfile 的最佳实践 | Dockerfile 你写的都对么()