Skip to content

Commit 57dc489

Browse files
committed
[test] add perimeter_cb to strong test
1 parent e4e158d commit 57dc489

File tree

2 files changed

+201
-1
lines changed

2 files changed

+201
-1
lines changed
Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
<!--
2+
Architecture file translated from ifar repository N04K04L01.FC15FO25.AREA1DELAY1.CMOS90NM.BPTM
3+
4+
Simple architecture file consisting of clusters of 4 BLEs, each BLE contains a 4-LUT+FF pair. Delay models from 90nm PTM.
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="3">
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="1.0" out_type="frac" out_val="0.25"/>
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="10" equivalent="full"/>
42+
<output name="O" num_pins="4" equivalent="instance"/>
43+
<clock name="clk" num_pins="1"/>
44+
<fc in_type="frac" in_val="0.15" out_type="frac" out_val="0.25"/>
45+
<pinlocations pattern="spread"/>
46+
</sub_tile>
47+
</tile>
48+
</tiles>
49+
<!-- ODIN II specific config ends -->
50+
<!-- Physical descriptions begin -->
51+
<layout tileable="true" perimeter_cb="true">
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="4220.930176" R_minW_pmos="11207.599609"/>
62+
<area grid_logic_tile_area="2229.320068"/>
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="6.244000e-11" mux_trans_size="1.835460" buf_size="10.498600"/>
72+
<!--switch ipin_cblock resistance set to yeild for 4x minimum drive strength buffer-->
73+
<switch type="mux" name="ipin_cblock" R="1055.232544" Cout="0." Cin="0.000000e+00" Tdel="8.045000e-11" mux_trans_size="0.983352" buf_size="auto"/>
74+
</switchlist>
75+
<segmentlist>
76+
<segment freq="0.500000" length="1" type="unidir" Rmetal="0.000000" Cmetal="0.000000e+00">
77+
<mux name="0"/>
78+
<sb type="pattern">1 1</sb>
79+
<cb type="pattern">1</cb>
80+
</segment>
81+
<segment freq="0.500000" length="4" type="unidir" Rmetal="0.000000" Cmetal="0.000000e+00">
82+
<mux name="0"/>
83+
<sb type="pattern">1 1 1 1 1</sb>
84+
<cb type="pattern">1 1 1 1</cb>
85+
</segment>
86+
</segmentlist>
87+
<complexblocklist>
88+
<!-- Define I/O pads begin -->
89+
<!-- 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 -->
90+
<pb_type name="io">
91+
<input name="outpad" num_pins="1"/>
92+
<output name="inpad" num_pins="1"/>
93+
<clock name="clock" num_pins="1"/>
94+
<!-- IOs can operate as either inputs or outputs.
95+
Delays below come from Ian Kuon. They are small, so they should be interpreted as
96+
the delays to and from registers in the I/O (and generally I/Os are registered
97+
today and that is when you timing analyze them.
98+
-->
99+
<mode name="inpad">
100+
<pb_type name="inpad" blif_model=".input" num_pb="1">
101+
<output name="inpad" num_pins="1"/>
102+
</pb_type>
103+
<interconnect>
104+
<direct name="inpad" input="inpad.inpad" output="io.inpad">
105+
<delay_constant max="9.492000e-11" in_port="inpad.inpad" out_port="io.inpad"/>
106+
</direct>
107+
</interconnect>
108+
</mode>
109+
<mode name="outpad">
110+
<pb_type name="outpad" blif_model=".output" num_pb="1">
111+
<input name="outpad" num_pins="1"/>
112+
</pb_type>
113+
<interconnect>
114+
<direct name="outpad" input="io.outpad" output="outpad.outpad">
115+
<delay_constant max="2.675000e-11" in_port="io.outpad" out_port="outpad.outpad"/>
116+
</direct>
117+
</interconnect>
118+
</mode>
119+
<!-- 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 -->
120+
<!-- IOs go on the periphery of the FPGA, for consistency,
121+
make it physically equivalent on all sides so that only one definition of I/Os is needed.
122+
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
123+
-->
124+
<!-- Place I/Os on the sides of the FPGA -->
125+
<power method="ignore"/>
126+
</pb_type>
127+
<!-- Define I/O pads ends -->
128+
<!-- Define general purpose logic block (CLB) begin -->
129+
<pb_type name="clb">
130+
<input name="I" num_pins="10" equivalent="full"/>
131+
<output name="O" num_pins="4" equivalent="instance"/>
132+
<clock name="clk" num_pins="1"/>
133+
<!-- Describe basic logic element. -->
134+
<pb_type name="fle" num_pb="4">
135+
<input name="in" num_pins="4"/>
136+
<output name="out" num_pins="1"/>
137+
<clock name="clk" num_pins="1"/>
138+
<!-- 4-LUT mode definition begin -->
139+
<mode name="n1_lut4">
140+
<!-- Define 4-LUT mode -->
141+
<pb_type name="ble4" num_pb="1">
142+
<input name="in" num_pins="4"/>
143+
<output name="out" num_pins="1"/>
144+
<clock name="clk" num_pins="1"/>
145+
<!-- Define LUT -->
146+
<pb_type name="lut4" blif_model=".names" num_pb="1" class="lut">
147+
<input name="in" num_pins="4" port_class="lut_in"/>
148+
<output name="out" num_pins="1" port_class="lut_out"/>
149+
<!-- LUT timing using delay matrix -->
150+
<delay_matrix type="max" in_port="lut4.in" out_port="lut4.out">
151+
2.253000e-10
152+
2.253000e-10
153+
2.253000e-10
154+
2.253000e-10
155+
</delay_matrix>
156+
</pb_type>
157+
<!-- Define flip-flop -->
158+
<pb_type name="ff" blif_model=".latch" num_pb="1" class="flipflop">
159+
<input name="D" num_pins="1" port_class="D"/>
160+
<output name="Q" num_pins="1" port_class="Q"/>
161+
<clock name="clk" num_pins="1" port_class="clock"/>
162+
<T_setup value="2.160000e-10" port="ff.D" clock="clk"/>
163+
<T_clock_to_Q max="1.426000e-10" port="ff.Q" clock="clk"/>
164+
</pb_type>
165+
<interconnect>
166+
<direct name="direct1" input="ble4.in" output="lut4[0:0].in"/>
167+
<direct name="direct2" input="lut4.out" output="ff.D">
168+
<!-- Advanced user option that tells CAD tool to find LUT+FF pairs in netlist -->
169+
<pack_pattern name="ble6" in_port="lut4.out" out_port="ff.D"/>
170+
</direct>
171+
<direct name="direct3" input="ble4.clk" output="ff.clk"/>
172+
<mux name="mux1" input="ff.Q lut4.out" output="ble4.out">
173+
</mux>
174+
</interconnect>
175+
</pb_type>
176+
<interconnect>
177+
<direct name="direct1" input="fle.in" output="ble4.in"/>
178+
<direct name="direct2" input="ble4.out" output="fle.out[0:0]"/>
179+
<direct name="direct3" input="fle.clk" output="ble4.clk"/>
180+
</interconnect>
181+
</mode>
182+
<!-- 4-LUT mode definition end -->
183+
</pb_type>
184+
<interconnect>
185+
<!-- We use a full crossbar to get logical equivalence at inputs of CLB -->
186+
<complete name="crossbar" input="clb.I fle[3:0].out" output="fle[3:0].in">
187+
<delay_constant max="5.735000e-11" in_port="clb.I" out_port="fle[3:0].in"/>
188+
<delay_constant max="5.428000e-11" in_port="fle[3:0].out" out_port="fle[3:0].in"/>
189+
</complete>
190+
<complete name="clks" input="clb.clk" output="fle[3:0].clk">
191+
</complete>
192+
<direct name="clbouts1" input="fle[3:0].out" output="clb.O"/>
193+
</interconnect>
194+
<!-- 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 -->
195+
<!-- Place this general purpose logic block in any unspecified column -->
196+
</pb_type>
197+
<!-- Define general purpose logic block (CLB) ends -->
198+
</complexblocklist>
199+
</architecture>

vtr_flow/tasks/regression_tests/vtr_reg_strong/task_list.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,9 @@ regression_tests/vtr_reg_strong/strong_timing_fail
8484
regression_tests/vtr_reg_strong/strong_timing_no_fail
8585
regression_tests/vtr_reg_strong/strong_vpr_constraint
8686
regression_tests/vtr_reg_strong/strong_tileable_rr_graph
87+
regression_tests/vtr_reg_strong/strong_tileable_rr_graph_perimeter_cb
8788
regression_tests/vtr_reg_strong/strong_tileable_rr_graph_verify
8889
regression_tests/vtr_reg_strong/strong_tileable_rr_graph_verify_bin
8990
regression_tests/vtr_reg_strong/strong_noc
9091
regression_tests/vtr_reg_strong/strong_flat_router
91-
regression_tests/vtr_reg_strong/strong_routing_constraints
92+
regression_tests/vtr_reg_strong/strong_routing_constraints

0 commit comments

Comments
 (0)