芯片设计之Modelsim仿真工具

电子说

1.3w人已加入

描述

Verilog代码编写完成后,可以Modelsim中进行编译。

与其他编程软件相同,错误(error)的定位不一定准确,错误的发生位置可能与编译时提示的错误位置不同;检查error时,要从第一行开始检查,可能位置靠前的错误更正后,位置靠后的错误同时被更正。

与其他编程软件不同,警告(Warning)不能忽略,只有error/warning都消除才能进行仿真。否则,仿真结果可能不正确,可能导致真实芯片出现问题,造成百万元到千万元人民币的损失。

编程软件

图片来源:学堂在线《IC设计与方法》

正确编译完成后,可以进行仿真。

Modelsim仿真将设计以树状表示,设计中的每一个实体,每一个module、每一个进程(always块、initial块等)在Modelsim仿真中以对象的形式展现。

如下图所示树状结构,顶层是test_counter,即测试平台。平台下方是DUT(被测设计)和三个进程。三个进程是三个initial块,分别用来产生时钟信号、复位信号、其他动作。

编程软件

图片来源:学堂在线《IC设计与方法》

上图右下角为Object窗口,显示当前有哪些信号可以观测,包括输入信号、输出信号、内部信号等,如在test_counter层次,可以观测时钟(clk)、复位(reset)、计数器(count)的信号。

仿真过程有四类控制操作需要掌握。Restart、仿真时间指定、持续仿真、强制停止。

Restart主要运用于修改源代码或需要改变波形窗口显示时间的情况,在做出相应的修改后,运用Restart控制仿真重新开始。

仿真时间指定、持续仿真、强制停止主要用于永远执行的程序,永远执行的程序会造成CPU资源的浪费,也会使波形窗口显示时间过长,波形窗口显示时间过长可能会导致观测人员无法观测需要的波形。因此需要上述三类操作控制仿真时间。

编程软件

图片来源:学堂在线《IC设计与方法》

仿真工具执行仿真结束后,设计人员需要检查电路运行结果是否正确。最常见的方式是通过波形窗口观测电路输出信号的波形是否正确。主要观测的信号包括输入信号、内部信号、输出信号。

检测输入信号的目的是排除输入不正确造成输出不正确的情况,需观测输入信号包括时钟信号、复位信号、数据信号。设计人员需观测时钟信号的周期或频率、0时刻时钟信号的值、时钟信号高电平和低电平的值,需观测复位信号的有效脉冲(个人理解:能够导致输入信号变化的脉冲)是否符合期望、并确定复位信号的时钟沿(个人理解:脉冲发生的时间)不能与时钟信号重叠,需确定数据信号的时钟沿不能与时钟信号重叠。

观测电路的内部信号包括状态机(能够控制电路内部状态转移)、控制信号。

编程软件

图片来源:学堂在线《IC设计与方法》

当出现无法观测波形情况时,可以通过波形窗口调整。波形窗口调整方式包括总线展开和收缩、改变数据显示方式、波形放大和缩小、光标操作、定位信号的事件、搜索特定信号值、增加驱动信号等。

编程软件

图片来源:学堂在线《IC设计与方法》

有时通过波形不容易寻找出芯片设计的问题,需要更高层次的方式,如数据流窗口调试,追踪信号来源。在数据流窗口中可以显示出设计的层次图,选择某一信号,仿真工具就将显示产生这一信号的数据流图(Dataflow),数据流图可以分析某一信号故障的根源。

编程软件

图片来源:学堂在线《IC设计与方法》

数据流图、波形窗口、源代码可进行交叉定位,同时分析某一进程(如always块)的输入(数据流图观测)和行为(源代码观测),确定故障(波形窗口观测)源于其输入还是源于其行为,可以快速找出电路故障。

审核编辑 :李倩

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分