数字电路设计与仿真_第1页
数字电路设计与仿真_第2页
数字电路设计与仿真_第3页
数字电路设计与仿真_第4页
数字电路设计与仿真_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

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

文档简介

数字电路设计与仿真---陈俊锐ContentsNCverilog仿真器,Verilog-XL仿真器及NClaunch简介1SimVision简介2设计过程简介3实例解说及演示4NCverilog仿真器,Verilog-XL仿真器及NClaunch简介NCverilog简介NCVerilog仿真器都是基于事件算法的仿真器。仿真器读入VerilogHDL描述并进行仿真以反映实际硬件的行为。NCVerilog是全编译仿真器,它直接将Verilog代码编译为机器码执行。其过程为:ncvlog编译Verilog源文件,按照编译指导(compiledirective)检查语义及语法,产生中间数据。ncelab按照设计指示构造设计的数据结构,产生可执行代码。除非对优化进行限制,否则源代码中的元件(element)可能被优化丢失。产生中间数据。ncsim启动仿真核。核调入设计的数据结构,构造事件序列(时轮),调度并执行事件的机器码。有些事件可能消失(从不执行)除非限制优化过程。编译后的所有代码的执行使用同一个核。在交互模式下,可以使用Tcl命令及其针对NCVerilog的扩展命令来修改设计和控制仿真。这将在后面进行详细描述Verilog-XL简介Verilog-XL是一个交互式仿真器,过程如下:读入Verilog描述,进行语义语法检查,处理编译指导(compilerdirective)在内存中将设计编译为中间格式,将所有模块和实例组装成层次结构(设计数据结构)。源代码中的每个元件都被重新表示并能在产生的数据结构找到。决定仿真的时间精度,在内存中构造一个事件队列的时间数据结构(时轮)。读入、调度并根据事件执行每一个语句。Verilog-XL采用多种加速算法提高各种抽象级的仿真速度。每次重新启动Verilog-XL,将重复上述步骤。当进入交互模式时,可以输入VerilogHDL语句并加到设计的数据结构中。NClaunch简介NCLaunch,是一个图形界面的用户接口,能帮助你管理大型的设计工程。配置和启动编译器NCverilogcomplier,描述器NCverilogelaborator以及仿真器Simulator还可以在NCLaunch上运行像SDFcompiler,HDLAnalysisandLint,CodeCoverageAnalyzer,NCBrowse,andComparescan.之类的工具NClaunch启动的界面Nclaunch–new&NClaunch运行模式MultipleStepmode

一步步运行compile,elaborate,andsimulate。如果我们要仿真的文件是VHDL或者混合语言设计,我们必须选用多步模式。当然对于verilog

设计也可以用多步模式。usesthencvlogandncelabcommands

SingleStepmode

一步完成compile,elabrate,simulate。但必须整个设计是用verilog的。

ncverilogcommandNClaunch的图形界面I/ORegionToolsbarFilebrowserMenubarDesignbrowserNClaunch中的toolsNClaunch中的utilitiesNCLaunchToolbarButtonsNC-VHDLCompiler(VHDL编译器)—LaunchesncvhdltocompiletheVHDLsourcefilesthatyouhaveselectedintheFileBrowserNC-VerilogCompiler(Verilog

编译器)—LaunchesncvlogtocompiletheVerilogsourcefilesthatyouhaveselectedintheFileBrowserElaborator(描述器)—LaunchesncelabtoelaboratethecompiledVHDLorVerilogdesignunitsSimulator(仿真/仿真器)—LaunchesncsimtosimulatethedesignNCBrowse(NC浏览)—LaunchesncbrowsetoexaminethemessagesinthelogfilethatyouhaveselectedintheFileBrowser

波形察看窗口(WaveformWindow)NCLaunch下使用ncverilog的方式一、终端命令输入二、图形用户界面终端命令输入ncvlog

编译Verilog源文件(ncvhdl对于vhdl)‏ncelab

描述设计并且生成仿真的snapshotncsim

对snapshot进行仿真仿真或ncverilog–csource_filencverilog

source_file(runbothcomplierandsimulator)‏

ncsim[options][lib.]cell[:view]Ncvlog命令ncvlog[options]source_file...Options:-DEFINE<arg>

--Definesamacr-FILE<arg>

--Loadcommandlineargumentsfrom<arg>rmation

-MESSAGES

--Specifiesprintingofinformativemessages-NOCOPYRIGHT

--Suppressesprintingofcopyrightbanner-NOWARN<arg>

--DisablesprintingofthespecifiedwarningmessageNcvlog命令ncvlogfilename1.vfilename2.v…注意:有时候这些文件存在依存关系,如在filename2中要用到在filename1中定义的变量,这时候就要注意其编译的顺序是从后到前,就先编译file1然后才是file2.

注意层次结构Ncelab命令ncelab用描述器(elaborator)把设计描述成snapshot的形式,Snapshot是仿真器将调用的你的设计的表述,它和其它由compiler和elaborator产生的中间目标一起保存在库中ncelab-access+rwc

worklib.topmodulename:module这里我们必须输入-access命令来启动elaborator+rwc表示读,写,连接探测

Ncelab命令ncelab[options][lib.]cell[:view]

Options:

-MESSAGES

--Specifiesprintingofinformativemessages

-NOCOPYRIGHT

--Suppressesprintingofcopyrightbanner

-NOSTDOUT

--Turnoffoutputtoscreen

-TIMESCALE<arg>

--SetdefaulttimescaleonVerilogmodules.

-ACCESS<arg>

--Setdefaultaccessvisibility.{+rwc}turnonread/write/connectivity.

-FILE<arg>

--Loadcommandlineargumentsfrom<arg>

-LOADPLI1<arg>

--Specifythelibrary_name:boot_routine(s)todynamicallyloadaPLI1.0application

Ncsim命令ncsim[options][lib.]cell[:view]Options:

-FILE<arg>

--Loadcommandlineargumentsfrom<arg>

-GUI

--Enterwindowmodebeforerunningsimulation

-INPUT<arg>

--Scripttobeexecutedduringinitialization

-MESSAGES

--Specifiesprintingofinformativemessages

-NOCOPYRIGHT

--Suppressesprintingofcopyrightbanner

-NONTCGLITCH

--Suppressdelayednetglitchsuppressionmessages

-NOSTDOUT

--Turnoffoutputtoscreen

-NOWARN<arg>

--Disablesprintingofthespecifiedwarningmessage

-SDF_NO_WARNINGS

--DonotreportSDFwarningsNClaunch的图形界面NCLaunchToolbarButtonsNC-VHDLCompiler(VHDL编译器)—LaunchesncvhdltocompiletheVHDLsourcefilesthatyouhaveselectedintheFileBrowserNC-VerilogCompiler(Verilog

编译器)—LaunchesncvlogtocompiletheVerilogsourcefilesthatyouhaveselectedintheFileBrowserElaborator(描述器)—LaunchesncelabtoelaboratethecompiledVHDLorVerilogdesignunitsSimulator(仿真/仿真器)—LaunchesncsimtosimulatethedesignNCBrowse(NC浏览)—LaunchesncbrowsetoexaminethemessagesinthelogfilethatyouhaveselectedintheFileBrowser

波形察看窗口(WaveformWindow)Simvision简介Simvision简介SimVision是一个candence

仿真器统一的图形化的调试环境。SimVision可以用于调试用verilog,vhdl,SystemC或者它们混合写成的数字,仿真,或数模混合电路的设计。你可以在以下几种模式运行SimVision:·Simulate模式·Post-processingenvironment(PPE)模式Simulate模式

在Simulate模式下你可以实时的看到仿真的数据。也就是说,你可以在仿真仿真的过程中就进行数据的分析。你可以通过对设计设置断点和分步来达到控制仿真的。为了帮助你追踪整个仿真过程,SimVision提供了几个工具:·控制台窗口ConsoleWindow·源浏览器SourceBrowser·设计浏览器DesignBrowser·循环阅读器CycleViewer·原理图追踪SchematicTracer·信号流浏览器SignalFlowBrowser·波形窗口WaveformWindow·寄存器窗口RegisterWindow这些窗口之间是连接了的,所以如果你在一个窗口中选中了一个对象,那么在其它窗口中也会被选中。·Post-processingenvironment(PPE)模式

在PPE模式下,对仿真结果数据的分析是在仿真过程结束了后进行的。除了仿真器之外,你能访问所有的SimVision的工具。就像Simulator模式中一样,这里所有的窗口也是连接了的,你在一个窗口中选择了的目标也会在其它窗口中选中。要在PPE模式下运行,你必须先对设计进行仿真,然后把仿真的资料存到一个文件中,你可以随时从simulation模式切换到PPE模式,但是不能在PPE模式切换到simulation模式中去。Simvision使用的方式一、终端命令输入二、图形用户界面终端命令输入

图形用户界面Tools主要ToolsButton介绍控制台Consolewindow:Consolewindow允许你输入tcl仿真的命令和SimVision的命令。DesignBrowser:DesignBrowser让你进入设计的各层,以及信号和变量的数据库。Registerwindow:Registerwindow让你可以使用一个开放式的图形编辑器来定义一些记录簿,每个都包含了一个自定义的仿真数据的观点。SignalFlowBrowser:SignalFlowBrowser让你追踪信号的变化。SourceBrowser:SourceBrowser让你可以看到设计的源代码。Waveformwindow:Waveformwindow把仿真的资料在X-Y坐标系里面描绘出来。数据通常被显示为值和时间的关系,但是它也可以是已经记录下了的数据。原理描述器显示了用Verilog或者Vhdl编写的设计的原理图,可以让你描述在设计中的信号。

设计过程简介设计过程简介描述设计将在设计的实例化,结构化信息的基础上建立设计的层次结构,建立信号的连接,计算所有对象的初始值调用编译器对verilog源程序进行编译,编译过程将把源文件中的用HDL编写的单元编译成内在的描述对描述器生成的snapshot进行仿真编译描述仿真设计路径结构NcvlogNcelabNcsim实例解说及演示实例解说仿真一个51单片机的定时器,包括2个源文件:51_timer.vTimer_test.v通过启动仿真器,来仿真其工作的四种模式。本例的所有源文件包含在/home/chen/51_timer下。启动终端,用cd命令切换到此目录,并运用nclaunch–new&命令来启动nclaunch-new选项指名你想要在一个新的设计(design)启动后如图:工程存放路径我们建立了一个文件夹之后,在这个文件夹下启动NCLaunch就会默认存放在这个文件夹里面LibMappingFile的存放路径Worklib默认的工作库若用VHDL或者混合语言设计,就选择默认library或IEEE的Library;Verilog的就不需要任何library设计源文件包含在库中在你仿真仿真你的设计以前,你必须用编译器编译源文件,并且用描述器(elaborator)把设计描述成snapshot的形式。Snapshot是仿真器将调用的你的设计的表述,它和其它由compiler和elaborator产生的中间目标一起保存在库中。NCLaunch的主窗口让你可以连接你编译和描述设计所需要的工具,当然还有其它的程序。你利用Tools和Utilities菜单,或者你也可以利用工具栏里面的工具按钮,你可以打开工具和其它程序。对编译器的设置选上可以在大的设计中节省时间,在重新编译的时候只对有修改过的units进行编译如果要预编library和cell,就选上,如`celldefine和`endcelldefine预编译指令如果用systemverilog,就选上检测源代码与IEEE1364的兼容性。若我们要用另一些仿真器或者综合器,就选上编译(compiling)源文件我们必须先对两个源文件进行编译,在编译过程中,ncverilog会自动查找设计中的错误,并在I/ORegion中显示出红字,提示错误的原因。先人为的往设计源文件中加入错误,让编译器去查找。通过在终端键入geidt51_timer.v打开源文件,并加入错误如下图:提示出错的原因编译命令按钮通过编译的源文件加入到worklib中描述(elaborate)你的设计要描述(elabrate)你的设计,典型的你要展开你的库(worklib),选择顶层(top-level)的单元,然后选择描述(elabrate)按钮。对描述器进行设置若只有一个模块包含了时间表的编译指示。因为其它模块都没有定义时间表,为了防止elaborator报错,这里启动OtherOption选项然后再文本框输入-timescale1ns/1ns

-timescale1ns/1nsAccessVisibility按钮选中并且它的值是All,这个选项意味着全部存取(读,写,连接探测)来仿真目标,这样你就可以在仿真的数据库里面探测目标和范围,调试你的设计。选择描述(elabrate)按钮仿真的snapshot

启动Simulator1.展开Snapshots文件夹,以显示在你的库中你可以选择的snapshot。

2.选中你想要仿真的snapshot

3.按下仿真按钮就会自动跳出仿真器,会出来两个浏览器设计浏览器(DesignBrowser)和控制窗口(Consolewindow)

控制窗口(Consolewindow)

可以运行tcl命令和simvison命令,自由选择可以运行tcl命令和simvison命令,自由选择设计浏览器(DesignBrowser)设计仿真Simulator命令在仿真过程中对设计进行探测,然后它把探测目标的值存入数据库。有两种类型探测的命令:·探测一个特殊的目标或多个目标。这些特殊目标的值存在数据库中。·探测一个特殊的范围或多个范围。你可以选择你想存储的信息类型,比如说,这个范围内的输入信号,你能决定探测的是探测一些还是全部的范围。输入,输出,内部寄存器展开可以看到设计的层次结构选择菜单Simulation--〉CreateProbeSimVision打开Probe的设置窗口,这个窗口允许你选择一层或者多层子范围,选择你要探测的信号类型,然后记录探测信息到任何数据库。选择Includesub-scopes下拉菜单中的all选项以包含所有设计的子域

选择Includewithineachscope下拉菜单中的all选项以包含输入,输出和端口

点击run提示当你完成了这些步骤,你的工作目录下面将会出现一个新的名为waves.shm

的目录,它里面包含了waves.dsn和waves.trn两个文件。如果它们的大小分别远小于65500bytes和360bytes,那么在仿真过程中你就没有探测到了所有的目标。为了纠正问题,在控制窗口(consolewindow)中选择Simulation—〉ReinvokeSimulator重新启动simulator或者退出simulator再用下面的命令重新启动simulator:ncsim-gui

worklib.timer_test:module然后重新执行刚才讲的几个步骤。SHM:波形数据库SHM:波形数据库仿真历史管理器(SimulationHistoryManager,SHM)数据库记录用户的设计在仿真时数据信号的变化。只记录用户要观察(probe)的信号。

用户必须在仿真前(时间0前)设置探针信号才能看到信号在仿真过程中全部变化。如果没有对其进行设置,仿真器会默认产生一个波形数据库waves.shm.里面探测的信号是加到波形窗口上的信号。在波形窗口(waveformwindow)中,在波形数据的上方,你可以看到当前窗口中仿真的数据的启始和终止时间。在波形数据的下方的滚动条显示的是整个仿真的时间。你可以通过输入一个新的时间范围来调整当前窗口中显示的波形数据的范围。在TimeRange文本框中输入一个时间段.在这个例子中,输入的是0:2000

在TimeRange文本框中输入一个时间段.在这个例子中,输入的是0:3000

菜单中选择Keepthisview,这样你就可以保存你的缩放设置,下次可以直接观察在波形数据上方的下拉菜单中选择Keepthisview,这样你就可以保存你的缩放设置。任意时刻,你能通过下拉菜单选择来快速地回到显示这个缩放段可拖动指标到想要探测的时间点

输入一个新的仿真时间:

·可拖动指标到想要探测的时间点,也可以在指标时间输入文本框中输入一个仿真时间来实现目的。控制波形数据的显示方式(进制or颜色)控制波形数据的显示当观察一个波形的时候,有时候把信号的值显示成ASCII码串很有用。本设计中为了观察2个定时器的工作模式,用ASCII码更直观高效。要把信号定义信号值为ASCII串,需要定义一个mnemonicmap。1.选择Windows—〉Tools—〉MnemonicMaps打开MnemonicMaps的属性设置窗口设置得到显示结果设计的调试波形显示窗口(waveformwindow)可以帮助你找到设计中的错误。通过定义环境,情况来观察波形数据,从而找到错误发生的地方。当你找到了错误的地点,你就可以对设计的源文件进行编辑,然后再运行simulator来检验你改变后的程序。搜寻波形中的环境,情况环境,情况是一个你想要观察的在波形窗口(waveformwindow)中的信号的值的组合。比如说,你可以定义一个环境发生的条件是TF0信号和TF1信号的值是一样的时候:1.在波形窗口(waveformwindow)中选择TF0和TF1信号,然后选择Edit–〉Create—〉Condition.2.ExpressionCalculator创建一个默认的由AND(与)逻辑组成的等式3.命名新加的调试信号,并按 把信号加到波形中去TF1ANDTF0先选中加入的信号,然后再search选value=1,即可查到创建自定义的仿真数据查看另一个分析仿真结果的方法是运用Register窗口,在那里可创建自定义的仿真数据的查看,包括自由形式的文本输入以及图形化的要素。一个Register窗口可以有几页,每页都有自己的显示方式。

在Register窗口中创建页:1.在波形窗口(waveformwindow)中选择你想要分析的信号2.点击ClicktheRegister按钮,以便把信号送入到Register窗口中去使用schematictracer对设计进行观察选择Windows—〉Tools—〉schematictracer打开schematictracer窗口或点击修改源代码中的错误你可以利用SimVision按照以下的步骤来查找有源文件有错误的地方:在波形窗口(waveformwindow),选择M1M0_0变

温馨提示

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

最新文档

评论

0/150

提交评论