18.luck新利
的意见

在低功耗设计的动态模拟中使用自定义检查器

使用SystemVerilog和UPF处理特定于设计的power-aware验证复杂性。

受欢迎程度

功率感知模拟器可以以动态序列检查器的形式提供广泛的自动化断言,涵盖所有可能的PA动态验证场景。然而,设计特定的PA验证的复杂性可能来自采用一种或多种功耗降低技术,来自大量的设计特征(如UPF策略)以及目标设计实现目标。因此,除了工具自动检查和PA注释测试台外,有时还需要将附加的和自定义的PA断言、检查器及其监视器合并到设计中。

但是设计可能已经包含了来自功能验证部分的大量断言,这些断言通常用SystemVerilog(称为SVA)编写,并与语言绑定绑定构造。SystemVerilog提供了一个功能强大的绑定构造,用于指定一个模块、接口、程序或检查器的一个或多个实例化,而无需修改目标代码。因此,例如,封装在模块、接口、程序或检查器中的插装代码或断言可以以非侵入式的方式在目标模块或模块实例中实例化。尽管如此,定制的PA检查、断言和监视器通常是分开的,不仅与设计代码分开,而且与功能SVA分开。

UPF提供了一种机制,将这种自定义PA断言的绑定与功能性SystemVerilog断言(SVA)和设计分开。这趟车bind_checker命令及其附属选项允许用户在不修改和干扰原始设计代码或引入功能更改的情况下将检查器模块插入设计中。但是,UPF从SystemVerilog绑定指令继承了将检查器绑定到设计实例的机制。因此,UPF类似于SVAbind_checker指令使一个模块在另一个模块中实例化,而不必显式地更改其中任何一个的代码。这促进了设计实现和任何相关验证代码之间的完全分离。

目标实例中的信号通过端口列表按位置绑定到绑定检查器模块中的输入,与SVA绑定的情况完全相同。因此,绑定模块可以访问目标实例范围内的任何和所有信号,只需将它们添加到端口列表中,这就方便了对任意设计信号的采样。

在本文的其余部分,我们将分享如何使用Questa Power-Aware (PA)动态模拟器(PA- sim)来处理自定义检查器的工件。

自定义检查器的工件
这趟车bind_checker语法和“使用模型”用于为设计创建自定义PA断言,并通过UPF绑定检查器bind_checker命令将在下面连续的四个示例中详细显示。

例1。UPF bind_checker语法

bind_checker<实例名> \-模块< checker_name > \-元素< element_list > \-bind_to模块-名称]-港口{{port_name net_name} *}-参数{{param_name param_value} *}

UPF命令和选项用于将检查器模块插入到设计中,并将它们绑定到设计实例。在语法中,< instance_name>是检查器模块的“实例”名称(例如iso_supply_chk)。ISO_SUPPLY_CHECKER).的- - - - - -元素是将插入检查器“instance”的设计元素列表。的- - - - - -模块为校验码对应的SystemVerilog模块名。验证模块通常在SystemVerilog中编码,但通过绑定到SystemVerilog或VHDL实例- - - - - -bind_to模块(- - - - - -名称]。

还要注意- - - - - -港口{}是设计信号到检查器端口的关联。参数接受UPF中为各种UPF策略定义的信号、电源端口、供电网络和供电集的符号引用。例如,isolation_signalretention_power_net可参考如下。

例2。各种UPF策略的符号引用

< design_scope_name >。< powerdomain_name >。< iso_stratgy_name >。isolation_signal< design_scope_name >。< powerdomain_name >。retention_power_net

-参数{}选项提供了检查器模型上参数值的规范,其中是参数的名称,是该参数的值。如果-参数选项时,的参数名将被设置为。对于SystemVerilog,它指的是参数;对于VHDL,它指的是泛型。是一个常量。

下一个示例3显示了一个自定义检查器,可用于ISO控制信号相关的检查。

例3。ISO控制相关断言的自定义检查器示例

模块ISO_SUPPLY_CHECKER (ISO_CTRL ISO_PWR ISO_GND);进口UPF值::*;输入ISO_CTRL;input supply_net_type ISO_PWR;input supply_net_type ISO_GND;reg ISO_pg_sig;assign ISO_pg_sig = get_supply_on_state(ISO_PWR) && get_supply_on_state(ISO_GND);always @(negedge ISO_pg_sig) assert(!(ISO_CTRL)) else $display("\n在隔离时间%0d隔离电源关闭,ISO_CTRL=%b", $time, ISO_CTRL);endmodule

最后,绑定ISO控件相关的自定义检查器,或者ISO_SUPPLY_CHECKER,具体操作如下。

例4。绑定的UPF代码片段ISO_SUPPLY_CHECKER检查程序

set_scope结核病/最高create_supply_netISO_PWRcreate_supply_netISO_GNDcreate_supply_portISO_PWR_PORTcreate_supply_portISO_GND_PORTconnect_supply_netISO_PWR -港口ISO_PWR_PORTconnect_supply_netISO_GND -港口ISO_GND_PORTcreate_supply_setIso_ss \ -函数权力Iso_pwr} \ -函数地面ISO_GND}create_power_domainPD_mid1 \ -供应主要的ISO_SS}set_isolationiso_PD_mid1 \ -PD_mid1 \ -applies_to输出\ -isolation_supply_setISO_SS \ -位置的自我\ -isolation_signal ctrlUPF中的ISO_SUPPLY_CHECKER检查器绑定bind_checkerIso_supply_chk \ -模块Iso_supply_checker \ -bind_toMid_vl \ -港口{\ {ISO_CTRL PD_mid1.iso_PD_mid1. {\ {isolation_signal} \ {ISO_PWR ./ISO_SS.权力} \ {iso_gnd ./ iso_ss . {地面}}

现在,如前所述,设计可以完全分离于检查器和绑定,如示例5在下面。

例5。设计完全独立于检查和绑定

模块结核病();...顶尖(…);...Endmodule module top(…);mid_vl test1_vl(…);mid_vl test2_vl(…);mid_vl test3_vl(…);endmodule;模块mid_vl(…); ... endmodule

Questa PA-SIM可以访问mid_vl模块,并插入(ISO_SUPPLY_CHECKER)下所有可用实例的结核病\ \高级分层路径的设计,这是通过定义set_scope命令,如所示示例4.合并后的例3、4,5说明如何设计一个PA自定义检查器;如何在UPF中绑定这样的检查器;以及目标设计如何完全分离检查器及其绑定。值得注意的是,检查器样本在示例3进口IEEE标准包进口UPF值::*,类似于PA注释测试台,以利用不同于PA注释测试台的功能类型,如图所示例子6

例6。自定义检查器的UPF导入包功能

Get_supply_on_state (supply_net_type arg);

这个函数实际上用于驱动和提供连接supply_net_type ISO_PWR而且ISO_GND设计实例的检查器模块mid_vl,在-bind_to命令。如示例2,可以将一个对象与活动UPF作用域中的关联。例如,电源域PD_mid1示例4在当前范围内创建;因此隔离控制信号PD_mid1.iso_PD_mid1.isolation_signal或隔离电源集(即电源和接地)./ISO_SS。权力和。/ ISO_SS。地面可以通过Questa PA-SIM直接访问。

结论
UPF提供了一种强大的机制来定义自定义PA检查器或断言,并提供了一个将其与设计代码完全分离的层。方法将设计和检查器的绑定嵌入到UPF文件中bind_checker命令及其选项。因此,它提供了一个统一的验证机制,并允许Questa PA-SIM在当前范围内使用自定义检查器访问目标设计的所有实例。的bind_checker断言与SystemVerilog断言有明显的不同,因为它们可以访问UPF供应网络和其他UPF对象。这些检查器甚至在电源和地面关闭时也能工作。然而,bind_checker命令和检查器是专门为基于验证目的的动态模拟而定义和设计的;因此实现工具完全忽略了bind_checker命令及其关联的检查器。

要了解更多关于Questa PA-SIM的信息,请访问我们的白皮书、文章和数据表图书馆在这里

参考文献
[1] IEEE计算机学会设计自动化标准委员会,“IEEE低功耗、节能电子系统设计与验证标准”,IEEE Std 1801-2015, 2015年12月5日。



留下回复


(注:此名称将公开显示)

Baidu