目录
4.4 Connect Supply Net to Port
1.Getting Started
本文主要介绍VCS低功耗DEMO中,UPF文件包含命令的作用,以及对应虚拟出来的电源网络、开关、隔离、Level Shifter以及RR(Retention Register)等。
除了UPF文件外的其它细节,包括运行方法、DEMO设计细节等均不在本文讨论的范围内,如果关于其他部分有需要交流的,可在评论区留言。
2. DEMO Locataion
我使用的VCS版本是:vcs-2019.06-SP2,DEMO的路径如下所示。
$VCS_HOME/doc/examples/NLP/MVSIM_NATIVE_DEMO/
DEMO的运行可以参考如下链接,在本文不再做详细描述。
3.DEMO Design
3.1 Micro-Architecture
DEMO Design的微架构设计如下图所示,是一个 有符号乘法器。它采用基4-Booth算法产生部分和,紧接着用4:2的进位保留加法器 Wallce Tree累加部分和,最后使用超前进位加法器得到最后的乘法结果。
其中InstDecode为指令译码模块,GPRs为通用寄存器模块,Multiplier为有符号乘法器。InstDecode和GPRs数据双向流动,GPRs和Multiplier数据双向流动,InstDecode和Multiplier之间无数据通路。

3.2 Power Domain
基于上述的Design,DEMO将其划分为五个电源域:TOP、INST、GPRS、MULT以及GENPP,分别对应Desgin中的ChipTop、InstDecode、GPRs、Multiplier和GENPP模块。

3.3 UPF File
上述电源方案对应的UPF文件如下所示
## CREATE POWER DOMAIS
######################
create_power_domain TOP
create_power_domain MULT -elements Multiplier
create_power_domain INST -elements InstDecode
create_power_domain GPRS -elements GPRs
create_power_domain GENPP -elements Multiplier/GENPP
## TOPLEVEL CONNECTIONS
#######################
# VDD
create_supply_port VDD
create_supply_net VDD -domain TOP
create_supply_net VDD -domain GENPP -reuse
connect_supply_net VDD -ports VDD
# VSS
create_supply_port VSS
create_supply_net VSS -domain TOP
create_supply_net VSS -domain INST -reuse
create_supply_net VSS -domain GPRS -reuse
create_supply_net VSS -domain MULT -reuse
create_supply_net VSS -domain GENPP -reuse
connect_supply_net VSS -ports VSS
# VDDI
create_supply_port VDDI
create_supply_net VDDI -domain TOP
create_supply_net VDDI -domain INST -reuse
connect_supply_net VDDI -ports VDDI
create_supply_net VDDIS -domain TOP
create_supply_net VDDIS -domain INST -reuse
# VDDG
create_supply_port VDDG
create_supply_net VDDG -domain TOP
create_supply_net VDDG -domain GPRS -reuse
connect_supply_net VDDG -ports VDDG
create_supply_net VDDGS -domain GPRS
# VDDM
create_supply_port VDDM
create_supply_net VDDM -domain TOP
create_supply_net VDDM -domain MULT -reuse
connect_supply_net VDDM -ports VDDM
create_supply_net VDDMS -domain MULT
## PRIMARY POWER NETS
#####################
set_domain_supply_net TOP -primary_power_net VDD -primary_ground_net VSS
set_domain_supply_net INST -primary_power_net VDDIS -primary_ground_net VSS
set_domain_supply_net GPRS -primary_power_net VDDGS -primary_ground_net VSS
set_domain_supply_net MULT -primary_power_net VDDMS -primary_ground_net VSS
set_domain_supply_net GENPP -primary_power_net VDD -primary_ground_net VSS
## INST SETUP
#############
# SWITCH
create_power_switch inst_sw \
-domain TOP \
-input_supply_port {in VDDI} \
-output_supply_port {out VDDIS}\
-control_port {inst_on inst_on}\
-on_state {state2001 in {!inst_on}}
# ISO
set_isolation inst_iso_in \
-domain INST \
-isolation_power_net VDD -isolation_ground_net VSS \
-clamp_value 1 \
-applies_to inputs
set_isolation_control inst_iso_in \
-domain INST \
-isolation_signal inst_iso_in \
-isolation_sense high \
-location parent
set_isolation inst_iso_out \
-domain INST \
-isolation_power_net VDD -isolation_ground_net VSS \
-clamp_value 1 \
-applies_to outputs
set_isolation_control inst_iso_out \
-domain INST \
-isolation_signal inst_iso_out \
-isolation_sense low \
-location parent
set_isolation inst_iso_in_reset \
-domain INST \
-elements InstDecode/reset \
-applies_to inputs \
-no_isolation
# RETAIN
set_retention inst_ret -domain INST \
-retention_power_net VDDI -retention_ground_net VSS
set_retention_control inst_ret -domain INST \
-save_signal {inst_save high} \
-restore_signal {inst_nrestore low}
## GPRS SETUP
#############
# SWITCH
create_power_switch gprs_sw \
-domain GPRS \
-input_supply_port {in VDDG} \
-output_supply_port {out VDDGS} \
-control_port {gprs_on gprs_on} \
-on_state {state2002 in {!gprs_on}}
# ISO
set_isolation gprs_iso_in \
-domain GPRS \
-isolation_power_net VDD -isolation_ground_net VSS \
-clamp_value 1 \
-applies_to inputs
set_isolation_control gprs_iso_in \
-domain GPRS \
-isolation_signal gprs_iso_in \
-isolation_sense high \
-location parent
set_isolation gprs_iso_out \
-domain GPRS \
-isolation_power_net VDD -isolation_ground_net VSS \
-clamp_value 1 \
-applies_to outputs
set_isolation_control gprs_iso_out \
-domain GPRS \
-isolation_signal gprs_iso_out \
-isolation_sense low \
-location parent
set_isolation gprs_iso_in_reset \
-domain GPRS \
-applies_to inputs \
-elements GPRs/reset \
-no_isolation
# RETAIN
set_retention gprs_ret -domain GPRS \
-retention_power_net VDDG -retention_ground_net VSS
set_retention_control gprs_ret -domain GPRS \
-save_signal {gprs_save high} \
-restore_signal {gprs_nrestore low}
## MULT SETUP
#############
# SWITCH
create_power_switch mult_sw \
-domain MULT \
-input_supply_port {in VDDM} \
-output_supply_port {out VDDMS} \
-control_port {mult_on mult_on} \
-on_state {state2003 in {!mult_on}}
# ISO
set_isolation mult_iso_out \
-domain MULT \
-isolation_power_net VDD -isolation_ground_net VSS \
-clamp_value 1 \
-applies_to outputs
set_isolation_control mult_iso_out \
-domain MULT \
-isolation_signal mult_iso_out \
-isolation_sense high \
-location parent
## GENPP SETUP
##############
set_isolation mult_iso_in \
-domain GENPP \
-isolation_power_net VDD -isolation_ground_net VSS \
-clamp_value 1 \
-applies_to inputs \
set_isolation_control mult_iso_in \
-domain GENPP \
-isolation_signal mult_iso_in \
-isolation_sense high \
-location self
set_isolation mult_iso_in_isoen \
-domain GENPP \
-elements Multiplier/GENPP/iso_in \
-applies_to inputs \
-no_isolation
# ADD PORT STATE INFO
#####################
add_port_state VDD -state {HV 1.08}
add_port_state VDDI -state {HV 1.08}\
-state {LV 0.864}
add_port_state inst_sw/out -state {HV 1.08}\
-state {LV 0.864}\
-state {OFF off}
add_port_state VDDG -state {HV 1.08}\
-state {LV 0.864}
add_port_state gprs_sw/out -state {HV 1.08}\
-state {LV 0.864}\
-state {OFF off}
add_port_state VDDM -state {HV 1.08}
add_port_state mult_sw/out -state {HV 1.08}\
-state {OFF off}
## CREATE PST
#############
create_pst chiptop_pst -supplies {VDD VDDI VDDIS VDDG VDDGS VDDM VDDMS}
add_pst_state s0 -pst chiptop_pst -state {HV HV HV HV HV HV HV}
add_pst_state s01 -pst chiptop_pst -state {HV HV OFF HV HV HV HV}
add_pst_state s02 -pst chiptop_pst -state {HV HV HV HV OFF HV HV}
add_pst_state s03 -pst chiptop_pst -state {HV HV HV HV HV HV OFF}
add_pst_state s1 -pst chiptop_pst -state {HV LV LV LV LV HV HV}
add_pst_state s11 -pst chiptop_pst -state {HV LV OFF LV LV HV HV}
add_pst_state s12 -pst chiptop_pst -state {HV LV LV LV OFF HV HV}
add_pst_state s13 -pst chiptop_pst -state {HV LV LV LV LV HV OFF}
4. UPF Analysis
下面对UPF涉及到的各个命令进行分析。
4.1 Create Power Domain
首先是创建电源域,根据图2.1所示,设计包含五个电源域,分别对应五个模块。如下命令使用 create_power_domain 创建电源域,并使用-elements 选项和实例化模块对应起来。 需要注意的是,-elements 后面对应的是RTL中的实例化名称,而非模块名称。
create_power_domain TOP
create_power_domain MULT -elements Multiplier
create_power_domain INST -elements InstDecode
create_power_domain GPRS -elements GPRs
create_power_domain GENPP -elements Multiplier/GENPP
最后划分出来的电源域如图4.1所示,每个颜色代表不同的电源域。

其中,红色代表TOP电源域,对应模块顶层ChipTop;黄色代表INST电源域,对应模块InstDecode(实例化名称);绿色代表GPRS电源域,对应模块GPRs;橙色代表MULT电源域,对应模块Multiplier;蓝色对应GENPP电源域,对应Multiplier模块内实例化的GNPP模块。
create_power_domain 创建电源域是以Module为范围的,Module范围内所有的实例化模块都属于同一个电源域。例如上述创建MULT电源域时,其中的实例化模块GENPP和ADDPP以及内部的实例化模块都属于MULT。但同时为GENPP创建了独立的电源域,所以Multiplier内部除了GENPP外,其他仍属于MULT电源域。
4.2 Create Supply Port
使用命令 create_supply_port 为设计创建电源端口。在RTL层面上,这个端口是虚拟的,仅用于仿真。3.3中13、20、30、39、47行,分别创建了不同的电源端口VDD、VSS、VDDI、VDDG和VDDM。
create_supply_port VDD
create_supply_port VSS
create_supply_port VDDI
create_supply_port VDDG
create_supply_port VDDM
上述命令创建的端口如图4.2红圈所示。

4.3 Create Supply Net
使用命令 create_supply_net 创建电源网络,以便后续给各个电源域供电。以创建VDD电源网络为例,3.3中 14、15行在TOP和GENPP电源域创建了相应的电源网络。-reuse 选项是指VDD Net Name的重用,可以理解成TOP和GENPP电源域的VDD-Net连接起来。
create_supply_net VDD -domain TOP
create_supply_net VDD -domain GENPP -reuse
上述命令创建的VDD Supply Net如下图红框圈出来的灰色线所示。

同样地,如下命令分别创建VSS-Net、VDDI-Net、VDDIS-Net、VDDG-Net、VDDGS-Net、VDDM-Net和VDDMS-Net。
#VSS
create_supply_net VSS -domain TOP
create_supply_net VSS -domain INST -reuse
create_supply_net VSS -domain GPRS -reuse
create_supply_net VSS -domain MULT -reuse
create_supply_net VSS -domain GENPP -reuse
#VDDI
create_supply_net VDDI -domain TOP
create_supply_net VDDI -domain INST -reuse
#VDDIS
create_supply_net VDDIS -domain TOP
create_supply_net VDDIS -domain INST -reuse
#VDDG
create_supply_net VDDG -domain TOP
create_supply_net VDDG -domain GPRS -reuse
#VDDGS
create_supply_net VDDGS -domain GPRS
#VDDM
create_supply_net VDDM -domain TOP
create_supply_net VDDM -domain MULT -reuse
#VDDMS
create_supply_net VDDMS -domain MULT
DEMO中所有Supply Net创建好后如下图4.4所示,灰色的线表示3.3中所有 create_supply_net 创建的Supply Net。

4.4 Connect Supply Net to Port
创建好供电端口和网络之后,下一步是将它们连接起来。使用命令 connect_supply_net 完成这一动作。
connect_supply_net VDD -ports VDD
connect_supply_net VSS -ports VSS
connect_supply_net VDDI -ports VDDI
connect_supply_net VDDG -ports VDDG
connect_supply_net VDDM -ports VDDM
第1行代码表示,VDD-Net 连接至VDD-Supplu Port,其余命令完成相似的连接。上述命令连接好的情况如下图4.5所示。注意图4.5和图4.4的区别。

4.5 Set Primary Power Net
创建好基础的电源网络,并连接至电源端口后,指定各个电源域的主要供电Net。命令 set_domain_supply_net 完成这一动作。
## PRIMARY POWER NETS
#####################
set_domain_supply_net TOP -primary_power_net VDD -primary_ground_net VSS
set_domain_supply_net INST -primary_power_net VDDIS -primary_ground_net VSS
set_domain_supply_net GPRS -primary_power_net VDDGS -primary_ground_net VSS
set_domain_supply_net MULT -primary_power_net VDDMS -primary_ground_net VSS
set_domain_supply_net GENPP -primary_power_net VDD -primary_ground_net VSS
上述命令完成的动作如图4.6所示。图中红色圆框圈出来的带+的圆表明电源域的供电口,带-的圆圈表明电源域的地。以GPRS电源域为例,其供电口连接的Net是VDDGS,地端是VSS。

4.6 Insert Power Switch
紧接着是设置电源开关,以完成Power Gating的操作。命令 create_power_switch 完成该操作。需要注意的是,在RTL层级,该开关也是虚拟出来的。
create_power_switch inst_sw \
-domain TOP \
-input_supply_port {in VDDI} \
-output_supply_port {out VDDIS} \
-control_port {inst_on inst_on} \
-on_state {state2001 in {!inst_on}}
对上述命令做如下解释:
- 其中inst_sw 为开关的名字,作用域为TOP;
- 该开关的电源输入口命名为in, 连接的Supply Net为VDDI,电源输出口命名为out,连接的Supply Net为VDDIS;
- 开关的控制端口命名为inst_on,连接的实际Port为顶层ChipTop的输入端口inst_on;
- -on_state指定状态名为state2001,指定的输入电源port为in,{!inst_on}表明控制端口是低有效。
如果控制信号来自于其他模块的端口信号,可参考如下写法。其中InstDecode为顶层ChipTop下的实例化模块名称,inst_on则是其中一个输出端口。
-control_port {inst_on InstDecode/inst_on} \
上述命令构建的虚拟开关如下图4.7红框所示。其中控制端口inst_on是Chip_Top的顶层输入端口,当inst_on为低电平时,开关inst_sw打开,VDDI供电到VDDIS,最终给INST电源域供电,完成Power Gating的功能。

同样地,如下命令创建的其余Power Swith如下图4.8 所示。
## GPRS SETUP
#############
# SWITCH
create_power_switch gprs_sw \
-domain GPRS \
-input_supply_port {in VDDG} \
-output_supply_port {out VDDGS} \
-control_port {gprs_on gprs_on} \
-on_state {state2002 in {!gprs_on}}
## MULT SETUP
#############
# SWITCH
create_power_switch mult_sw \
-domain MULT \
-input_supply_port {in VDDM} \
-output_supply_port {out VDDMS} \
-control_port {mult_on mult_on} \
-on_state {state2003 in {!mult_on}}

4.7 Insert Isolation Cell
Isolation Cell的作用是电源域掉电之后,能为其他模块输出稳定的值。 插入隔离单元需要通过 set_isolation 和 set_isolation_control 配合完成。
# INST SETUP
# ISO
set_isolation inst_iso_out \
-domain INST \
-isolation_power_net VDD -isolation_ground_net VSS \
-clamp_value 1 \
-applies_to outputs
set_isolation_control inst_iso_out \
-domain INST \
-isolation_signal inst_iso_out \
-isolation_sense low \
-location parent
set_isolation:
- Isolation Cell的名称为inst_iso_out,作用域为INST;
- Cell的供电Net是 VDD,地端为VSS;
- -clamp_value 1表示隔离打开时,恒定输出高电平1。同样地,0表示恒定输出低电平;
- -applies_to outputs 表示对INST电源域的所有Output Port都加上Isolation Cell。
set_isolation_control:
- 控制修改的Isolation Cell名称为 inst_iso_out,必须与set_isolation设定的名称一致;
- 作用域为INST;
- -isolation_signal inst_iso_out 表示Cell的控制信号为顶层ChipTop的其中一个Port:inst_iso_out;
- -isolation_sense low 表示控制信号低有效,即当Port inst_iso_out为低时,隔离打开。同样地,设置为high时,表示高有效。
- -location parent 表示Isolation Cell的位置位于父节点,即上一级。在该DEMO中,Isolation Cell:inst_iso_out位于InstDecode的上一层,即ChipTop。
如果控制信号来自于某一个模块的Port,而非顶层时,参考写法如下。
-isolation_signal InstDecode/inst_iso_out
如果Isolation Cell的位置需要放到InstDecode中,而非上一层时,参考写法如下。
-location self
上述命令产生的Isolation Cell: inst_iso_out,如下图4.9红框所示。

同样地,3.3中其余创建Isolation Cell的命令运行后,产生的效果如下图4.10所示。图中红框标出了各Isolation Cell的位置。

该DEMO中,将INST域所有端口都加上了Isolation Cell,除了复位端口。 因此,用如下命令取消了复位端口{reset}上的Isolation Cell:
set_isolation inst_iso_in_reset \
-domain INST \
-elements InstDecode/reset \
-applies_to inputs \
-no_isolation
- -elements InstDecode/reset 表示需要操作的Isolation Cell 位于InstDecode的reset端口上
- -no_isolation 表示将该端口上的isolation Cell取消掉
以INST域为例,最终的添加结果是,除了{reset}端口外,其余所有输入输出端口都加上了Isolation Cell
4.8 Create Retention Register
RR寄存器是一种特殊的寄存器,其作用是在关断电源后保留相应的寄存器数据,普通的寄存器掉电之后数据就不可用了。替换RR寄存器需要通过命令set_retention 和 set_retention_control来完成。
在INST域中,使用的命令如下所示:
set_retention inst_ret -domain INST \
-retention_power_net VDDI -retention_ground_net VSS
set_retention_control inst_ret -domain INST \
-save_signal {inst_save high} \
-restore_signal {inst_nrestore low}
- inst_ret:RR寄存器的Name
- -domain INST:表示作用域为INST
- -retention_power_net VDDI :表示RR寄存器的供电端Net 为VDDI (设置为关电的Power Net,表示需要保持VDDI电源域的数据)
- -retention_ground_net VSS:地端为VSS
- -save_signal {inst_save high} :RR寄存器save端由信号{inst_save}控制,高电平有效
- -restore_signal {inst_nrestore low}:RR寄存器restore端由信号{inst_nrestore}控制,低电平有效
同样地,如果设计中存在电源管理模块,RR寄存器的save和restore受控于电源管理模块,则在添加信号时,需要在前面加上实例化的模块名:
-save_signal {u_pwr_mng/inst_save high}
-restore_signal {u_pwr_mng/inst_restore low}
最后产生的效果如下图4.11所示:

整个DEMO中只有INST和GPRS域使用了RR寄存器,最终产生的效果如下图4.12所示:

4.9 Add Power State
DEMO的设计中,每个Power Port的供电情况不一样,使用命令add_port_state为每个电源端口指定可能出现的电压情况,以供仿真分析。
add_port_state VDD -state {HV 1.08}
add_port_state VDDI -state {HV 1.08}\
-state {LV 0.864}
add_port_state inst_sw/out -state {HV 1.08}\
-state {LV 0.864}\
-state {OFF off}
add_port_state VDDG -state {HV 1.08}\
-state {LV 0.864}
add_port_state gprs_sw/out -state {HV 1.08}\
-state {LV 0.864}\
-state {OFF off}
add_port_state VDDM -state {HV 1.08}
add_port_state mult_sw/out -state {HV 1.08}\
-state {OFF off}
- add_port_state VDD -state{HV 1.08} :设置VDD的供压为1.08V,并将该状态命名为HV(High Voltage)
- add_port_state VDDI -state {HV 1.08} -state{LV 0.864}:设置VDDI高压供电为1.08V,低压供电为0.864V
- add_port_state inst_sw/out -state{HV 1.08} -state{LV 0.864} -state{OFF off}:设置INST域电源开关{inst_sw}输出端的电压情况,一共为三种高压(HV 1.08V)、低压(LV 0.864V)和关断(OFF off)状态。前两种情况是由于开关的电源输入端来源于VDDI(VDDI有HV和LV两种情况),最后一种情况是由于开关处于断开状态时,该端口输出电压就相当于关断状态。
4.10 Create PST
电路实际的工作过程中,电源的开关以及高低压供电状态比较多,需要工程师将所有的电源情况都列出来,以方便工具在仿真过程中对各种情况进行分析。PST全程Power State Tabe,即电源状态表,工具通过这个表去分析不同电源情况下,电路的工作状态。
## CREATE PST
#############
create_pst chiptop_pst -supplies {VDD VDDI VDDIS VDDG VDDGS VDDM VDDMS}
add_pst_state s0 -pst chiptop_pst -state {HV HV HV HV HV HV HV}
add_pst_state s01 -pst chiptop_pst -state {HV HV OFF HV HV HV HV}
add_pst_state s02 -pst chiptop_pst -state {HV HV HV HV OFF HV HV}
add_pst_state s03 -pst chiptop_pst -state {HV HV HV HV HV HV OFF}
add_pst_state s1 -pst chiptop_pst -state {HV LV LV LV LV HV HV}
add_pst_state s11 -pst chiptop_pst -state {HV LV OFF LV LV HV HV}
add_pst_state s12 -pst chiptop_pst -state {HV LV LV LV OFF HV HV}
add_pst_state s13 -pst chiptop_pst -state {HV LV LV LV LV HV OFF}
- chiptop_pst:PST的Name,可自行命名;
- -supplises {VDD VDDI VDDIS VDDG VDDM VDDMS}:列出所有的电源Net;
- s0、s01、...、s13 :电源状态Name,可自行命名;
- -pst chiptop_pst:指定为chiptop_pst 的表中添加电源状态;
- -state { A B C D E F G}:指定各电源的状态,必须和-supplises指定的电源端口顺序一致。
4.11 Level Shifter
Level Shifter主要用于解决信号在高低压电源域间传输时,由于电压不匹配导致高低电平判断出错的问题。这一小节应该放在前面介绍,但由于该DEMO的UPF中实际上没有添加Level Shifter的命令,所以放在这进行补充。另一个原因在于,我认为该DEMO是需要添加Level Shifer的,因为GPRS和Mul模块间存在数据通路,同时PST的s1、s11、s12和s13状态中,GPRS域的供压为VDDG为LV,而Mul域的供压VDDM为HV,两者的电压域并不一致。 这也是我疑惑的一个点。 一个我认为可能比较合理的解释是:HV:1.08V和LV:0.864V的VIH、VOH、VIL、VOL其实相差不大,所以不会出现高低电平无法判断的问题。
绕的有点远了,在UPF中建模Level Shifter的命令是:set_level_shifter。 参考如下:
set_level_shifter inst_lv_hv \
-domain GPRS \
-applies_to outputs \
-threshold 0.1 \
-rule low_to_high \
-location parent
- inst_lv_hv:Level Shifter Name;
- -domain:作用域为INST
- -applies_to outputs :作用在INST域的所有输出端口,如果是输入可以写成:inputs
- -rule low_to_high:表示该level shifter用于低压到高压的转换,反过来,可写成:high_to_low
- -locataion parent:Level Shifter位于INST的父域,即顶层。
- -threshold 0.1:这个的官方描述如下图4.13所示。我不太理解,这个的意思是不是指在电压只要超过0.1的地方就设置一个Level Shiftter?如果有知道的朋友,可以留言告诉我,万分感谢。

插入Level Shiftter后产生的效果如下图4.14红框处所示

同样地,上述命令是将所有输出端口都加上了Level Shifter,实际上可能不需要,使用set_level_shifter命令的-no_shift选项将其去除,和4.7小结isolation cell的去除一样。 这里不再展开描述。

5. End
最后产生的整体效果如下图4.16所示,因为DEMO中是没有Level Shifter的,所以图中没有展示相关的器件。

后续可以展开的工作有几个地方:
- 4.11提出来的两个问题,希望有朋友能给我解惑;
- UPF在前仿的作用相当于建模,在实际仿真过程中不会生成相关的Power Port、Power Switch、Isolation Cell、Retention Register以及Level Shifter。可以在综合过程中,导入UPF文件,使得产生的网表包含这些器件。但该DEMO并没有提供综合相关的环境,希望如果有朋友完成了这件事可以分享一下这个过程。
最后,如果对文章中的内容有疑问可以在留言中告诉我,欢迎交流。
码字不易,转载注明出处,谢绝复制转成“原创”,虽然是公开交流,但也不希望被抄袭。
6.Reference
- 《IEEE_1801_2009_UPF_2.0》
- 《IEEE_1801-2013_UPF_2.1》
- 《IEEE_1801_2015_UPF_3.0》
- 《VCS Native Low Power(NLP) User Guide》