Skip to content

Commit 7998b1c

Browse files
Merge pull request #33 from AlexandreSinger/intra-tile-start
Intra tile start
2 parents 9e7d25e + 516e3f4 commit 7998b1c

16 files changed

+4661
-52
lines changed

Cargo.lock

Lines changed: 304 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,181 @@
1+
<!--
2+
Architecture file translated from ifar repository N04K04L01.FC15FO25.AREA1DELAY1.CMOS90NM.BPTM
3+
4+
Simple architecture file consisting of clusters of 8 BLEs, each BLE contains a 4-LUT+FF pair. Area-Delay models from 45nm PTM for a K4 N10 architecture with two BLEs removed.
5+
-->
6+
<architecture>
7+
<!--
8+
ODIN II specific config begins
9+
Describes the types of user-specified netlist blocks (in blif, this corresponds to
10+
".model [type_of_block]") that this architecture supports.
11+
12+
Note: Basic LUTs, I/Os, and flip-flops are not included here as there are
13+
already special structures in blif (.names, .input, .output, and .latch)
14+
that describe them.
15+
-->
16+
<models>
17+
</models>
18+
<tiles>
19+
<tile name="io">
20+
<sub_tile name="io" capacity="6">
21+
<equivalent_sites>
22+
<site pb_type="io" pin_mapping="direct"/>
23+
</equivalent_sites>
24+
<input name="outpad" num_pins="1"/>
25+
<output name="inpad" num_pins="1"/>
26+
<clock name="clock" num_pins="1"/>
27+
<fc in_type="frac" in_val="0.2" out_type="frac" out_val="0.1"/>
28+
<pinlocations pattern="custom">
29+
<loc side="left">io.outpad io.inpad io.clock</loc>
30+
<loc side="top">io.outpad io.inpad io.clock</loc>
31+
<loc side="right">io.outpad io.inpad io.clock</loc>
32+
<loc side="bottom">io.outpad io.inpad io.clock</loc>
33+
</pinlocations>
34+
</sub_tile>
35+
</tile>
36+
<tile name="clb">
37+
<sub_tile name="clb">
38+
<equivalent_sites>
39+
<site pb_type="clb" pin_mapping="direct"/>
40+
</equivalent_sites>
41+
<input name="I" num_pins="18" equivalent="full"/>
42+
<output name="O" num_pins="8" equivalent="instance"/>
43+
<clock name="clk" num_pins="1"/>
44+
<fc in_type="frac" in_val="0.2" out_type="frac" out_val="0.1"/>
45+
<pinlocations pattern="spread"/>
46+
</sub_tile>
47+
</tile>
48+
</tiles>
49+
<!-- ODIN II specific config ends -->
50+
<!-- Physical descriptions begin -->
51+
<layout>
52+
<auto_layout aspect_ratio="1.000000">
53+
<!--Perimeter of 'io' blocks with 'EMPTY' blocks at corners-->
54+
<perimeter type="io" priority="100"/>
55+
<corners type="EMPTY" priority="101"/>
56+
<!--Fill with 'clb'-->
57+
<fill type="clb" priority="10"/>
58+
</auto_layout>
59+
</layout>
60+
<device>
61+
<sizing R_minW_nmos="6065.520020" R_minW_pmos="18138.500000"/>
62+
<area grid_logic_tile_area="7238.080078"/>
63+
<chan_width_distr>
64+
<x distr="uniform" peak="1.000000"/>
65+
<y distr="uniform" peak="1.000000"/>
66+
</chan_width_distr>
67+
<switch_block type="wilton" fs="3"/>
68+
<connection_block input_switch_name="ipin_cblock"/>
69+
</device>
70+
<switchlist>
71+
<switch type="mux" name="0" R="0.000000" Cin="0.000000e+00" Cout="0.000000e+00" Tdel="7.958000e-11" mux_trans_size="2.074780" buf_size="19.261999"/>
72+
<!--switch ipin_cblock resistance set to yeild for 4x minimum drive strength buffer-->
73+
<switch type="mux" name="ipin_cblock" R="1516.380005" Cout="0." Cin="0.000000e+00" Tdel="7.362000e-11" mux_trans_size="1.240240" buf_size="auto"/>
74+
</switchlist>
75+
<segmentlist>
76+
<segment freq="1.000000" length="4" type="unidir" Rmetal="0.000000" Cmetal="0.000000e+00">
77+
<mux name="0"/>
78+
<sb type="pattern">1 1 1 1 1</sb>
79+
<cb type="pattern">1 1 1 1</cb>
80+
</segment>
81+
</segmentlist>
82+
<complexblocklist>
83+
<!-- Define I/O pads begin -->
84+
<!-- Capacity is a unique property of I/Os, it is the maximum number of I/Os that can be placed at the same (X,Y) location on the FPGA -->
85+
<pb_type name="io">
86+
<input name="outpad" num_pins="1"/>
87+
<output name="inpad" num_pins="1"/>
88+
<clock name="clock" num_pins="1"/>
89+
<!-- IOs can operate as either inputs or outputs.
90+
Delays below come from Ian Kuon. They are small, so they should be interpreted as
91+
the delays to and from registers in the I/O (and generally I/Os are registered
92+
today and that is when you timing analyze them.
93+
-->
94+
<mode name="inpad">
95+
<pb_type name="inpad" blif_model=".input" num_pb="1">
96+
<output name="inpad" num_pins="1"/>
97+
</pb_type>
98+
<interconnect>
99+
<direct name="inpad" input="inpad.inpad" output="io.inpad">
100+
<delay_constant max="4.791000e-11" in_port="inpad.inpad" out_port="io.inpad"/>
101+
</direct>
102+
</interconnect>
103+
</mode>
104+
<mode name="outpad">
105+
<pb_type name="outpad" blif_model=".output" num_pb="1">
106+
<input name="outpad" num_pins="1"/>
107+
</pb_type>
108+
<interconnect>
109+
<direct name="outpad" input="io.outpad" output="outpad.outpad">
110+
<delay_constant max="1.557000e-11" in_port="io.outpad" out_port="outpad.outpad"/>
111+
</direct>
112+
</interconnect>
113+
</mode>
114+
<!-- 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 -->
115+
<!-- IOs go on the periphery of the FPGA, for consistency,
116+
make it physically equivalent on all sides so that only one definition of I/Os is needed.
117+
If I do not make a physically equivalent definition, then I need to define 4 different I/Os, one for each side of the FPGA
118+
-->
119+
<!-- Place I/Os on the sides of the FPGA -->
120+
<power method="ignore"/>
121+
</pb_type>
122+
<!-- Define I/O pads ends -->
123+
<!-- Define general purpose logic block (CLB) begin -->
124+
<pb_type name="clb">
125+
<input name="I" num_pins="18" equivalent="full"/>
126+
<output name="O" num_pins="8" equivalent="instance"/>
127+
<clock name="clk" num_pins="1"/>
128+
<!-- Describe basic logic element. -->
129+
<!-- Define 6-LUT mode -->
130+
<pb_type name="ble4" num_pb="8">
131+
<input name="in" num_pins="4"/>
132+
<output name="out" num_pins="1"/>
133+
<clock name="clk" num_pins="1"/>
134+
<!-- Define LUT -->
135+
<pb_type name="lut4" blif_model=".names" num_pb="1" class="lut">
136+
<input name="in" num_pins="4" port_class="lut_in"/>
137+
<output name="out" num_pins="1" port_class="lut_out"/>
138+
<!-- LUT timing using delay matrix -->
139+
<delay_matrix type="max" in_port="lut4.in" out_port="lut4.out">
140+
2.063000e-10
141+
2.063000e-10
142+
2.063000e-10
143+
2.063000e-10
144+
</delay_matrix>
145+
</pb_type>
146+
<!-- Define flip-flop -->
147+
<pb_type name="ff" blif_model=".latch" num_pb="1" class="flipflop">
148+
<input name="D" num_pins="1" port_class="D"/>
149+
<output name="Q" num_pins="1" port_class="Q"/>
150+
<clock name="clk" num_pins="1" port_class="clock"/>
151+
<!-- setup time included in LUT delay -->
152+
<T_setup value="0.000000e-10" port="ff.D" clock="clk"/>
153+
<T_clock_to_Q max="8.406000e-11" port="ff.Q" clock="clk"/>
154+
</pb_type>
155+
<interconnect>
156+
<direct name="direct1" input="ble4.in" output="lut4[0:0].in"/>
157+
<direct name="direct2" input="lut4.out" output="ff.D">
158+
<!-- Advanced user option that tells CAD tool to find LUT+FF pairs in netlist -->
159+
<pack_pattern name="ble6" in_port="lut4.out" out_port="ff.D"/>
160+
</direct>
161+
<direct name="direct3" input="ble4.clk" output="ff.clk"/>
162+
<mux name="mux1" input="ff.Q lut4.out" output="ble4.out">
163+
</mux>
164+
</interconnect>
165+
</pb_type>
166+
<interconnect>
167+
<!-- We use a full crossbar to get logical equivalence at inputs of CLB -->
168+
<complete name="crossbar" input="clb.I ble4[7:0].out" output="ble4[7:0].in">
169+
<delay_constant max="5.043000e-11" in_port="clb.I" out_port="ble4[7:0].in"/>
170+
<delay_constant max="5.031000e-11" in_port="ble4[7:0].out" out_port="ble4[7:0].in"/>
171+
</complete>
172+
<complete name="clks" input="clb.clk" output="ble4[7:0].clk">
173+
</complete>
174+
<direct name="clbouts1" input="ble4[7:0].out" output="clb.O"/>
175+
</interconnect>
176+
<!-- Every input pin is driven by 15% of the tracks in a channel, every output pin is driven by 25% of the tracks in a channel -->
177+
<!-- Place this general purpose logic block in any unspecified column -->
178+
</pb_type>
179+
<!-- Define general purpose logic block (CLB) ends -->
180+
</complexblocklist>
181+
</architecture>

0 commit comments

Comments
 (0)