Skip to content

Commit b31098a

Browse files
committed
upf: add isolation_select test
Signed-off-by: Lucas Yuki Imamura <lucasyuki@yahoo.com.br>
1 parent e919264 commit b31098a

File tree

5 files changed

+267
-0
lines changed

5 files changed

+267
-0
lines changed

src/upf/test/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ or_integration_tests(
44
levelshifter
55
write
66
isolation
7+
isolation_select
78
)
89

910
# Skipped
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
create_power_domain PD_TOP \
2+
-elements {.} \
3+
4+
create_power_domain PD_D1 \
5+
-elements {d1} \
6+
7+
create_power_domain PD_D2 \
8+
-elements {d2} \
9+
10+
create_power_domain PD_D3 \
11+
-elements {d3} \
12+
13+
create_power_domain PD_D4 \
14+
-elements {d4} \
15+
16+
create_logic_port d1_iso_control
17+
create_logic_port d2_iso_control
18+
create_logic_port d3_iso_control
19+
create_logic_port d4_iso_control
20+
21+
set_isolation iso_d_1 \
22+
-domain PD_D1 \
23+
-clamp_value 0
24+
25+
set_isolation iso_d_2 \
26+
-domain PD_D2 \
27+
-applies_to inputs \
28+
-clamp_value 0
29+
30+
set_isolation iso_d_3 \
31+
-domain PD_D3 \
32+
-applies_to outputs \
33+
-clamp_value 1
34+
35+
set_isolation iso_d_4 \
36+
-domain PD_D4 \
37+
-applies_to both \
38+
-clamp_value 1
39+
40+
set_isolation iso_d_1 \
41+
-domain PD_D1 \
42+
-update \
43+
-isolation_signal d1_iso_control \
44+
-isolation_sense low
45+
46+
set_isolation iso_d_2 \
47+
-domain PD_D2 \
48+
-update \
49+
-isolation_signal d2_iso_control \
50+
-isolation_sense high
51+
52+
set_isolation iso_d_3 \
53+
-domain PD_D3 \
54+
-update \
55+
-isolation_signal d3_iso_control \
56+
-isolation_sense low
57+
58+
set_isolation iso_d_4 \
59+
-domain PD_D4 \
60+
-update \
61+
-isolation_signal d4_iso_control \
62+
-isolation_sense high
63+
64+
65+
set_isolation iso_d_1 \
66+
-domain PD_D1 \
67+
-update \
68+
-location parent
69+
70+
set_isolation iso_d_2 \
71+
-domain PD_D2 \
72+
-update \
73+
-location parent
74+
75+
76+
set_isolation iso_d_3 \
77+
-domain PD_D3 \
78+
-update \
79+
-location parent
80+
81+
set_isolation iso_d_4 \
82+
-domain PD_D4 \
83+
-update \
84+
-location parent
85+
86+
use_interface_cell isolation_cells \
87+
-domain PD_D1 \
88+
-strategy {iso_d_1 iso_d_2 iso_d_3 iso_d_4} \
89+
-lib_cells {
90+
sky130_fd_sc_hd__lpflow_inputiso0n_1
91+
sky130_fd_sc_hd__lpflow_inputiso1n_1
92+
sky130_fd_sc_hd__lpflow_inputiso0p_1
93+
sky130_fd_sc_hd__lpflow_inputiso1p_1
94+
}

src/upf/test/isolation_select.ok

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
[INFO ODB-0227] LEF file: data/sky130hd/sky130_fd_sc_hd.tlef, created 13 layers, 25 vias
2+
[INFO ODB-0227] LEF file: data/sky130hd/sky130_fd_sc_hd_merged.lef, created 437 library cells
3+
[WARNING IFP-0028] Core area lower left (100.000, 100.000) snapped to (100.280, 100.640).
4+
[INFO IFP-0001] Added 110 rows of 651 site unithd.
5+
No differences found.

src/upf/test/isolation_select.tcl

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
source "helpers.tcl"
2+
3+
read_liberty data/sky130hd/sky130_fd_sc_hd__tt_025C_1v80.lib
4+
read_lef data/sky130hd/sky130_fd_sc_hd.tlef
5+
read_lef data/sky130hd/sky130_fd_sc_hd_merged.lef
6+
read_verilog data/isolation/mpd_top.v
7+
link_design mpd_top
8+
9+
read_upf -file data/isolation/mpd_top_select_iso.upf
10+
11+
set_domain_area PD_D1 -area {27 27 60 60}
12+
set_domain_area PD_D2 -area {100 100 180 180}
13+
set_domain_area PD_D3 -area {200 200 300 300}
14+
set_domain_area PD_D4 -area {300 300 400 400}
15+
16+
initialize_floorplan -die_area { 0 0 500 500 } \
17+
-core_area { 100 100 400 400 } \
18+
-site unithd
19+
20+
set v_file [make_result_file isolation_select.v]
21+
write_verilog -include_pwr_gnd $v_file
22+
diff_file $v_file isolation_select.vok

src/upf/test/isolation_select.vok

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
module mpd_top (in1,
2+
in2,
3+
out1,
4+
out2,
5+
out3,
6+
d1_iso_control,
7+
d2_iso_control,
8+
d3_iso_control,
9+
d4_iso_control);
10+
input in1;
11+
input in2;
12+
output out1;
13+
output out2;
14+
output out3;
15+
input d1_iso_control;
16+
input d2_iso_control;
17+
input d3_iso_control;
18+
input d4_iso_control;
19+
20+
wire _0_;
21+
wire d1_out1;
22+
wire d1_out2;
23+
wire d1_out3;
24+
wire d2_out1;
25+
wire d2_out2;
26+
wire d2_out3;
27+
wire d3_out1;
28+
wire d3_out2;
29+
wire d3_out3;
30+
wire d4_out1;
31+
wire d4_out2;
32+
wire d4_out3;
33+
wire d1_out2_o;
34+
wire in1_o;
35+
wire d1_out1_o;
36+
wire d1_out3_o;
37+
wire d1_out1_o_o;
38+
wire in1_o_o;
39+
wire d3_out2_o;
40+
wire d3_out1_o;
41+
wire d3_out3_o;
42+
wire d2_out2_o;
43+
wire d4_out2_o;
44+
wire d3_out1_o_o;
45+
wire d4_out1_o;
46+
wire d4_out3_o;
47+
48+
sky130_fd_sc_hd__xnor2_1 _1_ (.A(d2_out3),
49+
.B(d1_out3_o),
50+
.Y(out1));
51+
sky130_fd_sc_hd__xnor2_1 _2_ (.A(d4_out3_o),
52+
.B(d3_out2_o),
53+
.Y(out2));
54+
sky130_fd_sc_hd__xnor2_1 _3_ (.A(d3_out3_o),
55+
.B(d4_out2_o),
56+
.Y(_0_));
57+
sky130_fd_sc_hd__and2_1 _4_ (.A(d4_out1_o),
58+
.B(_0_),
59+
.X(out3));
60+
sky130_fd_sc_hd__and2_1 \d1/_0_ (.A(in2),
61+
.B(in1),
62+
.X(d1_out3));
63+
sky130_fd_sc_hd__buf_4 \d1/_1_ (.A(in1),
64+
.X(d1_out1));
65+
sky130_fd_sc_hd__buf_4 \d1/_2_ (.A(in2),
66+
.X(d1_out2));
67+
sky130_fd_sc_hd__and2_1 \d2/_0_ (.A(d1_out1_o),
68+
.B(in1_o),
69+
.X(d2_out3));
70+
sky130_fd_sc_hd__buf_4 \d2/_1_ (.A(in1_o),
71+
.X(d2_out1));
72+
sky130_fd_sc_hd__buf_4 \d2/_2_ (.A(d1_out1_o),
73+
.X(d2_out2_o));
74+
sky130_fd_sc_hd__and2_1 \d3/_0_ (.A(d1_out2_o),
75+
.B(d2_out1),
76+
.X(d3_out3));
77+
sky130_fd_sc_hd__buf_4 \d3/_1_ (.A(d2_out1),
78+
.X(d3_out1));
79+
sky130_fd_sc_hd__buf_4 \d3/_2_ (.A(d1_out2_o),
80+
.X(d3_out2));
81+
sky130_fd_sc_hd__and2_1 \d4/_0_ (.A(d2_out2),
82+
.B(d3_out1_o),
83+
.X(d4_out3));
84+
sky130_fd_sc_hd__buf_4 \d4/_1_ (.A(d3_out1_o),
85+
.X(d4_out1));
86+
sky130_fd_sc_hd__buf_4 \d4/_2_ (.A(d2_out2),
87+
.X(d4_out2));
88+
sky130_fd_sc_hd__lpflow_inputiso0n_1 \d1/_2__d1_out2_d1_out2_o_isolation (.A(d1_out2),
89+
.SLEEP_B(d1_iso_control),
90+
.X(d1_out2_o));
91+
sky130_fd_sc_hd__lpflow_inputiso0n_1 \d1/_1__in1_in1_o_isolation (.A(in1_o_o),
92+
.SLEEP_B(d1_iso_control),
93+
.X(in1_o_o));
94+
sky130_fd_sc_hd__lpflow_inputiso0n_1 \d1/_1__d1_out1_d1_out1_o_isolation (.A(d1_out1),
95+
.SLEEP_B(d1_iso_control),
96+
.X(d1_out1_o_o));
97+
sky130_fd_sc_hd__lpflow_inputiso0n_1 \d1/_0__in1_in1_o_isolation (.A(in1),
98+
.SLEEP_B(d1_iso_control),
99+
.X(in1_o_o));
100+
sky130_fd_sc_hd__lpflow_inputiso0n_1 \d1/_0__d1_out3_d1_out3_o_isolation (.A(d1_out3),
101+
.SLEEP_B(d1_iso_control),
102+
.X(d1_out3_o));
103+
sky130_fd_sc_hd__lpflow_inputiso0p_1 \d2/_2__d1_out1_o_d1_out1_o_o_isolation (.A(d1_out1_o_o),
104+
.SLEEP(d2_iso_control),
105+
.X(d1_out1_o_o));
106+
sky130_fd_sc_hd__lpflow_inputiso0p_1 \d2/_1__in1_o_in1_o_o_isolation (.A(in1_o_o),
107+
.SLEEP(d2_iso_control),
108+
.X(in1_o_o));
109+
sky130_fd_sc_hd__lpflow_inputiso0p_1 \d2/_0__d1_out1_o_d1_out1_o_o_isolation (.A(d1_out1_o),
110+
.SLEEP(d2_iso_control),
111+
.X(d1_out1_o_o));
112+
sky130_fd_sc_hd__lpflow_inputiso0p_1 \d2/_0__in1_o_in1_o_o_isolation (.A(in1_o),
113+
.SLEEP(d2_iso_control),
114+
.X(in1_o_o));
115+
sky130_fd_sc_hd__lpflow_inputiso1n_1 \d3/_2__d3_out2_d3_out2_o_isolation (.A(d3_out2),
116+
.SLEEP_B(d3_iso_control),
117+
.X(d3_out2_o));
118+
sky130_fd_sc_hd__lpflow_inputiso1n_1 \d3/_1__d3_out1_d3_out1_o_isolation (.A(d3_out1),
119+
.SLEEP_B(d3_iso_control),
120+
.X(d3_out1_o_o));
121+
sky130_fd_sc_hd__lpflow_inputiso1n_1 \d3/_0__d3_out3_d3_out3_o_isolation (.A(d3_out3),
122+
.SLEEP_B(d3_iso_control),
123+
.X(d3_out3_o));
124+
sky130_fd_sc_hd__lpflow_inputiso1p_1 \d4/_2__d2_out2_d2_out2_o_isolation (.A(d2_out2_o),
125+
.SLEEP(d4_iso_control),
126+
.X(d2_out2_o));
127+
sky130_fd_sc_hd__lpflow_inputiso1p_1 \d4/_2__d4_out2_d4_out2_o_isolation (.A(d4_out2),
128+
.SLEEP(d4_iso_control),
129+
.X(d4_out2_o));
130+
sky130_fd_sc_hd__lpflow_inputiso1p_1 \d4/_1__d3_out1_o_d3_out1_o_o_isolation (.A(d3_out1_o_o),
131+
.SLEEP(d4_iso_control),
132+
.X(d3_out1_o_o));
133+
sky130_fd_sc_hd__lpflow_inputiso1p_1 \d4/_1__d4_out1_d4_out1_o_isolation (.A(d4_out1),
134+
.SLEEP(d4_iso_control),
135+
.X(d4_out1_o));
136+
sky130_fd_sc_hd__lpflow_inputiso1p_1 \d4/_0__d2_out2_d2_out2_o_isolation (.A(d2_out2),
137+
.SLEEP(d4_iso_control),
138+
.X(d2_out2_o));
139+
sky130_fd_sc_hd__lpflow_inputiso1p_1 \d4/_0__d3_out1_o_d3_out1_o_o_isolation (.A(d3_out1_o),
140+
.SLEEP(d4_iso_control),
141+
.X(d3_out1_o_o));
142+
sky130_fd_sc_hd__lpflow_inputiso1p_1 \d4/_0__d4_out3_d4_out3_o_isolation (.A(d4_out3),
143+
.SLEEP(d4_iso_control),
144+
.X(d4_out3_o));
145+
endmodule

0 commit comments

Comments
 (0)