Skip to content

Commit

Permalink
Merge pull request #6814 from LucasYuki/upf-set_isolation-default-values
Browse files Browse the repository at this point in the history
Upf: fix set_isolation -update while using non-default values
  • Loading branch information
maliberty authored Mar 4, 2025
2 parents a5258d6 + 94f1116 commit 1d7f915
Show file tree
Hide file tree
Showing 9 changed files with 60,311 additions and 60,943 deletions.
12 changes: 0 additions & 12 deletions src/ifp/test/upf_test.ok
Original file line number Diff line number Diff line change
Expand Up @@ -79,17 +79,11 @@ Instance: d4/_2_ - (PD_D4) : sky130_fd_sc_hd__buf_4
Instance: d1/_2__d1_out2_d1_out2_o_isolation - () : sky130_fd_sc_hd__lpflow_inputiso0n_1
-> d1_out2_o -> d3/_0_
-> d1_out2_o -> d3/_2_
Instance: d1/_2__d1_out2_d1_out2_o_isolation_inv_control - () : sky130_fd_sc_hd__clkinv_1
-> d1/_2__d1_out2_d1_out2_o_isolation_inv_control -> d1/_2__d1_out2_d1_out2_o_isolation
Instance: d1/_1__d1_out1_d1_out1_o_isolation - () : sky130_fd_sc_hd__lpflow_inputiso0n_1
-> d1_out1_o -> d2/_0_
-> d1_out1_o -> d2/_2_
Instance: d1/_1__d1_out1_d1_out1_o_isolation_inv_control - () : sky130_fd_sc_hd__clkinv_1
-> d1/_1__d1_out1_d1_out1_o_isolation_inv_control -> d1/_1__d1_out1_d1_out1_o_isolation
Instance: d1/_0__d1_out3_d1_out3_o_isolation - () : sky130_fd_sc_hd__lpflow_inputiso0n_1
-> d1_out3_o -> _1_
Instance: d1/_0__d1_out3_d1_out3_o_isolation_inv_control - () : sky130_fd_sc_hd__clkinv_1
-> d1/_0__d1_out3_d1_out3_o_isolation_inv_control -> d1/_0__d1_out3_d1_out3_o_isolation
Instance: d2/_2__d2_out2_d2_out2_o_isolation - () : sky130_fd_sc_hd__lpflow_inputiso0n_1
-> d2_out2_o -> d4/_0_
-> d2_out2_o -> d4/_2_
Expand All @@ -108,21 +102,15 @@ Instance: d3/_2__d3_out2_d3_out2_o_isolation - () : sky130_fd_sc_hd__lpflow_inpu
-> d3/_2__d3_out2_d3_out2_o_isolation_inv_out -> d3/_2__d3_out2_d3_out2_o_isolation_inv_out
Instance: d3/_2__d3_out2_d3_out2_o_isolation_inv_out - () : sky130_fd_sc_hd__clkinv_1
-> d3_out2_o -> _2_
Instance: d3/_2__d3_out2_d3_out2_o_isolation_inv_control - () : sky130_fd_sc_hd__clkinv_1
-> d3/_2__d3_out2_d3_out2_o_isolation_inv_control -> d3/_2__d3_out2_d3_out2_o_isolation
Instance: d3/_1__d3_out1_d3_out1_o_isolation - () : sky130_fd_sc_hd__lpflow_inputiso0n_1
-> d3/_1__d3_out1_d3_out1_o_isolation_inv_out -> d3/_1__d3_out1_d3_out1_o_isolation_inv_out
Instance: d3/_1__d3_out1_d3_out1_o_isolation_inv_out - () : sky130_fd_sc_hd__clkinv_1
-> d3_out1_o -> d4/_0_
-> d3_out1_o -> d4/_1_
Instance: d3/_1__d3_out1_d3_out1_o_isolation_inv_control - () : sky130_fd_sc_hd__clkinv_1
-> d3/_1__d3_out1_d3_out1_o_isolation_inv_control -> d3/_1__d3_out1_d3_out1_o_isolation
Instance: d3/_0__d3_out3_d3_out3_o_isolation - () : sky130_fd_sc_hd__lpflow_inputiso0n_1
-> d3/_0__d3_out3_d3_out3_o_isolation_inv_out -> d3/_0__d3_out3_d3_out3_o_isolation_inv_out
Instance: d3/_0__d3_out3_d3_out3_o_isolation_inv_out - () : sky130_fd_sc_hd__clkinv_1
-> d3_out3_o -> _3_
Instance: d3/_0__d3_out3_d3_out3_o_isolation_inv_control - () : sky130_fd_sc_hd__clkinv_1
-> d3/_0__d3_out3_d3_out3_o_isolation_inv_control -> d3/_0__d3_out3_d3_out3_o_isolation
Instance: d4/_2__d4_out2_d4_out2_o_isolation - () : sky130_fd_sc_hd__lpflow_inputiso0n_1
-> d4/_2__d4_out2_d4_out2_o_isolation_inv_out -> d4/_2__d4_out2_d4_out2_o_isolation_inv_out
Instance: d4/_2__d4_out2_d4_out2_o_isolation_inv_out - () : sky130_fd_sc_hd__clkinv_1
Expand Down
6 changes: 3 additions & 3 deletions src/upf/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ create_power_domain

| Switch Name | Description |
| ----- | ----- |
| `-elements` | List of module paths that belong this this domain OR `*` for top domain. |
| `-elements` | List of module paths that belong this this domain OR `.` for top domain. |
| `name` | Domain name. |

### Create Logic Port
Expand Down Expand Up @@ -123,8 +123,8 @@ set_isolation
| `-applies_to` | Restricts the strategy to apply one of these (`inputs`, `outputs`, `both`), default value is `both`. |
| `-clamp_value` | Value the isolation can drive (`0`, `1`). |
| `-isolation_signal` | The control signal for this strategy. |
| `-isolation_sense` | The active level of isolation control signal. |
| `-location` | Domain in which isolation cells are placed (`parent`, `self`, `fanout`). |
| `-isolation_sense` | The active level of isolation control signal (`high`, `low`), default value is `high`. |
| `-location` | Domain in which isolation cells are placed (`parent`, `self`, `fanout`), default value is `self`. |
| `-update` | Only available if using existing strategy, will error if the strategy doesn't exist. |
| `name` | Isolation strategy name. |

Expand Down
17 changes: 10 additions & 7 deletions src/upf/src/upf.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ proc write_upf { args } {
#
# Arguments:
#
# - elements: list of module paths that belong to this domain OR '*' for top domain
# - elements: list of module paths that belong to this domain OR '.' for top domain
# - name: domain name
sta::define_cmd_args "create_power_domain" { [-elements elements] name }
proc create_power_domain { args } {
Expand Down Expand Up @@ -204,8 +204,8 @@ proc set_isolation { args } {
set applies_to ""
set clamp_value ""
set isolation_signal ""
set isolation_sense "high"
set location "self"
set isolation_sense ""
set location ""
set update 0

if { ![info exists keys(-domain)] } {
Expand All @@ -225,6 +225,13 @@ proc set_isolation { args } {
set isolation_signal $keys(-isolation_signal)
}

if { [info exists flags(-update)] } {
set update 1
} else {
set isolation_sense "high"
set location "self"
}

if { [info exists keys(-isolation_sense)] } {
set isolation_sense $keys(-isolation_sense)
}
Expand All @@ -233,10 +240,6 @@ proc set_isolation { args } {
set location $keys(-location)
}

if { [info exists flags(-update)] } {
set update 1
}

upf::set_isolation_cmd $name $domain $update $applies_to $clamp_value \
$isolation_signal $isolation_sense $location
}
Expand Down
40 changes: 8 additions & 32 deletions src/upf/test/isolation.vok
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,9 @@ module mpd_top (in1,
wire d4_out2;
wire d4_out3;
wire d1_out2_o;
wire \d1/_2__d1_out2_d1_out2_o_isolation_inv_control ;
wire in1_o;
wire \d1/_1__in1_in1_o_isolation_inv_control ;
wire d1_out1_o;
wire \d1/_1__d1_out1_d1_out1_o_isolation_inv_control ;
wire \d1/_0__in1_in1_o_isolation_inv_control ;
wire d1_out3_o;
wire \d1/_0__d1_out3_d1_out3_o_isolation_inv_control ;
wire d1_out1_o_o;
wire \d2/_2__d1_out1_o_d1_out1_o_o_isolation_inv_control ;
wire in1_o_o;
Expand All @@ -47,13 +42,10 @@ module mpd_top (in1,
wire \d2/_0__in1_o_in1_o_o_isolation_inv_control ;
wire d3_out2_o;
wire \d3/_2__d3_out2_d3_out2_o_isolation_inv_out ;
wire \d3/_2__d3_out2_d3_out2_o_isolation_inv_control ;
wire d3_out1_o;
wire \d3/_1__d3_out1_d3_out1_o_isolation_inv_out ;
wire \d3/_1__d3_out1_d3_out1_o_isolation_inv_control ;
wire d3_out3_o;
wire \d3/_0__d3_out3_d3_out3_o_isolation_inv_out ;
wire \d3/_0__d3_out3_d3_out3_o_isolation_inv_control ;
wire d2_out2_o;
wire \d4/_2__d2_out2_d2_out2_o_isolation_inv_out ;
wire \d4/_2__d2_out2_d2_out2_o_isolation_inv_control ;
Expand Down Expand Up @@ -115,30 +107,20 @@ module mpd_top (in1,
sky130_fd_sc_hd__buf_4 \d4/_2_ (.A(d2_out2),
.X(d4_out2));
sky130_fd_sc_hd__lpflow_inputiso0n_1 \d1/_2__d1_out2_d1_out2_o_isolation (.A(d1_out2),
.SLEEP_B(\d1/_2__d1_out2_d1_out2_o_isolation_inv_control ),
.SLEEP_B(d1_iso_control),
.X(d1_out2_o));
sky130_fd_sc_hd__clkinv_1 \d1/_2__d1_out2_d1_out2_o_isolation_inv_control (.A(d1_iso_control),
.Y(\d1/_2__d1_out2_d1_out2_o_isolation_inv_control ));
sky130_fd_sc_hd__lpflow_inputiso0n_1 \d1/_1__in1_in1_o_isolation (.A(in1_o_o),
.SLEEP_B(\d1/_1__in1_in1_o_isolation_inv_control ),
.SLEEP_B(d1_iso_control),
.X(in1_o_o));
sky130_fd_sc_hd__clkinv_1 \d1/_1__in1_in1_o_isolation_inv_control (.A(d1_iso_control),
.Y(\d1/_1__in1_in1_o_isolation_inv_control ));
sky130_fd_sc_hd__lpflow_inputiso0n_1 \d1/_1__d1_out1_d1_out1_o_isolation (.A(d1_out1),
.SLEEP_B(\d1/_1__d1_out1_d1_out1_o_isolation_inv_control ),
.SLEEP_B(d1_iso_control),
.X(d1_out1_o_o));
sky130_fd_sc_hd__clkinv_1 \d1/_1__d1_out1_d1_out1_o_isolation_inv_control (.A(d1_iso_control),
.Y(\d1/_1__d1_out1_d1_out1_o_isolation_inv_control ));
sky130_fd_sc_hd__lpflow_inputiso0n_1 \d1/_0__in1_in1_o_isolation (.A(in1),
.SLEEP_B(\d1/_0__in1_in1_o_isolation_inv_control ),
.SLEEP_B(d1_iso_control),
.X(in1_o_o));
sky130_fd_sc_hd__clkinv_1 \d1/_0__in1_in1_o_isolation_inv_control (.A(d1_iso_control),
.Y(\d1/_0__in1_in1_o_isolation_inv_control ));
sky130_fd_sc_hd__lpflow_inputiso0n_1 \d1/_0__d1_out3_d1_out3_o_isolation (.A(d1_out3),
.SLEEP_B(\d1/_0__d1_out3_d1_out3_o_isolation_inv_control ),
.SLEEP_B(d1_iso_control),
.X(d1_out3_o));
sky130_fd_sc_hd__clkinv_1 \d1/_0__d1_out3_d1_out3_o_isolation_inv_control (.A(d1_iso_control),
.Y(\d1/_0__d1_out3_d1_out3_o_isolation_inv_control ));
sky130_fd_sc_hd__lpflow_inputiso0n_1 \d2/_2__d1_out1_o_d1_out1_o_o_isolation (.A(d1_out1_o_o),
.SLEEP_B(\d2/_2__d1_out1_o_d1_out1_o_o_isolation_inv_control ),
.X(d1_out1_o_o));
Expand All @@ -160,26 +142,20 @@ module mpd_top (in1,
sky130_fd_sc_hd__clkinv_1 \d2/_0__in1_o_in1_o_o_isolation_inv_control (.A(d2_iso_control),
.Y(\d2/_0__in1_o_in1_o_o_isolation_inv_control ));
sky130_fd_sc_hd__lpflow_inputiso0n_1 \d3/_2__d3_out2_d3_out2_o_isolation (.A(d3_out2),
.SLEEP_B(\d3/_2__d3_out2_d3_out2_o_isolation_inv_control ),
.SLEEP_B(d3_iso_control),
.X(\d3/_2__d3_out2_d3_out2_o_isolation_inv_out ));
sky130_fd_sc_hd__clkinv_1 \d3/_2__d3_out2_d3_out2_o_isolation_inv_out (.A(\d3/_2__d3_out2_d3_out2_o_isolation_inv_out ),
.Y(d3_out2_o));
sky130_fd_sc_hd__clkinv_1 \d3/_2__d3_out2_d3_out2_o_isolation_inv_control (.A(d3_iso_control),
.Y(\d3/_2__d3_out2_d3_out2_o_isolation_inv_control ));
sky130_fd_sc_hd__lpflow_inputiso0n_1 \d3/_1__d3_out1_d3_out1_o_isolation (.A(d3_out1),
.SLEEP_B(\d3/_1__d3_out1_d3_out1_o_isolation_inv_control ),
.SLEEP_B(d3_iso_control),
.X(\d3/_1__d3_out1_d3_out1_o_isolation_inv_out ));
sky130_fd_sc_hd__clkinv_1 \d3/_1__d3_out1_d3_out1_o_isolation_inv_out (.A(\d3/_1__d3_out1_d3_out1_o_isolation_inv_out ),
.Y(d3_out1_o_o));
sky130_fd_sc_hd__clkinv_1 \d3/_1__d3_out1_d3_out1_o_isolation_inv_control (.A(d3_iso_control),
.Y(\d3/_1__d3_out1_d3_out1_o_isolation_inv_control ));
sky130_fd_sc_hd__lpflow_inputiso0n_1 \d3/_0__d3_out3_d3_out3_o_isolation (.A(d3_out3),
.SLEEP_B(\d3/_0__d3_out3_d3_out3_o_isolation_inv_control ),
.SLEEP_B(d3_iso_control),
.X(\d3/_0__d3_out3_d3_out3_o_isolation_inv_out ));
sky130_fd_sc_hd__clkinv_1 \d3/_0__d3_out3_d3_out3_o_isolation_inv_out (.A(\d3/_0__d3_out3_d3_out3_o_isolation_inv_out ),
.Y(d3_out3_o));
sky130_fd_sc_hd__clkinv_1 \d3/_0__d3_out3_d3_out3_o_isolation_inv_control (.A(d3_iso_control),
.Y(\d3/_0__d3_out3_d3_out3_o_isolation_inv_control ));
sky130_fd_sc_hd__lpflow_inputiso0n_1 \d4/_2__d2_out2_d2_out2_o_isolation (.A(d2_out2_o),
.SLEEP_B(\d4/_2__d2_out2_d2_out2_o_isolation_inv_control ),
.X(\d4/_2__d2_out2_d2_out2_o_isolation_inv_out ));
Expand Down
4 changes: 2 additions & 2 deletions src/upf/test/write.upfok
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,14 @@ set_isolation iso_aes_1 \
-location parent \
-clamp_value 0 \
-isolation_signal {isolaten_aes_1} \
-isolation_sense high
-isolation_sense low
set_isolation iso_aes_2 \
-domain {PD_AES_2} \
-applies_to outputs \
-location parent \
-clamp_value 0 \
-isolation_signal {u_pwr_control/isolaten} \
-isolation_sense high
-isolation_sense low

################
# Level shifters
Expand Down
Loading

0 comments on commit 1d7f915

Please sign in to comment.