如何编写Testbench

如何编写Testbench

ID:79470115

大小:54.85 KB

页数:10页

时间:2022-02-14

如何编写Testbench_第1页
如何编写Testbench_第2页
如何编写Testbench_第3页
如何编写Testbench_第4页
如何编写Testbench_第5页
如何编写Testbench_第6页
如何编写Testbench_第7页
如何编写Testbench_第8页
如何编写Testbench_第9页
如何编写Testbench_第10页
资源描述:

《如何编写Testbench》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、精品文档2如何编写Testbench1)何时使用initial和alwaysinitial和always是2个基本的过程结构语句,在仿真的一开始即开始相互并行执行。通常被动的检测响应使用always语句,而主动的产生激励使用initial语句。initial和always的区别是always语句不断地重复执行,initial语句则只执行一次。但是,如果希望在initial里的多次运行一个语句块,怎么办?这时可以在initial里嵌入循环语句(while,repeat,for,forever等),如:initialbeginforever/无条件连续执

2、行/beginendend其它循环语句请参考一些教材,这里不作赘述。另外,如果希望在仿真的某一时刻同时启动多个任务,可以使用fork....join语句。例如,在仿真开始的100ns后,希望同时启动发送和接收任务,而不是发送完毕后再进行接收,如下所示:initialbegin随意编辑精品文档#100;fork/并行执行/Send_task;Receive_task;joinEnd2)如何作多种工作模式的遍历测试如果设计的工作模式很多,免不了做各种模式的遍历测试,而遍历测试是需要非常大的工作量的。我们经常遇到这样的情况:很多时候,各种模式之间仅仅是部分

3、寄存器配置值的不同,而各模式间的测试都是雷同的。有什么方法可以减轻这种遍历测试的工作量?不妨试试for循环语句,采用循环变量来传递各种模式的配置值,会帮助减少很多测试代码,而且不会漏掉每一种模式.initialbeginfor(i=0;i

4、这部分里,通过一些实际例子,介绍在出现问题时如何借助定位过程。1、监测内存分配内存分配和回收示意图consinier模代generator模块rd申请内存释放内存,emptyblock_耐:在这个例子里,假设总共有2K的内存块,希望在测试程序里监测内存分配和回收的块号是否正确,监测是否存在同一块号重复分配、重复回收的情况。设置一个2K位的变量对内存的使用情况进行记录,每一位对应一个内存块,空闲的块号记为1,被占用的块号记为0。该变量的初始值为全1,当分配一个块号出去时先判断该位是否为空闲,若是空闲则将该位设置为被占用,否则就为重复分配错误。相反,当回

5、收一个块号时,先判断该位是否被占用,若是被占用则将该位设置为空闲,否则就为重复回收错误。程序如下:always@(posedgeClkornegedgeRst)begin随意编辑精品文档if(Rst==1'b0)Mem_status<=2048{1'b1};elsebeginif(层次路径.rd)/监测内存分配,block_rd是分配的内存块号/if(Mem_status[block_rd]==1'b1)Mem_status[block_rd]<=1'b0;elsebegin$display("Error!重复分配同一内存块!");$stop;end

6、if(层次路径.wr)/监测内存回收,block_wr是回收的内存块号/if(Mem_status[block_wr]==1'b0)Mem_status[block_wr]<=1'b1;elsebegin$display("Error!重复回收同一内存块!");$stop;endendEnd随意编辑精品文档2、监测内部接口如果你是位验证工程师,在做芯片级的仿真时,相信你会或曾遇到过这样的问题:在一个端口输入了激励数据,但另一端口却得不到正确的响应,而且这条路径涉及到很多模块和很多个不同设计者,为了定位问题,你可能很盲目地逐个找来设计人员,逐个模块地记

7、录仿真波形,到解决问题时,可能几天已经过去了。我们都知道,如果问题定位在越小的范围,就越便于解决问题。所以,我们可以把模块接口间交换的数据记录到文件里,当出现问题时,就可以查看各接口的记录数据,看问题到底出现在哪个区间,简单地查看记录文件后,你就明确该找那位designer来解决问题。3、记录有用的DEBUG信息记录有用的debug信息,输出到标准的I/O设备上(屏幕或文件),会给你的debug带来很大的便利,由上面的例子也可见一斑,在检测到有错误时也可使用$stop令仿真停下来。值得注意的是,UNIX系统只有32个I/O,每个输出文件占用1个I/O

8、设备号,其中第1个是屏幕显示,设备号是32'b1,其它I/O设备号由输出文件占用,一个信息可同时输出到屏幕和

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。