Skip to content

Commit 57ec520

Browse files
authored
Merge pull request #3866 from The-OpenROAD-Project-staging/is_int-6t-pdk0.3
Updated to is_int config for PDK 0.3 6T
2 parents 904780f + bdb2c5a commit 57ec520

File tree

3 files changed

+84
-43
lines changed

3 files changed

+84
-43
lines changed

flow/designs/rapidus2hp/hercules_is_int/config.mk

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,25 @@ export SYNTH_HDL_FRONTEND ?= slang
2727
export SYNTH_HIERARCHICAL ?= 0
2828

2929
# Use $(if) to defer conditional eval until all makefiles are read
30-
#
31-
# | PDK Version | Front End | Place Site | Utilization |
32-
# | ------------| --------- | ---------- | ----------- |
33-
# | all | slang | 6T | 30 |
34-
# | non-0.3 | slang | 8T | 52 |
35-
# | all | verific | 6T | 30 |
36-
# | non-0.3 | verific | 8T | 54 |
37-
# | 0.3 | any | 8T | 56 |
3830

3931
export CORE_UTILIZATION = $(strip \
4032
$(if $(filter 0.3,$(RAPIDUS_PDK_VERSION)), \
41-
56, \
33+
$(if $(filter ra02h138_DST_45CPP,$(PLACE_SITE)), \
34+
$(if $(filter slang,$(SYNTH_HDL_FRONTEND)), \
35+
$(if $(filter 14LM,$(LAYER_STACK_OPTION)), \
36+
52, \
37+
$(if $(filter 16LM,$(LAYER_STACK_OPTION)), \
38+
54, \
39+
56 \
40+
) \
41+
), \
42+
$(if $(filter 14LM,$(LAYER_STACK_OPTION)), \
43+
50, \
44+
56 \
45+
) \
46+
), \
47+
56 \
48+
), \
4249
$(if $(filter slang,$(SYNTH_HDL_FRONTEND)), \
4350
$(if $(filter ra02h138_DST_45CPP SC6T,$(PLACE_SITE)), \
4451
30, \

flow/designs/rapidus2hp/hercules_is_int/test/test_params.py

Lines changed: 62 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,19 @@ def setUp(self):
2121

2222
ParamTestBase.setUp(self, "hercules_is_int")
2323

24-
def get_exp_util(self, place_site, front_end, pdk_version):
24+
def get_exp_util(self, place_site, front_end, pdk_version, layer_stack):
2525
"""Returns the expected value"""
2626

2727
if pdk_version in ["", "0.3"]:
28+
if place_site == "ra02h138_DST_45CPP":
29+
if front_end in ["", "slang"]:
30+
if layer_stack == "14LM":
31+
return 52
32+
if layer_stack in ["", "16LM"]:
33+
return 54
34+
else:
35+
if layer_stack == "14LM":
36+
return 50
2837
return 56
2938
if front_end == "verific":
3039
if place_site in ["SC6T", "ra02h138_DST_45CPP"]:
@@ -43,24 +52,31 @@ def test_pdk_0p3_default(self):
4352
pdk_version = ""
4453
for front_end in self._front_end_list:
4554
for place_site in self._synopsys_site_list:
46-
exp_util = self.get_exp_util(place_site, front_end, pdk_version)
47-
self.execute_cmd(
48-
"CORE_UTILIZATION",
49-
exp_util,
50-
place_site=place_site,
51-
pdk_version=pdk_version,
52-
front_end=front_end,
53-
)
55+
for layer_stack in self._layer_stack_list:
56+
exp_util = self.get_exp_util(
57+
place_site, front_end, pdk_version, layer_stack
58+
)
59+
self.execute_cmd(
60+
"CORE_UTILIZATION",
61+
exp_util,
62+
place_site=place_site,
63+
pdk_version=pdk_version,
64+
front_end=front_end,
65+
layer_stack=layer_stack,
66+
)
5467

5568
def test_pdk_0p2(self):
5669
"""
5770
Tests PDK 0.2 utilization
5871
"""
5972

6073
pdk_version = "0.2"
74+
layer_stack = "16LM"
6175
for front_end in self._front_end_list:
6276
for place_site in self._ibm_site_list:
63-
exp_util = self.get_exp_util(place_site, front_end, pdk_version)
77+
exp_util = self.get_exp_util(
78+
place_site, front_end, pdk_version, layer_stack
79+
)
6480
self.execute_cmd(
6581
"CORE_UTILIZATION",
6682
exp_util,
@@ -77,14 +93,18 @@ def test_pdk_0p2a(self):
7793
pdk_version = "0.2a"
7894
for front_end in self._front_end_list:
7995
for place_site in self._synopsys_site_list:
80-
exp_util = self.get_exp_util(place_site, front_end, pdk_version)
81-
self.execute_cmd(
82-
"CORE_UTILIZATION",
83-
exp_util,
84-
place_site=place_site,
85-
pdk_version=pdk_version,
86-
front_end=front_end,
87-
)
96+
for layer_stack in self._layer_stack_list:
97+
exp_util = self.get_exp_util(
98+
place_site, front_end, pdk_version, layer_stack
99+
)
100+
self.execute_cmd(
101+
"CORE_UTILIZATION",
102+
exp_util,
103+
place_site=place_site,
104+
pdk_version=pdk_version,
105+
front_end=front_end,
106+
layer_stack=layer_stack,
107+
)
88108

89109
def test_pdk_0p15(self):
90110
"""
@@ -94,14 +114,18 @@ def test_pdk_0p15(self):
94114
pdk_version = "0.15"
95115
for front_end in self._front_end_list:
96116
for place_site in self._synopsys_site_list:
97-
exp_util = self.get_exp_util(place_site, front_end, pdk_version)
98-
self.execute_cmd(
99-
"CORE_UTILIZATION",
100-
exp_util,
101-
place_site=place_site,
102-
pdk_version=pdk_version,
103-
front_end=front_end,
104-
)
117+
for layer_stack in self._layer_stack_list:
118+
exp_util = self.get_exp_util(
119+
place_site, front_end, pdk_version, layer_stack
120+
)
121+
self.execute_cmd(
122+
"CORE_UTILIZATION",
123+
exp_util,
124+
place_site=place_site,
125+
pdk_version=pdk_version,
126+
front_end=front_end,
127+
layer_stack=layer_stack,
128+
)
105129

106130
def test_pdk_0p3(self):
107131
"""
@@ -111,14 +135,18 @@ def test_pdk_0p3(self):
111135
pdk_version = "0.3"
112136
for front_end in self._front_end_list:
113137
for place_site in self._synopsys_site_list:
114-
exp_util = self.get_exp_util(place_site, front_end, pdk_version)
115-
self.execute_cmd(
116-
"CORE_UTILIZATION",
117-
exp_util,
118-
place_site=place_site,
119-
pdk_version=pdk_version,
120-
front_end=front_end,
121-
)
138+
for layer_stack in self._layer_stack_list:
139+
exp_util = self.get_exp_util(
140+
place_site, front_end, pdk_version, layer_stack
141+
)
142+
self.execute_cmd(
143+
"CORE_UTILIZATION",
144+
exp_util,
145+
place_site=place_site,
146+
pdk_version=pdk_version,
147+
front_end=front_end,
148+
layer_stack=layer_stack,
149+
)
122150

123151
def test_flow_variant(self):
124152
"""Tests that setting the flow variant uses the right frontend"""

flow/designs/rapidus2hp/utils/param_test_base.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def setUp(self, design_name):
2727
self._front_end_list = ["", "slang", "verific"]
2828
self._ibm_site_list = ["", "SC6T", "SC8T"]
2929
self._synopsys_site_list = ["", "ra02h138_DST_45CPP", "ra02h184_HST_45CPP"]
30+
self._layer_stack_list = ["", "14LM", "16LM", "18LM", "20LM"]
3031

3132
def get_track_height(self, place_site):
3233
"""Returns the track height for the place site"""
@@ -44,6 +45,7 @@ def build_cmd(
4445
pdk_version=None,
4546
front_end=None,
4647
flow_variant=None,
48+
layer_stack=None,
4749
):
4850
"""Builds the command to execute"""
4951

@@ -54,6 +56,8 @@ def build_cmd(
5456
str_buf.append(f"RAPIDUS_PDK_VERSION={pdk_version}")
5557
if front_end and front_end == "verific":
5658
str_buf.append(f"SYNTH_HDL_FRONTEND={front_end}")
59+
if layer_stack and layer_stack != "":
60+
str_buf.append(f"LAYER_STACK_OPTION={layer_stack}")
5761
if flow_variant and flow_variant != "":
5862
str_buf.append(f"FLOW_VARIANT={flow_variant}")
5963
str_buf.append(f"print-{param_name}")
@@ -66,6 +70,7 @@ def execute_cmd(
6670
place_site=None,
6771
pdk_version=None,
6872
front_end=None,
73+
layer_stack=None,
6974
debug=False,
7075
):
7176
"""
@@ -78,6 +83,7 @@ def execute_cmd(
7883
place_site=place_site,
7984
pdk_version=pdk_version,
8085
front_end=front_end,
86+
layer_stack=layer_stack,
8187
)
8288
if debug:
8389
print(cmd)

0 commit comments

Comments
 (0)