ImageVerifierCode 换一换
格式:DOC , 页数:8 ,大小:24.45KB ,
资源ID:3195969      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3195969.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(如何编写testbench的总结.doc)为本站会员(j****9)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

如何编写testbench的总结.doc

1、如何编写 testbench 的总结(非常实用的总结)1激励的设置相应于被测试模块的输入激励设置为 reg 型,输出相应设置为 wire 类型,双向端口 inout在测试中需要进行处理。方法 1:为双向端口设置中间变量 inout_reg 作为该 inout 的输出寄存,inout 口在testbench中要定义为 wire 型变量,然后用输出使能控制传输方向。eg:inout0:0bi_dir_port;wire0:0bi_dir_port;reg0:0bi_dir_port_reg;regbi_dir_port_oe;assignbi_dir_port=bi_dir_port_oe?bi_

2、dir_port_reg:1bz;用 bi_dir_port_oe 控制端口数据方向,并利用中间变量寄存器改变其值。等于两个模块之间用 inout 双向口互连。往端口写(就是往模块里面输入 )方法 2:使用 force 和 release 语句,这种方法不能准确反映双向端口的信号变化,但这种方法可以反映块内信号的变化。具体如示:moduletest();wire data_inout;reg data_reg;reg link;#xx;/延时forcedata_inout=1bx;/强制作为输入端口.#xx;release data_inout;/释放输入端口endmodule从文本文件中读取

3、和写入向量1)读取文本文件:用$readmemb 系统任务从文本文件中读取二进制向量(可以包含输入激励和输出期望值) 。$readmemh 用于读取十六进制文件。 例如:reg7:0mem1:256/a8-bit,256-word 定义存储器 meminitial$readmemh(“mem.data“,mem)/ 将.dat 文件读入寄存器 mem 中initial$readmemh(“mem.data“,mem,128,1)/ 参数为寄存器加载数据的地址始终2)输出文本文件:打开输出文件用?$fopen 例如:integerout_file;/out_file 是一个文件描述,需要定义为

4、integer 类型out_file=$fopen(“cpu.data“);/cpu.data 是需要打开的文件,也就是最终的输出文本设计中的信号值可以通过$fmonitor,$fdisplay,2.Verilog 和 Ncverilog 命令使用库文件或库目录ex).ncverilog-frun.f-vlib/lib.v-ylib2+libext+.v/一般编译文件在 run.f 中, 库文件在 lib.v中,lib2 目录中的.v 文件系统自动搜索使用库文件或库目录,只编译需要的模块而不必全部编译3 VerilogTestbench 信号记录的系统任务:1).SHM 数据库可以记录在设计仿

5、真过程中信号的变化. 它只在 probes 有效的时间内记录你setprobeon 的信号的变化 .ex).$shm_open(“waves.shm“);/打开波形数据库$shm_probe(top,“AS“);/setprobeon“top“,第二个参数:A-signalsofthespecificscropeS-Portsofthespecifiedscopeandbelow,excludinglibrarycellsC-Portsofthespecifiedscopeandbelow,includinglibrarycellsAS-Signalsofthespecifiedscopean

6、dbelow,excludinglibrarycellsAC-Signalsofthespecifiedscopeandbelow,includinglibrarycells还有一个 M,表示当前 scope 的 memories,可以跟上面的结合使用 ,“AM“AMS“AMC“什么都不加表示当前 scope 的 ports;$shm_close/关闭数据库2).VCD 数据库也可以记录在设计仿真过程中信号的变化. 它只记录你选择的信号的变化.ex).$dumpfile(“filename“);/打开数据库$dumpvars(1,top.u1);/scope=top.u1,depth=1第一个

7、参数表示深度, 为 0 时记录所有深度; 第二个参数表示 scope,省略时表当前的 scope.$dumpvars;/depth=allscope=all$dumpvars(0);/depth=allscope=current$dumpvars(1,top.u1);/depth=1scope=top.u1$dumpoff/暂停记录数据改变 ,信号变化不写入库文件中$dumpon/重新恢复记录3).Debussyfsdb 数据库也可以记录信号的变化 ,它的优势是可以跟 debussy 结合,方便调试.如果要在 ncverilog 仿真时, 记录信号 , 首先要设置 debussy:a.sete

8、nvLD_LIBRARY_PATH LD_LIBRARY_PATH(pathfordebpli.sofile(/share/PLI/nc_xl/nc_loadpli1)b.whileinvokingncverilogusethe+ncloadpli1option.ncverilog-frun.f+debug+ncloadpli1=debpli:deb_PLIPtrfsdb 数据库文件的记录方法,是使用$fsdbDumpfile 和$fsdbDumpvars 系统函数,使用方法参见VCD注意: 在用 ncverilog 的时候,为了正确地记录波形,要使用参数 :“+access+rw“, 否则没

9、有读写权限在记录信号或者波形时需要指出被记录信号的路径,如:tb.module.u1.clk.关于信号记录的系统任务的说明:在 testbench 中使用信号记录的系统任务,就可以将自己需要的部分的结果以及波形文件记录下来(可采用 sigalscan 工具查看) ,适用于对较大的系统进行仿真,速度快,优于全局仿真。使用简单,在 testbench 中添加:initialbegin$shm_open(“waves.shm“);$shm_probe(“要记录信号的路径“, ”AS“) ;10000$shm_close;即可。4.ncverilog 编译的顺序 :ncverilogfile1file

10、2.有时候这些文件存在依存关系,如在 file2 中要用到在 file1 中定义的变量,这时候就要注意其编译的顺序是从后到前,就先编译 file2 然后才是 file2.5.信号的强制赋值 force首先, force 语句只能在过程语句中出现,即要在 initial 或者 always 中间. 去除 force 用release 语句.initialbeginforcesig1=1b1;.;releasesig1;endforce 可以对 wire 赋值,这时整个 net 都被赋值; 也可以对 reg 赋值.6 加载测试向量时,避免在时钟的上下沿变化为了模拟真实器件的行为,加载测试向量时,避

11、免在时钟的上下沿变化,而是在时钟的上升沿延时一个时间单位后,加载的测试向量发生变化。如:assign#5c=ab(posedgeclk)#(0.1*cycle)A=1;*/testbench 的波形输出moduletop;.initialbegin$dumpfile(“./top.vcd“);/存储波形的文件名和路径, 一般是 .vcd 格式.$dumpvars(1,top);/存储 top 这一层的所有信号数据$dumpvars(2,top.u1);/存储 top.u1 之下两层的所有数据信号(包含 top.u1 这一层)$dumpvars(3,top.u2);/存储 top.u2 之下三层

12、的所有数据信号(包含 top.u2 这一层)$dumpvars(0,top.u3);/存储 top.u3 之下所有层的所有数据信号endendmodule/产生随机数,seed 是种子$random(seed);ex:dinY)=0.2;(B*-Y)=0.3;(C*-Y)=0.1;endspecifyendmodule/时间刻度timescale 单位时间/时间精确度/文件 I/O1.打开文件integerfile_id;file_id=fopen(“file_path/file_name“);2.写入文件/$fmonitor 只要有变化就一直记录$fmonitor(file_id,“%for

13、mat_char“,parameter);eg fmonitor(file_id,“%m:%tin1=%do1=%h“,$time,in1,o1);/$fwrite 需要触发条件才记录$fwrite(file_id,“%format_char“,parameter);/$fdisplay 需要触发条件才记录$fdisplay(file_id,“%format_char“,parameter);$fstrobe();3.读取文件integerfile_id;file_id=$fread(“file_path/file_name“,“r“);4.关闭文件$fclose(fjile_id);5.由文

14、件设定存储器初值$readmemh(“file_name“,memory_name“);/初始化数据为十六进制$readmemb(“file_name“,memory_name“);/初始化数据为二进制/仿真控制$finish(parameter);/parameter=0,1,2$stop(parameter);/读入 SDF 文件$sdf_annotate(“sdf_file_name“,module_instance,“scale_factors“);/module_instance:sdf 文件所对应的 instance 名./scale_factors:针对 timmingdelay

15、 中的最小延时 min,典型延迟 typ,最大延时 max 调整延迟参数/generate 语句,在 Verilog-2001 中定义.用于表达重复性动作/必须事先声明 genvar 类型变量作为 generate 循环的指标eg:genvari;generatefor(i=0;i1;default:shiftreg=shiftreg;endcaseendendmoduleTestbench:moduletestbench;/declaretestbenchnameregclock;regload;regreset;/declaration of signalswire4:0shiftreg;

16、reg4:0data;reg1:0sel;/instantiation of the shift_reg design belowshift_regdut(.clock(clock),.load(load),.reset(reset),.shiftreg(shiftreg),.data(data),.sel(sel);/this process block sets up the free running clockinitialbeginclock=0;forever#50clock=clock;endinitialbegin/this process block specifies the

17、 stimulus.reset=1;data=5b00000;load=0;sel=2b00;#200reset=0;load=1;#200data=5b00001;#100sel=2b01;load=0;#200sel=2b10;#1000$stop;endinitialbegin/this process block pipes the ASCII results to the/terminal or text editor$timeformat(-9,1,“ns“,12);$display(“TimeClkRstLdSftRgDataSel“);$monitor(“%t%b%b%b%b%b%b“,$realtime,clock,reset,load,shiftreg,data,sel);endendmodule

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。