@@ -104,3 +104,168 @@ orfs_flow(
104104 "final" : all_sources ,
105105 },
106106)
107+
108+
109+
110+
111+
112+
113+ filegroup (
114+ name = "mock-array-constraints" ,
115+ srcs = [
116+ "designs/asap7/mock-array/constraints.sdc" ,
117+ ],
118+ visibility = [":__subpackages__" ],
119+ )
120+
121+ filegroup (
122+ name = "mock-array-io" ,
123+ srcs = [
124+ "designs/asap7/mock-array/io.tcl"
125+ ],
126+ data = [
127+ "designs/src/mock-array/util.tcl" ,
128+ ],
129+ visibility = [":__subpackages__" ],
130+ )
131+
132+ filegroup (
133+ name = "mock-array-fastroute" ,
134+ srcs = [
135+ "designs/asap7/mock-array/fastroute.tcl" ,
136+ ],
137+ visibility = [":__subpackages__" ],
138+ )
139+ MOCK_ARRAY_ALL = {
140+ }
141+
142+ MOCK_ARRAY_FLOORPLAN_PLACE = {
143+ "PLACE_PINS_ARGS" : "-annealing" ,
144+ "IO_CONSTRAINTS" : "$(location :mock-array-io)" ,
145+ "PLACE_DENSITY" : "0.30" ,
146+ "DIE_AREA" : "0 0 358.56 388.8" ,
147+ "CORE_AREA" : "2.16 2.16 356.40000000000003 386.64000000000004" ,
148+ "MACRO_PLACE_HALO" : "0 2.16" ,
149+ "RTLMP_BOUNDARY_WT" : "0" ,
150+ "RTLMP_FLOW" : "1" ,
151+ "PDN_TCL" : "$(PLATFORM_DIR)/openRoad/pdn/BLOCKS_grid_strategy.tcl" ,
152+ "MACRO_HALO_X" : "0.5" ,
153+ "MACRO_HALO_Y" : "0.5" ,
154+ "MACRO_BLOCKAGE_HALO" : "0" ,
155+ "ADDITIONAL_FILES" : "$(locations :mock-array-io)" ,
156+ }
157+
158+ orfs_flow (
159+ name = "MockArray" ,
160+ macros = ["Element_generate_abstract" ],
161+ stage_args = {
162+ "synth" : MOCK_ARRAY_ALL | {
163+ "SDC_FILE" : "$(location :mock-array-constraints)" ,
164+ },
165+ "floorplan" : MOCK_ARRAY_ALL | MOCK_ARRAY_FLOORPLAN_PLACE | {
166+ },
167+ "place" : MOCK_ARRAY_ALL | MOCK_ARRAY_FLOORPLAN_PLACE | {
168+ },
169+ "cts" : MOCK_ARRAY_ALL | {
170+ "CTS_BUF_DISTANCE" : "60"
171+ },
172+ "route" : MOCK_ARRAY_ALL | {
173+ "FASTROUTE_TCL" : "$(location :mock-array-fastroute)" ,
174+ # works with 28 or more iterations as of writing, so give it a few more.
175+ "GLOBAL_ROUTE_ARGS" : "-congestion_iterations 40 -verbose" ,
176+ # If this design isn't quickly done in detailed routing, something is wrong.
177+ # At time of adding this option, only 12 iterations were needed for 0
178+ # violations.
179+ "DETAILED_ROUTE_ARGS" : "-bottom_routing_layer M2 -top_routing_layer M7 -save_guide_updates -verbose 1 -droute_end_iter 15" ,
180+ # since we are specifying DETAILED_ROUTE_ARGS, we need to communicate the
181+ # same information to other stages in the flow.
182+ "MIN_ROUTING_LAYER" : "M2" ,
183+ "MAX_ROUTING_LAYER" : "M7" ,
184+ },
185+ "final" : MOCK_ARRAY_ALL | {
186+ "GDS_ALLOW_EMPTY" : "Element" ,
187+ "PWR_NETS_VOLTAGEsS" : "" ,
188+ "GND_NETS_VOLTAGES" : "" ,
189+ }
190+ },
191+ verilog_files = glob (include = ["designs/src/mock-array/*.v" ]),
192+ stage_sources = {
193+ "synth" : all_sources + [":mock-array-constraints" ] + [":mock-array-io" ],
194+ "floorplan" : all_sources + [":mock-array-io" ],
195+ "place" : all_sources + [":mock-array-io" ],
196+ "cts" : all_sources ,
197+ "route" : all_sources + [":mock-array-fastroute" ],
198+ "final" : all_sources ,
199+ },
200+ )
201+
202+
203+ filegroup (
204+ name = "mock-array-element-io" ,
205+ srcs = [
206+ "designs/asap7/mock-array/Element/io.tcl"
207+ ],
208+ data = [
209+ "designs/src/mock-array/util.tcl" ,
210+ ],
211+ visibility = [":__subpackages__" ],
212+ )
213+
214+
215+ MOCK_ARRAY_ELEMENT_FLOORPLAN_PLACE = {
216+ "IO_CONSTRAINTS" : "$(location :mock-array-element-io)" ,
217+ "PLACE_DENSITY" : "0.50" ,
218+ "PLACE_PINS_ARGS" : "-annealing" ,
219+ }
220+
221+ MOCK_ARRAY_ELEMENT_ALL = {
222+ "MOCK_ARRAY_ROWS" : "8" ,
223+ "MOCK_ARRAY_COLS" : "8" ,
224+ }
225+
226+
227+ mock_array_all_sources = ["designs/src/mock-array/util.tcl" ]
228+
229+ orfs_flow (
230+ name = "Element" ,
231+ abstract_stage = "route" ,
232+ stage_args = {
233+ "synth" : MOCK_ARRAY_ELEMENT_ALL | {
234+ "SDC_FILE" : "$(location :mock-array-constraints)" ,
235+ },
236+ "floorplan" : MOCK_ARRAY_ELEMENT_ALL | MOCK_ARRAY_ELEMENT_FLOORPLAN_PLACE | {
237+ "DIE_AREA" : "0 0 43.2 43.2" ,
238+ "CORE_AREA" : "1.08 1.08 42.120000000000005 42.120000000000005" ,
239+ "PDN_TCL" : "$(PLATFORM_DIR)/openRoad/pdn/BLOCK_grid_strategy.tcl" ,
240+ },
241+ "place" : MOCK_ARRAY_ELEMENT_ALL | MOCK_ARRAY_ELEMENT_FLOORPLAN_PLACE | {
242+ },
243+ "cts" : MOCK_ARRAY_ELEMENT_ALL | {
244+ },
245+ "route" : MOCK_ARRAY_ELEMENT_ALL | {
246+ # If this design isn't quickly done in detailed routing, something is wrong.
247+ # At time of adding this option, only 3 iterations were needed for 0
248+ # violations.
249+ "DETAILED_ROUTE_ARGS" : "-bottom_routing_layer M2 -top_routing_layer M5 -save_guide_updates -verbose 1 -droute_end_iter 10" ,
250+ # since we are specifying DETAILED_ROUTE_ARGS, we need to communicate the
251+ # same information to other stages in the flow.
252+ "MIN_ROUTING_LAYER" : "M2" ,
253+ "MAX_ROUTING_LAYER" : "M5" ,
254+ },
255+ "final" : MOCK_ARRAY_ELEMENT_ALL | {
256+ "PWR_NETS_VOLTAGES" : "" ,
257+ "GND_NETS_VOLTAGES" : "" ,
258+ }
259+ },
260+ verilog_files = glob (include = ["designs/src/mock-array/*.v" ]),
261+ stage_sources = {
262+ "synth" : mock_array_all_sources + [":mock-array-constraints" ],
263+ "floorplan" : mock_array_all_sources + [":mock-array-element-io" ],
264+ "place" : mock_array_all_sources + [":mock-array-element-io" ],
265+ "cts" : mock_array_all_sources ,
266+ "route" : mock_array_all_sources + [":mock-array-fastroute" ],
267+ "final" : mock_array_all_sources ,
268+ },
269+ )
270+
271+
0 commit comments