中文 英语
18.luck新利
的意见

使用UPF动态属性定制低功耗平台

一种利用UPF信息模型和动态对象构建低功耗验证平台的方法。

受欢迎程度

低功耗设计和验证工程师需要一种方法来持续探测UPF对象的各种动态属性,以监控验证策略的当前状态,并利用该信息开发定制的低功耗验证环境。不幸的是,目前还没有一个可靠的、正式的方法来做到这一点。

由于用于设计和验证工具(即模拟器)的统一功率格式(UPF)对象的动态属性的可用性受到UPF LRM处理阶段的严格管理,我们提出了一种方法,该方法用模拟器步骤编排UPF阶段的处理。

基于UPF信息模型概念,这种新方法允许工程师通过Tcl API查询UPF对象的任何动态属性,并将对象信息传递给适当实例化的基于SystemVerilog API的设计代码。例如,Tcl API可以在模拟执行过程中使用,为低功耗的SystemVerilog检查器模块填充任何属性,这些属性已经通过UPF bind_checker被查询并绑定到RTL设计中(在细化步骤中)。

具体而言,该方法根据UPF处理阶段利用了UPF信息模型(UPFIM)的基础。这最终以统一的方式提供了自定义的低功耗检查器查询处理。对UPFIM数据库的Tcl API查询与bind_checker命令一起使用,以绑定其接口使用相应的SystemVerilog HDL本机表示类型的检查器。在三步模拟流的设计和UPF详述步骤期间自动创建正确类型的对象,并允许连续访问,以将其反映在SystemVerilog检查器模块的端口上。

下面的保留检查器示例说明了这种方法。当以正确的方式执行保存和恢复操作时,检查器将触发“成功”断言。或者,当保存和/或恢复操作失败时,它会标记违规。

代码1:自定义保留(保存-恢复正确操作)检查器示例

##自定义SV检查器的ret_checker。导入UPF::*;模块checker_retention(sav_sig, res_sig, sav_cond, res_cond, ret_clk);输入sav_sig, res_sig;input upfexpression sav_cond;input upfexpression res_cond;输入ret_clk;线clk;分配#1step CLK = ret_clk;财产p1;@(posedge clk) (sav_sig |-> sav_cond.current_value); endproperty property p2; @(posedge clk) (!res_sig |-> res_cond.current_value); endproperty assert property (p1) $display(">>>%t ----- Save success", $time()); else $display(">>>%t ----- Save not executed", $time());

代码2:自定义保留检查器的常规UPF绑定和查询函数示例

##常规电源管理UPF的dut_top。upf ' create_power domaon PD -elements {top_vl top_vl1} ... ... ...##保留策略46 set_retention pd_retention \ 47 -domain pd \ 48 -retention_supply ss \ 49 -elements {top_vl1/q top_vh1/q} \ 50 -save_signal {ret1 posedge} \ 51 -restore_signal {ret1 negedge} \ 52 -save_condition {!趟车_GENERIC_CLOCK && sc} \ 53 -restore_condition {UPF_GENERIC_CLOCK && !UPF_GENERIC_ASYNC_LOAD && rc} ## Regular UPF Commands/Options ## For e.g. defining other PD, PD’s supply set, association, ## Power state etc. ## Binding design module, Regular UPF and Custom Retention Checker through UPF bind_checker bind_checker $instance_name -module checker_retention -bind_to tb -ports $ports_list ## Utilization of UPF Tcl Query Functions in Consolidated UPF flow foreach RET_STRATEGY [upf_query_object_properties $PD -property upf_retention_strategies] {set ret_save_signal [upf_query_object_properties $RET_STRATEGY -property upf_save_signal] set ret_sav_sig_port [list sav_sig [upf_query_object_properties \ $ret_save_signal -property upf_control_signal]] set ret_restore_signal [upf_query_object_properties $RET_STRATEGY -property upf_restore_signal] set ret_res_sig_port [list res_sig [upf_query_object_properties \ $ret_restore_signal -property upf_control_signal]] set ret_save_condition [upf_query_object_properties $RET_STRATEGY -property upf_save_condition] set ret_sav_cond_port [list sav_cond $ret_save_condition] set ret_restore_condition [upf_query_object_properties $RET_STRATEGY -property upf_restore_condition] set ret_res_cond_port [list res_cond $ret_restore_condition] set RET_STRATEGY_NAME [upf_query_object_properties $RET_STRATEGY -property upf_name] set RET_QUERY [query_retention $RET_STRATEGY_NAME -domain $PD -detailed] array set RET_DETAILS [join $RET_QUERY] set RET_CLK $RET_DETAILS(upf_generic_clock) set ret_clk_port [list ret_clk $RET_CLK] set ports_list {} lappend ports_list $ret_sav_sig_port $ret_res_sig_port $ret_sav_cond_port $ret_res_cond_port $ret_clk_port set ret_path [upf_query_object_pathname $RET_STRATEGY] set is_ret [upf_object_in_class $RET_STRATEGY -class upfRetentionStrategyT] set cell_type [upf_query_object_type $RET_STRATEGY] ## Printing Useful Information for the Retention Strategy puts "RET INFO STRATEGY: $RET_STRATEGY\n PATH: $ret_path\n type: $cell_type\n"}

代码3:自定义保留检查器示例的记录结果

##保留策略的有用信息——加载模块checker_retention Strategy: /tb/pd。pd_retention1路径:/tb/pd。pd_retention1类型:upfRetentionStrategyT ... ... ...##确认属性p1和p2 # **错误:(vsim-8906) QPA_RET_SEQ_ACT:时间:36 ns,时钟在范围'/tb/top_vl'中的保留元素的保留期间被切换:q #文件:~/test. txtupf, Line:46, Power Domain:/tb/pd # 37 pwr= 1, ret= 1, ret1= 0, clk= 1, rst= 0, d=1, q_vl= 01 01, q_vl1= 01 # # >>> 37 ----- Save not executed # >>> 37 ----- Restore success .恢复成功

使用模型显示了整合阶段1~5的最终目标,以这样一种方式,它允许一个包含UPF (Tcl)和UPFIM Tcl API的UPF流在细化步骤中与bind_checker命令集成。因此,在模拟步骤中的执行将立即显示完整的最终结果。请注意,在Tcl查询和检查器端口之间传递的对象可能包含也可能不包含UPF本机HDL表示类型;因此upfExpressionT只出现在检查器中,而不出现在UPF Tcl查询中。这是因为,当在检查器模型中定义本机HDL表示类型的端口时,细化步骤将使用UPFIM中定义的连续镜像API自动创建连续访问的连接。图1显示了该方法在设计和UPF执行的第三步中的实现结果。恢复条件属性“p2 pass/fail”状态的当前值等可以通过下面捕获的验证平台进行评估。


图1:自定义检查器验证平台

这种方法允许设计人员以这样一种方式创建检查器模块,即他们可以很容易地利用通过查询函数和层次引用传递的对象,以及使用或不使用本机SystemVerilog HDL表示。因此,这种新颖的方法使设计人员能够持续探测UPF动态对象,并在现有的低功耗仿真平台上构建自定义的低功耗验证组合。如果精心设计,这些自定义检查器可以在许多低功耗项目中重用。

要了解更多关于如何增加您的低功耗设计验证平台的信息,请查看新的白皮书探测UPF动态对象:构建自定义低功耗验证平台的方法



留下回复


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

Baidu