|
3 | 3 | <models>
|
4 | 4 | <model name="IO_0">
|
5 | 5 | <input_ports>
|
6 |
| - <port name="I" combinational_sink_ports="O"/> |
| 6 | + <port name="in" combinational_sink_ports="out"/> |
7 | 7 | </input_ports>
|
8 | 8 | <output_ports>
|
9 |
| - <port name="O"/> |
| 9 | + <port name="out"/> |
10 | 10 | </output_ports>
|
11 | 11 | </model>
|
12 | 12 | <model name="IO_1">
|
13 | 13 | <input_ports>
|
14 |
| - <port name="I" combinational_sink_ports="O"/> |
| 14 | + <port name="in" combinational_sink_ports="out"/> |
15 | 15 | </input_ports>
|
16 | 16 | <output_ports>
|
17 |
| - <port name="O"/> |
| 17 | + <port name="out"/> |
18 | 18 | </output_ports>
|
19 | 19 | </model>
|
20 | 20 | <model name="IO_2">
|
21 | 21 | <input_ports>
|
22 |
| - <port name="I" combinational_sink_ports="O"/> |
| 22 | + <port name="in" combinational_sink_ports="out"/> |
23 | 23 | </input_ports>
|
24 | 24 | <output_ports>
|
25 |
| - <port name="O"/> |
| 25 | + <port name="out"/> |
26 | 26 | </output_ports>
|
27 | 27 | </model>
|
28 | 28 | <model name="IO_3">
|
29 | 29 | <input_ports>
|
30 |
| - <port name="I" combinational_sink_ports="O"/> |
| 30 | + <port name="in" combinational_sink_ports="out"/> |
31 | 31 | </input_ports>
|
32 | 32 | <output_ports>
|
33 |
| - <port name="O"/> |
| 33 | + <port name="out"/> |
34 | 34 | </output_ports>
|
35 | 35 | </model>
|
36 | 36 | </models>
|
37 | 37 | <tiles>
|
38 | 38 | <tile name="io_tile">
|
39 |
| - <input name="I" num_pins="1"/> |
40 |
| - <output name="O" num_pins="1"/> |
| 39 | + <input name="in" num_pins="1"/> |
| 40 | + <output name="out" num_pins="1"/> |
| 41 | + <equivalent_sites> |
| 42 | + <site pb_type="io_block"> |
| 43 | + <direct from="io_tile.in" to="io_block.in"/> |
| 44 | + <direct from="io_tile.out" to="io_block.out"/> |
| 45 | + </site> |
| 46 | + </equivalent_sites> |
| 47 | + <pinlocations pattern="spread"/> |
| 48 | + <fc in_type="frac" in_val="1.0" out_type="frac" out_val="1.0"/> |
| 49 | + </tile> |
| 50 | + <tile name="pass_through_tile"> |
| 51 | + <input name="in" num_pins="1"/> |
| 52 | + <output name="out" num_pins="1"/> |
41 | 53 | <equivalent_sites>
|
42 | 54 | <site pb_type="io_site_0">
|
43 |
| - <direct from="io_tile.I" to="io_site_0.I"/> |
44 |
| - <direct from="io_tile.O" to="io_site_0.O"/> |
| 55 | + <direct from="pass_through_tile.in" to="io_site_0.in"/> |
| 56 | + <direct from="pass_through_tile.out" to="io_site_0.out"/> |
45 | 57 | </site>
|
46 | 58 | <site pb_type="io_site_1">
|
47 |
| - <direct from="io_tile.I" to="io_site_1.I"/> |
48 |
| - <direct from="io_tile.O" to="io_site_1.O"/> |
| 59 | + <direct from="pass_through_tile.in" to="io_site_1.in"/> |
| 60 | + <direct from="pass_through_tile.out" to="io_site_1.out"/> |
49 | 61 | </site>
|
50 | 62 | <site pb_type="io_site_2">
|
51 |
| - <direct from="io_tile.I" to="io_site_2.I"/> |
52 |
| - <direct from="io_tile.O" to="io_site_2.O"/> |
| 63 | + <direct from="pass_through_tile.in" to="io_site_2.in"/> |
| 64 | + <direct from="pass_through_tile.out" to="io_site_2.out"/> |
53 | 65 | </site>
|
54 | 66 | <site pb_type="io_site_3">
|
55 |
| - <direct from="io_tile.I" to="io_site_3.I"/> |
56 |
| - <direct from="io_tile.O" to="io_site_3.O"/> |
| 67 | + <direct from="pass_through_tile.in" to="io_site_3.in"/> |
| 68 | + <direct from="pass_through_tile.out" to="io_site_3.out"/> |
57 | 69 | </site>
|
58 | 70 | </equivalent_sites>
|
59 |
| - <pinlocations pattern="custom"> |
60 |
| - <loc side="top" xoffset="0" yoffset="0">io_tile.I io_tile.O</loc> |
61 |
| - <loc side="left" xoffset="0" yoffset="0">io_tile.I io_tile.O</loc> |
62 |
| - <loc side="bottom" xoffset="0" yoffset="0">io_tile.I io_tile.O</loc> |
63 |
| - <loc side="right" xoffset="0" yoffset="0">io_tile.I io_tile.O</loc> |
64 |
| - </pinlocations> |
| 71 | + <pinlocations pattern="spread"/> |
65 | 72 | <fc in_type="frac" in_val="1.0" out_type="frac" out_val="1.0"/>
|
66 | 73 | </tile>
|
67 | 74 | </tiles>
|
68 | 75 | <complexblocklist>
|
69 |
| - <pb_type name="io_site_0"> |
70 |
| - <input name="I" num_pins="1"/> |
71 |
| - <output name="O" num_pins="1"/> |
72 |
| - <mode name="INOUT"> |
73 |
| - <pb_type blif_model=".subckt IO_0" name="io_0" num_pb="1"> |
74 |
| - <input name="I" num_pins="1"/> |
75 |
| - <output name="O" num_pins="1"/> |
76 |
| - <delay_constant max="1.667e-9" in_port="io_0.I" out_port="io_0.O"/> |
77 |
| - </pb_type> |
78 |
| - <interconnect> |
79 |
| - <direct input="io_site_0.I" name="i_0" output="io_0.I"/> |
80 |
| - <direct input="io_0.O" name="o_0" output="io_site_0.O"/> |
81 |
| - </interconnect> |
82 |
| - </mode> |
| 76 | + <pb_type name="io_block"> |
| 77 | + <input name="in" num_pins="1"/> |
| 78 | + <output name="out" num_pins="1"/> |
83 | 79 | <mode name="IN">
|
84 | 80 | <pb_type blif_model=".input" name="input_0" num_pb="1">
|
85 | 81 | <output name="inpad" num_pins="1"/>
|
86 | 82 | </pb_type>
|
87 | 83 | <interconnect>
|
88 |
| - <direct input="input_0.inpad" name="i_0" output="io_site_0.O"/> |
| 84 | + <direct input="input_0.inpad" name="i_0" output="io_block.out"/> |
89 | 85 | </interconnect>
|
90 | 86 | </mode>
|
91 | 87 | <mode name="OUT">
|
92 | 88 | <pb_type blif_model=".output" name="output_0" num_pb="1">
|
93 | 89 | <input name="outpad" num_pins="1"/>
|
94 | 90 | </pb_type>
|
95 | 91 | <interconnect>
|
96 |
| - <direct input="io_site_0.I" name="o_0" output="output_0.outpad"/> |
| 92 | + <direct input="io_block.in" name="o_0" output="output_0.outpad"/> |
97 | 93 | </interconnect>
|
98 | 94 | </mode>
|
99 | 95 | </pb_type>
|
100 |
| - <pb_type name="io_site_1"> |
101 |
| - <input name="I" num_pins="1"/> |
102 |
| - <output name="O" num_pins="1"/> |
| 96 | + <pb_type name="io_site_0"> |
| 97 | + <input name="in" num_pins="1"/> |
| 98 | + <output name="out" num_pins="1"/> |
103 | 99 | <mode name="INOUT">
|
104 |
| - <pb_type blif_model=".subckt IO_1" name="io_1" num_pb="1"> |
105 |
| - <input name="I" num_pins="1"/> |
106 |
| - <output name="O" num_pins="1"/> |
107 |
| - <delay_constant max="1.667e-9" in_port="io_1.I" out_port="io_1.O"/> |
108 |
| - </pb_type> |
109 |
| - <interconnect> |
110 |
| - <direct input="io_site_1.I" name="i_1" output="io_1.I"/> |
111 |
| - <direct input="io_1.O" name="o_1" output="io_site_1.O"/> |
112 |
| - </interconnect> |
113 |
| - </mode> |
114 |
| - <mode name="IN"> |
115 |
| - <pb_type blif_model=".input" name="input_1" num_pb="1"> |
116 |
| - <output name="inpad" num_pins="1"/> |
| 100 | + <pb_type blif_model=".subckt IO_0" name="io_0" num_pb="1"> |
| 101 | + <input name="in" num_pins="1"/> |
| 102 | + <output name="out" num_pins="1"/> |
| 103 | + <delay_constant max="1.667e-9" in_port="io_0.in" out_port="io_0.out"/> |
117 | 104 | </pb_type>
|
118 | 105 | <interconnect>
|
119 |
| - <direct input="input_1.inpad" name="i_1" output="io_site_1.O"/> |
| 106 | + <direct input="io_site_0.in" name="i_0" output="io_0.in"/> |
| 107 | + <direct input="io_0.out" name="o_0" output="io_site_0.out"/> |
120 | 108 | </interconnect>
|
121 | 109 | </mode>
|
122 |
| - <mode name="OUT"> |
123 |
| - <pb_type blif_model=".output" name="output_1" num_pb="1"> |
124 |
| - <input name="outpad" num_pins="1"/> |
| 110 | + </pb_type> |
| 111 | + <pb_type name="io_site_1"> |
| 112 | + <input name="in" num_pins="1"/> |
| 113 | + <output name="out" num_pins="1"/> |
| 114 | + <mode name="INOUT"> |
| 115 | + <pb_type blif_model=".subckt IO_1" name="io_1" num_pb="1"> |
| 116 | + <input name="in" num_pins="1"/> |
| 117 | + <output name="out" num_pins="1"/> |
| 118 | + <delay_constant max="1.667e-9" in_port="io_1.in" out_port="io_1.out"/> |
125 | 119 | </pb_type>
|
126 | 120 | <interconnect>
|
127 |
| - <direct input="io_site_1.I" name="o_1" output="output_1.outpad"/> |
| 121 | + <direct input="io_site_1.in" name="i_1" output="io_1.in"/> |
| 122 | + <direct input="io_1.out" name="o_1" output="io_site_1.out"/> |
128 | 123 | </interconnect>
|
129 | 124 | </mode>
|
130 | 125 | </pb_type>
|
131 | 126 | <pb_type name="io_site_2">
|
132 |
| - <input name="I" num_pins="1"/> |
133 |
| - <output name="O" num_pins="1"/> |
| 127 | + <input name="in" num_pins="1"/> |
| 128 | + <output name="out" num_pins="1"/> |
134 | 129 | <mode name="INOUT">
|
135 | 130 | <pb_type blif_model=".subckt IO_2" name="io_2" num_pb="1">
|
136 |
| - <input name="I" num_pins="1"/> |
137 |
| - <output name="O" num_pins="1"/> |
138 |
| - <delay_constant max="1.667e-9" in_port="io_2.I" out_port="io_2.O"/> |
139 |
| - </pb_type> |
140 |
| - <interconnect> |
141 |
| - <direct input="io_site_2.I" name="i_2" output="io_2.I"/> |
142 |
| - <direct input="io_2.O" name="o_2" output="io_site_2.O"/> |
143 |
| - </interconnect> |
144 |
| - </mode> |
145 |
| - <mode name="IN"> |
146 |
| - <pb_type blif_model=".input" name="input_2" num_pb="1"> |
147 |
| - <output name="inpad" num_pins="1"/> |
148 |
| - </pb_type> |
149 |
| - <interconnect> |
150 |
| - <direct input="input_2.inpad" name="i_2" output="io_site_2.O"/> |
151 |
| - </interconnect> |
152 |
| - </mode> |
153 |
| - <mode name="OUT"> |
154 |
| - <pb_type blif_model=".output" name="output_2" num_pb="1"> |
155 |
| - <input name="outpad" num_pins="1"/> |
| 131 | + <input name="in" num_pins="1"/> |
| 132 | + <output name="out" num_pins="1"/> |
| 133 | + <delay_constant max="1.667e-9" in_port="io_2.in" out_port="io_2.out"/> |
156 | 134 | </pb_type>
|
157 | 135 | <interconnect>
|
158 |
| - <direct input="io_site_2.I" name="o_2" output="output_2.outpad"/> |
| 136 | + <direct input="io_site_2.in" name="i_2" output="io_2.in"/> |
| 137 | + <direct input="io_2.out" name="o_2" output="io_site_2.out"/> |
159 | 138 | </interconnect>
|
160 | 139 | </mode>
|
161 | 140 | </pb_type>
|
162 | 141 | <pb_type name="io_site_3">
|
163 |
| - <input name="I" num_pins="1"/> |
164 |
| - <output name="O" num_pins="1"/> |
| 142 | + <input name="in" num_pins="1"/> |
| 143 | + <output name="out" num_pins="1"/> |
165 | 144 | <mode name="INOUT">
|
166 | 145 | <pb_type blif_model=".subckt IO_3" name="io_3" num_pb="1">
|
167 |
| - <input name="I" num_pins="1"/> |
168 |
| - <output name="O" num_pins="1"/> |
169 |
| - <delay_constant max="1.667e-9" in_port="io_3.I" out_port="io_3.O"/> |
170 |
| - </pb_type> |
171 |
| - <interconnect> |
172 |
| - <direct input="io_site_3.I" name="i_3" output="io_3.I"/> |
173 |
| - <direct input="io_3.O" name="o_3" output="io_site_3.O"/> |
174 |
| - </interconnect> |
175 |
| - </mode> |
176 |
| - <mode name="IN"> |
177 |
| - <pb_type blif_model=".input" name="input_3" num_pb="1"> |
178 |
| - <output name="inpad" num_pins="1"/> |
179 |
| - </pb_type> |
180 |
| - <interconnect> |
181 |
| - <direct input="input_3.inpad" name="i_3" output="io_site_3.O"/> |
182 |
| - </interconnect> |
183 |
| - </mode> |
184 |
| - <mode name="OUT"> |
185 |
| - <pb_type blif_model=".output" name="output_3" num_pb="1"> |
186 |
| - <input name="outpad" num_pins="1"/> |
| 146 | + <input name="in" num_pins="1"/> |
| 147 | + <output name="out" num_pins="1"/> |
| 148 | + <delay_constant max="1.667e-9" in_port="io_3.in" out_port="io_3.out"/> |
187 | 149 | </pb_type>
|
188 | 150 | <interconnect>
|
189 |
| - <direct input="io_site_3.I" name="o_3" output="output_3.outpad"/> |
| 151 | + <direct input="io_site_3.in" name="i_3" output="io_3.in"/> |
| 152 | + <direct input="io_3.out" name="o_3" output="io_site_3.out"/> |
190 | 153 | </interconnect>
|
191 | 154 | </mode>
|
192 | 155 | </pb_type>
|
193 | 156 | </complexblocklist>
|
194 | 157 | <layout>
|
195 |
| - <fixed_layout name="TEST" width="4" height="4"> |
| 158 | + <fixed_layout name="TEST" width="5" height="5"> |
196 | 159 | <single priority="1" type="io_tile" x="0" y="0"/>
|
197 | 160 | <single priority="1" type="io_tile" x="0" y="1"/>
|
198 | 161 | <single priority="1" type="io_tile" x="0" y="2"/>
|
199 | 162 | <single priority="1" type="io_tile" x="0" y="3"/>
|
200 |
| - <single priority="1" type="io_tile" x="1" y="0"/> |
201 |
| - <single priority="1" type="io_tile" x="1" y="1"/> |
202 |
| - <single priority="1" type="io_tile" x="1" y="2"/> |
203 |
| - <single priority="1" type="io_tile" x="1" y="3"/> |
204 |
| - <single priority="1" type="io_tile" x="2" y="0"/> |
205 |
| - <single priority="1" type="io_tile" x="2" y="1"/> |
206 |
| - <single priority="1" type="io_tile" x="2" y="2"/> |
207 |
| - <single priority="1" type="io_tile" x="2" y="3"/> |
| 163 | + <single priority="1" type="pass_through_tile" x="1" y="0"/> |
| 164 | + <single priority="1" type="pass_through_tile" x="1" y="1"/> |
| 165 | + <single priority="1" type="pass_through_tile" x="1" y="2"/> |
| 166 | + <single priority="1" type="pass_through_tile" x="1" y="3"/> |
| 167 | + <single priority="1" type="pass_through_tile" x="2" y="0"/> |
| 168 | + <single priority="1" type="pass_through_tile" x="2" y="1"/> |
| 169 | + <single priority="1" type="pass_through_tile" x="2" y="2"/> |
| 170 | + <single priority="1" type="pass_through_tile" x="2" y="3"/> |
208 | 171 | <single priority="1" type="io_tile" x="3" y="0"/>
|
209 | 172 | <single priority="1" type="io_tile" x="3" y="1"/>
|
210 | 173 | <single priority="1" type="io_tile" x="3" y="2"/>
|
|
233 | 196 | <cb type="pattern">1 1 1 1 1 1 1 1 1 1 1 1</cb>
|
234 | 197 | </segment>
|
235 | 198 | </segmentlist>
|
| 199 | + <directlist> |
| 200 | + <direct from_pin="pass_through_tile.out" name="gno" to_pin="io_tile.in" x_offset="-1" y_offset="0" z_offset="0"/> |
| 201 | + <direct from_pin="io_tile.out" name="gna" to_pin="pass_through_tile.in" x_offset="-1" y_offset="0" z_offset="0"/> |
| 202 | + </directlist> |
236 | 203 | </architecture>
|
0 commit comments