引言
完成RTL代码后需要仿真确定代码功能正确性,需要用到仿真工具,本篇就以Cadence的NC Verilog为例来介绍一下RTL仿真的基础知识。
关键词:NC-Verilog RTL仿真
仿真算法
主要有三种仿真算法:
- 基于时间的(SPICE仿真器)
基于时间的算法用于处理连续的时间及变量,在每一个时间点对所有电路元件进行计算。
问题是效率低,因为在一个时间点只有约2~10%的电路活动 - 基于事件的(Verilog-XL和NC Verilog仿真器)
基于事件的算法处理离散的时间、状态和变量,只有电路状态发生变化时才进行处理,只模拟哪些可能引起电路状态改变的元件。仿真器响应输入引脚上的事件,并将值在电路中向前传播。这是应用最为广泛的仿真算法,效率比较高,所谓“evaluate when necessary”。 - 基于周期的(cycle)
基于周期的仿真以时钟周期为处理单位(与时间无关),只在时钟边沿进行计算,不管时钟周期内的时序。使用两值逻辑 (1, 0) ,只关心电路功能而不关心时序。对于大型设计效率较高,但是仅适用于同步电路。
基于事件的仿真会构造一个时轮(time wheel):
其特点如下:
- 仿真器在编译数据结构时建立一个事件队列。