Skip to content

Commit 8c57536

Browse files
xanjohnsWhiteNinjaZ
authored andcommitted
Add comment for partial crossbar
Signed-off-by: Xan Johnson <xanjohns@gmail.com>
1 parent abcbc20 commit 8c57536

File tree

1 file changed

+26
-25
lines changed

1 file changed

+26
-25
lines changed

vtr_flow/arch/xilinx/simple-7series.xml

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
<!--
2-
This architecture file is an approximation of the xilinx 7 series chip set. It's main purpose is to verify VPR's ability to
3-
accommodate xilinx specific routing (i.e. differing wire lengths and frequencies in the horizontal/vertical directions, differing chanel widths,
4-
and diagonal wire segments). Given that this architectures primary function is to test xilinx specific routing, the architecture includes only
5-
a simplified version of the Xilinx CLB that excludes carry logic. f4pga/symbiflow's arch.timing.xml and VTR's k6_N10_40nm.xml were pulled from to create
6-
this architecture description.
1+
<!--
2+
This architecture file is an approximation of the xilinx 7 series chip set. It's main purpose is to verify VPR's ability to
3+
accommodate xilinx specific routing (i.e. differing wire lengths and frequencies in the horizontal/vertical directions, differing chanel widths,
4+
and diagonal wire segments). Given that this architectures primary function is to test xilinx specific routing, the architecture includes only
5+
a simplified version of the Xilinx CLB that excludes carry logic. f4pga/symbiflow's arch.timing.xml and VTR's k6_N10_40nm.xml were pulled from to create
6+
this architecture description.
77
88
- 40 nm technology
99
- General purpose logic block excluding carry.
@@ -13,8 +13,8 @@
1313
-->
1414
<architecture>
1515
<!-- ODIN II specific config begins -->
16-
<!--
17-
Given that basic LUTs, I/Os, and flip-flops already have special structures in
16+
<!--
17+
Given that basic LUTs, I/Os, and flip-flops already have special structures in
1818
blif (.names, .input, .output, and .latch) that describe them and that this arch
1919
contains CLB logic blocks only, no special models are needed for this architecture.
2020
-->
@@ -82,25 +82,25 @@
8282
</device>
8383

8484
<switchlist>
85-
85+
8686
<!--the following muxes for unidirectional wires are pulled from k6_N10_40nm -->
8787
<switch type="mux" name="0" R="551" Cin=".77e-15" Cout="4e-15" Tdel="58e-12" mux_trans_size="2.630740" buf_size="27.645901"/>
8888
<switch type="mux" name="ipin_cblock" R="2231.5" Cout="0." Cin="1.47e-15" Tdel="7.247000e-11" mux_trans_size="1.222260" buf_size="auto"/>
8989
</switchlist>
9090

9191
<segmentlist>
92-
<!--- The following segment data is pulled from Table 1 of the NetCraker paper by Morten B. Petersen,
92+
<!--- The following segment data is pulled from Table 1 of the NetCraker paper by Morten B. Petersen,
9393
Stefan Nikolić and Mirjana Stojilović: see https://dl.acm.org/doi/10.1145/3431920.3439285. Frequencies
94-
are calculated by dividing each wire segments count in the horizontal/vertical direction
94+
are calculated by dividing each wire segments count in the horizontal/vertical direction
9595
by the total width/hight of the architecture -->
9696

9797
<!-- TODO: To more accurately approximate the seven series, support for both unidirectional and
98-
bidirectional segments within the same segmentlist is needed. For now we declare all segments as
98+
bidirectional segments within the same segmentlist is needed. For now we declare all segments as
9999
unidirectional -->
100100

101-
<!-- TODO: For proper timing, Xilinx specific values for Rmetal and Cmetal are required.
101+
<!-- TODO: For proper timing, Xilinx specific values for Rmetal and Cmetal are required.
102102
For now we approximate using the values given in the k6_N10_40nm arch -->
103-
103+
104104
<segment axis="x" name="len1_x" freq="0.258064" length="1" type="unidir" Rmetal="101" Cmetal="22.5e-15">
105105
<mux name="0"/>
106106
<sb type="pattern">1 1</sb>
@@ -189,24 +189,24 @@
189189
<cb type="pattern">1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1</cb>
190190
</segment>
191191

192-
193192

194-
<!-- TODO: Support in VPR for diagonal wires is currently in the works.
195-
Until full support for this feature is implemented, this part of the
193+
194+
<!-- TODO: Support in VPR for diagonal wires is currently in the works.
195+
Until full support for this feature is implemented, this part of the
196196
Xilinx routing is excluded -->
197197

198198
</segmentlist>
199199
<complexblocklist>
200200
<!-- Define I/O pads begin -->
201-
<!-- The structure of the IO from the k6_N10_40nm arch is
202-
used here to approximate the seven series IO. Timing values
201+
<!-- The structure of the IO from the k6_N10_40nm arch is
202+
used here to approximate the seven series IO. Timing values
203203
are changed to match the seven series.-->
204204
<pb_type name="io">
205205
<input name="outpad" num_pins="1"/>
206206
<output name="inpad" num_pins="1"/>
207207
<clock name="clock" num_pins="1"/>
208208
<!-- IOs can operate as either inputs or outputs.
209-
Delays below are pulled from the IOBUF description
209+
Delays below are pulled from the IOBUF description
210210
in f4pga/symbiflow's arch.timing.xml
211211
-->
212212
<mode name="inpad">
@@ -232,7 +232,7 @@
232232
</interconnect>
233233
</mode>
234234
<!-- Every input pin is driven by 15% of the tracks in a channel, every output pin is driven by 10% of the tracks in a channel -->
235-
<!-- IOs go on the periphery of the FPGA, for consistency,
235+
<!-- IOs go on the periphery of the FPGA, for consistency,
236236
make it physically equivalent on all sides so that only one definition of I/Os is needed.
237237
-->
238238
<!-- Place I/Os on the sides of the FPGA -->
@@ -339,7 +339,7 @@
339339
<T_hold clock="clk" port="FDSE.D" value="1.81e-10"/>
340340
<T_clock_to_Q clock="clk" max="3.03e-10" port="FDSE.Q" min="9.900000000000001e-11"/>
341341
</pb_type>
342-
<!-- The following interconnect matches that of the seven series.
342+
<!-- The following interconnect matches that of the seven series.
343343
Delays are pulled from the f4pga/symbiflow arch -->
344344
<interconnect>
345345
<mux name="AOUTMUX" input="ALUT.O5 ALUT.O6 FDSE[0].Q" output="fle.outMUX">
@@ -377,13 +377,14 @@
377377
<direct name="dir10" input="fle[3].outMUX" output="slice.O[9]"/>
378378
<direct name="dir11" input="fle[3].out" output="slice.O[10]"/>
379379
<direct name="dir12" input="fle[3].outQ" output="slice.O[11]"/>
380-
<direct name="inA" input="slice.I[5:0]" output="fle[0].in"/>
380+
<direct name="inA" input="slice.I[5:0]" output="fle[0].in"/>
381381
<direct name="inB" input="slice.I[12:7]" output="fle[1].in"/>
382382
<direct name="inC" input="slice.I[19:14]" output="fle[2].in"/>
383383
<direct name="inD" input="slice.I[26:21]" output="fle[3].in"/>
384384
</interconnect>
385385
</pb_type>
386-
<!-- :: EXPLAIN Crossbar here -->
386+
<!-- Partial Crossbar with each input to the slice connected to 3 outputs from the same slice.
387+
Values are taken from prjxray-db/artix7/tile_int_l -->
387388
<interconnect>
388389
<direct name="top_slice" input="clb.I[27:0]" output="slice[0].I"/>
389390
<direct name="bottom_slice" input="clb.I[55:28]" output="slice[1].I"/>
@@ -451,4 +452,4 @@
451452
<clocks>
452453
<clock buffer_size="auto" C_wire="2.5e-10"/>
453454
</clocks>
454-
</architecture>
455+
</architecture>

0 commit comments

Comments
 (0)