带有电源信息的逻辑仿真
RTL设计完毕之后,需要通过RTL逻辑仿真来验证设计的正确性。通过搭建测试平台,提供测试激励,观察并检测输出响应来检验设计是否满足了设计要求。但是众所周知,RTL是不提供任何有关电源的信息的,那本文所讨论的低功耗设计能否在RTL仿真中实现呢?答案是肯定的,这就是带有电源信息的逻辑仿真(Power Aware Simulation)。目前主流的仿真工具Modelsim,VCS,NCverilog都支持带有电源信息的逻辑仿真,本文以Modelsim为例讨论带有电源信息的逻辑仿真。
1.1 逻辑仿真环境的准备
1.1.1 带有电源信息的逻辑仿真的原理
在准备开始做带有电源信息的逻辑仿真之前,首先要保证处于合适的设计阶段。比较好的阶段是已经完成了概念和RTL设计,并且做过RTL仿真验证。这时只需要一个完备的UPF文件来描述芯片的功耗意图,仿真器就会按照UPF的描述对RTL进行优化并且加入电源信息,从而实现带有电源信息的逻辑仿真。
无论是Verilog或者Vhdl都假定在逻辑仿真开始的时候,所有逻辑都是处于上电的状态并且一直持续到仿真结束。带有电源信息的逻辑仿真去掉了这一假设,所有逻辑的供电电源是受到电源开关的控制。为了实现这种行为,仿真模型中被加入了额外的逻辑,这些逻辑定义了电源控制网络结构,电源控制单元的行为,对RTL设计的逻辑在其供电电源改变的时候做出正确的行为的控制。在做带有电源信息的逻辑仿真的时候,原先RTL设计的仿真模型会加入这些额外的电源控制逻辑。
Modelsim提供一些默认的电源控制单元的Verilog仿真模型,比如电源开关,隔离单元,保持寄存器等等。这些仿真模型在一般情况下不会影响到正常的RTL逻辑,但是当电源控制信号有效的时候,这些仿真模型会产生相应的行为覆盖原有的逻辑。
当一个电压区域关闭的时候,仿真器会将一个信号从其当前值破坏
(Corrupt)到一个值(通常是X),这种行为表征了驱动这一个信号的单元的电源被切断或是降低到一个阈值以下时,这个信号的值会成为一个不定态“X”。
对于Verilog和System Verilog来说,4-state logic型被破坏成“X”,2-state logic
型被破坏成“0”。对于VHDL,Logic型被破坏成“X”,Real型被破坏成
“0.0”。
当一个逻辑单元的重源被关闭时,所有在这个逻辑单元内的信号和由这个逻辑单元内部驱动的信号都被破坏。只要电源处于关闭状态,这个逻辑单元就没有任何活动——-所有的VHDL process和Verilog的always语句块都不会被执行,即便其敏感列表中的信号发生了变化,所有的目标在这个逻辑单元内的事件(Events)都不再起作用。
当一个逻辑单元的电源恢复时,破坏操作停止,所有逻辑正常执行。
受教了,那么这些power off 的X态一般怎么处理呢,正常X态会到处传播,可能引起仿真失败。
UPF 里面会定义isolation policy,在断电的区域和上电的区域之间插入isolation cell,把X值clamp住,这样就可以保证后续的威廉希尔官方网站
不受X的影响。
理论上数字poweroff即掉电,数字威廉希尔官方网站
部分已经不在工作,X态已经没有影响,可是数模接口信号则必须加入isolation cell进行隔离,绑定成固定态输出到模拟,避免模拟威廉希尔官方网站
因不确定电平不工作。
谢谢回复,因为vcs后防的时候,有时候没有初始化好,就会造成x态的转播。所以有点疑问。
带有电源信息的逻辑仿真
RTL设计完毕之后,需要通过RTL逻辑仿真来验证设计的正确性。通过搭建测试平台,提供测试激励,观察并检测输出响应来检验设计是否满足了设计要求。但是众所周知,RTL是不提供任何有关电源的信息的,那本文所讨论的低功耗设计能否在RTL仿真中实现呢?答案是肯定的,这就是带有电源信息的逻辑仿真(Power Aware Simulation)。目前主流的仿真工具Modelsim,VCS,NCverilog都支持带有电源信息的逻辑仿真,本文以Modelsim为例讨论带有电源信息的逻辑仿真。
1.1 逻辑仿真环境的准备
1.1.1 带有电源信息的逻辑仿真的原理
在准备开始做带有电源信息的逻辑仿真之前,首先要保证处于合适的设计阶段。比较好的阶段是已经完成了概念和RTL设计,并且做过RTL仿真验证。这时只需要一个完备的UPF文件来描述芯片的功耗意图,仿真器就会按照UPF的描述对RTL进行优化并且加入电源信息,从而实现带有电源信息的逻辑仿真。
无论是Verilog或者Vhdl都假定在逻辑仿真开始的时候,所有逻辑都是处于上电的状态并且一直持续到仿真结束。带有电源信息的逻辑仿真去掉了这一假设,所有逻辑的供电电源是受到电源开关的控制。为了实现这种行为,仿真模型中被加入了额外的逻辑,这些逻辑定义了电源控制网络结构,电源控制单元的行为,对RTL设计的逻辑在其供电电源改变的时候做出正确的行为的控制。在做带有电源信息的逻辑仿真的时候,原先RTL设计的仿真模型会加入这些额外的电源控制逻辑。
Modelsim提供一些默认的电源控制单元的Verilog仿真模型,比如电源开关,隔离单元,保持寄存器等等。这些仿真模型在一般情况下不会影响到正常的RTL逻辑,但是当电源控制信号有效的时候,这些仿真模型会产生相应的行为覆盖原有的逻辑。
当一个电压区域关闭的时候,仿真器会将一个信号从其当前值破坏
(Corrupt)到一个值(通常是X),这种行为表征了驱动这一个信号的单元的电源被切断或是降低到一个阈值以下时,这个信号的值会成为一个不定态“X”。
对于Verilog和System Verilog来说,4-state logic型被破坏成“X”,2-state logic
型被破坏成“0”。对于VHDL,Logic型被破坏成“X”,Real型被破坏成
“0.0”。
当一个逻辑单元的重源被关闭时,所有在这个逻辑单元内的信号和由这个逻辑单元内部驱动的信号都被破坏。只要电源处于关闭状态,这个逻辑单元就没有任何活动——-所有的VHDL process和Verilog的always语句块都不会被执行,即便其敏感列表中的信号发生了变化,所有的目标在这个逻辑单元内的事件(Events)都不再起作用。
当一个逻辑单元的电源恢复时,破坏操作停止,所有逻辑正常执行。
受教了,那么这些power off 的X态一般怎么处理呢,正常X态会到处传播,可能引起仿真失败。
UPF 里面会定义isolation policy,在断电的区域和上电的区域之间插入isolation cell,把X值clamp住,这样就可以保证后续的威廉希尔官方网站
不受X的影响。
理论上数字poweroff即掉电,数字威廉希尔官方网站
部分已经不在工作,X态已经没有影响,可是数模接口信号则必须加入isolation cell进行隔离,绑定成固定态输出到模拟,避免模拟威廉希尔官方网站
因不确定电平不工作。
谢谢回复,因为vcs后防的时候,有时候没有初始化好,就会造成x态的转播。所以有点疑问。
举报