中文 英语

使用UPF 3.0信息模型更快地提供低功耗覆盖步骤

一种更好的方法来表示在UPF中创建的低功耗对象,以快速可靠的低功耗覆盖基础设施。

人气

控制权力有其成本。增加的电力元素及其互动使低功耗设计验证更加困难,工程师的工作压倒性地复杂和繁琐。

早期版本的统一功率格式(UPF)提供了一些缓解,但缺乏用于低功耗覆盖的标准化方法的规定。Ad Hoc方法易于出错,并且非常耗时。

迫切需要的是一种可靠而简单的验证方法,易于构建,易于理解,易于修改,秤可以匹配更大的设计。幸运的是,UPF 3.0引入了低功耗信息模型,可用于解决复杂的低功耗验证挑战。

基于最近推出的UPF 3.0低功耗信息模型HDL封装的低功耗覆盖方法有助于验证工程师之前甚至更有效地实现低功耗覆盖。


图1:低poW.覆盖eNSURE.S.足够的电源感知元素测试一种设计

寻找难以捉摸的UPF对象
捕获UPF对象和电力状态的覆盖范围是有挑战性的,原因有挑战。电力状态以抽象的方式在UPF中写入,没有预定义的覆盖度量来捕获电力状态及其转换,并且虽然统一覆盖互操作性标准定义了与覆盖项相关的各种标准度量,但它不提供任何指标捕获权力意图。

工具生成的覆盖度量广泛用于低功耗验证。然而,在所有设计中,它们可能没有用或彻底彻底,主要是因为设计可以具有由工具产生的覆盖范围没有提供的非常具体的要求,并且低功耗技术仍在不断发展;因此,现在,每一组协议都会出现,然后,这可能需要工具供应商提供的不同覆盖功能集。

工程师可以选择使用SystemVerilog覆盖功能编写自定义覆盖项目。这些项目可以在检查器模块中分组,并且可以使用UPF命令“Bind_checker”将此检查模块实例化为设计。然而,这种检查器模块的实例化方法不是微不足道的。低功耗断言和覆盖项目需要访问电源对象。但是,在验证的早期阶段,这些权力对象仅存在于UPF文件中,并且在设计中不存在。因此,将这些UPF对象传递给Checker实例并不简单。没有明确的方法来描述封面和垃圾箱,以使用所获得的手柄捕获电力状态的覆盖率及其转换。一些属性 - 检查需要访问跨越多个域的设计和电源信号。这样的任务易于出错,耗时和耗时。最后,随着这些检查器实例的范围和输入,在UPF中定义,UPF或Design中的任何更改都可能会破坏这些检查程序,要求它们重写。

使用CuckGroups和UPF信息模型查询命令的建模样式整齐地解决了这些挑战。

UPF 3.0信息模型
UPF 3.0引入了低功耗信息模型,以表示UPF中创建的低功耗对象。这些包括电源域,功率状态和供应集。UPF 3.0还提供了这些对象具有的各种属性的详细列表。这些属性可以是简单的信息(例如,对象的名称和文件/行信息)或相对复杂的信息(例如,电源域的功率状态)。一些对象还具有与它们相关联的动态属性(例如,电源域的Current_State或电源网的电流电压值)。UPF 3.0信息模型还提供API接口以访问对象及其属性。

两个关键信息模型概念 - 本机HDL表示和HDL封装功能 - 可用于开发一个低功耗覆盖方法,这些方法可以随机构造,并指导以目标特定的低功耗方案。

UPF 3.0定义具有动态属性的对象的本机HDL表示。本机HDL表示是HDL中的结构/记录类型,其包含两个字段:与对象的动态属性相对应的值字段,以及对UPF对象的句柄或引用,以允许访问对象的其他属性。

图2:aUPF 3.0信息模型是represented一种包含两个字段的HDL中的struct /记录: 一种价值领域A.处理/参考UPF对象。

UPF 3.0提供了许多HDL包功能,用于访问低功耗对象及其属性。这些广泛分为五类。

  1. HDL访问功能:这些是访问低功耗对象的基本功能
  2. 立即读取访问HDL函数:UPF 0中的所有对象信息模型允许读访问其属性。在动态属性的情况下,这些函数在调用此函数时返回该属性的当前动态值/状态。
  3. 立即写入访问HDL函数:当没有现有驱动程序时,信息模型的某些对象允许立即写入访问。这允许从测试台或模拟操纵低功率对象,这是一种强大的工具,用于在从测试台模拟期间操纵低功耗对象。
  4. 连续访问HDL功能:这些功能使得能够持续监视信息模型中对象的动态值。它可以使用低功率的动态值来触发始终块或处理语句
  5. 实用功能:这些是普遍的效用功能。

利用职能和构建
该方法使用UPF 3.0包功能来实现快速有效的低功耗覆盖范围。UPF 3.0 HDL功能可以与SystemVerilog覆盖结构组合,以设计有效和随机定向的低功率覆盖方法。这种低功耗覆盖方法的目的是使您能够编写快速可靠的低功耗覆盖基础架构。

该方法涉及使用信息模型并查询该对象的属性,从HDL中获取低功耗对象的手柄。然后将这些属性传递给覆盖模块作为端口映射。覆盖模块包含封面组和覆盖线,其代表该域的低功耗策略的覆盖数据,或者可以从测试台中查询诸如域的当前功率状态的动态信息。拟议方法中的三个步骤是:

  1. 低功率对象手柄:第一步是通过使用HDL封装功能来获得低功耗的手柄“upf_get_handle_by_name”。可以通过HDL访问功能迭代列表的属性“upf_iter_get_next”。以下SystemVerilog代码说明了这些基本功能的使用来访问低功耗对象。
upfhandlet pd = upf_get_handle_by_name(“/ tb / dut / pd”)upfhandlet pd_state_list = upf_query_object_properties(pd,upf_pd_states)upfhandlet pd_state = upf_iter_get_next(pd_state_list);
  1. 低功耗对象的动态属性(价值):在第二步中,您可以获得感兴趣的属性的动态价值。例如,您可能有兴趣了解电源域的当前功率状态,目的是在某些其他电源的当前功率状态下检查该电源域的状态也可以使用UPF 3.0连续访问HDL包功能不断监视电源域的电源状态,并使用断言对兴趣或异常情况。
upfpdssobjt pd_hdl;upf_create_object_mirror(“/ tb / dut / pd”,“pd”);upfpowerstatebjt pwr_state = pd.current_state;upfhandlet pd_name = upf_query_object_properties(pd.handle,upf_name);UpfHandlet State_name = UPF_Query_Object_Properties(pwr_state.handle,upf_name);总是@(PD)$ DISPLAY(“POWER域%S,处于电源状态:%s,upf_get_value_str(pd_name),upf_get_value_str(endy_name));
  1. 覆盖细节:一旦我们有一个低功耗对象的手柄及其动态值,它将传递到覆盖范围,覆盖模块可以在SystemVerilog中建模并与设计一起编译。该模块在TestBench中实例化。从信息模型中提取的低功耗对象及其动态属性在此覆盖实例的界面中传递。您可以根据需要实例化为许多覆盖范围。覆盖属性(CoverGroups / PocepPoints)定义在以下覆盖模块中,以计算覆盖度量。
模块covisomodule(int dynamicvalue,string objname)reg cov_clk = 0;copdgroup low_power_state_coverage(posedge @cov_clk)active_level:pockpoint isovalue {bins active = 1;} Active_Low:CoverPoint Isovalue {Zins Active = 0;终端......终点

所描述的验证方法有助于实现早期低功率覆盖封闭。还可以使用该方法进行定向方案测试。例如,您可以使用UPF 3.0信息模型的立即读取访问功能来编写自定义断言或属性以检查两个域是否应在互斥状态中。由于该方法依赖于UPF构造,因此在不同的供应商工具上是一致的和可用的。即使没有复杂UPF构建和语义的详细知识,验证工程师也可以编写各种定向验证方案,以实现低功率覆盖闭合。

随着低功耗验证的复杂性越来越多,临时方法不太可能成功,并将导致验证不完整。这种方法将帮助您在明显更少的时间内实现验证关闭,并且少得多。

有兴趣学习更多吗?阅读白皮书随机定向低功率覆盖方法有关低功耗验证挑战,UPF 3.0低功耗信息模型的更多详细信息,以及这种方法对传统低功耗验证方法的好处和优点。本文还股份解决了低功耗验证问题的相关案例研究和实例。



2评论

Karan K. 说:

你能告诉我在哪里找到UPF 3.0的LRM。
我无法在线找到它

ed sperling. 说:

IEEE1801-2018标准可在此处提供:https://standards.ieee.org/products-services/ieee-get-program.html.
按照说明获取最新的IEEE1801 - 2018标准的免费副本(即UPF 3.1)。此版本取代了所有先前版本的标准。

发表评论


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