modelsim-中代码覆盖率使用详解

合集下载

PERL生成遍历文件和MODELSIM覆盖率检测方法

PERL生成遍历文件和MODELSIM覆盖率检测方法

1用Perl语言编程生成不同工作模式的测试文件Perl是一种通用且应用广泛的脚本语言,可以不需要编译而直接解释运行,可移植能力强,兼有多种语言的精华和特性,效率也比较高,基于这些方面的优越性,其在实际的IC 设计和验证中得到了广泛的应用。

Perl的安装在Linux系统下和大部分的UNIX系统下,perl都是随系统安装的,Windows 需要下载安装perl,推荐使用ActivePerl,下载安装后可已在命令行输入perl–v来查看是否正确安装和perl的版本(见图1.1),通过perl xxx.pl来解释运行perl程序。

图 1.1perl版本查看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文件,对应不同的工作模式,而且参数的选值与各个文件的名字相关,方便进行选取和测试。

ModelSim和QuestaSim功能简介及应用

ModelSim和QuestaSim功能简介及应用

ModelSim是工业界最优秀的语言仿真器,它提供最友好的调试环境,是作FPGA、ASIC设计的RTL级和门级电路仿真的首选。

它支持PC和UNIX、LINUX平台,是单一内核支持VHDL和Verilog混合仿真的仿真器。

它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真,编译仿真速度业界最快,编译的代码与平台无关,便于保护IP核,具有个性化的图形界面和用户接口,为用户加快调试提供强有力的手段。

全面支持VHDL和Verilog语言的IEEE 标准,以及IEEE VITAL 1076.4-95 标准,支持C语言功能调用, C的模型,基于SWIFT的SmartModel逻辑模型和硬件模型。

ModelSim支持RTL仿真,门级仿真,时序仿真:主要特点:*采用直接编译结构,编译仿真速度最快;*单一内核无缝地进行VHDL和Verilog混合仿真;*与机器和版本无关,便于数据移植和库维护;*与机器无关的编译代码编于保护和利用IP;*简单易用和丰富的图形用户界面,快速全面调试;*Tcl/Tk用户可定制仿真器;*完全支持VHDL/Verilog国际标准,完全支持Verilog 2001;*支持众多的ASIC和FPGA厂家库;*集成的Performance analyzer帮助分析性能瓶颈,加速仿真;*灵活的执行模式,Debug模式可以进行高效的调试,效率模式大幅度提高仿真速度。

*加强的代码覆盖率功能Code coverage,能报告出statement 、branch、condition、* expression、toggle、fsm等多种覆盖率情况,进一步提高了测试的完整性;*同一波形窗口可以显示多组波形,并且能进行多种模式的波形比较(Wave Compare);*先进的Signal Spy功能,可以方便地访问VHDL 或者 VHDL 和Verilog 混合设计中的下层模块的信号,便于设计调试;*支持加密IP;*集成的 C调试器,支持用C 语言完成测试平台和模块;支持64位的OS; ModelSim用户界面:ModelSim设计流程:ModelSim coverage验证:ModelSim Dataflow窗口QuestaSim是第一个基于标准的单核验证引擎,集成了一个HDL模拟器,一个约束求解器,一个判断引擎,功能覆盖,以及一个通用的用户界面。

modelsim使用教程

modelsim使用教程

第8章 使用ModelSim进行设计仿真ModelSim为HDL仿真工具,我们可以利用该软件来实现对所设计的VHDL或Verilog程序进行仿真,支持IEEE常见的各种硬件描述语言标准。

可以进行两种语言的混合仿真,但推荐大家只对一种语言仿真。

ModelSim常见的版本分为ModelSim XE和ModelSim SE两种,ModelSim版本更新很快,目前最新版本为5.8版本,该版本支持VHDL的2002标准以及Verilog的2001标准,此外,在该版本的Linux、HP和SUN工作站等平台支持VHDL、Verilog 和SystemC的混合仿真,但在Windows平台上不支持SystemC的仿真。

本章将对ModelSim5.7版本进行介绍,目的是希望看完本章,读者可以简单地使用ModelSim进行仿真,有关更深入地教程,还是参考ModelSim附带的文档。

在网址/support/上也可以找到深入的教程,在该页面上注册以后,会在电子邮件中收到发过来的密码,根据邮件地址和密码登陆后,会有一些高级教程和使用要点(Application Notes)下载。

ModelSim5.7SE版本内部划分为更细的版本编号,从ModelSim5.7aSE到ModelSim5.7gSE等等。

读者可以选择任一版本。

另外,如果ModelSim是和ISE一起使用的话,你需要编译Xilinx的一些库文件,这些库文件包括unisim、simprim、xilinxcorelib、aim、pls、cpld等,有了这些库文件,可以在ISE中生成设计的行为仿真(将设计转换为RTL描述后进行的仿真)、转换后仿真(将设计转换为Xilinx器件的基本模块来实现后进行的仿真)、映射后仿真(将设计用Xilinx的具体器件的具体模块实现后进行的仿真,仿真中包含了器件的延时,但由于没有布局布线无法提取出互连线的信息,因此仿真中不包含互连线的延时、电容、电阻等信息)、布局布线后仿真(将设计对Xilinx具体器件进行布局布线后,提取出互连线的信息,进行的仿真包含了器件的延时以及互连线的延时等信息)的各种模型,然后在ModelSim中对这些模型进行仿真,由于ISE和ModelSim已经实现了无缝的连接,在ISE中只需设置一个可视的波形文件,然后点几下鼠标就可以实现各种仿真,具体的方法在ISE的使用一章中有较为详细的介绍,可以参阅具体的章节。

详细介绍modelsim的使用方法

详细介绍modelsim的使用方法
5 执行仿真----仿真器激励
测试台
- - Verilog 或 VHDL代码 非常复杂的仿真(交互式仿真、数据量大的仿真)

force命令
- - - 简单的模块仿真 直接从命令控制台输入 .DO 文件 (宏文件)
用ModelSim作功能仿真(19)
5 执行仿真----仿真器激励
force命令
用ModelSim作功能仿真(15)
5 执行仿真(UI)
选择 timesteps数量就 可以执行仿真
Restart – 重装任何已改动 的设计元素并把仿真时间设 为零
COM) restart
用ModelSim作功能仿真(16)
5 执行仿真----run 命令参数
可选的参数 - -<timesteps> <time_unit> • 指定运行的timesteps数量 • 单位可用{fs, ps, ns, ms, sec} - -step • Steps to the next HDL statement - -continue • 继续上次在-step或断点后的仿真 - -all • 运行仿真器直到没有其他的事件
用ModelSim作时序仿真(3)
时序仿真的实现方法:
unisim库是用来对ISE中画的电 路图进行前仿真时用的。
simprim则是在作布线后的时序 仿真时用。
用ModelSim作时序仿真(4)
时序仿真的实现方法:
以Foundation为例:
Foundation所产生的netlist不包含time delay的数据, 有一个time_sim.SDF文件来存储TIMING数据。(有 的厂商的布局布线所产生的NETLIST文件已经包含有 time delay的数据). Foundation所产生的NETLIST文件默认的文件名是 time_sim.vhd(或time_sim.v) time_sim.vhd或time_sim.v文件用到新的simprim库, 因此必须在仿真前先建立。 做时序仿真,要编译time_sim.vhd或time_sim.v,以 及time_sim.SDF 加载测试文件

代码覆盖率说明(个人总结)

代码覆盖率说明(个人总结)

代码覆盖率说明一、指令介绍代码覆盖率分为行覆盖率、条件覆盖率、状态机覆盖率和翻转覆盖率。

在vcs仿真工具下覆盖率信息存储在.cm文件中,使用urg工具解析、合并和生成报告;在ncsim仿真工具下覆盖率信息存储在icc.data文件中,使用iccr工具解析、合并和生成报告。

代码覆盖率指令主要包括编译、运行和生成覆盖率报告三个部分,指令结构大体同功能覆盖率。

为了工具的统一性和方便界面提取,先做如下规定:➢覆盖率数据库文件夹均放在CovData目录下,ncsim生成的放入ncsim子目录、vcs 生成的放入vcs子目录。

➢覆盖率报告均放在CovReport目录下,ncsim生成的放入ncsim子目录、vcs生成的放入vcs子目录。

➢每条用例都生成独自的同用例名的覆盖率数据库和覆盖率报告文件夹。

➢最后生成总的覆盖率数据库和覆盖率报告文件夹,名称为total。

文档指令描述中,{TC_NAME}表示匹配用例名。

1、vcs仿真环境1)样例rm -r simv* CovData/vcs/* FcovReport/vcs/* CovReport/vcs/*vcs -lca +v2k -sverilog -cm line+cond+fsm+tgl -cm_dir CovData/vcs/test_1.cm +define+marco=VCS+ test_1.sv./simv -cm line+cond+fsm+tgl -cm_dir CovData/vcs/test_1.cm +ntb_random_seed=666666 2>&1 |tee log/vcs/test_1.logvcs -lca +v2k -sverilog -cm line+cond+fsm+tgl -cm_dir CovData/vcs/test_2.cm +define+marco=VCS+ test_2.sv./simv -cm line+cond+fsm+tgl -cm_dir CovData/vcs/test_2.cm +ntb_random_seed=888888 2>&1 |tee log/vcs/test_2.logvcs -lca +v2k -sverilog -cm line+cond+fsm+tgl -cm_dir CovData/vcs/test_3.cm +define+marco=VCS+ test_3.sv./simv -cm line+cond+fsm+tgl -cm_dir CovData/vcs/test_3.cm +ntb_random_seed=555555 2>&1 |tee log/vcs/test_3.logurg -dir CovData/vcs/test_1.vdb -metric group -report FcovReport/vcs/test_1 -format text urg -dir CovData/vcs/test_2.vdb -metric group -report FcovReport/vcs/test_2 -format text urg -dir CovData/vcs/test_3.vdb -metric group -report FcovReport/vcs/test_3 -format text urg -dir CovData/vcs/*.vdb -metric group -report FcovReport/vcs/total -format texturg -dir CovData/vcs/test_1.cm -metric line+cond+fsm+tgl -report CovReport/vcs/test_1 -format texturg -dir CovData/vcs/test_2.cm -metric line+cond+fsm+tgl -report CovReport/vcs/test_2 -format texturg -dir CovData/vcs/test_3.cm -metric line+cond+fsm+tgl -report CovReport/vcs/test_3 -format texturg -dir CovData/vcs/*.cm -metric line+cond+fsm+tgl -report CovReport/vcs/total -formattext2)指令说明(1)编译-lca:增加LCA的支持,vcs0812及以后的版本需要,此前的版本不需要。

Modelsim仿真流程-经验总结

Modelsim仿真流程-经验总结

Modelsim仿真流程-经验总结1.Modelsim简介略。

2.modelsim仿真流程:modelsim基本的仿真流程包括建立库、建立工程并编译、仿真、调试、但在libero环境中运行modelsim时,软件自动映射库和生成工程文件。

其中功能仿真、综合仿真以及后仿真分别映射presynth、postsynth和postlayout库。

基本流程是:建立工作库→编译源代码→启动仿真→分析、调试。

2.1建立库并映射在modelsim中,任何使用VHDL、Verilog HDL、SystemC等语言实现的设计,都被编译到一个库中。

♥方法一:File>New>Library选择新建并映射到该库;♥方法二:在modelsim>提示符下运行命令vlib work2-建立库,vmap work work2-建立映射库;2.2建立工程Modelsim仿真需要建立自己的工程,同时modelsim还提供了文件夹管理工程的功能。

♥step1:File>New>project,并指定库文件名;♥step2:新建文件或导入文件;2.3编译文件建立好工程后,使用compile功能对源文件进行编译。

Libero环境启动modelsim时,系统执行run.do脚本文件自动编译源文件。

♥鼠标右击文件,选择compile All对所有的工程文件执行编译操作;♥启动仿真,使用simulation>start simulation>选择design选项卡功能使modelsim进入仿真状态,之后可以运行仿真。

在libero环境下,运行modelsim直接从运行仿真这一步骤开始。

♥运行仿真可以设置仿真时间或选择仿真全部♥tcl命令:do run.do –当设计修改后,使用此命令重新导入设计;Do wave.do-打开波形列表文件,或者向当前波形添加列表;Restart-复位当前仿真,从0时刻重新仿真;Run 1ms-运行仿真1ms时间;Run all-运行全部的仿真;在libero环境下,可以自己编写脚本文件代替run.do文件,在项目比较大的情况下可以大大简化仿真的操作。

Modelsim SE 6.5a使用指南

Modelsim SE 6.5a使用指南

Modelsim SE使用指南ModelSim的功能侧重于编译、仿真,不能指定编译的器件,不具有编程下载能力。

不象Synplify 和MAX+PLUS II可以在编译前选择器件。

而且ModelSim在时序仿真时无法编辑输入波形,不象MAX+PLUS II可以自行设置输入波形,仿真后自动产生输出波形,而是需要在源文件中就确定输入,如编写测试台程序来完成初始化、模块输入的工作,或者通过外部宏文件提供激励。

这样才可以看到仿真模块的时序波形图。

ModelSim还具有分析代码的能力,可以看出不同的代码段消耗资源的情况,从而可以对代码进行改善,以提高其效率。

菜单栏标题栏下方为菜单栏。

菜单栏有八个菜单项,分别是:File(文件)、Edit(编辑)、View (视图)、Compile(编译)、Simulate(仿真)、Tools(工具)、Window(窗口)、Help(帮助)。

下面分别罗列其具体选项。

1. File(文件)菜单文件菜单通常包含了对工程及文件等的操作。

ModelSim的文件菜单包含的命令有:New(新建),Open(打开),Close(关闭),Import(导入),Save(保存),Delete(删除),Change Directory(更改路径),Transcript(对脚本进行管理),Add to Project(为工程添加文件),Recent Directories(最近几次的工作路径),Recen Projects(最近几次工程),Quit(退出)。

(1)新建文件命令(File/ New)单击File/ New命令,将会出现一个子菜单,共包含四个选项:单击Floder(新建文件夹)后,会出现对话框,提示输入新建的文件夹的名字,即可在当前目录下新建一个文件夹;单击Source(新建源文件)后,会出现源文件类型的选项(VHDL,Verilog,Other),点击可分别新建对应格式的源文件;单击Project(新建工程)后,会出现对话框,提示在Project Name 处输入新建工程的名称,在Project Location处指定新建工程的存放路径,在Default Library Name处指明默认的设计库的名称,用户设计的文件将编译到该库中;单击Library(新建一个库)后,会出现对话框,提示选择Creat a New library and a logical mapping to it(新建一个库并建立一个逻辑映象)或A map to an existing library(新建一个到已存在库的映象),在Lirary name处输入新建库的名称,在Library phycial name处输入存放库的文件名称。

modelsim使用命令

modelsim使用命令

1. 常用仿真命令vlib work // 建立work仿真库vmap work wrok // 映射库vlog -cover bcest *.v // 加覆盖率分析的编译vsim -coverage -voptargs="+acc" -t ns test // 仿真文件为test.vadd wave * // 将所有模块waveform. dump出来add wave sim:/test/t/M2/Reg_out // 将模块Reg_out中的waveform. dump出来delete wave /test/i2. SVA 断言仿真命令vlog -sv a.vvsim -assertdebug testview assertionsvsim -assertdebug ScaleBlock_tf -L xilinxcorelib_ver -L unisims_ver // 加载xilinxlib库3. verror 3601 // 查错4. 给仿真工具加载xilinx 库命令(1)加载之前将modelsim.ini改为非“只读”(2)“运行” cmd,到xilinx目录下(3) C:\Xilinx > compxlib -s mti_se -p c:\Modeltech_6.0\win32 -f all -l verilog -o C:\ Modeltech_6.0\Xilinx_lbis或者Xilinx目录下.\bin\nt\下有compxlib.exe简单得modelsim命令行仿真用do文件进行仿真真得很方便,比写testbench方便多了,我是深有感触呀,开始时因为不知道,只知道写testbence,在小得模块也写testbench,真得很烦躁!而且信号定义什么得比较多,采用do文件得方法就没有那么多信号定义了,管理也比较方便,呵呵,真得很方便,而且采用命令行得形式,感觉特有成就感,呵呵!1.运行仿真,在主窗口输入命令:vsim work.实体名2.为时钟信号添加驱动,输入命令:force clk 0 0,1 10 -r 20,将仿真时钟设为50MHz;(设时间单位为ns)3.打开波形窗口,输入命令:view wave4.为波形窗口添加信号,输入命令:add wave -hex *,这里的*表示添加设计中所有的信号,-hex 表示以十六进制来表示波形窗口中的信号值;5.开始仿真,输入命令,run 3us,这时候在波形窗口中出现仿真波形6.退出仿真,输入命令:quit –sim。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、代码覆盖率
Modelsim代码覆盖率功能Code coverage,能报告出statement(语句)、branch(分支)、condition(条件)、expression(表达)、toggle(信号翻转)、fsm(有限状态机)等多种覆盖率情况。

1、编译选项(compile option):
在Modelsim的Workspace里选中需要查看代码覆盖率的文件,然后点击右键选择compile—>compile properties,如下图,
之后选择“Coverage”选项,出现下图所示的窗口,根据需要选择选项,这里选statement、branch、condition、expression和toggle。

选完点ok。

2、编译(compile)
点工具栏中的,编译所有的选中的文件,成功后进行下面的步骤。

3、仿真(simulate)
点工具栏中的,出现下面的窗口:
(注:不要选择“Enable optimization”)
选择Others,出现如下图所示的窗口:。

相关文档
最新文档