来源:电子产品世界; html
注:本文由NingHeChuan本人多出整理所得,原文章图片不清晰,本身整理配图后从新发表git
安装好ISE,系统已经自带了ISim仿真软件,相比于专业的仿真软件Modelsim,ISim是免费的,不用编译库,小型设计仿真速度较快,对于轻量级的设计应该是彻底足够的。Modelsim做为专业的仿真软件,具有了ISim的全部功能,同时还具有了ISim不具有的功能好比波形显示,任意添加中间变量到波形图中,数据导出等。不过可以真正用好ISim,掌握住仿真技巧,你就无敌啦。微信
先来看看ISim的界面吧,跟ISE的界面相似,在界面的上方是菜单栏,和一些功能菜单,界面中间是波形界面,界面的下面是控制台窗口和一些其余功能窗口,界面的左侧包含了仿真的工程文件(Instances and Processes Name),对应文件的输入输出端口(Objects)等,这些窗口都是能够自由拖动的,能够将窗口的位置摆放到一个本身习惯的位置,若是没有这些窗口,能够点击菜单栏的View -> Panels 勾选须要显示的窗口便可。app

技巧一:更改数据显示格式ide
ISim在仿真时默认是二进制格式,为了方便显示,咱们能够更改其显示的格式,右键单击须要更改显示格式的数据上,Radix -> 选择合适的格式便可(如图2所示),Binary(二进制),Hexadecimal(十六进制),Unsigned Decimal(无符号十进制数),Signed Decimal(有符号十进制数),Octal(八进制),ASCII(ASCII码)。若是发现高低位不对,能够选择 Reverse bit order(反转bit顺序,即高位和地位对换)。工具

对于1bit数据,有些人不喜欢看一个孤零零的线(相似于图1中的CLK_62M5),能够选中这个数据右键单击,选择New Virtual Bus,而后修更名字为原来的信号名字,以防忘记。如图3所示,为修改后的数据,将CLK_62M5修改为了New Virtual Bus形式,将datain更改为了无符号十进制数。post
技巧二:查看中间变量学习
有些时候因为沟通不到位,致使模块与模块之间的链接出现问题,则需查看中间变量来肯定问题所在。this
在Instances and Processes Name 窗口中选择对应的非顶层模块(中间模块),会在Objects中出现能够添加到波形文件的信号名字,选择须要添加信号,能够直接拖到波形文件列表中,也能够右键添加至波形文件列表中(如图4所示),或者按(Ctrl+W)添加对应信号到波形文件中。spa
为了方便再次仿真,可以看到这些中间变量,而不用手动添加(对更改数据显示格式也适用),能够保存波形文件,File -> Save As 输入你想要的名字便可,关闭ISim时记得保存波形文件。再次仿真时,ISim不会直接调用你保存的波形文件,而是一个defalut.wcfg,此时只需经过File->Open打开你保存的波形文件,而后从新仿真便可。

技巧三:断点调试
断点调试是一个十分方便的功能,能够查看指定位置是否有错误,方便debug程序。相对与其余仿真,FPGA是并行执行,更多的时候是查看波形是否正确,经过波形发现错误,进而定位到对应的语句或者状态,而后断点查找错误。
在Instances and Processes Name窗口中,双击对应模块,则可打开对应的.v文件,而后在须要的地方加入断点,此时点击reset(Ctrl+Shift+F5)按钮,而后点击run all(F5)运行,便可运行到断点处。此时能够点击单步(step 快捷键F11)执行按钮,查看是否有bug。
技巧四:产看Memory
不少时候咱们须要查看咱们的存储空间是否正确的存储了咱们所需的值;有些时候会遇到,明明给了使能,却没有数据输出,或者数据输出时错误的,此时,若可以真实的看一看存储器的状态,而后在波形文件中添加入存储器相关的变量,就颇有可能发现问题了。
点击Memory窗口,若是没有发现Memory窗口,能够点击菜单栏的View -> Panels 勾选,而后双击须要显示的内存空间,则可打开对应的memory空间。
默认显示的数值为二进制,能够修改数据显示的格式(二进制、十进制有符号数、十进制无符号数、十六进制、八进制、ASCII码),同时也能够修改地址显示的格式。若是要查找某个地址的值,只需在地址栏中输入这个值,按回车便可。
技巧五:添加块
添加块不是添加模块,而是添加一个实心方块或者分组,能够将不一样模块之间的信号,分个开,方便查看。如图8所示。
这样添加分割线和分组后看起来就很方便了,一眼就看清楚了信号的做用以及所在模块的,十分方便。
点击波形文件的Name 空白处,右键 –> New Divider/New Group,便可添加分割和分组,固然也能够选中须要加入分组的信号,而后右键 – > New Group而后修改成相应的名字便可,如图9所示。

技巧七:测量时间
在有些时候,须要测量两个信号之间的时间间隔,能够经过以下方式来实现。
若是只是简单的测量两个边沿的时间间隔,如图10所示,可先按着鼠标左键选中一个边沿,而后拖动鼠标到另外一个边沿,此时在波形的下面将出现时间轴,则可测量两个上升沿之间的时间。

若是须要测量的时间太多,能够添加Marker,鼠标左键单击击到要加入标记的地方,而后点击标记按钮,或者右键 –> Markers->Add Marker,此时并不能出现时间轴,鼠标单击Marker线,蓝色的线将变成白色,并以此为时刻0点,此时就能够看到时间间隔啦,如图11所示。

技巧八:重仿真
在编写verilog模块后,很重要的一部分就是对所编写的模块进行仿真。而在仿真过程当中,很重要的一部分就是观察波形。这里所谈的技巧实际上是对于我我的而言,可能大部分人都已经知道。但仍是记录下来,算是对我本身的提醒吧。
如今想一想仍是以为可笑,之前每次打开波形窗口的时候,都是点击下图的Simulate Behavioral Model.每次修改了代码,都是关掉原来的波形窗口,而后再从新点击打开,麻烦程度不言而喻(好吧,当初由于程序简单,其实还不以为很麻烦。)
如今明白了,对于这种状况,确定是会有简单的操做的,不然这用户体验也太差了。
固然,第一次仿真打开波形窗口时,仍是老方法,点击上图的Simulate Behavioral Model。添加内部信号以及修改数值进制后结果以下图(这里采用的是一个FIFO读写程序,程序不是这里须要在乎的问题,咱们只关心软件的操做)。
下面咱们经过修改din[3:0]的初始值来反映这个过程,由上图可知,din[3:0]的初始值为6.接下来我把代码中din[3:0]的初始值改成0后从新观察波形,那该如何操做呢?千万不要像我之前那么傻的关掉现有窗口而后从新仿真打开了。这样咱们又要从新添加内部信号以及修改数值显示了。
方便的步骤应该是,首先,将该波形保存,这部很简单就不贴图了,保存的其实就是你对该窗口的各类配置,哪怕之后你从新打开软件,也能够经过打开以前保存的波形配置来查看仿真波形,而不用从新配置了。
保存后,修改完代码(这里我把din[3:0]的初始值改成0,另外,代码要记得保存,保存后代码才能生效),而后点击波形窗口的re-launch(若是以前没进行保存操做的话,点击re-launch后软件也会提示你保存的).就能够看到仿真波形发生了变化,din[3:0]的初始值由以前的6变成了0.
另外,关于re-launch边上的那几个按钮,也都是颇有用处的,尤为仿真时间设置的,甚至有的时候还会由于这些设置的问题致使总是不能出现预期结果,这些操做很简单,就不一一解释了,你们稍微用用就知道了。
注意:当你每次修改完test_bench文件后,就不用关闭isimulator,从新打开,这样能够提升仿真的效率。
技巧九:改变波形颜色
在进行比较大的工程进行仿真时,信号比较多,仿真起来不容易查看波形,因此能够选中信号右键点击 signal color,能够把你的信号设置成各类你喜欢的颜色,这样便提升了仿真的效率!
技巧十:从新打开以前配置好的仿真分组
咱们为了仿真方便,一次仿真后将仿真所配置的分组和文件保存到指定文件夹,为了后面再次打开。
以下图,右键点击Simulate Behavioral Model,选择Process Properties。
勾选Use Custom Waveform Configuration File这一选项
在下面那一栏添加你刚才保存的仿真文件路径,完成后点击apply。
以下图,右键点击Simulate Behavioral Model,点击Run ,这样你就能够打开本身原来所配置的仿真分组文件了。
最后
仿真真的是很重要,我学习了一年FPGA才真正算的是仿真能力入了门,若是对于一个工程仿真作的好的话,能够节省你不少时间的。这是我最近用的vivodo中的Isim作的仿真,算是充分利用了仿真工具,这么久以来,这多是我作过的最漂亮的仿真了!
转载请注明出处:NingHeChuan(宁河川)
我的微信订阅号:NingHeChuan
若是你想及时收到我的撰写的博文推送,能够扫描左边二维码(或者长按识别二维码)关注我的微信订阅号
知乎ID:NingHeChuan
微博ID:NingHeChuan