Skip to content

Commit ad7057f

Browse files
authored
Merge pull request #2444 from verilog-to-routing/3d_arch
Add 3D Architectures
2 parents 49ed025 + 7533449 commit ad7057f

15 files changed

+601
-6786
lines changed

vtr_flow/arch/multi_die/README.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# 3D FPGA Architectures
2+
3+
This directory contains architecture files for 3D FPGAs. The architectures are divided into three sub-directories:
4+
5+
1. **koios_3d:**
6+
- Contains architecture files based on the [k6FracN10LB_mem20K_complexDSP_customSB_22nm](../COFFE_22nm/k6FracN10LB_mem20K_complexDSP_customSB_22nm.clustered.xml) architecture, utilized in Koios benchmarks.
7+
- Inside the architecture file, the fabric with multiple sizes based on the sector size is defined.
8+
- Routing resource and switch delays in this architecture are configured for 7 nm technology. The inter-die connection delay is 73 ps.
9+
- Detailed information on how these delays are obtained can be found in the paper "Into the Third Dimension: Architecture Exploration Tools for 3D Reconfigurable Acceleration Devices," presented at FPT '23.
10+
- **Architectures:**
11+
- `3d_full_OPIN_inter_die_k6FracN10LB_mem20k_complexDSP_customSB_7nm.xml`
12+
- The inter-die connection is only from output pins, with all output pins connected to the channel on the same die and the other.
13+
- Inside the architecture file, the fabric with multiple sizes based on the sector size is defined.
14+
- `3d_limited_OPIN_inter_die_k6FracN10LB_mem20k_complexDSP_customSB_7nm.xml`
15+
- The inter-die connection is only from output pins, with all OPINs of BRAMs and DSPs connected to the channels on the same die and the other die.
16+
- Only 60% of the OPINs of CLBs are connected to the channels on the other die and all of them can get connected to the channels on the same die.
17+
18+
2. **stratixiv_3d:**
19+
- Contains architecture files based on a [StratixIV-like](../titan/stratixiv_arch.timing.xml) architecture.
20+
- Delays of switches and routing resources are similar to those reported in the capture of the StratixIV architecture.
21+
- For the inter-die connection, we multiply the L4 wire delay of SIV by the ratio of the inter-die connection delay to the L4 wire delay of the Koios_3d benchmark.
22+
- **Architectures:**
23+
- `3d_10x10_noc_base_stratixiv_up.xml`
24+
- A 10x10 NoC mech is put on the base die.
25+
- The upper die is SIV-like FPGA fabric.
26+
- `3d_full_inter_die_stratixiv_arch.timing.xml`
27+
- The architecture has two dice.
28+
- Both dice are SIV-like FPGA fabric.
29+
- All pins can cross die.
30+
- `3d_full_OPIN_inter_die_stratixiv_arch.timing.xml`
31+
- The architecture has two dice.
32+
- Both dice are SIV-like FPGA fabric.
33+
- Only OPINs can cross die.
34+
35+
3. **simple_arch:**
36+
- Simple architectures primarily used for quick testing in the flow.
37+
- The inter-die delay of architectures in this file is considered to be zero.
38+
- Contains two dice and both have the simple fabric.
39+
- All pins can cross die.

vtr_flow/arch/multi_die/k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml

Lines changed: 0 additions & 3272 deletions
This file was deleted.

vtr_flow/arch/multi_die/k6FracN10LB_mem20K_complexDSP_customSB_22nm_OPINs.xml

Lines changed: 0 additions & 3290 deletions
This file was deleted.

vtr_flow/arch/multi_die/aman_3d_coffe.xml renamed to vtr_flow/arch/multi_die/koios_3d/3d_full_OPIN_inter_die_k6FracN10LB_mem20k_complexDSP_customSB_7nm.xml

Lines changed: 232 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@
235235
<!-- ODIN II specific config ends -->
236236
<layout>
237237
<!-- Physical descriptions begin -->
238-
<fixed_layout name="coffe_7nm" width="328" height="288">
238+
<auto_layout aspect_ratio="1.0">
239239
<layer die="0">
240240
<perimeter type="io" priority="101"/>
241241

@@ -272,8 +272,236 @@
272272
<col type="dsp_top" startx="31" starty="1" repeatx="41" priority="20"/>
273273

274274
</layer>
275-
</fixed_layout>
275+
</auto_layout>
276276
</layout>
277+
<fixed_layout name="sector_1_1" width="41" height="36">
278+
<layer die="0">
279+
<perimeter type="io" priority="101"/>
280+
281+
<corners type="EMPTY" priority="102"/>
282+
283+
<fill type="clb" priority="10"/>
284+
285+
<col type="memory" startx="11" starty="1" repeatx="41" priority="20"/>
286+
<col type="memory" startx="25" starty="1" repeatx="41" priority="20"/>
287+
<col type="memory" startx="37" starty="1" repeatx="41" priority="20"/>
288+
289+
<col type="dsp_top" startx="18" starty="1" repeatx="41" priority="20"/>
290+
<col type="dsp_top" startx="31" starty="1" repeatx="41" priority="20"/>
291+
292+
<!-- PW -->
293+
<col type="tsv_hole" startx="8" starty="5" repeatx="13" incry="12" priority="103"/>
294+
295+
<!-- GND -->
296+
<col type="tsv_hole" startx="14" starty="11" repeatx="13" incry="12" priority="103"/>
297+
298+
</layer>
299+
<layer die="1">
300+
<perimeter type="io" priority="101"/>
301+
302+
<corners type="EMPTY" priority="102"/>
303+
304+
<fill type="clb" priority="10"/>
305+
306+
<col type="memory" startx="11" starty="1" repeatx="41" priority="20"/>
307+
<col type="memory" startx="25" starty="1" repeatx="41" priority="20"/>
308+
<col type="memory" startx="37" starty="1" repeatx="41" priority="20"/>
309+
310+
<col type="dsp_top" startx="18" starty="1" repeatx="41" priority="20"/>
311+
<col type="dsp_top" startx="31" starty="1" repeatx="41" priority="20"/>
312+
313+
</layer>
314+
</fixed_layout>
315+
<fixed_layout name="sector_2_1" width="82" height="36">
316+
<layer die="0">
317+
<perimeter type="io" priority="101"/>
318+
319+
<corners type="EMPTY" priority="102"/>
320+
321+
<fill type="clb" priority="10"/>
322+
323+
<col type="memory" startx="11" starty="1" repeatx="41" priority="20"/>
324+
<col type="memory" startx="25" starty="1" repeatx="41" priority="20"/>
325+
<col type="memory" startx="37" starty="1" repeatx="41" priority="20"/>
326+
327+
<col type="dsp_top" startx="18" starty="1" repeatx="41" priority="20"/>
328+
<col type="dsp_top" startx="31" starty="1" repeatx="41" priority="20"/>
329+
330+
<!-- PW -->
331+
<col type="tsv_hole" startx="8" starty="5" repeatx="13" incry="12" priority="103"/>
332+
333+
<!-- GND -->
334+
<col type="tsv_hole" startx="14" starty="11" repeatx="13" incry="12" priority="103"/>
335+
336+
</layer>
337+
<layer die="1">
338+
<perimeter type="io" priority="101"/>
339+
340+
<corners type="EMPTY" priority="102"/>
341+
342+
<fill type="clb" priority="10"/>
343+
344+
<col type="memory" startx="11" starty="1" repeatx="41" priority="20"/>
345+
<col type="memory" startx="25" starty="1" repeatx="41" priority="20"/>
346+
<col type="memory" startx="37" starty="1" repeatx="41" priority="20"/>
347+
348+
<col type="dsp_top" startx="18" starty="1" repeatx="41" priority="20"/>
349+
<col type="dsp_top" startx="31" starty="1" repeatx="41" priority="20"/>
350+
351+
</layer>
352+
</fixed_layout>
353+
<fixed_layout name="sector_2_2" width="82" height="72">
354+
<layer die="0">
355+
<perimeter type="io" priority="101"/>
356+
357+
<corners type="EMPTY" priority="102"/>
358+
359+
<fill type="clb" priority="10"/>
360+
361+
<col type="memory" startx="11" starty="1" repeatx="41" priority="20"/>
362+
<col type="memory" startx="25" starty="1" repeatx="41" priority="20"/>
363+
<col type="memory" startx="37" starty="1" repeatx="41" priority="20"/>
364+
365+
<col type="dsp_top" startx="18" starty="1" repeatx="41" priority="20"/>
366+
<col type="dsp_top" startx="31" starty="1" repeatx="41" priority="20"/>
367+
368+
<!-- PW -->
369+
<col type="tsv_hole" startx="8" starty="5" repeatx="13" incry="12" priority="103"/>
370+
371+
<!-- GND -->
372+
<col type="tsv_hole" startx="14" starty="11" repeatx="13" incry="12" priority="103"/>
373+
374+
</layer>
375+
<layer die="1">
376+
<perimeter type="io" priority="101"/>
377+
378+
<corners type="EMPTY" priority="102"/>
379+
380+
<fill type="clb" priority="10"/>
381+
382+
<col type="memory" startx="11" starty="1" repeatx="41" priority="20"/>
383+
<col type="memory" startx="25" starty="1" repeatx="41" priority="20"/>
384+
<col type="memory" startx="37" starty="1" repeatx="41" priority="20"/>
385+
386+
<col type="dsp_top" startx="18" starty="1" repeatx="41" priority="20"/>
387+
<col type="dsp_top" startx="31" starty="1" repeatx="41" priority="20"/>
388+
389+
</layer>
390+
</fixed_layout>
391+
<fixed_layout name="sector_4_2" width="164" height="72">
392+
<layer die="0">
393+
<perimeter type="io" priority="101"/>
394+
395+
<corners type="EMPTY" priority="102"/>
396+
397+
<fill type="clb" priority="10"/>
398+
399+
<col type="memory" startx="11" starty="1" repeatx="41" priority="20"/>
400+
<col type="memory" startx="25" starty="1" repeatx="41" priority="20"/>
401+
<col type="memory" startx="37" starty="1" repeatx="41" priority="20"/>
402+
403+
<col type="dsp_top" startx="18" starty="1" repeatx="41" priority="20"/>
404+
<col type="dsp_top" startx="31" starty="1" repeatx="41" priority="20"/>
405+
406+
<!-- PW -->
407+
<col type="tsv_hole" startx="8" starty="5" repeatx="13" incry="12" priority="103"/>
408+
409+
<!-- GND -->
410+
<col type="tsv_hole" startx="14" starty="11" repeatx="13" incry="12" priority="103"/>
411+
412+
</layer>
413+
<layer die="1">
414+
<perimeter type="io" priority="101"/>
415+
416+
<corners type="EMPTY" priority="102"/>
417+
418+
<fill type="clb" priority="10"/>
419+
420+
<col type="memory" startx="11" starty="1" repeatx="41" priority="20"/>
421+
<col type="memory" startx="25" starty="1" repeatx="41" priority="20"/>
422+
<col type="memory" startx="37" starty="1" repeatx="41" priority="20"/>
423+
424+
<col type="dsp_top" startx="18" starty="1" repeatx="41" priority="20"/>
425+
<col type="dsp_top" startx="31" starty="1" repeatx="41" priority="20"/>
426+
427+
</layer>
428+
</fixed_layout>
429+
<fixed_layout name="sector_4_4" width="164" height="144">
430+
<layer die="0">
431+
<perimeter type="io" priority="101"/>
432+
433+
<corners type="EMPTY" priority="102"/>
434+
435+
<fill type="clb" priority="10"/>
436+
437+
<col type="memory" startx="11" starty="1" repeatx="41" priority="20"/>
438+
<col type="memory" startx="25" starty="1" repeatx="41" priority="20"/>
439+
<col type="memory" startx="37" starty="1" repeatx="41" priority="20"/>
440+
441+
<col type="dsp_top" startx="18" starty="1" repeatx="41" priority="20"/>
442+
<col type="dsp_top" startx="31" starty="1" repeatx="41" priority="20"/>
443+
444+
<!-- PW -->
445+
<col type="tsv_hole" startx="8" starty="5" repeatx="13" incry="12" priority="103"/>
446+
447+
<!-- GND -->
448+
<col type="tsv_hole" startx="14" starty="11" repeatx="13" incry="12" priority="103"/>
449+
450+
</layer>
451+
<layer die="1">
452+
<perimeter type="io" priority="101"/>
453+
454+
<corners type="EMPTY" priority="102"/>
455+
456+
<fill type="clb" priority="10"/>
457+
458+
<col type="memory" startx="11" starty="1" repeatx="41" priority="20"/>
459+
<col type="memory" startx="25" starty="1" repeatx="41" priority="20"/>
460+
<col type="memory" startx="37" starty="1" repeatx="41" priority="20"/>
461+
462+
<col type="dsp_top" startx="18" starty="1" repeatx="41" priority="20"/>
463+
<col type="dsp_top" startx="31" starty="1" repeatx="41" priority="20"/>
464+
465+
</layer>
466+
</fixed_layout>
467+
<fixed_layout name="coffe_7nm" width="205" height="180">
468+
<layer die="0">
469+
<perimeter type="io" priority="101"/>
470+
471+
<corners type="EMPTY" priority="102"/>
472+
473+
<fill type="clb" priority="10"/>
474+
475+
<col type="memory" startx="11" starty="1" repeatx="41" priority="20"/>
476+
<col type="memory" startx="25" starty="1" repeatx="41" priority="20"/>
477+
<col type="memory" startx="37" starty="1" repeatx="41" priority="20"/>
478+
479+
<col type="dsp_top" startx="18" starty="1" repeatx="41" priority="20"/>
480+
<col type="dsp_top" startx="31" starty="1" repeatx="41" priority="20"/>
481+
482+
<!-- PW -->
483+
<col type="tsv_hole" startx="8" starty="5" repeatx="13" incry="12" priority="103"/>
484+
485+
<!-- GND -->
486+
<col type="tsv_hole" startx="14" starty="11" repeatx="13" incry="12" priority="103"/>
487+
488+
</layer>
489+
<layer die="1">
490+
<perimeter type="io" priority="101"/>
491+
492+
<corners type="EMPTY" priority="102"/>
493+
494+
<fill type="clb" priority="10"/>
495+
496+
<col type="memory" startx="11" starty="1" repeatx="41" priority="20"/>
497+
<col type="memory" startx="25" starty="1" repeatx="41" priority="20"/>
498+
<col type="memory" startx="37" starty="1" repeatx="41" priority="20"/>
499+
500+
<col type="dsp_top" startx="18" starty="1" repeatx="41" priority="20"/>
501+
<col type="dsp_top" startx="31" starty="1" repeatx="41" priority="20"/>
502+
503+
</layer>
504+
</fixed_layout>
277505
<device>
278506
<sizing R_minW_nmos="13090" R_minW_pmos="19086.83"/>
279507
<area grid_logic_tile_area="0"/>
@@ -282,7 +510,7 @@
282510
<y distr="uniform" peak="1.000000"/>
283511
</chan_width_distr>
284512
<switch_block type="custom"/>
285-
<connection_block input_switch_name="ipin_cblock" input_inter_die_switch_name="die_connection"/>
513+
<connection_block input_switch_name="ipin_cblock" input_inter_die_switch_name="ipin_inter_layer_cblock"/>
286514
</device>
287515
<switchlist>
288516
<switch type="mux" name="L4_driver" R="0.0" Cin="0.0" Cout="0.0" Tdel="9.877e-11" mux_trans_size="2.6482996805637553" buf_size="18.744014602932605"/>
@@ -292,7 +520,7 @@
292520
<switch type="mux" name="L16_driver" R="0.0" Cin="0.0" Cout="0.0" Tdel="2.016e-10" mux_trans_size="3.1851297470059468" buf_size="39.327334265524485"/>
293521
<switch type="mux" name="L16_inter_layer_driver" R="0.0" Cin="0.0" Cout="0.0" Tdel="2.746e-10" mux_trans_size="3.1851297470059468" buf_size="39.327334265524485"/>
294522
<switch type="mux" name="ipin_cblock" R="0.0" Cout="0.0" Cin="0.0" Tdel="5.636e-11" mux_trans_size="2.008" buf_size="9.624436045683868"/>
295-
<switch type="mux" name="die_connection" R="0.0" Cout="0.0" Cin="0.0" Tdel="130e-12" mux_trans_size="1.508" buf_size="11.71"/>
523+
<switch type="mux" name="ipin_inter_layer_cblock" R="0.0" Cout="0.0" Cin="0.0" Tdel="130e-12" mux_trans_size="1.508" buf_size="11.71"/>
296524
</switchlist>
297525
<segmentlist>
298526
<segment name="L4" freq="280" length="4" type="unidir" Rmetal="0.0" Cmetal="0.0">

0 commit comments

Comments
 (0)