Skip to content

Commit 43edba0

Browse files
[Arch] Updated Artix-7-like Devices IO Placement
Based on feedback for the Artix-7-like devices, I put the IOs on the sides of the devices instead of all around. This helps reduce the "clumps" of IOs some and is slightly more accurate.
1 parent a087ced commit 43edba0

File tree

1 file changed

+63
-76
lines changed

1 file changed

+63
-76
lines changed

vtr_flow/arch/xilinx/7series_BRAM_DSP_carry.xml

Lines changed: 63 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -364,28 +364,23 @@
364364

365365
<!-- Artix-7 12k Logic Cell device.
366366
Data sheet | Actual
367-
- 2,000 CLB slices | 950 CLB tiles
367+
- 2,000 CLB slices | 1015 CLB tiles
368368
- 40 DSP slices | 20 DSP tiles
369369
- 20 BRAM blocks | 20 BRAM tiles
370370
- 150 IOs | 19 IO tiles
371371
-->
372372
<fixed_layout name="XC7A12T-like" width="37" height="37">
373-
<!-- 150 IOs (or around 19 tiles). Distribute them evenly around the border (5ish per side) -->
373+
<!-- 150 IOs (or around 19 tiles). 10 on one side, 9 on the other. -->
374374
<perimeter type="EMPTY" priority="99" />
375375
<corners type="EMPTY" priority="101" />
376-
<col type="io" startx="0" starty="1" incry="8" priority="100" />
377-
<col type="io" startx="36" starty="1" incry="8" priority="100" />
378-
<row type="io" startx="1" starty="0" incrx="8" priority="100" />
379-
<row type="io" startx="1" starty="36" incrx="9" priority="100" />
376+
<col type="io" startx="0" starty="4" incry="3" priority="100" />
377+
<single type="EMPTY" x="0" y="34" priority="101" />
378+
<col type="io" startx="36" starty="1" incry="4" priority="100" />
380379

381380
<!--Fill
382381
with 'CLB'-->
383382
<fill type="CLB" priority="10" />
384383

385-
<!-- In the actual 7-series BRAM and DSP are almost always placed 4 tiles apart from each
386-
other. The actual repeatx for each of these block types is slightly different from the bellow due
387-
to differences in how Xilinx lays out BRAM and DSP on the physical chip. The values given
388-
bellow are the average spacing between DSP and BRAM columns.-->
389384
<col type="DSP" startx="10" starty="1" repeatx="11" priority="20" />
390385
<col type="EMPTY" startx="10" repeatx="11" starty="1" priority="19" />
391386
<!-- Remove 3 DSPs from one column, 2 from all others each column to bring the total number of DSP slices to 20 -->
@@ -409,22 +404,24 @@
409404
- 250 IOs | 32 IO tiles
410405
-->
411406
<fixed_layout name="XC7A15T-like" width="42" height="42">
412-
<!-- 250 IOs (or around 32 tiles). Distribute them evenly around the border (8 per side) -->
407+
<!-- 250 IOs (or around 32 tiles). 16 on the left and 16 on the right. -->
413408
<perimeter type="EMPTY" priority="99" />
414409
<corners type="EMPTY" priority="101" />
415-
<col type="io" startx="0" starty="1" incry="5" priority="100" />
416-
<col type="io" startx="41" starty="1" incry="5" priority="100" />
417-
<row type="io" startx="1" starty="0" incrx="5" priority="100" />
418-
<row type="io" startx="1" starty="41" incrx="5" priority="100" />
410+
<col type="io" startx="0" starty="1" incry="2" priority="100" />
411+
<single type="EMPTY" x="0" y="9" priority="101" />
412+
<single type="EMPTY" x="0" y="17" priority="101" />
413+
<single type="EMPTY" x="0" y="25" priority="101" />
414+
<single type="EMPTY" x="0" y="37" priority="101" />
415+
<col type="io" startx="41" starty="1" incry="2" priority="100" />
416+
<single type="EMPTY" x="41" y="9" priority="101" />
417+
<single type="EMPTY" x="41" y="17" priority="101" />
418+
<single type="EMPTY" x="41" y="25" priority="101" />
419+
<single type="EMPTY" x="41" y="37" priority="101" />
419420

420421
<!--Fill
421422
with 'CLB'-->
422423
<fill type="CLB" priority="10" />
423424

424-
<!-- In the actual 7-series BRAM and DSP are almost always placed 4 tiles apart from each
425-
other. The actual repeatx for each of these block types is slightly different from the bellow due
426-
to differences in how Xilinx lays out BRAM and DSP on the physical chip. The values given
427-
bellow are the average spacing between DSP and BRAM columns.-->
428425
<col type="DSP" startx="10" starty="1" repeatx="11" priority="20" />
429426
<col type="EMPTY" startx="10" repeatx="11" starty="1" priority="19" />
430427
<!-- Remove 6 DSPs from each column to bring the total number of DSP slices to 44 -->
@@ -449,22 +446,17 @@
449446
- 150 IOs | 19 IO tiles
450447
-->
451448
<fixed_layout name="XC7A25T-like" width="49" height="49">
452-
<!-- 150 IOs (or around 19 tiles). Distribute them evenly around the border (5ish per side) -->
449+
<!-- 150 IOs (or around 19 tiles). 10 on the left and 9 on the right. -->
453450
<perimeter type="EMPTY" priority="99" />
454451
<corners type="EMPTY" priority="101" />
455-
<col type="io" startx="0" starty="1" incry="11" priority="100" />
456-
<col type="io" startx="48" starty="1" incry="11" priority="100" />
457-
<row type="io" startx="1" starty="0" incrx="11" priority="100" />
458-
<row type="io" startx="1" starty="48" incrx="12" priority="100" />
452+
<col type="io" startx="0" starty="1" incry="5" priority="100" />
453+
<col type="io" startx="48" starty="1" incry="5" priority="100" />
454+
<single type="EMPTY" x="48" y="46" priority="101" />
459455

460456
<!--Fill
461457
with 'CLB'-->
462458
<fill type="CLB" priority="10" />
463459

464-
<!-- In the actual 7-series BRAM and DSP are almost always placed 4 tiles apart from each
465-
other. The actual repeatx for each of these block types is slightly different from the bellow due
466-
to differences in how Xilinx lays out BRAM and DSP on the physical chip. The values given
467-
bellow are the average spacing between DSP and BRAM columns.-->
468460
<col type="DSP" startx="10" starty="1" repeatx="11" priority="20" />
469461
<col type="EMPTY" startx="10" repeatx="11" starty="1" priority="19" />
470462
<!-- Remove 2 DSPs from each column to bring the total number of DSP slices to 40 -->
@@ -479,28 +471,26 @@
479471

480472
<!-- Artix-7 35k Logic Cell device.
481473
Data sheet | Actual
482-
- 5,200 CLB slices | 2,570 CLB tiles
474+
- 5,200 CLB slices | 2,576 CLB tiles
483475
- 90 DSP slices | 45 DSP tiles
484476
- 50 BRAM blocks | 50 BRAM tiles
485-
- 250 IOs | 31 IO tiles
477+
- 250 IOs | 32 IO tiles
486478
-->
487479
<fixed_layout name="XC7A35T-like" width="58" height="58">
488-
<!-- 250 IOs (or around 31 tiles). Distribute them evenly around the border (8ish per side) -->
480+
<!-- 250 IOs (or around 32 tiles). 16 on the left and 16 on the right. -->
489481
<perimeter type="EMPTY" priority="99" />
490482
<corners type="EMPTY" priority="101" />
491-
<col type="io" startx="0" starty="1" incry="7" priority="100" />
492-
<col type="io" startx="57" starty="1" incry="7" priority="100" />
493-
<row type="io" startx="1" starty="0" incrx="7" priority="100" />
494-
<row type="io" startx="1" starty="57" incrx="8" priority="100" />
483+
<col type="io" startx="0" starty="1" incry="4" priority="100" />
484+
<single type="io" x="0" y="18" priority="100" />
485+
<single type="io" x="0" y="42" priority="100" />
486+
<col type="io" startx="57" starty="1" incry="4" priority="100" />
487+
<single type="io" x="57" y="18" priority="100" />
488+
<single type="io" x="57" y="42" priority="100" />
495489

496490
<!--Fill
497491
with 'CLB'-->
498492
<fill type="CLB" priority="10" />
499493

500-
<!-- In the actual 7-series BRAM and DSP are almost always placed 4 tiles apart from each
501-
other. The actual repeatx for each of these block types is slightly different from the bellow due
502-
to differences in how Xilinx lays out BRAM and DSP on the physical chip. The values given
503-
bellow are the average spacing between DSP and BRAM columns.-->
504494
<col type="DSP" startx="10" starty="1" repeatx="11" priority="20" />
505495
<col type="EMPTY" startx="10" repeatx="11" starty="1" priority="19" />
506496
<!-- Remove 6 DSPs from each column to bring the total number of DSP slices to 90 -->
@@ -525,25 +515,23 @@
525515
- 8,150 CLB slices | 4,060 CLB tiles
526516
- 120 DSP slices | 60 DSP tiles
527517
- 75 BRAM blocks | 75 BRAM tiles
528-
- 250 IOs | 31 IO tiles
518+
- 250 IOs | 32 IO tiles
529519
-->
530520
<fixed_layout name="XC7A50T-like" width="72" height="72">
531-
<!-- 250 IOs (or around 31 tiles). Distribute them evenly around the border (8ish per side) -->
521+
<!-- 250 IOs (or around 32 tiles). 16 on the left and 16 on the right. -->
532522
<perimeter type="EMPTY" priority="99" />
533523
<corners type="EMPTY" priority="101" />
534-
<col type="io" startx="0" starty="1" incry="9" priority="100" />
535-
<col type="io" startx="71" starty="1" incry="9" priority="100" />
536-
<row type="io" startx="1" starty="0" incrx="9" priority="100" />
537-
<row type="io" startx="1" starty="71" incrx="10" priority="100" />
524+
<col type="io" startx="0" starty="1" incry="5" priority="100" />
525+
<single type="io" x="0" y="24" priority="100" />
526+
<single type="io" x="0" y="48" priority="100" />
527+
<col type="io" startx="71" starty="1" incry="5" priority="100" />
528+
<single type="io" x="71" y="24" priority="100" />
529+
<single type="io" x="71" y="48" priority="100" />
538530

539531
<!--Fill
540532
with 'CLB'-->
541533
<fill type="CLB" priority="10" />
542534

543-
<!-- In the actual 7-series BRAM and DSP are almost always placed 4 tiles apart from each
544-
other. The actual repeatx for each of these block types is slightly different from the bellow due
545-
to differences in how Xilinx lays out BRAM and DSP on the physical chip. The values given
546-
bellow are the average spacing between DSP and BRAM columns.-->
547535
<col type="DSP" startx="10" starty="1" repeatx="11" priority="20" />
548536
<col type="EMPTY" startx="10" repeatx="11" starty="1" priority="19" />
549537
<!-- Remove 8 DSPs from each column to bring the total number of DSP slices to 120 -->
@@ -573,22 +561,24 @@
573561
- 300 IOs | 38 IO tiles
574562
-->
575563
<fixed_layout name="XC7A75T-like" width="87" height="87">
576-
<!-- 300 IOs (or around 38 tiles). Distribute them evenly around the border (9ish per side) -->
564+
<!-- 300 IOs (or around 38 tiles). 19 on the left and 19 on the right. -->
577565
<perimeter type="EMPTY" priority="99" />
578566
<corners type="EMPTY" priority="101" />
579-
<col type="io" startx="0" starty="1" incry="9" priority="100" />
580-
<col type="io" startx="86" starty="1" incry="9" priority="100" />
581-
<row type="io" startx="1" starty="0" incrx="10" priority="100" />
582-
<row type="io" startx="1" starty="86" incrx="10" priority="100" />
567+
<col type="io" startx="0" starty="1" incry="6" priority="100" />
568+
<single type="io" x="0" y="17" priority="100" />
569+
<single type="io" x="0" y="35" priority="100" />
570+
<single type="io" x="0" y="52" priority="100" />
571+
<single type="io" x="0" y="70" priority="100" />
572+
<col type="io" startx="86" starty="1" incry="6" priority="100" />
573+
<single type="io" x="86" y="17" priority="100" />
574+
<single type="io" x="86" y="35" priority="100" />
575+
<single type="io" x="86" y="52" priority="100" />
576+
<single type="io" x="86" y="70" priority="100" />
583577

584578
<!--Fill
585579
with 'CLB'-->
586580
<fill type="CLB" priority="10" />
587581

588-
<!-- In the actual 7-series BRAM and DSP are almost always placed 4 tiles apart from each
589-
other. The actual repeatx for each of these block types is slightly different from the bellow due
590-
to differences in how Xilinx lays out BRAM and DSP on the physical chip. The values given
591-
bellow are the average spacing between DSP and BRAM columns.-->
592582
<col type="DSP" startx="10" starty="1" repeatx="11" priority="20" />
593583
<col type="EMPTY" startx="10" repeatx="11" starty="1" priority="19" />
594584
<!-- Remove DSPs -->
@@ -621,22 +611,20 @@
621611
- 300 IOs | 38 IO tiles
622612
-->
623613
<fixed_layout name="XC7A100T-like" width="100" height="100">
624-
<!-- 300 IOs (or around 38 tiles). Distribute them evenly around the border (9ish per side) -->
614+
<!-- 300 IOs (or around 38 tiles). 19 on the left and 19 on the right. -->
625615
<perimeter type="EMPTY" priority="99" />
626616
<corners type="EMPTY" priority="101" />
627-
<col type="io" startx="0" starty="1" incry="10" priority="100" />
628-
<col type="io" startx="99" starty="1" incry="10" priority="100" />
629-
<row type="io" startx="1" starty="0" incrx="12" priority="100" />
630-
<row type="io" startx="1" starty="99" incrx="12" priority="100" />
617+
<col type="io" startx="0" starty="1" incry="6" priority="100" />
618+
<single type="io" x="0" y="33" priority="100" />
619+
<single type="io" x="0" y="66" priority="100" />
620+
<col type="io" startx="99" starty="1" incry="6" priority="100" />
621+
<single type="io" x="99" y="33" priority="100" />
622+
<single type="io" x="99" y="66" priority="100" />
631623

632624
<!--Fill
633625
with 'CLB'-->
634626
<fill type="CLB" priority="10" />
635627

636-
<!-- In the actual 7-series BRAM and DSP are almost always placed 4 tiles apart from each
637-
other. The actual repeatx for each of these block types is slightly different from the bellow due
638-
to differences in how Xilinx lays out BRAM and DSP on the physical chip. The values given
639-
bellow are the average spacing between DSP and BRAM columns.-->
640628
<col type="DSP" startx="10" starty="1" repeatx="11" priority="20" />
641629
<col type="EMPTY" startx="10" repeatx="11" starty="1" priority="19" />
642630
<!-- Remove DSPs -->
@@ -672,22 +660,21 @@
672660
- 500 IOs | 63 IO tiles
673661
-->
674662
<fixed_layout name="XC7A200T-like" width="145" height="145">
675-
<!-- 500 IOs (or around 63 tiles). Distribute them evenly around the border (9ish per side) -->
663+
<!-- 500 IOs (or around 63 tiles). 32 on the left and 31 on the right. -->
676664
<perimeter type="EMPTY" priority="99" />
677665
<corners type="EMPTY" priority="101" />
678-
<col type="io" startx="0" starty="1" incry="9" priority="100" />
679-
<col type="io" startx="144" starty="1" incry="9" priority="100" />
680-
<row type="io" startx="1" starty="0" incrx="9" priority="100" />
681-
<row type="io" startx="1" starty="144" incrx="10" priority="100" />
666+
<col type="io" startx="0" starty="1" incry="5" priority="100" />
667+
<single type="io" x="0" y="37" priority="100" />
668+
<single type="io" x="0" y="72" priority="100" />
669+
<single type="io" x="0" y="109" priority="100" />
670+
<col type="io" startx="144" starty="1" incry="5" priority="100" />
671+
<single type="io" x="144" y="48" priority="100" />
672+
<single type="io" x="144" y="97" priority="100" />
682673

683674
<!--Fill
684675
with 'CLB'-->
685676
<fill type="CLB" priority="10" />
686677

687-
<!-- In the actual 7-series BRAM and DSP are almost always placed 4 tiles apart from each
688-
other. The actual repeatx for each of these block types is slightly different from the bellow due
689-
to differences in how Xilinx lays out BRAM and DSP on the physical chip. The values given
690-
bellow are the average spacing between DSP and BRAM columns.-->
691678
<col type="DSP" startx="10" starty="1" repeatx="11" priority="20" />
692679
<col type="EMPTY" startx="10" repeatx="11" starty="1" priority="19" />
693680
<!-- Remove DSPs -->

0 commit comments

Comments
 (0)