Isim你不得不知道的技巧(整理)
来源:电子产品世界;
注:本文由本人多出整理所得,原文章图片不清晰,自己整理配图后重新发表
安装好ISE,系统已经自带了ISim仿真软件,相比于专业的仿真软件Modelsim,ISim是免费的,不用编译库,小型设计仿真速度较快,对于轻量级的设计应该是完全足够的。Modelsim作为专业的仿真软件,具备了ISim的所有功能,同时还具备了ISim不具备的功能比如波形显示,任意添加中间变量到波形图中,数据导出等。不过能够真正用好ISim,掌握住仿真技巧,你就无敌啦。
先来看看ISim的界面吧,跟ISE的界面类似,在界面的上方是菜单栏,和一些功能菜单,界面中间是波形界面,界面的下面是控制台窗口和一些其他功能窗口,界面的左侧包含了仿真的工程文件(Instances and Processes Name),对应文件的输入输出端口(Objects)等,这些窗口都是可以自由拖动的,可以将窗口的位置摆放到一个自己习惯的位置,如果没有这些窗口,可以点击菜单栏的View -> Panels 勾选需要显示的窗口即可。
技巧一:更改数据显示格式
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更改成了无符号十进制数。
技巧二:查看中间变量
有些时候由于沟通不到位,导致模块与模块之间的连接出现问题,则需查看中间变量来确定问题所在。
在Instances and Processes Name 窗口中选择对应的非顶层模块(中间模块),会在Objects中出现可以添加到波形文件的信号名字,选择需要添加信号,可以直接拖到波形文件列表中,也可以右键添加至波形文件列表中(如图4所示),或者按(Ctrl+W)添加对应信号到波形文件中。
为了方便再次仿真,能够看到这些中间变量,而不用手动添加(对更改数据显示格式也适用),可以保存波形文件,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边上的那几个按钮,也都是很有用处的,尤其仿真时间设置的,甚至有的时候还会因为这些设置的问题导致老是不能出现预期结果,这些操作很简单,就不一一解释了,大家稍微用用就知道了。
Isim你不得不知道的技巧(整理)的更多相关文章
- css文本换行你所不知道的技巧
前言:这是最近翻译的一篇文章 我在header标签开头忘里边加入一个span标签的时候,有一点小问题.我总是想确保在span标签之前能够换行.明确地讲,在标签前边加入<br> 并没有什么错 ...
- Android Studio 的 10 个你非常有可能不知道的技巧
本文首发:http://prototypez.github.io/2016/04/19/about-10-things-you-probably-didn-t-know-you-could-do-in ...
- 几个你所不知道的技巧助你写出更优雅的vue.js代码
1. watch 与 computed 的巧妙结合 如上图,一个简单的列表页面. 你可能会这么做: created(){ this.fetchData() }, watch: { keyword(){ ...
- java基础:eclipse编程不得不知道的技巧
如果你是位具有开发经丰富的工程师,在开发的过程中,你就会很强烈的要求快捷的编程.如何快捷编程,只有更加熟悉开发工具.那么eclipse是同样也有很多技巧.可以带着下面问题来阅读1.如何查找类相关信息? ...
- 熟悉Android开发不得不知道的技巧
博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 1.用Eclipse插件将文件批量编码如GBK-UTF-8 用 ...
- 测试人员必备:linux文件清理不得不知道的技巧
测试人员最常见和繁琐的任务之一就是清理系统,比如防止磁盘空间出现不足.下面是我收集的一些常用的 Linux 文件系统相关命令. 一 检查可用空间 要查找服务器上所有文件系统上的可用空间,请执行以下命令 ...
- Postman如何做接口测试,那些不得不知道的技巧
Postman如何做接口测试1:如何导入 swagger 接口文档 在使用 postman 做接口测试过程中,测试工程师会往界面中填入非常多的参数,包括 url 地址,请求方法,消息头和消息体等一系列 ...
- VIM-不常用或不知道的技巧
cc 清除一行 并在本行编辑, 同理 cw :32,65d 多行删除 g/pattern/d 删除包含特定字符的行 v/pattern/d 删除不包含指定字符的行 等同于 g!/pattern/d y ...
- 你所不知道的 CSS 滤镜技巧与细节
承接上一篇你所不知道的 CSS 动画技巧与细节,本文主要介绍 CSS 滤镜的不常用用法,希望能给读者带来一些干货! OK,下面直接进入正文.本文所描述的滤镜,指的是 CSS3 出来后的滤镜,不是 IE ...
随机推荐
- leetcode中一些要用到动态规划的题目
需要仔细回顾的题目: 1.Interleaving String 交叉存取字符串 2.Decode Ways 字符串解码 3.Subsets Subsets II 求一个 ...
- select源码分析(linux2.6.11)
本文以tcp poll为例子来分析select的源码,下面是函数调用顺序.select--->sys_select->do_select--->sock_poll--->tcp ...
- 登录超时,给出提示跳到登录页面(ajax、导入、导出)
一.一般页面登录超时验证,可以用过滤器filter,如下: package com.lg.filter; import java.io.IOException; import javax.servle ...
- [CSS]border边框
border: 1px solid #ccc; /*1像素 实线 灰色*/可分割成:border-width:1px;border-style: solid; border-color: #00 ...
- php约瑟夫环
<?php function popChar($str , $m , $current = 0){ $number = count($str); $num = 1; if(count($str) ...
- Type 类型
修改 type 类型 UPDATE wd_order2 SET info = array_append(info, row(2,100001, now() )::info ) WHERE id_ ...
- 多线程-GCD学习笔记
********************************* 基本概念 *********************************** 1. Grand Central Dispatch ...
- 百度地图 - demo
项目需要集成百度地图,那么关于如何集成百度地图的事,就自己去百度开放平台查看文档吧,这是非常简单的事,在这里就不多说了. 那么下面我就说说我在这个demo里所做的事. 首先,项目需要具备定位及计算两地 ...
- iOS:处理XML文件
NSXMLParser是标准库类 Book.xml <?xml version="1.0" encoding="UTF-8"?> <!--Do ...
- Java操作Oracle数据库以及调用存储过程
操作Oracle数据库 publicclass DBConnection { //jdbc:oracle:thin:@localhost:1521:orcl publicstaticf ...