菜鸟要飞的个人空间 https://blog.eetop.cn/1149070 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

(转)ISim你不得不知的技巧

已有 3273 次阅读| 2015-7-2 12:02 |个人分类:仿真

    安装好,系统已经自带了仿真软件,相比于专业的仿真软件Modelsim,是免费的,不用编译库,小型设计仿真速度较快,对于轻量级的设计应该是完全足够的。Modelsim作为专业的仿真软件,具备了的所有功能,同时还具备了ISim不具备的功能比如波形显示,任意添加中间变量到波形图中,数据导出等。不过能够真正用好ISim,掌握住仿真技巧,你就无敌啦。

  先来看看ISim的界面吧,跟的界面类似,在界面的上方是菜单栏,和一些功能菜单,界面中间是波形界面,界面的下面是控制台窗口和一些其他功能窗口,界面的左侧包含了仿真的工程文件(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 输入你想要的名字即可,关闭时记得保存波形文件。再次仿真时,不会直接调用你保存的波形文件,而是一个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空间,如图6所示。

默认显示的数值为二进制,可以修改数据显示的格式(二进制、十进制有符号数、十进制无符号数、十六进制、八进制、ASCII码),同时也可以修改地址显示的格式。如果要查找某个地址的值,只需在地址栏中输入这个值,按回车即可。如图7所示。

  技巧五:添加块

  添加块不是添加模块,而是添加一个实心方块或者分组,可以将不同模块之间的信号,分个开,方便查看。如图8所示。

  这样添加分割线和分组后看起来就很方便了,一眼就看清楚了信号的作用以及所在模块的,十分方便。

  点击的Name 空白处,右键 –> New Divider/New Group,即可添加分割和分组,当然也可以选中需要加入分组的信号,然后右键 – > New Group然后修改为相应的名字即可,如图9所示。


技巧七:测量时间

  在有些时候,需要测量两个信号之间的时间间隔,可以通过如下方式来实现。

  如果只是简单的测量两个边沿的时间间隔,如图10所示,可先按着鼠标左键选中一个边沿,然后拖动鼠标到另一个边沿,此时在波形的下面将出现时间轴,则可测量两个上升沿之间的时间。

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

  熟练了掌握了这些技巧,基本就能够很好的利用提供的仿真功能来检查bug了,如果利用这些技巧,还找不到bug,那就只有你自己帮你自己咯!


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 6

    粉丝
  • 1

    好友
  • 4

    获赞
  • 1

    评论
  • 4531

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 12:54 , Processed in 0.021922 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部