在使用IES工具,进行low-power仿真时,会遇到仿真非0时刻上电的模块,initial语句没有执行,造成内部的一些信号为x态,影响仿真结果的情况。对于这种问题,可以在upf文件中,加入set_sim_control命令,来控制。
initial语句,是在仿真的0时刻开始执行。如果模块是在仿真非0时刻上电,那么上电之后,initial语句,是不会执行的。
此时,可以使用set_sim_control命令,来对这个模块施加仿真控制。要注意,set_sim_control不是UPF标准中的命令,而是cadence IES工具,自己定义的命令。
命令用法如下:
下面对这个命令的选项,进行说明
◾-target:指定目标
◾-action:指定仿真的行为
◾power_up_replay: 上电之后,重新执行 initial语句
◾disable_corruption:不允许掉电
◾disable_isolation: 不允许isolation
◾disable_retention: 不允许retention
◾-domain: 指定power domain,施加-action指定的行为
◾-instances:指定 instances,施加-action指定的行为
◾-modules: 指定modules,施加-action指定的行为,可以使用匹配符*,但是不能用来开头。当使用匹配符,需要在编译阶段,加-lps_modules_wildcard选项
◾-lib_cells: 指定cells,施加-action指定的行为
以下是几个例子:
set_sim_control –target {L*} –exclude {L1*} –action power_up_replay
对于所有组件的initial代码块,label为L开头,但是不以L1开头的initial代码块,在上电之后,重新执行initial语句。
set_sim_control –domains {PD1 PD2} –action power_up_replay
对于处于PD1和PD2这两个power domain的模块,在上电之后,都要重新执行initial语句。
set_sim_control –instaces {A.B.C} –action power_up_replay
对于A模块下的B模块下的C模块,在上电之后,重新执行initial语句
set_sim_control –modules {M1 M2} –action power_up_replay
对于M1模块和M2模块,在上电之后,重新执行initial语句
set_sim_control –modules {RAM*} –action power_up_replay
对于RAM开头的module,在上电之后,均要重新执行initial语句。如果使用了匹配符,在编译的时候,要加上-lps_modules_wildcard选项。
该命令,有很多作用,但是常用的就是 –action power_up_replay以及-action disable_corruption。
◾power_up_replay:主要是控制initial代码块在上电重新执行
◾disable_corruption:主要控制模块,即使在电源断掉情况下,也不要断电。主要用在checker,或者watchdog上。
set_sim_control命令,是cadence工具支持的low-power相关的命令,但是不是所有的cadence工具,都会支持这个命令。
该命令以及相应的选项,支持的工具,如下图:
可以看出,对于-domains选项,IES2工具,是不支持的。
更多相关阅读
UVM使用双顶层的用法
cadence indago征程(五)最强cpu debug工具-eswd
cadence indago征程(六) eswd工具配置与仿真