|
| 1 | +# test for power switch, which is not implemented |
| 2 | +from openroad import Design, Tech |
| 3 | +import pdn_aux |
| 4 | +import helpers |
| 5 | + |
| 6 | +tech = Tech() |
| 7 | +tech.readLef("sky130hd/sky130hd.tlef") |
| 8 | +tech.readLef("sky130hd/sky130_fd_sc_hd_merged.lef") |
| 9 | +tech.readLef("sky130_power_switch/power_switch.lef") |
| 10 | + |
| 11 | +design = Design(tech) |
| 12 | +design.readDef("sky130_power_switch/floorplan.def") |
| 13 | + |
| 14 | +pdn_aux.add_global_connection(design, net_name="VDD", power=True, pin_pattern="^VDDG$") |
| 15 | +pdn_aux.add_global_connection(design, net_name="VDD_SW", power=True, pin_pattern="^VPB$") |
| 16 | +pdn_aux.add_global_connection(design, net_name="VDD_SW", pin_pattern="^VPWR$") |
| 17 | +pdn_aux.add_global_connection(design, net_name="VSS", power=True, pin_pattern="^VGND$") |
| 18 | +pdn_aux.add_global_connection(design, net_name="VSS", power=True, pin_pattern="^VNB$") |
| 19 | + |
| 20 | +pdn_aux.set_voltage_domain(design, power="VDD", ground="VSS", switched_power_name="VDD_SW") |
| 21 | +pdn_aux.define_power_switch_cell(design, name="POWER_SWITCH", control="SLEEP", acknowledge="SLEEP_OUT", |
| 22 | + power_switchable="VPWR", power="VDDG", ground="VGND") |
| 23 | +pdn_aux.define_pdn_grid_real(design, name="Core", power_switch_cell="POWER_SWITCH", |
| 24 | + power_control="nPWRUP", power_control_network="DAISY") |
| 25 | + |
| 26 | +pdn_aux.add_pdn_stripe(design, layer="met1", width=0.48, offset=0, followpins=True) |
| 27 | +pdn_aux.add_pdn_stripe(design, layer="met4", width=1.600, pitch=27.140, offset=13.570) |
| 28 | +pdn_aux.add_pdn_stripe(design, layer="met5", width=1.600, pitch=27.200, offset=13.600) |
| 29 | + |
| 30 | +pdn_aux.add_pdn_connect(design, layers=["met1", "met4"]) |
| 31 | +pdn_aux.add_pdn_connect(design, layers=["met2", "met4"]) |
| 32 | +pdn_aux.add_pdn_connect(design, layers=["met4", "met5"]) |
| 33 | + |
| 34 | +design.getPdnGen().report() |
0 commit comments