Wednesday, April 13, 2022

UPF1.0 Basic Syntax Part#2



12) Next step is to define power switches, isolation buffers/cells and level shifter cells

Power Switch:

create_power_switch power switch name \

-domain domain_where_power_switch_exists \

-input_supply_port {port_name net_name_used_to_generate_the_power gate} \

-output_supply_port {port_name net_name_for_the_generated_power} \

-control_port {port_name net_name_of_control_signal_for_the_mux} \

-on_state {state_name input_supply_port {boolean_function}} \

-error_state {state_name {boolean_function}}




Sample Example:

create_power_switch pg_sw1 \

-domain PG_NONCORE_HMCCTRL \

-input_supply_port {vcc_in vccl_la} \

-output_supply_port {vccpg_la vcchmc_pg1_la} \

-control_port {ctrl pg_en_b} \

-on_state {on_state vcc_in {!ctrl}}




Two-Input Mux Example:

create_power_switch sw1 \

-domain PD_LA_LAB \

-output_supply_port {vout vcc_rxcx_crg_la} \

-input_supply_port {vin1 vccl_la} \

-input_supply_port {vin2 vcchg_la} \

-control_port {ss frzlogic} \

-on_state {full_s1 vin1 {ss}} \

-on_state {full_s2 vin2 {!ss}}




Isolation Buffer:

set_isolation isolation_strategy_name \

-domain power_domain_where_isolation_exists \

-clamp_value value_of_the_isolation_cell_output:_0/1/z/latch \

-isolation_power_net power_of_the_isolation_cell \

-isolation_ground_net ground_of_the_isolation_cell \

-applies_to outputs parts_of_the_power_domain_that_are_isolated:inputs/outputs/both \

-elements objects \

-no_isolation \

-diff_supply_only true

Note: if -no_isolation is specified, it means that the elements in the -elements list will not be isolated.

Example of no_isolation: set_isolation iso_strategy_name -domain domain_name -no_isolation -elements port_names_to_be_included

Note: diff_supply: Indicates whether ports connected to other ports with the same supply should be isolated. The default is -diff_supply_only FALSE if the option is not specified at all; if -diff_supply_only is specified without a value, the default value is TRUE.




Sample Example:

set_isolation hmcctrl_output \

-domain PG_NONCORE_HMCCTRL \

-clamp_value 0 \

-isolation_power_net vcc \

-isolation_ground_net vss \

-applies_to outputs \

-elements element_list \

-exclude_elements exclude_list \

-location self/parent

Isolation control:

set_isolation_control isolation_strategy_name \

-domain power_domain_where_isolation_exists \

-isolation_signal isolation_signal_name \

-isolation_sense logic_state_of_the_isolation_control_signal:low/high \

-location self/parent

Note: Better to use parent option as the powers in the parent are always on. also helps to save area.




Sample Example:

set_isolation_control hmcctrl_output \

-domain PG_NONCORE_HMCCTRL \

-isolation_signal pg_en_b \

-isolation_sense low \

-location parent

Note: if -no_shift is specified, it means that the elements in the -elements list will not be level shifted.

Example of no_shift:

set_level_shifter ls_strategy_name -domain domain_name -no_shift -elements port_names_to_be_included




Level Shifter Strategy:

set_level_shifter strategy_name \

-domain domain_name \

-applies_to inputs/outputs/both \

-location self \

-elements objects \

-exclude_elements objects \

-rule low_to_high/high_to_low/both




Sample Example:

set_level_shifter io_hmc_ls \

-domain AO_NONCORE \

-applies_to inputs \

-location self \

-elements {.} \

-exclude_elements list \

-rule low_to_high




13) Map the power switch/isolation buffers/ level shifters to the actual standard cell name

map_* strategy_name -domain power_domain_name [-lib_cells list]




Sample Example:

map_power_switch pg_sw1 -domain PG_NONCORE_HMCCTRL -lib_cells {d04pws00wd8b0}

map_isolation_cell hmcctrl_output -domain PG_NONCORE_HMCCTRL -lib_cells {d04swa00wd0b0}

map_level_shifter_cell io_hmc_ls -domain AO_NONCORE -lib_cells {d04slgn*}

map_power_switch pg_sw1 -domain PG_NONCORE_HMCCTRL -lib_cells {*psbf10a*}

map_isolation_cell hmcctrl_output -domain PG_NONCORE_HMCCTRL -lib_cells {*psan02a*}

map_level_shifter_cell io_hmc_ls -domain AO_NONCORE -lib_cells {*sg00nda*}




14) Power States:

List all the power supplies here. ON should be the nominal voltage. Off state should exist for all the powers as initially all powers are off.

Also include power gated supplies and muxed supplies in this list

add_port_state power_supply_name -state {ON 'value'} -state {OFF 'value'}




Sample Example:

add_port_state vccl_la -state {ON 0.73 0.9 0.98}

add_port_state vss_la -state {ON 0.0 0.0 0.0}

add_port_state pg_sw1/vccpg_la -state {ON 0.73 0.9 0.98} -state {OFF off}




Power State Table:

create_pst table_name -supplies {supply1 supply2}

add_pst_state name -pst table_name -state {supply1_state_name supply2_state_name}




Sample Example:

create_pst table1 -supplies {vccl_la pg_sw1/vccpg_la vss}

add_pst_state state1 -pst table1 -state {ON ON ON}

add_pst_state state2 -pst table1 -state {ON OFF ON}

add_pst_state state3 -pst table1 -state {OFF OFF ON}

0 Comments:

Post a Comment