upf模板,来自synopsys rm golden.upf

  • create_power_domain {TOP}没有指定-elements和-include_scope。意义是默认所有elements属于TOP power domain,除非后续有单独的create_power_domain -elements命令设置。
    在这里插入图片描述
  • 关断电源,有两种方案:
  1. 芯片输出gpio管脚,控制PCB板,把电源关断。注意内部iso enable控制流程。
  2. 内部power switch cell,实现芯片内关断。
  3. 相比芯片外和芯片内关断方案,芯片外关断,具有电源关断更彻底,不需要芯片增加power switch cell,但是占用一个GPIO管脚等特点。
  • 加ISO cell,有手动RTL和综合自动两种方案:
  1. 推荐手动RTL添加ISO cell,因为钳位信号,可以灵活处理。
  • 关断后数据保留,有两种方案:
  1. retention register。
  2. 软件方案,把需要保留的数据,存储在常开区。优点是不需要retention register cell,缺点是需要软件实现数据保留的过程。
#################################################################################
#################################################################################
# Example 2: UPF using domain dependent supply nets.
#################################################################################
#################################################################################

## Create Power Domains
#######################
# Power Domains
create_power_domain {TOP}
create_power_domain {LEON3_p0}   -elements {u0_0/pd_switchable}
create_power_domain {LEON3_p1}   -elements {u0_1/pd_switchable}
create_power_domain {LEON3_p2}   -elements {u0_2/pd_switchable}
create_power_domain {LEON3_p3}   -elements {u0_3/pd_switchable}
create_power_domain {LEON3_misc} -elements {u_m/u_m_pd}


## Power Supply Network
#######################
# Top Level Domain at 1.08V
create_supply_port {VDD}
create_supply_net  {VDD} -domain {TOP}
create_supply_net  {VDD} -domain {LEON3_misc} -reuse

# Processors u0_0 and u0_1 are high performance and need to operate at 1.08V
create_supply_net {VDD} -domain {LEON3_p0} -reuse
create_supply_net {VDD} -domain {LEON3_p1} -reuse
create_supply_net {VDD} -domain {LEON3_p2} -reuse
create_supply_net {VDD} -domain {LEON3_p3} -reuse

connect_supply_net {VDD} -ports {VDD}

# Top level Low Voltage Port at 0.9V 
create_supply_port {VDD_LOW}
create_supply_net  {VDD_LOW} -domain {TOP}

# Processors u0_2 and u0_3 are low performance and need to operate at 0.9V
create_supply_net  {VDD_LOW} -domain {LEON3_p2} -reuse
create_supply_net  {VDD_LOW} -domain {LEON3_p3} -reuse
connect_supply_net {VDD_LOW} -ports  {VDD_LOW}


# Create Ground Nets 
create_supply_port {VSS}

create_supply_net {VSS} -domain {TOP}
create_supply_net {VSS} -domain {LEON3_p0}   -reuse
create_supply_net {VSS} -domain {LEON3_p1}   -reuse
create_supply_net {VSS} -domain {LEON3_p2}   -reuse
create_supply_net {VSS} -domain {LEON3_p3}   -reuse
create_supply_net {VSS} -domain {LEON3_misc} -reuse

connect_supply_net {VSS} -ports {VSS}

# power Nets for the different domains
create_supply_net {VDDS_p0}   -domain {LEON3_p0}
create_supply_net {VDDS_p1}   -domain {LEON3_p1}
create_supply_net {VDDS_misc} -domain {LEON3_misc}

create_supply_net {VDD_LOWS_p2} -domain {LEON3_p2}
create_supply_net {VDD_LOWS_p3} -domain {LEON3_p3}

## Setting Power Domain's Primary Supply Nets 
#############################################
# Specify the Primary Supply
set_domain_supply_net {TOP}        -primary_power_net {VDD}         -primary_ground_net {VSS}
set_domain_supply_net {LEON3_p0}   -primary_power_net {VDDS_p0}     -primary_ground_net {VSS}
set_domain_supply_net {LEON3_p1}   -primary_power_net {VDDS_p1}     -primary_ground_net {VSS}
set_domain_supply_net {LEON3_misc} -primary_power_net {VDDS_misc}   -primary_ground_net {VSS}
set_domain_supply_net {LEON3_p2}   -primary_power_net {VDD_LOWS_p2} -primary_ground_net {VSS}
set_domain_supply_net {LEON3_p3}   -primary_power_net {VDD_LOWS_p3} -primary_ground_net {VSS}


## Power Definition for Power Domain u0_0/LEON3_p0
##################################################
# Create Power Switch
create_power_switch {leon3_p0_sw}                              \
  -domain             {LEON3_p0}                               \
  -input_supply_port  {in VDD}                                 \
  -output_supply_port {out VDDS_p0}                            \
  -control_port       {p0_sd u_m/u_power_controller_top/p0_sd} \
  -on_state           {p0_on_state in {!p0_sd}}

# Define Isolation Constraints
set_isolation {leon3_p0_iso_out}     \
   -domain               {LEON3_p0}  \
   -isolation_power_net  {VDD}       \
   -isolation_ground_net {VSS}       \
   -clamp_value          1           \
   -applies_to           outputs

set_isolation_control {leon3_p0_iso_out}                        \
   -domain            {LEON3_p0}                                \
   -isolation_signal  {u_m/u_power_controller_top/p0_isolation} \
   -isolation_sense   high                                      \
   -location          parent

## Power Definition for Power Domain u0_1/LEON3_p1
##################################################
# Create Power Switch
create_power_switch {leon3_p1_sw}                              \
  -domain             {LEON3_p1}                               \
  -input_supply_port  {in VDD}                                 \
  -output_supply_port {out VDDS_p1}                            \
  -control_port       {p1_sd u_m/u_power_controller_top/p1_sd} \
  -on_state           {p1_on_state in {!p1_sd}}

# Define Isolation Constraints
set_isolation {leon3_p1_iso_out}     \
   -domain               {LEON3_p1}  \
   -isolation_power_net  {VDD}       \
   -isolation_ground_net {VSS}       \
   -clamp_value          1           \
   -applies_to           outputs

set_isolation_control {leon3_p1_iso_out}                        \
   -domain           {LEON3_p1}                                 \
   -isolation_signal {u_m/u_power_controller_top/p1_isolation}  \
   -isolation_sense  high                                       \
   -location         self


## Power Definition for Power Domain u0_2/LEON3_p2
##################################################
# Create Power Switch
create_power_switch {leon3_p2_sw}                               \
  -domain             {LEON3_p2}                                \
  -input_supply_port  {in VDD_LOW}                              \
  -output_supply_port {out VDD_LOWS_p2}                         \
  -control_port       {p2_sd u_m/u_power_controller_top/p2_sd}  \
  -on_state           {p2_on_state in {!p2_sd}}

# Define Isolation Constraints
set_isolation {leon3_p2_iso_out}      \
   -domain                {LEON3_p2}  \
   -isolation_power_net   {VDD_LOW}   \
   -isolation_ground_net  {VSS}       \
   -clamp_value           1           \
   -applies_to            outputs

set_isolation_control {leon3_p2_iso_out}                        \
   -domain           {LEON3_p2}                                 \
   -isolation_signal {u_m/u_power_controller_top/p2_isolation}  \
   -isolation_sense  high                                       \
   -location         parent

# Set the level shifter strategy based on LS available in the Library
set_level_shifter -domain {LEON3_p2} -applies_to inputs  -location self   {u0_2_ls_in}
set_level_shifter -domain {LEON3_p2} -applies_to outputs -location parent {u0_2_ls_out}


## Power Definition for Power Domain u0_3/LEON3_p3
##################################################
# Create Power Switch
create_power_switch {leon3_p3_sw}                               \
  -domain             {LEON3_p3}                                \
  -input_supply_port  {in VDD_LOW}                              \
  -output_supply_port {out VDD_LOWS_p3}                         \
  -control_port       {p3_sd u_m/u_power_controller_top/p3_sd}  \
  -on_state           {p3_on_state in {!p3_sd}}

# Define Isolation Constraints
set_isolation {leon3_p3_iso_out}      \
   -domain               {LEON3_p3}   \
   -isolation_power_net  {VDD_LOW}    \
   -isolation_ground_net {VSS}        \
   -clamp_value          1            \
   -applies_to           outputs

set_isolation_control {leon3_p3_iso_out}                        \
   -domain           {LEON3_p3}                                 \
   -isolation_signal {u_m/u_power_controller_top/p3_isolation}  \
   -isolation_sense  high                                       \
   -location         self

# Set the level shifter strategy based on LS available in the Library
set_level_shifter -domain {LEON3_p3} -applies_to inputs  -location self   {u0_3_ls_in}
set_level_shifter -domain {LEON3_p3} -applies_to outputs -location parent {u0_3_ls_out}

## Power Definition for Power Domain LEON3_misc
###############################################
# Create Power Switch
create_power_switch {leon3_misc_sw}                               \
  -domain             {LEON3_misc}                                \
  -input_supply_port  {in VDD}                                    \
  -output_supply_port {out VDDS_misc}                             \
  -control_port       {all_sd u_m/u_power_controller_top/all_sd}  \
  -on_state           {misc_on_state in {!all_sd}}

# Define Isolation Constraints
set_isolation {leon3_misc_iso_out}     \
   -domain               {LEON3_misc}  \
   -isolation_power_net  {VDD}         \
   -isolation_ground_net {VSS}         \
   -clamp_value          1             \
   -applies_to           outputs

set_isolation_control {leon3_misc_iso_out}                       \
   -domain           {LEON3_misc}                                \
   -isolation_signal {u_m/u_power_controller_top/all_isolation}  \
   -isolation_sense  high                                        \
   -location         self

# Define Retention Register Constraint
set_retention {misc_ret} -domain {LEON3_misc} -retention_power_net {VDD} -retention_ground_net {VSS}

set_retention_control {misc_ret}                                \
   -domain         {LEON3_misc}                                 \
   -save_signal    {u_m/u_power_controller_top/all_save high}   \
   -restore_signal {u_m/u_power_controller_top/all_restore low}

map_retention_cell {misc_ret}                  \
   -domain {LEON3_misc}                        \
   -lib_cells {RDFFSRX1      RDFFSRASRX1       \
               RSDFFSRX1     RSDFFSRASRX1      \
               RDFFSRX2      RDFFSRASRX2       \
               RSDFFSRX2     RSDFFSRASRX2      \
               RDFFSRX1_HVT  RDFFSRASRX1_HVT   \
               RSDFFSRX1_HVT RSDFFSRASRX1_HVT  \
               RDFFSRX2_HVT  RDFFSRASRX2_HVT   \
               RSDFFSRX2_HVT RSDFFSRASRX2_HVT  \
               RDFFSRX1_LVT  RDFFSRASRX1_LVT   \
               RSDFFSRX1_LVT RSDFFSRASRX1_LVT  \
               RDFFSRX2_LVT  RDFFSRASRX2_LVT   \
               RSDFFSRX2_LVT RSDFFSRASRX2_LVT  } 

## Define Port State for each Domain
####################################
add_port_state {VDD}     -state {TOP_HV 1.08}
add_port_state {VDD_LOW} -state {TOP_LV 0.7}
add_port_state {VSS}     -state {GND 0.0}

add_port_state {leon3_p0_sw/out}   -state {P0_HV 1.08}    -state {P0_OFF off}
add_port_state {leon3_p1_sw/out}   -state {P1_HV 1.08}    -state {P1_OFF off}
add_port_state {leon3_p2_sw/out}   -state {P2_LV 0.7}     -state {P2_OFF off}
add_port_state {leon3_p3_sw/out}   -state {P3_LV 0.7}     -state {P3_OFF off}
add_port_state {leon3_misc_sw/out} -state {MISC_HV 1.08}  -state {MISC_OFF off}

## Define the Port State Table for the Entire System
####################################################
create_pst {LEON3_MP_PST}                      -supplies {VDD    VDD_LOW  VDDS_p0  VDDS_p1  VDD_LOWS_p2  VDD_LOWS_p3  VDDS_misc  VSS}

add_pst_state {INIT}          -pst {LEON3_MP_PST} -state {TOP_HV  TOP_LV  P0_OFF   P1_OFF   P2_OFF       P3_OFF       MISC_OFF   GND}
add_pst_state {P0_BOOT}       -pst {LEON3_MP_PST} -state {TOP_HV  TOP_LV  P0_HV    P1_OFF   P2_OFF       P3_OFF       MISC_OFF   GND}
add_pst_state {P0_P1_BOOT}    -pst {LEON3_MP_PST} -state {TOP_HV  TOP_LV  P0_HV    P1_HV    P2_OFF       P3_OFF       MISC_OFF   GND}
add_pst_state {P0_P1_P3_BOOT} -pst {LEON3_MP_PST} -state {TOP_HV  TOP_LV  P0_HV    P1_HV    P2_LV        P3_OFF       MISC_OFF   GND}
add_pst_state {ALL_ON}        -pst {LEON3_MP_PST} -state {TOP_HV  TOP_LV  P0_HV    P1_HV    P2_LV        P3_LV        MISC_HV    GND}
add_pst_state {HIGH_PERF}     -pst {LEON3_MP_PST} -state {TOP_HV  TOP_LV  P0_HV    P1_HV    P2_OFF       P3_OFF       MISC_HV    GND}
add_pst_state {LOW_PERF}      -pst {LEON3_MP_PST} -state {TOP_HV  TOP_LV  P0_OFF   P1_OFF   P2_LV        P3_LV        MISC_HV    GND}
add_pst_state {P3_DROWSY}     -pst {LEON3_MP_PST} -state {TOP_HV  TOP_LV  P0_OFF   P1_OFF   P2_OFF       P3_LV        MISC_HV    GND}
add_pst_state {P2_DROWSY}     -pst {LEON3_MP_PST} -state {TOP_HV  TOP_LV  P0_OFF   P1_OFF   P2_LV        P3_OFF       MISC_HV    GND}
add_pst_state {P1_DROWSY}     -pst {LEON3_MP_PST} -state {TOP_HV  TOP_LV  P0_HV    P1_OFF   P2_OFF       P3_LV        MISC_HV    GND}
add_pst_state {P0_DROWSY}     -pst {LEON3_MP_PST} -state {TOP_HV  TOP_LV  P0_OFF   P1_HV    P2_OFF       P3_LV        MISC_HV    GND}
add_pst_state {ULTRA_DROWSY}  -pst {LEON3_MP_PST} -state {TOP_HV  TOP_LV  P0_OFF   P1_HV    P2_OFF       P3_OFF       MISC_OFF   GND}

set_port_attributes -elements { . } -attribute related_supply_default_primary true

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值