当前位置: 首页 > news >正文

《低功耗方法学》翻译——附录B:UPF命令语法



附录B:UPF命令语法

本章介绍了文本中引用的所选UPF命令的语法。

节选自“统一电源格式(UPF)标准,1.0版”,经该Accellera许可复制。版权所有:(c)2006-2007。Accellera不声明或代表摘录材料的准确性或内容,并明确否认任何明示或默示保证。提供了附件标准的摘录“AS IS”。

完整的标准文档可以在www.accellera.org下找到。

译者:翻译的过程中发现该书在copy IEEE1801的部分UPF命令时出现了一些复制粘贴的混乱,如果对UPF有兴趣建议去IEEE官网下载官方Standard

B.1 add_pst_state

用途为一种可能的设计状态定义每个供电网络的状态
语法add_pst_state state_name -pst table_name -state supply_states
表达式

state_name 电源状态。

-pst table_name 此状态所应用的电源状态表(PST)。

-state supply_states 供电网络的状态名列表,依照 create_pst 命令中-supplies列写的顺序进行列写。

返回值成功返回1;失败返回0。

add_pst_state命令为一种可能的设计状态定义每个供电网络的状态。

如果supply_state_names的数量与PST中的供电网络数量不同,则会报错。

语法示例:

create_pst pt -supplies { PN1 PN2 SOC/OTC/PN3 }
add_pst_state s1 –pst pt –state { s08 s08 s08 }
add_pst_state s2 –pst pt –state { s08 s08 off }
add_pst_state s3 –pst pt –state { s08 s09 off }

B.2 connect_supply_net

用途给供电端口或引脚连接一条供电线
语法connect_supply_net net_name
        [-ports list] [-pins list]
        [<-cells list |-domain domain_name>]
        [<-rail_connection rail_type | -pg_type pg_type>]*
        [-vct vct_name]
表达式

net_name 供电线状态

-ports list 连接的端口列表

-pins list 连接单元的引脚列表

-cells list 使用-rail_connection或者-pg_type命令的单元的列表

-domain domain_name -rail_connection或者-pg_type命令所需使用的域

-rail_connection rail_type 轨道类型(对于较老的工艺库)

-pg_type pg_type 电源/地 引脚类型

-vct vct_name VCT定义如何将值从UPF映射到HDL模型或从HDL模型映射到UPF

返回值如果成功,返回供应网络的完全限定名称;如果不成功,返回0。

 任何端口、引脚、单元、供电网络或域都是相对于当前UPF范围引用的。

connect_supply_net 命令提供显式连接到任何端口和覆盖(优先级高于)自动连接语义(无显式声明时则会使用自动连接)。在-rail_connection 或者-pg_type选项声明时可能需要-domain或者-cells

用法:

-ports 连接到电源端口;

-pins 连接到库单元上的引脚;

-cells 连接到特定单元上适当类型(电源或接地)的所有引脚;

-rail_connection 连接到有此(轨道)类型的引脚;仅在-cells -domain选项被声明时使用。

-pg_type 只连接到有这种电源/地类型的引脚(库模型中定义的引脚类型用于决定这种连接);仅在-cells -domain选项被声明时使用。

-vct 以指示端口所连接的每个HDL端口,如果供电网络状态正在传播到HDL端口中,则应转换供电网络状态,或者如果HDL端口值正在传播到供电网络中,则应对其进行转换。对于电源网络到UPF中定义的引脚或电源端口的任何连接,则会忽略-vct 

下面这些也适用:

-ports 和 -pins 选项和 -cells,-domain,-rail_connection,-pg_type选项相互排斥;

-rail_connection 和 -pg_type选项相互排斥;

供电网只能连接到与该供电网域(电压域)相同范围内的端口、引脚或单元。

如果以前没有创建net_name,则会报错;在这种情况下,应返回0。

如果此命令中指定的任何设计元素不存在,则为错误。

如果在VCT中指定的值转换与HDL端口的类型不匹配,则为错误。

语法示例:

connect_supply_net v09 -ports {VDD U18/v9 U21/v9}connect_supply_net pd1_vdd-ports pll_inst/vdd-vct upf2vlog_vdd

B.3 create_power_domain

用途为一组设计元素定义配电网
语法create_power_domain domain_name
        [-elements list]
        [-include_scope]
        [-scope instance_name]
表达式

domain_name 新的电压域;是一个简单的(非层级化的 non-hierarchical)名称。

-elements list 使用电压域中设计单元的列表

-include_scope 将域的范围包含在电压域内

-scope instance_name 在此逻辑层次结构范围内创建电源域。

返回值返回已创建的域(来自当前作用域)的完全限定名称,如果未创建电源域,则返回空字符串。

create_power_domain命令通常为电压域内的设计单元列表定义了电源供电分布网络。一个power_domain就是一个或多个设计单元的逻辑群。一个电源域有一个主电源(power)网和一个主地(ground)网。一个电源域可能还有其他额外的供电网络,供电端口,开关等。

仅当指定了主电源和接地电源网络时,电源域才起作用。

–elements (或者 add_domain_elements 命令)声明包含电压域内的设计单元完整集,即那些实例及其所有子实例(除非另有规定)。

list 是根据当前范围指定的;它不受 -scope 语句的影响。

如果 -include_scope 也声明了,那么域的范围包含在域的界限之内。

当 -elements 和 -include_scope 都不声明,电压域由当前范围以及另一条                                  create_power_domain 命令未声明的任何子模块(或者单元)组成。

-scope声明了范围,也即实例化的模块,将在这里创建域。scope指的是此条命令的当前范围;它定义了逻辑设计内域的界限。如果 -scope 没有声明,电压域将在当前范围内创建。

语法示例:

create_power_domain PD1 -elements {top/U1}set_scope /top/U1
create_power_domain PD2

B.4 create_power_switch

用途定义电压域的开关
语法create_power_switch switch_name
        -domain domain_name
        -output_supply_port {port_name supply_net_name}
        {-input_supply_port {port_name supply_net_name}}*
        {-control_port {port_name net_name}}*
        {-on_state {state_name input_supply_port {boolean_function}}}*
        [-on_partial_state {state_name input_supply_port {boolean_function}}]*
        [-ack_port {port_name net_name [{boolean_function}]}]*
        [-ack_delay {port_name delay}]*
        [-off_state {state_name {boolean_function}}]*
        [-error_state {state_name {boolean_function}}]*
表达式

switch_name 将要创建开关的实例化名称;一个简单的名称;

-domain domain_name 包含此开关的电压域

-output_supply_port {port_name supply_net_name} 开关的输出供电端口以及此端口连接的供电线

-input_supply_port {port_name supply_net_name} 开关的输入供电端口以及此端口连接的供电线

-control_port {port_name net_name}  开关的控制端口以及此端口连接的线

-on_state {state_name input_supply_port {boolean_function}} 命名的开关开启状态,                input_supply_port为已经定义的输入供电端口,以及对应的布尔函数;

-on_partial_state {state_name input_supply_port {boolean_function}}命名的开关部分打开状态,input_supply_port为已经定义的输入供电端口,以及对应的布尔函数;

-ack_port {port_name net_name [{boolean_function}]} 开关的确认端口,以及与之连接的逻辑线,以及对应的布尔逻辑表达式;如果将空字符串用作-ack_port的net_name,则会定义端口及其布尔表达式,但端口本身未连接。

-ack_delay {port_name delay} 给定ack_port的确认延迟;

-off_state {state_name {boolean_function}} 命名的开关关闭状态,以及与之对应的布尔表达式。

-error_state {state_name {boolean_expression}} 命名的开关出错状态,以及与之对应的布尔表达式。

返回值如果成功则返回所创建开关的全路径名称,否则返回空字符串。

create_power_switch 命令定义了电源域中的电源开关的实例。该开关是在电源域的范围内创建的。这个开关不是开启就是关闭。

如果控制端口上的值等于“开启”状态的表达式,则开关打开;这将驱动输出端口进入“打开”状态。如果在输入电源端口上有电压值,则该值将在输出电源端口上被驱动。

如果开关未打开,则关闭,“关闭”状态驱动到输出端口。一些“关闭”状态可以被识别为错误状态。这些错误状态的仿真语义依赖于工具。

如果为-ack_port指定了一个布尔表达式,则控制端口转变(比如有关闭或者打开开关的控制请求)后,等待若干个所声明的延迟时间单位后,boolean_function的结果的驱动至-ack_port的端口名称(port_name)。否则,开关关闭后在port_name延迟若干个时间单位后驱动逻辑1,开关打开后在port_name延迟若干个时间单位后驱动逻辑0。延迟(默认为0)可指定为非单位自然整数或Verilog时间单位。如果指定为自然整数,则时间单位应与仿真的时间精度相同。

任何-ack_port、-on_state、 -error_state的布尔表达式都应为SystemVerilog的布尔表达式。

以下内容也适用。

如果指定的控制端口不存在,则为错误。控制端口的现有连接性不可被修改。
所有不被三个状态(开、关和错误(on, off, and error))覆盖的状态都是匿名错误状态。
每个状态的名称都应为唯一的名称。
任何相互冲突的状态定义都是错误的。
没有任何综合(synthesis)语义与任何布尔函数相关联,除了被映射的开关必须提供该功能。

语法示例:

create_power_switch sw1
-domain PD_SODIUM
-output_supply_port {vout VN3}
-input_supply_port {vin1 VN1}
-input_supply_port {vin2 VN2}
-control_port {ctrl_small ON1}
-control_port {ctrl_large ON2}
-control_port {ss SUPPLY_SELECT}
-on_state {partial_s1 vin1 {ctrl_small & !ctrl_large & ss}}
-on_state {full_s1 vin1 {ctrl_small & ctrl_large & ss}}
-on_state {partial_s2 vin2 {ctrl_small & !ctrl_large & !ss}}
-on_state {full_s2 vin2 {ctrl_small & ctrl_large & !ss}}
-error_state {no_small {!ctrl_small & ctrl_large}}

B.5 create_pst

用途创建一个具有特定供电网络顺序的电源状态表
语法create_pst table_name -supplies list
表达式

table_name 电源状态表名称

-supplies list 包含在设计中电源状态的供电网络和端口列表

返回值如果创建成功返回电源状态表名称,否则返回空字符串。

create_pst 命令创建了一个PST,具有特定供电网络顺序。

电源状态表用于实现(布局布线)——特别是综合、分析和优化。定义了状态的合法组合,也即那些状态的组合在设计运行期间同时存在。

电源状态表没有仿真语义。这个是依赖于工具的,如果非法的(未声明的)状态组合发生,仿真工具可能会报告一个错误。

如果声明的供电网络没有创建则会出错。

语法示例:

create_pst MyPowerStateTable -supplies {PN1 PN2 SOC/OTC/PN3}

B.6 create_supply_net

用途创建一个电源或者接地供电线
语法create_supply_net net_name -domain domain_name [-reuse] [-resolve <unresolved | one_hot | parallel>]
表达式

net_name 供电线名称;

-domain domain_name 创建的供电线所在的电压域;

-reuse 将net_name扩展为一个包含domain_name的供电线。不创建新的网络。

-resolve <unresolved | one_hot | parallel> 一种解析机制,根据每个单独开关提供的状态和电压值来确定供电网的状态和电压。默认值未解析(unresolved)。

返回值返回已创建供电线(来自当前作用域)的完全限定名称,如果未创建,则返回空字符串。

create_supply_net 命令创建一条供电线。为电压域定义的供电线,创建所在的逻辑层级和domain_name所在的范围相同。根据需要通过逻辑层次结构通过隐式创建的端口和网络进行传播。

以下内容也适用。

如果domain_name没有指示一个之前创建的电压域,则会报错。

当声明-reused时,如果net_name不存在则会报错;

当声明-resolve unresolved时,此供电线只允许单个驱动器。

语法示例:

create_supply_net v09 -domain PD1

B.7 create_supply_port

用途在电压域创建一个端口
语法create_supply_port port_name [-domain domain_name] [-direction <in |out>]
表达式

port_name 供电端口名称。允许使用层级化名称,除非同时指定了-domain。

-domain domain_name 此端口定义供电网连接点的域。

-direction <in |out> 端口的方向,默认为输入 in。

返回值返回已创建的端口(来自当前作用域)的完全限定名称,如果未创建,则返回空字符串。

 create_supply_port 命令在-domain声明时在电压域范围内定义供电端口,如果没有声明-domain则在当前域的范围内创建供电端口。

-direction定义状态信息在连接到端口时如何通过供电网络传播。如果端口是输入端口,则连接到端口的外部供应网络的状态信息应传播到域中。同样,对于输出端口,连接到该端口的内部供应网络的状态信息应在域外传播。

如果port_name创建了一个与逻辑层级相冲突的名称,或者声明了一个之前创建过的端口,则会报错。

如果domain_name不能指示一个已创建的电压域,则会报错。

语法示例:

create_supply_port VN1 -domain PD1 reg/wire, Bit, Logic

B.8 set_domain_supply_net

用途为电压域设置默认的电源线和地线
语法set_domain_supply_net domain_name -primary_power_net supply_net_name
-primary_ground_net supply_net_name
表达式

domain_name 默认供电线所在的电压域;

-primary_power_net supply_net_name 主电源供电线;

-primary_ground_net supply_net_name 主地线;

返回值设置成功返回1;否则返回0.

set_domain_supply_net 命令将默认的电源线/地线与电压域的逻辑单元相联系。

primary power 和 ground nets为连接到电压域内逻辑单元(或推断单元)的默认主电源线和地线。执行电源线和地线用于电压域内的所有单元。在门级,这意味着所有的所有推断的门的所有电源/地引脚连接到主电源线/地线。否则除非用 connect_supply_net, set_retention, set_isolation等命令进行声明。

如果domain_name不能指示一个已创建的电压域,则会报错。

如果domain_name已经包含了一个主要的电源/地供应线。

语法示例:

set_domain_supply_net PD1 -primary_power_net PG1 -primary_ground_net PG0

 B.9 set_isolation

用途用声明的策略设置电压域中单元的隔离。
语法set_isolation isolation_name
-domain domain_name
<-isolation_power_net net_name | -isolation_ground_net net_name |
-isolation_power_net net_name -isolation_ground_net net_name | -no_isolation>
[-elements list] [-clamp_value <0 | 1 | latch | Z>] [-applies_to <inputs | outputs | both>]
表达式

isolation_name 隔离策略名称

-domain domain_name 应用此策略的电压域

<-isolation_power_net net_name | -isolation_ground_net net_name | 
-isolation_power_net net_name -isolation_ground_net net_name | -no_isolation> 用于设置由此策略推断的隔离逻辑的供电线。不隔离单元列表中声明的端口,引脚,或者设计单元。

-elements list 此策略使用的设计单元列表,输入端口/引脚,输出端口/引脚,以及线网。

-clamp_value <0 | 1 | latch | Z> 设置输入或者输出被钳夹的逻辑值。默认为 0.

-applies_to <inputs | outputs | both> 电压域的输入或者输出端口隔离,或者都隔离。默认为输出outputs。

返回值成功返回 1 ,失败返回0。

set_isolation 用声明的策略设置电压域中单元的隔离。隔离使能信号为公共信号,钳夹值以及位置。

–isolation_supply_nets 可以声明单一的电源线,单一的地线或者二者都声明。如果只声明隔离单元的电源线,那么主地线作为隔离地线。如果只声明隔离单元的地线,那么主电源线作为隔离电源。

-isolation_power_net 和 -isolation_ground_net两个至少有一个需要声明,除非-no_isolation已经声明。如果只声明-isolation_power_net,那么主地线则作为隔离的地线供应。如果只声明-isolation_ground_net,那么主电源线则作为隔离的电源线供应。如果两个都声明了,那么所声明的供电线作为隔离的电源和地供应线。

隔离电源和接地网自动连接到隐含的隔离过程,当-clamp_value为latch时,自动连接到完整规范第5节中所述的隔离寄存器,或如果隔离单元与map_isolation_cell命令明确映射,则自动连接到隔离单元的电源和接地引脚。隐式隔离过程和隔离寄存器的关闭和开启语义,如果存在,则如完整规范的第5节所述。

如果一个域有多个隔离策略,对于每个策略,-elements用来指定要隔离的单元。如果声明了         -elements,则元素应在domain_name中。如果-elements直接按名称指定端口(间接指定端口实例或该实例的更深一层实例),则隔离策略应应用于该端口,无论该端口模式是否与-applies_to选项指定的端口匹配。当没有指定-elements时,这相当于使用定义的电压域单元列表。

-clamp_value的值可以为:

逻辑0;

逻辑1;

latch(锁存,当隔离信号有效时,非隔离端口的值)

逻辑Z;

以下内容也适用。

这个命令不可用于inout端口。

如果声明 -no_isolation ,那么-elements 显式或者隐式声明的所有端口,以及与-applies_to(模式)相匹配的声明都不将会被隔离。

如果使用-domain、-elements或-applies_to以外的任何其他参数指定-no_isolation,则是一个错误。

如果声明多条电源线/地线,则会报错。

如果多个不同的隔离策略对相同的设计单元、引脚、端口、线网等作用时会报错。

语法示例:

set_isolation outputs_only-domain PD1-isolation_power_net VDDbackup-clamp_value 1-applies_to outputs

B.10 set_isolation_control

用途为已经定义的隔离策略声明控制信号。
语法set_isolation_control isolation_name
-domain domain_name
-isolation_signal signal_name
[-isolation_sense <high | low>]
[-location <self | parent | sibling | fanout | automatic>]
表达式

isolation_name 隔离策略名称;

-domain domain_name 应用此策略的电压域;

-isolation_signal signal_name 隔离控制信号,即在控制下导致声明的单元被驱动值钳夹电平值。

-location <self | parent| sibling | fanout |automatic> 隔离单元在逻辑层级中放置的位置。默认为自动automatic。

返回值成功返回 1 ,失败返回0。

set_isolation_control命令允许与set_isolation命令分离地指定隔离控制信号和感知,用于那些隔离策略已知但控制信号直到以后才知道的情况。

除了set_isolation_control命令是在当前范围内执行的,以及–location选项的添加之外,这里的语义相当于指定了隔离控制信号,并使用set_isolation命令进行感知。

–location定义隔离单元在逻辑层次结构中的位置。

self 将隔离单元放置在被隔离的模型/单元内。
parent 隔离单元被放置在被隔离的父模型/单元内。

sibling 创建一个新的兄类,将隔离单元放置到其中。
fanout 隔离发生在被隔离端口的所有扇出位置(汇点)。
automatic 实现工具可以自由选择适当的位置(默认值)。

语法示例:

set_isolation outputs_only
-domain PD1
-isolation_power_net VDDbackup
-clamp_value 1
-applies_to outputsset_isolation_control outputs_only
-domain PD1
-isolation_signal cpu_iso
-isolation_sense low
-location parent

B.11 set_level_shifter

用途声明电平转换器策略
语法set_level_shifter level_shifter_name
        -domain domain_name
        [-elements list] [-applies_to <inputs | outputs | both>]
        [-threshold value] [-rule <low_to_high | high_to_low | both>]
        [-location <self | parent | sibling | fanout | automatic>] [-no_shift]
表达式

level_shifter_name 电平转换器策略名称(仅在报告(reporting)时使用)

-domain domain_name 应用此策略的电压域

-elements list 此策略使用的设计单元列表,输入端口/引脚,输出端口/引脚,以及线网。

-applies_to <inputs |outputs | both> 设置电压域的输入或者输出端口或双端口电平转换。默认为both。

-threshold value 设置电压阈值(单位,伏特),用于决定何时需要电平转换器。默认为0。

-rule <low_to_high |high_to_low | both> 电平转换器类型。默认为both。

-location <self | parent| sibling | fanout |automatic> 电平转换器在逻辑层级中的放置位置。默认为 automatic。

-no_shift 可以用–elements选项进行声明,防止在声明的端口/引脚/线网插入电平转换器。

返回值成功返回 1 ,失败返回0。

set_level_shifter命令可用于设置实现过程中的电平转换策略。电平转换器被放置在具有在不同电压下操作的源头和交汇的信号上,因为它们的相关设计元件被连接到不同的供电网络。如果没有在特定功率域上指定电平转换器策略,则默认电平转换器策略由功率域中的所有单元组成,并使用默认策略设置。

如果指定了–elements,则这些元素应位于domain_name中。如果–elements用于指定端口或引脚,则无论-threshold 或 -rule如何声明,都会在该端口上插入电平转换器。-threshold声明定义了在插入电平移位器之前驱动器和接收器之间的电压差需要有多大。通常,这个阈值是从单元库中确定的;使用此选项可以覆盖库中的值。

–rule可以是low_to_high、high_to_low,也可以同时为两者。如果指定了low_to_high,则当电压差超过–threshold指定的电压差时,从较低电压到较高电压的信号将得到电平转换器。如果指定high_to_low,则当电压差超过–threshold指定的电压差时,从较高电压到较低电压的信号将得到电平转换器。如果同时指定了这两个规则,则相当于在策略中同时使用两个规则。

–location定义电平转换器在逻辑层次结构中的位置。在声明的位置上所有必要的供电必须可以获取到。

self 将电平转换器放置在被转换的模型/单元内。
parent 电平转换器被放置在被转换的父模型/单元内。

sibling 创建一个新的兄类,将电平转换器放置到其中。
fanout 转换发生在被转换端口的所有扇出位置(汇点)。
automatic 实现工具可以自由选择适当的位置。

以下内容也适用。

这个命令不可用于inout端口。

如果声明的位置不在以设计根目录开始的位置,会报错。

语法示例:

set_level_shifter shift_up
-domain PowerDomainZ
-applies_to outputs
-threshold 0.02
-rule both

B.12 set_retention

用途指定域中哪些寄存器需要作为保留寄存器,并设置保留功能的保存和恢复信号。
语法set_retention retention_name
-domain domain_name
<-retention_power_net net_name | -retention_ground_net net_name |
-retention_power_net net_name -retention_ground_net net_name>
[-elements list]
表达式

retention_name 保留策略的名称。

-domain domain_name 应用此策略的电压域

<-retention_power_net net_name |
-retention_ground_net net_name |
-retention_power_net net_name
-retention_ground_net net_name>用于设置由此策略推断的电平转换器的供电线。

-elements list 电压域中的对象列表:应用此策略的设计单元,命名的过程,或者时序寄存器reg,以及信号名。

返回值成功返回 1 ,失败返回0。

set_retention命令指定域中哪些寄存器需要作为保留寄存器,并标识保留功能的保存和恢复信号。只有元素列表中隐含的寄存器才应具有保留能力。如果指定了设计单元,则设计单元内的所有寄存器都会获取指定的保留策略。如果指定了过程,则该过程推断的所有寄存器都会获取指定的保留策略。如果指定了reg、信号或变量,并且该对象是时序单元,则隐含寄存器获取指定的保留策略。任何指定的reg、信号或变量,如果不能推断出时序单元,则不得通过该命令进行更改。

应至少指定-reretion_power_net或-reretion_ground_net中的一个。如果仅指定了                            -retention_power_net,则应使用主接地线作为保留接地供应。如果只指定了                                  -reretention_rground_net,则应使用主电网作为保留电源。如果同时指定了这两个选项,则这些选项指定要用作保留电源和接地网的供电网。

当保留单元用map_retention_cell命令显式映射时,保留电源和接地线自动连接到隐式保存和恢复过程以及影子寄存器,或者连接到保留单元的电源和接地点引脚。隐式保存和恢复过程以及影子寄存器的关闭和打开语义如完整规范的第5节所述。

如果指定了-save_signal,则应指定-restore_signal。如果未指定-save_signal,则不应指定            -restore_signal。如果未指定保存和恢复信号,则应在set_retension_control命令中指定。

如果指定了–elements,则这些单元应位于domain_name中。如果未指定–elements,则相当于使用定义电源域的elements列表。

以下内容也适用。

如果domain_name不能指示一个已创建的电压域,则会报错。

如果声明多条电源线/地线,则会报错。

语法示例:

set_retention my_retention
-domain PDA
-retention_power_net volt_high

B.13 set_retention_control

用途为已定义的保留策略声明控制信号和断言。
语法set_retention_control retention_name
-domain domain_name
-save_signal {{net_name <high | low | posedge | negedge>}}
-restore_signal {{net_name <high | low | posedge | negedge>}}
[-assert_r_mutex {{net_name <high | low | posedge | negedge>}}]*
[-assert_s_mutex {{net_name <high | low | posedge | negedge>}}]*
[-assert_rs_mutex {{net_name <high | low | posedge | negedge>}}]*
表达式

retention_name 保留策略的名称。

-domain domain_name 应用此策略的电压域

-save_signal save_net SAVE控制信号,将寄存器的数值保存到影子寄存器中。

-restore_signal restore_net RESTORE控制信号,将影子寄存器的数值恢复到寄存器中。

-assert_r_mutex {{net_name <high | low | posedge | negedge>}} 恢复信号断言

-assert_s_mutex {{net_name <high | low | posedge | negedge>}}保存信号断言

-assert_rs_mutex {{net_name <high | low| posedge | negedge>}}保存和恢复信号断言

返回值成功返回 1 ,失败返回0。

set_retension_control命令允许与set_retenten命令分离地指定保持控制信号和感测,用于那些保持策略是已知的,但是直到稍后才知道控制信号的情况。由于断言与保存和恢复信号有关,因此也可以使用此命令指定断言。

除了在当前范围内执行set_retension_control命令外,这里的语义相当于用set_retension命令指定了保留控制信号、感知和断言。

set_retension命令也可以用于指定任何断言选项。每个选项都会创建一个或多个断言,当指示的RTL信号同时处于活动状态时,验证工具可以触发这些断言。如果-assert_rs_mutex没有指定信号列表,这表明保存和恢复信号本身是互斥的。

以下内容也适用。

保存信号应当是一个设计中已存在的逻辑线,端口,或者引脚。

恢复信号应当是一个设计中已存在的逻辑线,端口,或者引脚。

语法示例:

set_retention my_retention_strategy
-domain PDAset_retention_control my_retention_strategy
-domain PDA
-save_signal {power_controller_inst/save_1 high}
-restore_signal {power_controller_inst/restore_1 low}
-assert_rs_mutex {clock_a posedge}

B.14 set_scope

用途声明当前UPF的作用范围
语法set_scope instance
表达式instance 完成命令后成为当前作用域的实例。
返回值如果成功,则返回执行命令前的当前作用域,作为相对于当前设计顶部的完整路径字符串;如果失败(例如,如果实例(instance)不存在),则返回空字符串。

如果 set_scope命令调用时没有指定instance,或者UFP的作用范围没有设置,则认为设置的作用范围是最顶层设计。

如果instance是 . ,这个作用范围依然是当前实例。如果instance是 .. ,则作用范围按照实例的层级上移一个级别。如果instance以 / 开始,作用范围则回归到 / 后面的路径(相对于顶层而言)范围中。 

语法示例:

set_scope foo/bar
set_scope ..

附录B翻译完了,但是UPF指令绝不止这些,要想更多了解,建议阅读IEEE的官方Standards(IEEE 1801)

相关文章:

《低功耗方法学》翻译——附录B:UPF命令语法

附录B&#xff1a;UPF命令语法 本章介绍了文本中引用的所选UPF命令的语法。 节选自“统一电源格式&#xff08;UPF&#xff09;标准&#xff0c;1.0版”&#xff0c;经该Accellera许可复制。版权所有&#xff1a;(c)2006-2007。Accellera不声明或代表摘录材料的准确性或内容&…...

Leetcode 3027. Find the Number of Ways to Place People II

Leetcode 3027. Find the Number of Ways to Place People II 1. 解题思路2. 代码实现 题目链接&#xff1a;3027. Find the Number of Ways to Place People II 1. 解题思路 这一题的话我也没想到啥特别好的思路&#xff0c;采用的纯粹是遍历剪枝的思路。 遍历的话好理解&…...

android inset 管理

目录 简介 Insets管理架构 Insets相关类图 app侧的类 WMS侧的类 inset show的流程 接口 流程 WMS侧确定InsetsSourceControl的流程 两个问题 窗口显示时不改变现有的inset状态 全屏窗口上的dialog 不显示statusbar问题 View 和 DecorView 设置insets信息 输入法显…...

Python中使用opencv-python库进行颜色检测

Python中使用opencv-python库进行颜色检测 之前写过一篇VC中使用OpenCV进行颜色检测的博文&#xff0c;当然使用opencv-python库也可以实现。 在Python中使用opencv-python库进行颜色检测非常简单&#xff0c;首选读取一张彩色图像&#xff0c;并调用函数imgHSV cv2.cvtColor…...

如何修改远程端服务器密钥

前言 一段时间没改密码后&#xff0c;远程就会自动提示CtrlAltEnd键修改密码。但我电脑是笔记本&#xff0c;没有end键。打开屏幕键盘按这三个键也没用。 解决方法 打开远程 1、远程端WINC 输入osk 可以发现打开了屏幕键盘 2、电脑键盘同时按住CtrlAlt&#xff08;若自身电…...

lnmp指令

LNMP官网&#xff1a;https://lnmp.org 作者: licess adminlnmp.org 问题反馈&技术支持论坛&#xff1a;https://bbs.vpser.net/forum-25-1.html 打赏捐赠&#xff1a;https://lnmp.org/donation.html 自定义参数 lnmp.conf配置文件&#xff0c;可以修改lnmp.conf自定义下…...

Go语言每日一题——链表篇(七)

传送门 牛客面试笔试必刷101题 ----------------删除链表的倒数第n个节点 题目以及解析 题目 解题代码及解析 解析 这一道题与昨天的题目在解题思路上有一定的相似之处&#xff0c;都是基于双指针定义快慢指针&#xff0c;这里我们让快指针先走n步&#xff0c;又因为n一定…...

【stomp实战】websocket原理解析与简单使用

一、WebSocket 原理 WebSocket是HTML5提供的一种浏览器与服务器进行全双工通讯的网络技术&#xff0c;属于应用层协议。它基于TCP传输协议&#xff0c;并复用HTTP的握手通道。浏览器和服务器只需要完成一次握手&#xff0c;两者之间就直接可以创建持久性的连接&#xff0c; 并…...

2024.1.30力扣每日一题——使循环数组所有元素相等的最少秒数

2024.1.30 题目来源我的题解方法一 暴力模拟&#xff08;无法通过&#xff09;方法二 哈希表数学 题目来源 力扣每日一题&#xff1b;题序&#xff1a;2808 我的题解 方法一 暴力模拟&#xff08;无法通过&#xff09; 直接暴力枚举。记录每一个元素所在的位置&#xff0c;然…...

【Java万花筒】数据魔术师:探索Java商业智能与数据可视化

开发者的数据魔杖&#xff1a;掌握Java商业智能工具的秘诀 前言 在当今信息爆炸的时代&#xff0c;数据已经成为企业决策和业务发展的重要驱动力。为了更好地理解和利用数据&#xff0c;商业智能&#xff08;BI&#xff09;和数据可视化工具变得至关重要。本文将介绍几种基于…...

python用yaml装参数并支持命令行修改

效果&#xff1a; 将实验用的参数写入 yaml 文件&#xff0c;而不是全部用 argparse 传&#xff0c;否则命令会很长&#xff1b;同时支持在命令行临时加、改一些参数&#xff0c;避免事必要在 yaml 中改参数&#xff0c;比较灵活&#xff08;如 grid-search 时遍历不同的 loss…...

第59讲订单数据下拉实现

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;/*** 订单查询 type值 0 全部订单 1待付款 2 待收货 3 退款/退货* param type* return*/RequestMapping("/list")public R list(Integer type,Integer page,Integer pageSize){System.out.pri…...

[当人工智能遇上安全] 11.威胁情报实体识别 (2)基于BiGRU-CRF的中文实体识别万字详解

您或许知道&#xff0c;作者后续分享网络安全的文章会越来越少。但如果您想学习人工智能和安全结合的应用&#xff0c;您就有福利了&#xff0c;作者将重新打造一个《当人工智能遇上安全》系列博客&#xff0c;详细介绍人工智能与安全相关的论文、实践&#xff0c;并分享各种案…...

16:定时器和计数器

定时器和计数器 1、定时器和计数器的介绍2、定时器是如何工作3、寄存器4、51单片机定时器简介&#xff08;数据手册&#xff09;5、定时器中的寄存器&#xff08;数据手册&#xff09;5.1、TCON&#xff08;定时器控制寄存器&#xff09;5.2、TMOD&#xff08;工作模式寄存器&a…...

c#通过ExpressionTree 表达式树实现对象关系映射

//反射expression实现对象自动映射 void Main() {Person p1new(){Id1,Name"abc"};var persondto p1.MapTo<Person, PersonDto>();Console.WriteLine($"id:{persondto.Id}-name:{persondto.Name}"); }public static class AutoMapperExs { public s…...

《动手学深度学习(PyTorch版)》笔记7.2

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…...

【MySQL进阶之路】BufferPool 生产环境优化经验

欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术的推送&#xff01; 在我后台回复 「资料」 可领取编程高频电子书&#xff01; 在我后台回复「面试」可领取硬核面试笔记&#xff01; 文章导读地址…...

Vim工具使用全攻略:从入门到精通

引言 在软件开发的世界里&#xff0c;Vim不仅仅是一个文本编辑器&#xff0c;它是一个让你的编程效率倍增的神器。然而&#xff0c;对于新手来说&#xff0c;Vim的学习曲线似乎有些陡峭。本文将手把手教你如何从Vim的新手逐渐变为高手&#xff0c;深入理解Vim的操作模式&#…...

Chapter 8 - 7. Congestion Management in TCP Storage Networks

TCP Flow Monitoring versus I/O Flow Monitoring TCP flow monitoring shouldn’t be confused with I/O flow monitoring because of the following reasons: TCP 流量监控不应与 I/O 流量监控混淆,原因如下: 1. TCP belongs to the transport layer (layer 4) of the OS…...

带你快速入门js高级-基础

1.作用域 全局 scriptxx.js 局部 函数作用域{} 块作用域 const let 2.闭包 函数外有权访问函数内的变量, 闭包可以延长变量生命周期 function 函数名 () {return function () {// 这里的变量不会立刻释放} }3.垃圾回收 不在使用(引用的变量), 防止占用内存&#xff0c;需要…...

数据结构与算法-链表(力扣附链接)

之前我们对C语言进行了一定的学习&#xff0c;有了一些基础之后&#xff0c;我们就可以学习一些比较基础的数据结构算法题了。这部分的知识对于我们编程的深入学习非常有用&#xff0c;对于一些基本的算法&#xff0c;我们学习之后&#xff0c;就可以参加一些编程比赛了&#x…...

多线程JUC:等待唤醒机制(生产者消费者模式)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;多线程&JUC&#xff1a;解决线程安全问题——synchronized同步代码块、Lock锁 &#x1f4da;订阅专栏&#xff1a;多线程&am…...

无人机动力系统高倍率锂聚合物电池介绍,无人机锂电池使用与保养,无人机飞行控制动力源详解

无人机电池使用及保养 电池是无人机飞行的动力来源,也是一个消耗品&#xff0c;对电池充分了解&#xff0c;采取正确的使用方法&#xff0c;妥善进行维护保养将有助于提高飞行的安全性、延长电池的使用寿命。以下将详细对电池的使用和管理进行讲解。 高倍率锂聚合物电池的含义…...

[BeginCTF]真龙之力

安装程序 双击安装 出现了安装失败的标签&#xff0c;开发者不允许测试。 查看Mainfest入口文件 <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android" android:versionCo…...

手写分布式存储系统v0.3版本

引言 承接 手写分布式存储系统v0.2版本 &#xff0c;今天开始新的迭代开发。主要实现 服务发现功能 一、什么是服务发现 由于咱们的服务是分布式的&#xff0c;那从服务管理的角度来看肯定是要有一个机制来知道具体都有哪些实例可以提供服务。举个例子就是&#xff0c;张三家…...

除夕快乐!

打印的简单实现&#xff0c;祝大家新的一年万事顺意&#xff01; 龙年大吉&#xff01; #include <stdio.h> #include <windows.h> #include <string.h>int main() {const char* message "除夕快乐!";int i;for (i 0; i < strlen(message);…...

17:定时器编程实战

1、实验目的 (1)使用定时器来完成LED闪烁 (2)原来实现闪烁时中间的延迟是用delay函数实现的&#xff0c;在delay的过程中CPU要一直耗在这里不能去做别的事情。这是之前的缺点 (3)本节用定时器来定一个时间&#xff08;譬如0.3s&#xff09;&#xff0c;在这个定时器定时时间内…...

Fink CDC数据同步(五)Kafka数据同步Hive

6、Kafka同步到Hive 6.1 建映射表 通过flink sql client 建Kafka topic的映射表 CREATE TABLE kafka_user_topic(id int,name string,birth string,gender string ) WITH (connector kafka,topic flink-cdc-user,properties.bootstrap.servers 192.168.0.4:6668…...

ubuntu原始套接字多线程负载均衡

原始套接字多线程负载均衡是一种在网络编程中常见的技术&#xff0c;特别是在高性能网络应用或网络安全工具中。这种技术允许应用程序在多个线程之间有效地分配和处理网络流量&#xff0c;提高系统的并发性能。以下是关于原始套接字多线程负载均衡技术的一些介绍&#xff1a; …...

leetcode (算法)66.加一(python版)

需求 给定一个由 整数 组成的 非空 数组所表示的非负整数&#xff0c;在该数的基础上加一。 最高位数字存放在数组的首位&#xff0c; 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外&#xff0c;这个整数不会以零开头。 示例 1&#xff1a; 输入&#xff1a;digi…...

DataX源码分析 TaskGroupContainer

系列文章目录 一、DataX详解和架构介绍 二、DataX源码分析 JobContainer 三、DataX源码分析 TaskGroupContainer 四、DataX源码分析 TaskExecutor 五、DataX源码分析 reader 六、DataX源码分析 writer 七、DataX源码分析 Channel 文章目录 系列文章目录TaskGroupContainer初始…...

2024年华为OD机试真题-螺旋数字矩阵-Java-OD统一考试(C卷)

题目描述: 疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法: 给出数字个数n和行数m(0 < n ≤ 999,0 < m ≤ 999),从左上角的1开始,按照顺时针螺旋向内写方式,依次写出2,3...n,最终形成一个m行矩阵。 小明对这个矩阵有些要求: 1.每行数字的…...

红队打靶练习:PHOTOGRAPHER: 1

目录 信息收集 1、arp 2、nmap 3、nikto 目录扫描 1、gobuster 2、dirsearch WEB 信息收集 enum4linux smbclient 8000端口 CMS利用 信息收集 文件上传漏洞利用 提权 信息收集 get user.txt get flag 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# a…...

【Linux】网络诊断 traceroute命令详解

目录 一、traceroute概述 1.1 traceroute命令简介 1.2 命令格式 1.3 原理 1.4 命令功能 二、使用实例 实例1&#xff1a;traceroute 用法简单、最常用的用法 实例2&#xff1a;跳数设置 实例3&#xff1a;设置探测数据包数量 实例4&#xff1a;显示IP地址&#xff0c…...

c#cad 创建-圆(二)

运行环境 vs2022 c# cad2016 调试成功 一、代码说明 这段代码是一个AutoCAD插件&#xff0c;用于在模型空间中创建一个圆形。 首先&#xff0c;我们需要定义一个命令类CreateCircleCommand&#xff0c;并在命名空间CreateCircleInCad中声明。 在CreateCircleCommand类中&a…...

面试高频知识点:2线程 2.1.5如何自定义实现一个线程池

在Java中&#xff0c;线程池是一种用于管理线程的机制&#xff0c;它可以有效地管理多个线程并且可以重复使用它们&#xff0c;从而减少了线程创建和销毁的开销&#xff0c;提高了线程的利用率。本文将介绍如何自定义实现一个简单的线程池&#xff0c;并提供相应的Java代码示例…...

【stm32】hal库学习笔记-ADC模数转换(超详细)

【stm32】hal库学习笔记-ADC模数转换&#xff08;超详细&#xff09; 本篇章介绍了ADC实现电压检测的三种方式 ADC原理及选型 ADC将连续的模拟电压信号转换为二进制的数字信号 选型参数 速度&#xff08;采样频率&#xff09; 功耗 精度 转换原理 ADC hal库驱动函数 普通…...

蓝桥杯基础知识6 pair

蓝桥杯基础知识6 pair pair 的定义和结构&#xff1a;在C中&#xff0c;pair是一个模板类&#xff0c;用于表示一对值的组合&#xff0c;头文件<utility>。 pair类 的定义&#xff1a; template<class T1, class T2> struct pair{T1 first; // 第一个值T2 seco…...

后端返回给前端的数据格式有哪些?

后端返回的数据格式有很多种&#xff0c;常见的包括JSON、XML、HTML、CSV等。这些格式各有特点&#xff0c;适用于不同的应用场景。 JSON&#xff08;JavaScript Object Notation&#xff09;&#xff1a;JSON是一种轻量级的数据交换格式&#xff0c;易于阅读和编写&#xff0c…...

Transformer的PyTorch实现之若干问题探讨(一)

《Transformer的PyTorch实现》这篇博文以一个机器翻译任务非常优雅简介的阐述了Transformer结构。在阅读时存在一些小困惑&#xff0c;此处权当一个记录。 1.自定义数据中enc_input、dec_input及dec_output的区别 博文中给出了两对德语翻译成英语的例子&#xff1a; # S: de…...

系统参数SystemParameters.MinimumHorizontalDragDistance

SystemParameters.MinimumHorizontalDragDistance 是一个系统参数&#xff0c;它表示在拖放操作中鼠标水平移动的最小距离。 当用户按下鼠标左键并开始移动鼠标时&#xff0c;系统会检查鼠标的水平移动距离是否超过了 SystemParameters.MinimumHorizontalDragDistance。只有当…...

平屋顶安装光伏需要注意哪些事项?

我国对于房屋建设的屋顶形式&#xff0c;主要有平屋顶、斜屋顶、曲面屋顶和多波式折板屋顶等。今天来讲讲在平屋顶安装光伏&#xff0c;需要注意的事项。 1.屋顶结构&#xff1a;在安装光伏系统之前&#xff0c;需要对屋顶结构进行评估&#xff0c;确保屋顶能够承受光伏系统的…...

《Git 简易速速上手小册》第7章:处理大型项目(2024 最新版)

文章目录 7.1 Git Large File Storage (LFS)7.1.1 基础知识讲解7.1.2 重点案例&#xff1a;在 Python 项目中使用 Git LFS 管理数据集7.1.3 拓展案例 1&#xff1a;使用 Git LFS 管理大型静态资源7.1.4 拓展案例 2&#xff1a;优化现有项目中的大文件管理 7.2 性能优化技巧7.2.…...

从0开始学Docker ---Docker安装教程

Docker安装教程 本安装教程参考Docker官方文档&#xff0c;地址如下&#xff1a; https://docs.docker.com/engine/install/centos/ 1.卸载旧版 首先如果系统中已经存在旧的Docker&#xff0c;则先卸载&#xff1a; yum remove docker \docker-client \docker-client-latest…...

嵌入式学习之Linux入门篇笔记——15,Linux编写第一个自己的命令

配套视频学习链接&#xff1a;http://【【北京迅为】嵌入式学习之Linux入门篇】 https://www.bilibili.com/video/BV1M7411m7wT/?p4&share_sourcecopy_web&vd_sourcea0ef2c4953d33a9260910aaea45eaec8 1.什么是命令&#xff1f; 命令就是可执行程序。 比如 ls -a…...

【C语言】SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol)

一、SYSCALL_DEFINE3与系统调用 在Linux操作系统中&#xff0c;为了从用户空间跳转到内核空间执行特定的内核级操作&#xff0c;使用了一种机制叫做"系统调用"&#xff08;System Call&#xff09;。系统调用是操作系统提供给程序员访问和使用内核功能的接口。例如&…...

C++实现鼠标点击和获取鼠标位置(编译环境visual studio 2022)

1环境说明 2获取鼠标位置的接口 void GetMouseCurPoint() {POINT mypoint;for (int i 0; i < 100; i){GetCursorPos(&mypoint);//获取鼠标当前所在位置printf("% ld, % ld \n", mypoint.x, mypoint.y);Sleep(1000);} } 3操作鼠标左键和右键的接口 void Mo…...

Matplotlib绘制炫酷散点图:从二维到三维,再到散点图矩阵的完整指南与实战【第58篇—python:Matplotlib绘制炫酷散点图】

文章目录 Matplotlib绘制炫酷散点图&#xff1a;二维、三维和散点图矩阵的参数说明与实战引言二维散点图三维散点图散点图矩阵二维散点图进阶&#xff1a;辅助线、注释和子图三维散点图进阶&#xff1a;动画效果和交互性散点图矩阵进阶&#xff1a;调整样式和添加密度图总结与展…...

Docker-Learn(一)使用Dockerfile创建Docker镜像

1.创建并运行容器 编写Dockerfile&#xff0c;文件名字就是为Dockerfile 在自己的工作工作空间当中新建文件&#xff0c;名字为Docerfile vim Dockerfile写入以下内容&#xff1a; # 使用一个基础镜像 FROM ubuntu:latest # 设置工作目录 WORKDIR /app # 复制当前目…...

问题:银行账号建立以后,一般需要维护哪些设置,不包括() #学习方法#经验分享

问题&#xff1a;银行账号建立以后&#xff0c;一般需要维护哪些设置&#xff0c;不包括&#xff08;&#xff09; A&#xff0e;维护结算科目对照 B&#xff0e;期初余额初始化刷 C&#xff0e;自定义转账定义 D&#xff0e;对账单初始化 参考答案如图所示...