perl生成遍历文件和modelsim覆盖率检测方法.doc_第1页
perl生成遍历文件和modelsim覆盖率检测方法.doc_第2页
perl生成遍历文件和modelsim覆盖率检测方法.doc_第3页
perl生成遍历文件和modelsim覆盖率检测方法.doc_第4页
perl生成遍历文件和modelsim覆盖率检测方法.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 用Perl语言编程生成不同工作模式的测试文件Perl是一种通用且应用广泛的脚本语言,可以不需要编译而直接解释运行,可移植能力强,兼有多种语言的精华和特性,效率也比较高,基于这些方面的优越性,其在实际的IC设计和验证中得到了广泛的应用。Perl的安装 在Linux系统下和大部分的UNIX系统下,perl都是随系统安装的,Windows需要下载安装perl,推荐使用ActivePerl,下载安装后可已在命令行输入 perl v 来查看是否正确安装和perl的版本(见图1.1),通过perl xxx.pl 来解释运行perl程序。图 1.1 perl版本查看test_enc.vhd文件中69-75行的作用是通过设置4个变量pat_code、pat_disturb、pat_mix 和pat_frame的值来指定一种工作模式,根据它们的取值范围可以得出总共会有8*4*4*16=2048种组合,对应2048种工作模式。Perl语言有别于其他语言的特性中,最重要的就是对正则表达式的支持,可以方便快捷的处理字符串相关的问题,因此可以利用这种特性,通过查找变量字符串和替换指令(s/)进行对测试文件变量值的更改,产生不同工作模式的激励。s/:替换运算符。s/searchattern/replacement/ 表示查找searchattrn并用replacement代替。利用4层for循环编写perl程序,每次循环查找一个变量并改变变量的值,然后输出一个文件名与变量值相关的vhd文件(例如4个变量值分别为“011”、“11”、“01”、“1111”时文件名可以设为test_3_3_1_15.vhd。需要注意的是,变量的值是一定位的二进制数,循环变量则默认为十进制数,所以要进行十进制与二进制数的转换,并在高位为0时也要显示出来。新建一个txt文件,并输入程序,保存文件名为test_gen并修改后缀为.pl,生成test_gen.pl文件,打开命令行,跳转到文件所在目录,输入:perl test_gen.pl,按回车键解释运行便会得到2048个vhd文件,对应不同的工作模式,而且参数的选值与各个文件的名字相关,方便进行选取和测试。下图为得到的test_3_3_1_15.vhd中4个变量的值,可以看出与预期的结果一致。图1.2 程序运行结果2 modolsim的覆盖率检测步骤和说明Modelsim仿真工具是Model公司开发的,它支持Verilog、VHDL以及他们的混合仿真比quartus和ISE自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80或90。在用ModelSim做硬件设计验证的时候,可以用ModelSim自带的Code Coverage功能,该功能能报告出statement(语句)、branch(分支)、condition(条件)、expression(表达式)、toggle(信号反转)、fsm(有限状态机)等多种覆盖率情况,进一步提高了测试的完整性。本面简要介绍ModelSimCodeCoverage的使用方法。1.下载安装modelsim推荐下载SE版本的modelsim,安装完成后运行License Wizard,通过指定license文件和设定环境变量。2.新建工程,添加文件点击File-new-project,在弹出的对话框中输入工程名,并选择工程目录。点击“OK”后弹出添加文件的窗口选择“Add Existing Flie”把vhd_0601中的所有vhd文件添加到工程。3.设定覆盖率选项选中所有文件,右击选择properties选项出现Project compiler settings的窗口点击Coverage选项卡,选择项使能语句、分支、条件、表达式覆盖率的选项,如图示。4.编译,仿真点击compile all的按钮编译,无错误后切换到library选项,选择work库,右击要测试文件,选择Simulate with Coverage,在右侧会出现Statement,Branch,Condition,Expression等选项卡,会把各个vhd文件的语句按照功能进行分类。选中左侧的sim选项卡,右击实体test_enc-add-to wave-all items in region完成添加波形后运行1ms。可以得到1ms以内的仿真波形图5.查看和保存覆盖率信息最大化左侧sim选项卡,可以查看该文件的覆盖率信息右键-Code Coverage-Code Coverage Report可以用TXT形式导出此次覆盖率测试的报告。说明:Stmts是语句覆盖,表示测试程序运行后,程序中运行可执行语句的比率;Branches是分支覆盖,表示测试程序运行后,程序中所有判断语句的取真分支和取假分支被执行的比率;Conditions是条件覆盖,表示测试程序运行后,所有判断语句中的每个条件的可能取值出现过的比率;Expressions是表达式覆盖,表示程序运行后,所有表达式被执行的比率;Fec是focused expression/condition的缩写,Fec Conditions表示条件表达式中条件分支被执行的比率,Fec Expressions表示条件表达式中表达式被执行的比率。Modelsim除了支持图形界面操作以外,还支持脚本操作,常见的图形界面操作相对直观,但是由于重复性操作几率高、处理效率低、工程的非保存性,对于大规模的代码仿真不推荐使用;而脚本操作可以把常见的命令,比如库文件和RTL加载、仿真、波形显示等命令通过命令行来运行,也可以把命令行编辑成.do脚本文件,只需要让Modelsim运行.do文件即可以完成仿真,智能化程度高。用命令行的方式进行覆盖率检测的方法如下quit sim # 退出当前仿真vdel -all -lib work # 从工程中移除work库及库内文件vlib work # 新建一个work库vmap work work # 进行库映射vcom -cover bces F:/vhd_0601/test_test.vhd #添加vhd文件vcom -cover bces F:/vhd_0601/T1/*.vhd #添加T1文件夹下的所有vhd文件vcom -cover bces F:/vhd_0601/T2/*.vhd #添加T2文件夹下的所有vhd文件vcom -cover bces F:/vhd_0601/T3/*.vhd #添加T3文件夹下的所有vhd文件vcom -cover bces F:/vhd_0601/top/*.vhd #添加top文件夹下的所有vhd文件vcom -cover bces F:/vhd_0601/mem/*.vhd #添加mem文件夹下的所有vhd文件vsim +ALL_TESTCASE -coverage -novopt work.test_enc #进行带覆盖率检测的仿真add wave sim:/test_enc/* #添加波形信号run 1ms #运行1mscoverage report -recursive -select bces -file Coverage.txt #以txt形式导出覆盖率检测报告可以把以上代码拷贝进modelsim的命令行输入窗口,按enter键运行,结果和前文所介绍的图形化操作方法是一样的。使用命令coverage report -lines -byinstance -select bces -file CoverageDetail.txt可以导出更加详细的报告。另一种方法是把代码写进do文件,直接在命令行窗口输入 do name.do 即可。注意要将do文件放在modelsim的工作目录。也可以用ucdb文件来保存覆盖率信息,在命令行输入fcover save nam

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论