Verilog代码写好之后,就可以在Modelsim中编译了。
和其他编程软件一样,错误的定位不一定准确,错误的位置可能和编译时提示的错误位置不一样;检查错误时,从第一行开始检查。前位误差修正后,后位误差也会同时修正。
与其他编程软件不同,Warning可以不可忽略,只有消除了两个错误/警告,才能进行模拟。否则仿真结果可能不正确,导致真芯片出现问题,造成百万到千万元的损失。
图片:唐雪在线《IC设计与方法》
编译正确完成后,就可以进行模拟了。
Modelsim仿真将设计表示为一棵树,以及每个实体、每个模块和每个过程(总是块、初始块等。)作为一个对象呈现在Modelsim仿真中。
如下图树形结构所示,最顶层是test_counter,也就是测试平台。下面是DUT(测试中的设计)和三个过程。三个进程是三个初始块,分别用来产生时钟信号、复位信号等动作。
图片:唐雪在线《IC设计与方法》
上图右下角是对象窗口,显示当前可以观察到哪些信号,包括输入信号、输出信号、内部信号等。例如,在test_counter级别,可以观察到时钟(clk)、复位(reset)和计数器(count)的信号。
在模拟过程中需要掌握四种控制操作。重启、模拟时间指定、连续模拟和强制停止。
重启主要用于修改源代码或者需要改变波形窗口显示时间的时候。在做了相应的修改后,Restart用于控制模拟重新开始。
模拟时间指定、连续模拟和强制停止主要用于永久执行的程序。永久执行的程序会浪费CPU资源,也会使波形窗口显示时间过长,可能导致观察者无法观察到所需的波形。因此,需要上述三种类型的操作控制模拟时间。
图片:唐雪在线《IC设计与方法》
仿真完成后,设计者需要检查电路运行结果是否正确。最常见的方法是通过波形窗口观察电路输出信号的波形是否正确。主要观测信号包括输入信号、内部信号和输出信号。
检测输入信号的目的是为了消除由于不正确输入而导致的不正确输出。需要观察包括时钟信号、复位信号和数据信号的输入信号。设计人员需要观察时钟信号的周期或频率,时钟信号在0: 00的值,时钟信号的高电平和低电平值,复位信号的有效脉冲(能引起输入信号变化的脉冲)是否符合预期,并确保复位信号的时钟边沿(脉冲出现的时间)不能与时钟信号重叠,数据信号的时钟边沿不能与时钟信号重叠。
观测电路的内部信号包括状态机(可以控制电路内部的状态转换)和控制信号。
图片:唐雪在线《IC设计与方法》
当无法观察到波形时,可以通过波形窗口进行调整。波形调整方法包括总线伸缩、改变数据显示方式、波形放大缩小、光标操作、定位信号事件、搜索特定信号值、增加驱动信号等。
图片:唐雪在线《IC设计与方法》
有时它通过波形不容易发现芯片设计的问题,需要更高层次的方法,比如调试数据流窗口、跟踪信号源等。在数据流窗口中,可以显示设计的层次图。当某个信号被选中时,仿真工具会显示产生这个信号的数据流图,数据流图可以分析某个信号故障的根本原因。
图片:唐雪在线《IC设计与方法》
数据流图、波形窗口和源代码可以交叉定位。同时,可以对某个进程(如总是阻塞)的输入(数据流图观察)和行为(源代码观察)进行分析,以确定故障(波形窗口观察)是源于其输入还是源于其行为,从而可以快速排除电路故障
标签:信号设计波形