upf学习supply_on/supply_off

通过supply_on/supply_off可以给UPF中定义的supply_port上电和掉电。

例如在upf中定义了:

create_supply_port VDD_DIG

create_supply_net VDD_DIG

connect_supply_net VDD_DIG -ports VDD_DIG

create_supply_port VSS_DIG

create_supply_net VSS_DIG -resolve parallel

connect_supply_net VSS_DIG -ports VSS_DIG

create_power_domain VDD -update -supply { primary VDD_SS}

create_supply_set VDD_SS \

                              -function {power VDD_DIG} \

                              -function {ground VSS_DIG} \

                              -function {nwell VDD_DIG}

add_power_state VDD_SS -sate MEM_NOM \

                              {\

                                    -supply_expr { power == `{ FULL_ON, 0.848 }} \

                                    -simstate NORMAL \

                              }

add_power_state VDD_SS -sate MEM_RET \

                              {\

                                    -supply_expr { power == `{ FULL_ON, 0.488 }} \

                                    -simstate NORMAL \

                              }

add_power_state VDD_SS -sate MEM_TURBO \

                              {\

                                    -supply_expr { power == `{ FULL_ON, 0.904 }} \

                                    -simstate NORMAL \

                              }

add_power_state VDD_SS -sate off \

                              {\

                                    -supply_expr { power == `{ OFF }} \

                                    -simstate CORRUPT \

                              }

在tb_top.sv中,通过supply_on/supply_off上电或掉电:

initial begin

  if(power_on)

    supply_on("tb_top/dut/VDD_DIG",0.904);

  else

    supply_off("tb_top/dut/VDD_DIG");

end

需要注意的是supply_on/off作用的是在upf中定义的port,且用到的电压值也应该在upf中有定义。

注意在tb_top中使用UPF内容时候需要import UPF::*

上面例子中的add_power_state语句如果采用create_pst add_pst_state实现的话,可写成以下方式:

add_port_state VDD_DIG \

                                     -state { VDD_NORMAL 0.848 } \

                                     -state { VDD_RET 0.488 } \

                                     -state { VDD_TURBO 0.904 } \

                                     -state { OFF off }

add_port_state VSS_DIG -state { gnd 0 }

create pst pt -supplies { VDD_DIG VSS_DIG }

add_pst_state POWER_NORMAL -pst pt -state {VDD_NORMAL gnd}

add_pst_state POWER_RET -pst pt -state {VDD_RET gnd}

add_pst_state POWER_TURBO -pst pt -state {VDD_TURBO gnd}

add_pst_state POWER_CORRUPT -pst pt -state { OFF gnd}

posted on 2019-03-06 13:42  lybinger  阅读(5796)  评论(2)    收藏  举报

导航