2 from __future__
import print_function
7 from helpers
.io
import ErrorMessage
8 from helpers
.io
import WarningMessage
9 from helpers
import trace
, l
11 from Hurricane
import DbU
12 from Hurricane
import Pin
13 from Hurricane
import Transformation
14 from plugins
.alpha
.block
.block
import Block
15 from plugins
.alpha
.block
.configuration
import IoPin
18 af
= CRL
.AllianceFramework
.get()
22 def scriptMain ( **kw
):
23 """The mandatory function that Coriolis CGT/Unicorn will look for."""
34 (IW | AB
, 'clk' , 0 ),
35 (IW | AB
, 'cu_issue_i' , 0 ),
36 (IW | AB
, 'oper_i_alu_alu0_imm_data_imm_ok' , 0 ),
37 (IW | AB
, 'oper_i_alu_alu0_invert_a' , 0 ),
38 (IW | AB
, 'oper_i_alu_alu0_invert_out' , 0 ),
39 (IW | AB
, 'oper_i_alu_alu0_is_32bit' , 0 ),
40 (IW | AB
, 'oper_i_alu_alu0_is_signed' , 0 ),
41 (IW | AB
, 'oper_i_alu_alu0_oe_oe' , 0 ),
42 (IW | AB
, 'oper_i_alu_alu0_oe_oe_ok' , 0 ),
43 (IW | AB
, 'oper_i_alu_alu0_output_carry' , 0 ),
44 (IW | AB
, 'oper_i_alu_alu0_rc_rc' , 0 ),
45 (IW | AB
, 'oper_i_alu_alu0_rc_rc_ok' , 0 ),
46 (IW | AB
, 'oper_i_alu_alu0_write_cr0' , 0 ),
47 (IW | AB
, 'oper_i_alu_alu0_zero_a' , 0 ),
48 (IW | AB
, 'rst' , 0 ),
49 (IW | AB
, 'src3_i' , 0 ),
50 (IW | AB
, 'oper_i_alu_alu0_input_carry({})' , 0, l( 10.0), 2),
51 (IW | AB
, 'src4_i({})' , 0, l( 10.0), 2),
52 (IW | AB
, 'oper_i_alu_alu0_data_len({})' , 0, l( 10.0), 4),
53 (IW | AB
, 'cu_rd_go_i({})' , 0, l( 10.0), 4),
54 (IW | AB
, 'cu_rdmaskn_i({})' , 0, l( 10.0), 4),
55 (IW | AB
, 'cu_wr_go_i({})' , 0, l( 10.0), 5),
56 (IW | AB
, 'oper_i_alu_alu0_insn_type({})' , 0, l( 10.0), 7),
57 (IW | AB
, 'oper_i_alu_alu0_fn_unit({})' , 0, l( 10.0), 11),
58 (IW | AB
, 'oper_i_alu_alu0_insn({})' , 0, l( 10.0), 32),
59 (IW | AB
, 'oper_i_alu_alu0_imm_data_imm({})', 0, l( 15.0), 64),
60 (IS
, 'src1_i({})' , l(10), l( 15.0), 64),
61 (IS
, 'src2_i({})' , l(15), l( 15.0), 64),
62 (IN
, 'dest1_o({})' , l(20), l( 15.0), 64),
63 (IE | AE
, 'cu_busy_o' , 0 ),
64 (IE | AE
, 'cr_a_ok' , 0 ),
65 (IE | AE
, 'dest5_o' , 0 ),
66 (IE | AE
, 'o_ok' , 0 ),
67 (IE | AE
, 'xer_ca_ok' , 0 ),
68 (IE | AE
, 'xer_ov_ok' , 0 ),
69 (IE | AE
, 'xer_so_ok' , 0 ),
70 (IE | AE
, 'dest3_o({})' , 0, l( 20.0), 2),
71 (IE | AE
, 'dest4_o({})' , 0, l( 20.0), 2),
72 (IE | AE
, 'dest2_o({})' , 0, l( 20.0), 4),
73 (IE | AE
, 'cu_rd_rel_o({})' , 0, l( 20.0), 4),
74 (IE | AE
, 'cu_wr_rel_o({})' , 0, l( 20.0), 5),
79 helpers
.setTraceLevel( 550 )
80 cell
, editor
= plugins
.kwParseMain( **kw
)
82 alu0
= af
.getCell( 'alu0', CRL
.Catalog
.State
.Views
)
83 blockAlu0
= Block
.create (alu0
, ioPins
= alup
)
84 blockAlu0
.state
.cfg
.etesian
.spaceMargin
= 0.05
85 blockAlu0
.state
.fixedHeight
= l(5000)
86 blockAlu0
.state
.useSpares
= False
87 #rvalue = blockAlu0.build()
90 (IN
, 'clk' , l(4500.0) ),
91 (IW | AB
, 'cu_issue_i' , 0, l(20) ),
92 (IW | AB
, 'oper_i_alu_div0_imm_data_imm_ok' , 0, l(20) ),
93 (IW | AB
, 'oper_i_alu_div0_invert_a' , 0, l(20) ),
94 (IW | AB
, 'oper_i_alu_div0_invert_out' , 0, l(20) ),
95 (IW | AB
, 'oper_i_alu_div0_is_32bit' , 0, l(20) ),
96 (IW | AB
, 'oper_i_alu_div0_is_signed' , 0, l(20) ),
97 (IW | AB
, 'oper_i_alu_div0_oe_oe' , 0, l(20) ),
98 (IW | AB
, 'oper_i_alu_div0_oe_oe_ok' , 0, l(20) ),
99 (IW | AB
, 'oper_i_alu_div0_rc_rc' , 0, l(20) ),
100 (IW | AB
, 'oper_i_alu_div0_rc_rc_ok' , 0, l(20) ),
101 (IW | AB
, 'oper_i_alu_div0_write_cr0' , 0, l(20) ),
102 (IW | AB
, 'oper_i_alu_div0_zero_a' , 0, l(20) ),
103 (IW | AB
, 'rst' , 0, l(20) ),
104 (IW | AB
, 'src3_i' , 0, l(20) ),
105 (IW | AB
, 'cu_rd_go_i({})' , 0, l(10.0), 3),
106 (IW | AB
, 'cu_rdmaskn_i({})' , 0, l(10.0), 3),
107 (IW | AB
, 'cu_wr_go_i({})' , 0, l(10.0), 4),
108 (IW | AB
, 'oper_i_alu_div0_insn_type({})' , 0, l(10.0), 7),
109 (IW | AB
, 'oper_i_alu_div0_fn_unit({})' , 0, l(10.0), 11),
110 (IW | AB
, 'oper_i_alu_div0_insn({})' , 0, l(10.0), 32),
111 (IW | AB
, 'oper_i_alu_div0_imm_data_imm({})', 0, l(15.0), 64),
112 (IS | AB
, 'src1_i({})' , l(10.0), l(50.0), 64),
113 (IS | AB
, 'src2_i({})' , l(20.0), l(50.0), 64),
114 (IE | AE
, 'cu_busy_o' , 0 ),
115 (IE | AE
, 'cr_a_ok' , 0 ),
116 (IE | AE
, 'dest4_o' , 0 ),
117 (IE | AE
, 'o_ok' , 0 ),
118 (IE | AE
, 'xer_ov_ok' , 0 ),
119 (IE | AE
, 'xer_so_ok' , 0 ),
120 (IE | AE
, 'dest3_o({})' , 0, l( 20.0), 2),
121 (IE | AE
, 'dest2_o({})' , 0, l( 20.0), 4),
122 (IE | AE
, 'cu_rd_rel_o({})' , 0, l( 20.0), 3),
123 (IE | AE
, 'cu_wr_rel_o({})' , 0, l( 20.0), 4),
124 (IN | AE
, 'dest1_o({})' , 0, l( 30.0), 64),
126 div0
= af
.getCell( 'div0', CRL
.Catalog
.State
.Views
)
127 blockDiv0
= Block
.create ( div0
, ioPins
=divp
)
128 blockDiv0
.state
.cfg
.etesian
.uniformDensity
= True
129 blockDiv0
.state
.cfg
.etesian
.spaceMargin
= 0.10
130 blockDiv0
.state
.cfg
.katana
.searchHalo
= 1
131 blockDiv0
.state
.fixedHeight
= l(5000)
132 blockDiv0
.state
.useSpares
= False
133 #rvalue = blockDiv0.build()
136 (IN
, 'clk' , l(4500.0) ),
137 (IW | AB
, 'cu_issue_i' , 0, l(20) ),
138 (IW | AB
, 'oper_i_alu_mul0_imm_data_imm_ok' , 0, l(20) ),
139 (IW | AB
, 'oper_i_alu_mul0_invert_a' , 0, l(20) ),
140 (IW | AB
, 'oper_i_alu_mul0_invert_out' , 0, l(20) ),
141 (IW | AB
, 'oper_i_alu_mul0_is_32bit' , 0, l(20) ),
142 (IW | AB
, 'oper_i_alu_mul0_is_signed' , 0, l(20) ),
143 (IW | AB
, 'oper_i_alu_mul0_oe_oe' , 0, l(20) ),
144 (IW | AB
, 'oper_i_alu_mul0_oe_oe_ok' , 0, l(20) ),
145 (IW | AB
, 'oper_i_alu_mul0_rc_rc' , 0, l(20) ),
146 (IW | AB
, 'oper_i_alu_mul0_rc_rc_ok' , 0, l(20) ),
147 (IW | AB
, 'oper_i_alu_mul0_write_cr0' , 0, l(20) ),
148 (IW | AB
, 'oper_i_alu_mul0_zero_a' , 0, l(20) ),
149 (IW | AB
, 'rst' , 0, l(20) ),
150 (IW | AB
, 'src3_i' , 0, l(20) ),
151 (IW | AB
, 'cu_rd_go_i({})' , 0, l(10.0), 3),
152 (IW | AB
, 'cu_rdmaskn_i({})' , 0, l(10.0), 3),
153 (IW | AB
, 'cu_wr_go_i({})' , 0, l(10.0), 4),
154 (IW | AB
, 'oper_i_alu_mul0_insn_type({})' , 0, l(10.0), 7),
155 (IW | AB
, 'oper_i_alu_mul0_fn_unit({})' , 0, l(10.0), 11),
156 (IW | AB
, 'oper_i_alu_mul0_insn({})' , 0, l(10.0), 32),
157 (IW | AB
, 'oper_i_alu_mul0_imm_data_imm({})', 0, l(15.0), 64),
158 (IS | AB
, 'src1_i({})' , l(10.0), l(50.0), 64),
159 (IS | AB
, 'src2_i({})' , l(20.0), l(50.0), 64),
160 (IE | AE
, 'cu_busy_o' , 0 ),
161 (IE | AE
, 'cr_a_ok' , 0 ),
162 (IE | AE
, 'dest4_o' , 0 ),
163 (IE | AE
, 'o_ok' , 0 ),
164 (IE | AE
, 'xer_ov_ok' , 0 ),
165 (IE | AE
, 'xer_so_ok' , 0 ),
166 (IE | AE
, 'dest3_o({})' , 0, l( 20.0), 2),
167 (IE | AE
, 'dest2_o({})' , 0, l( 20.0), 4),
168 (IE | AE
, 'cu_rd_rel_o({})' , 0, l( 20.0), 3),
169 (IE | AE
, 'cu_wr_rel_o({})' , 0, l( 20.0), 4),
170 (IN | AE
, 'dest1_o({})' , 0, l( 30.0), 64),
172 mul0
= af
.getCell( 'mul0', CRL
.Catalog
.State
.Views
)
173 blockMul0
= Block
.create ( mul0
, ioPins
=mulp
)
174 blockMul0
.state
.cfg
.etesian
.uniformDensity
= True
175 blockMul0
.state
.cfg
.etesian
.spaceMargin
= 0.10
176 blockMul0
.state
.cfg
.katana
.searchHalo
= 1
177 blockMul0
.state
.fixedHeight
= l(5000)
178 blockMul0
.state
.useSpares
= False
179 #rvalue = blockMul0.build()
182 (IN
, 'clk' , l( 805.0) ),
183 (IW
, 'cu_issue_i' , l( 30.0) ),
184 (IW
, 'oper_i_alu_branch0_imm_data_imm_ok' , l( 40.0) ),
185 (IW
, 'oper_i_alu_branch0_is_32bit' , l( 70.0) ),
186 (IW
, 'oper_i_alu_branch0_lk' , l( 150.0) ),
187 (IW
, 'rst' , l( 160.0) ),
188 (IW
, 'src3_i({})' , l( 180.0), l( 10.0), 4),
189 (IW
, 'cu_rd_go_i({})' , l( 270.0), l( 10.0), 3),
190 (IW
, 'cu_rdmaskn_i({})' , l( 310.0), l( 10.0), 3),
191 (IW
, 'cu_wr_go_i({})' , l( 350.0), l( 10.0), 3),
192 (IW
, 'oper_i_alu_branch0_insn_type({})' , l( 400.0), l( 10.0), 7),
193 (IW
, 'oper_i_alu_branch0_fn_unit({})' , l( 470.0), l( 10.0), 11),
194 (IW
, 'oper_i_alu_branch0_insn({})' , l( 580.0), l( 10.0), 32),
195 (IW
, 'oper_i_alu_branch0_imm_data_imm({})', l( 900.0), l( 10.0), 64),
196 (IW
, 'oper_i_alu_branch0_cia({})' , l(1540.0), l( 10.0), 64),
197 (IS
, 'src1_i({})' , l( 10.0), l( 20.0), 64),
198 (IS
, 'src2_i({})' , l( 15.0), l( 20.0), 64),
199 (IE
, 'cu_busy_o' , l(3500.0) ),
200 (IE
, 'fast1_ok' , l(3520.0) ),
201 (IE
, 'fast2_ok' , l(3540.0) ),
202 (IE
, 'nia_ok' , l(3560.0) ),
203 (IE
, 'dest2_o({})' , l(3580.0), l( 10.0), 64),
204 (IE
, 'dest3_o({})' , l(4220.0), l( 10.0), 64),
205 (IE
, 'cu_rd_rel_o({})' , l(4860.0), l( 20.0), 3),
206 (IE
, 'cu_wr_rel_o({})' , l(4920.0), l( 20.0), 3),
207 (IN
, 'dest1_o({})' , l( 500.0), l( 10.0), 64),
209 branch0
= af
.getCell( 'branch0', CRL
.Catalog
.State
.Views
)
210 blockBranch0
= Block
.create ( branch0
, ioPins
=branchp
)
211 blockBranch0
.state
.cfg
.etesian
.spaceMargin
= 0.07
212 blockBranch0
.state
.fixedHeight
= l(5000)
213 blockBranch0
.state
.useSpares
= False
214 #rvalue = blockBranch0.build()
216 cr0
= af
.getCell( 'cr0', CRL
.Catalog
.State
.Views
)
217 blockCr0
= Block
.create \
219 , ioPins
=[ (IN
, 'clk' , l( 805.0) )
220 , (IW
, 'cu_issue_i' , l( 30.0) )
221 , (IW
, 'oper_i_alu_cr0_read_cr_whole' , l( 40.0) )
222 , (IW
, 'oper_i_alu_cr0_write_cr_whole' , l( 70.0) )
223 , (IW
, 'rst' , l( 160.0) )
224 , (IW
, 'src4_i({})' , l( 180.0), l( 10.0), 4)
225 , (IW
, 'src5_i({})' , l( 220.0), l( 10.0), 4)
226 , (IW
, 'src6_i({})' , l( 260.0), l( 10.0), 4)
227 , (IW
, 'cu_rd_go_i({})' , l( 300.0), l( 10.0), 6)
228 , (IW
, 'cu_rdmaskn_i({})' , l( 360.0), l( 10.0), 6)
229 , (IW
, 'cu_wr_go_i({})' , l( 420.0), l( 10.0), 3)
230 , (IW
, 'oper_i_alu_cr0_insn_type({})' , l( 450.0), l( 10.0), 7)
231 , (IW
, 'oper_i_alu_cr0_fn_unit({})' , l( 520.0), l( 10.0), 11)
232 , (IW
, 'oper_i_alu_cr0_insn({})' , l( 630.0), l( 10.0), 32)
233 , (IS
, 'src1_i({})' , l( 10.0), l( 10.0), 64)
234 , (IS
, 'src2_i({})' , l( 15.0), l( 10.0), 64)
235 , (IE
, 'src3_i({})' , l( 10.0), l( 20.0), 32)
236 , (IE
, 'cu_busy_o' , l(4320.0) )
237 , (IE
, 'cr_a_ok' , l(4340.0) )
238 , (IE
, 'full_cr_ok' , l(4360.0) )
239 , (IE
, 'o_ok' , l(4380.0) )
240 , (IE
, 'dest2_o({})' , l(4400.0), l( 10.0), 32)
241 , (IE
, 'dest3_o({})' , l(4720.0), l( 10.0), 4)
242 , (IE
, 'cu_rd_rel_o({})' , l(4800.0), l( 20.0), 6)
243 , (IE
, 'cu_wr_rel_o({})' , l(4920.0), l( 20.0), 3)
244 , (IN
, 'dest1_o({})' , l( 100.0), l( 10.0), 64)
247 blockCr0
.state
.cfg
.etesian
.spaceMargin
= 0.10
248 blockCr0
.state
.fixedHeight
= l(5000)
249 blockCr0
.state
.useSpares
= False
250 #rvalue = blockCr0.build()
252 ldst0
= af
.getCell( 'ldst0', CRL
.Catalog
.State
.Views
)
253 blockLdst0
= Block
.create \
255 , ioPins
=[ (IN
, 'clk' , l(805.0) )
256 , (IW | AB
, 'cu_ad_go_i' , 0, l(20), 1)
257 , (IW | AB
, 'cu_issue_i' , 0, l(20), 1)
258 , (IW | AB
, 'ldst_port0_addr_exc_o' , 0, l(20), 1)
259 , (IW | AB
, 'ldst_port0_addr_ok_o' , 0, l(20), 1)
260 , (IW | AB
, 'ldst_port0_ld_data_o_ok' , 0, l(20), 1)
261 , (IW | AB
, 'oper_i_ldst_ldst0_byte_reverse' , 0, l(20), 1)
262 , (IW | AB
, 'oper_i_ldst_ldst0_imm_data_imm_ok' , 0, l(20), 1)
263 , (IW | AB
, 'oper_i_ldst_ldst0_is_32bit' , 0, l(20), 1)
264 , (IW | AB
, 'oper_i_ldst_ldst0_is_signed' , 0, l(20), 1)
265 , (IW | AB
, 'oper_i_ldst_ldst0_oe_oe' , 0, l(20), 1)
266 , (IW | AB
, 'oper_i_ldst_ldst0_oe_oe_ok' , 0, l(20), 1)
267 , (IW | AB
, 'oper_i_ldst_ldst0_rc_rc' , 0, l(20), 1)
268 , (IW | AB
, 'oper_i_ldst_ldst0_rc_rc_ok' , 0, l(20), 1)
269 , (IW | AB
, 'oper_i_ldst_ldst0_sign_extend' , 0, l(20), 1)
270 , (IW | AB
, 'oper_i_ldst_ldst0_zero_a' , 0, l(20), 1)
271 , (IW | AB
, 'rst' , 0, l(20), 1)
272 , (IW | AB
, 'cu_st_go_i' , 0, l(20), 1)
273 , (IW | AB
, 'oper_i_ldst_ldst0_ldst_mode({})' , 0, l(20), 2)
274 , (IW | AB
, 'cu_rd_go_i({})' , 0, l(20), 3)
275 , (IW | AB
, 'cu_rdmaskn_i({})' , 0, l(20), 3)
276 , (IW | AB
, 'cu_wr_go_i({})' , 0, l(20), 2)
277 , (IW | AB
, 'oper_i_ldst_ldst0_data_len({})' , 0, l(20), 4)
278 , (IW | AB
, 'oper_i_ldst_ldst0_insn_type({})' , 0, l(20), 7)
279 , (IW | AB
, 'ldst_port0_ld_data_o({})' , 0, l(20), 64)
280 , (IW | AB
, 'oper_i_ldst_ldst0_imm_data_imm({})' , 0, l(20), 64)
281 , (IS | AB
, 'src1_i({})' , 0, l(10), 64)
282 , (IS | AB
, 'src2_i({})' , 0, l(5), 64)
283 , (IE | AE
, 'src3_i({})' , 0, 0, 64)
284 , (IE | AE
, 'cu_busy_o' , 0, l(20), 1)
285 , (IE | AE
, 'cu_ad_rel_o' , 0, l(20), 1)
286 , (IE | AE
, 'ldst_port0_addr_i_ok' , 0, l(20), 1)
287 , (IE | AE
, 'ldst_port0_is_ld_i' , 0, l(20), 1)
288 , (IE | AE
, 'ldst_port0_is_st_i' , 0, l(20), 1)
289 , (IE | AE
, 'load_mem_o' , 0, l(20), 1)
290 , (IE | AE
, 'cu_st_rel_o' , 0, l(20), 1)
291 , (IE | AE
, 'stwd_mem_o' , 0, l(20), 1)
292 , (IE | AE
, 'ea({})' , 0, l(20), 64)
293 , (IE | AE
, 'ldst_port0_st_data_i({})' , 0, l(20), 64)
294 , (IE | AE
, 'cu_rd_rel_o({})' , 0, 0, 3)
295 , (IE | AE
, 'cu_wr_rel_o({})' , 0, 0, 2)
296 , (IE | AE
, 'ldst_port0_addr_i_95' , 0, l(20), 1)
297 , (IE | AE
, 'ldst_port0_addr_i_{}' , 0, l(20), 64)
298 , (IN | AE
, 'o({})' , 0, 0, 64)
301 blockLdst0
.state
.cfg
.etesian
.uniformDensity
= True
302 blockLdst0
.state
.cfg
.etesian
.spaceMargin
= 0.20
303 blockLdst0
.state
.cfg
.katana
.searchHalo
= 1
304 blockLdst0
.state
.cfg
.katana
.hTracksReservedLocal
= 10
305 blockLdst0
.state
.cfg
.katana
.vTracksReservedLocal
= 10
306 blockLdst0
.state
.fixedHeight
= l(5000)
307 blockLdst0
.state
.useSpares
= False
308 #rvalue = blockLdst0.build()
310 logical0
= af
.getCell( 'logical0', CRL
.Catalog
.State
.Views
)
311 blockLogical0
= Block
.create \
313 , ioPins
=[ (IN
, 'clk' , l(805.0) )
314 , (IW | AB
, 'cu_issue_i' , 0, l(20), 1)
315 , (IW | AB
, 'oper_i_alu_logical0_imm_data_imm_ok' , 0, l(20), 1)
316 , (IW | AB
, 'oper_i_alu_logical0_invert_a' , 0, l(20), 1)
317 , (IW | AB
, 'oper_i_alu_logical0_invert_out' , 0, l(20), 1)
318 , (IW | AB
, 'oper_i_alu_logical0_is_32bit' , 0, l(20), 1)
319 , (IW | AB
, 'oper_i_alu_logical0_is_signed' , 0, l(20), 1)
320 , (IW | AB
, 'oper_i_alu_logical0_oe_oe' , 0, l(20), 1)
321 , (IW | AB
, 'oper_i_alu_logical0_oe_oe_ok' , 0, l(20), 1)
322 , (IW | AB
, 'oper_i_alu_logical0_output_carry' , 0, l(20), 1)
323 , (IW | AB
, 'oper_i_alu_logical0_rc_rc' , 0, l(20), 1)
324 , (IW | AB
, 'oper_i_alu_logical0_rc_rc_ok' , 0, l(20), 1)
325 , (IW | AB
, 'oper_i_alu_logical0_write_cr0' , 0, l(20), 1)
326 , (IW | AB
, 'oper_i_alu_logical0_zero_a' , 0, l(20), 1)
327 , (IW | AB
, 'rst' , 0, l(20), 1)
328 , (IW | AB
, 'oper_i_alu_logical0_input_carry({})' , 0, l(20), 2)
329 , (IW | AB
, 'cu_rd_go_i({})' , 0, l(20), 2)
330 , (IW | AB
, 'cu_rdmaskn_i({})' , 0, l(20), 2)
331 , (IW | AB
, 'cu_wr_go_i({})' , 0, l(20), 3)
332 , (IW | AB
, 'oper_i_alu_logical0_data_len({})' , 0, l(20), 4)
333 , (IW | AB
, 'oper_i_alu_logical0_insn_type({})' , 0, l(20), 7)
334 , (IW | AB
, 'oper_i_alu_logical0_fn_unit({})' , 0, l(20), 11)
335 , (IW | AB
, 'oper_i_alu_logical0_insn({})' , 0, l(20), 32)
336 , (IW | AB
, 'oper_i_alu_logical0_imm_data_imm({})', 0, l(20), 64)
337 , (IS | AB
, 'src1_i({})' , 0, l(10), 64)
338 , (IS | AB
, 'src2_i({})' , 0, l(5), 64)
339 , (IE | AE
, 'cu_busy_o' , 0, l(20), 1)
340 , (IE | AE
, 'cr_a_ok' , 0, l(20), 1)
341 , (IE | AE
, 'o_ok' , 0, l(20), 1)
342 , (IE | AE
, 'xer_ca_ok' , 0, l(20), 1)
343 , (IE | AE
, 'cu_rd_rel_o({})' , 0, 0, 2)
344 , (IE | AE
, 'cu_wr_rel_o({})' , 0, 0, 3)
345 , (IN | AE
, 'dest3_o({})' , 0, 0, 2)
346 , (IN | AE
, 'dest2_o({})' , 0, 0, 4)
347 , (IN | AE
, 'dest1_o({})' , 0, 0, 64)
350 blockLogical0
.state
.cfg
.etesian
.uniformDensity
= True
351 blockLogical0
.state
.cfg
.etesian
.spaceMargin
= 0.07
352 blockLogical0
.state
.cfg
.katana
.searchHalo
= 1
353 blockLogical0
.state
.fixedHeight
= l(5000)
354 blockLogical0
.state
.useSpares
= False
355 #rvalue = blockLogical0.build()
357 shiftrot0
= af
.getCell( 'shiftrot0', CRL
.Catalog
.State
.Views
)
358 blockShiftrot0
= Block
.create \
360 , ioPins
=[ (IN
, 'clk' , l(805.0) )
361 , (IW | AB
, 'cu_issue_i' , 0, l(20), 1)
362 , (IW | AB
, 'oper_i_alu_shift_rot0_imm_data_imm_ok' , 0, l(20), 1)
363 , (IW | AB
, 'oper_i_alu_shift_rot0_input_cr' , 0, l(20), 1)
364 , (IW | AB
, 'oper_i_alu_shift_rot0_is_32bit' , 0, l(20), 1)
365 , (IW | AB
, 'oper_i_alu_shift_rot0_is_signed' , 0, l(20), 1)
366 , (IW | AB
, 'oper_i_alu_shift_rot0_oe_oe' , 0, l(20), 1)
367 , (IW | AB
, 'oper_i_alu_shift_rot0_oe_oe_ok' , 0, l(20), 1)
368 , (IW | AB
, 'oper_i_alu_shift_rot0_output_carry' , 0, l(20), 1)
369 , (IW | AB
, 'oper_i_alu_shift_rot0_output_cr' , 0, l(20), 1)
370 , (IW | AB
, 'oper_i_alu_shift_rot0_rc_rc' , 0, l(20), 1)
371 , (IW | AB
, 'oper_i_alu_shift_rot0_rc_rc_ok' , 0, l(20), 1)
372 , (IW | AB
, 'rst' , 0, l(20), 1)
373 , (IW | AB
, 'oper_i_alu_shift_rot0_input_carry({})' , 0, l(20), 2)
374 , (IW | AB
, 'src4_i({})' , 0, l(10), 2)
375 , (IW | AB
, 'cu_rd_go_i({})' , 0, l(20), 4)
376 , (IW | AB
, 'cu_rdmaskn_i({})' , 0, l(20), 4)
377 , (IW | AB
, 'cu_wr_go_i({})' , 0, l(20), 3)
378 , (IW | AB
, 'oper_i_alu_shift_rot0_insn_type({})' , 0, l(20), 7)
379 , (IW | AB
, 'oper_i_alu_shift_rot0_fn_unit({})' , 0, l(20), 11)
380 , (IW | AB
, 'oper_i_alu_shift_rot0_insn({})' , 0, l(20), 32)
381 , (IW | AB
, 'oper_i_alu_shift_rot0_imm_data_imm({})', 0, l(20), 64)
382 , (IW | AB
, 'src3_i({})' , 0, l(10), 64)
383 , (IS | AB
, 'src1_i({})' , 0, l(10), 64)
384 , (IS | AB
, 'src2_i({})' , 0, l(5), 64)
385 , (IE | AE
, 'cu_busy_o' , 0, l(20), 1)
386 , (IE | AE
, 'cr_a_ok' , 0, l(20), 1)
387 , (IE | AE
, 'o_ok' , 0, l(20), 1)
388 , (IE | AE
, 'xer_ca_ok' , 0, l(20), 1)
389 , (IE | AE
, 'cu_rd_rel_o({})' , 0, 0, 4)
390 , (IE | AE
, 'cu_wr_rel_o({})' , 0, 0, 3)
391 , (IN | AE
, 'dest3_o({})' , 0, 0, 2)
392 , (IN | AE
, 'dest2_o({})' , 0, 0, 4)
393 , (IN | AE
, 'dest1_o({})' , 0, 0, 64)
396 blockShiftrot0
.state
.cfg
.etesian
.uniformDensity
= True
397 blockShiftrot0
.state
.cfg
.etesian
.spaceMargin
= 0.7
398 blockShiftrot0
.state
.cfg
.katana
.searchHalo
= 1
399 blockShiftrot0
.state
.fixedHeight
= l(5000)
400 blockShiftrot0
.state
.useSpares
= False
401 #rvalue = blockShiftrot0.build()
403 spr0
= af
.getCell( 'spr0', CRL
.Catalog
.State
.Views
)
404 blockSpr0
= Block
.create \
406 , ioPins
=[ (IN
, 'clk' , l(805.0) )
407 , (IW | AB
, 'cu_issue_i' , 0, l(20), 1)
408 , (IW | AB
, 'oper_i_alu_spr0_is_32bit' , 0, l(20), 1)
409 , (IW | AB
, 'rst' , 0, l(20), 1)
410 , (IW | AB
, 'src4_i' , 0, l(10), 1)
411 , (IW | AB
, 'src5_i({})' , 0, l(10), 2)
412 , (IW | AB
, 'src6_i({})' , 0, l(10), 2)
413 , (IW | AB
, 'cu_rd_go_i({})' , 0, l(20), 6)
414 , (IW | AB
, 'cu_rdmaskn_i({})' , 0, l(20), 6)
415 , (IW | AB
, 'cu_wr_go_i({})' , 0, l(20), 6)
416 , (IW | AB
, 'oper_i_alu_spr0_insn_type({})', 0, l(20), 7)
417 , (IW | AB
, 'oper_i_alu_spr0_fn_unit({})' , 0, l(20), 11)
418 , (IW | AB
, 'oper_i_alu_spr0_insn({})' , 0, l(20), 32)
419 , (IW | AB
, 'src3_i({})' , 0, l(10), 64)
420 , (IS | AB
, 'src1_i({})' , 0, l(10), 64)
421 , (IS | AB
, 'src2_i({})' , 0, l(5), 64)
422 , (IE | AE
, 'cu_busy_o' , 0, l(20), 1)
423 , (IE | AE
, 'dest4_o' , 0, l(20), 1)
424 , (IE | AE
, 'fast1_ok' , 0, l(20), 1)
425 , (IE | AE
, 'o_ok' , 0, l(20), 1)
426 , (IE | AE
, 'spr1_ok' , 0, l(20), 1)
427 , (IE | AE
, 'xer_ca_ok' , 0, l(20), 1)
428 , (IE | AE
, 'xer_ov_ok' , 0, l(20), 1)
429 , (IE | AE
, 'xer_so_ok' , 0, l(20), 1)
430 , (IE | AE
, 'cu_rd_rel_o({})' , 0, 0, 6)
431 , (IE | AE
, 'cu_wr_rel_o({})' , 0, 0, 6)
432 , (IN | AE
, 'dest5_o({})' , 0, 0, 2)
433 , (IN | AE
, 'dest6_o({})' , 0, 0, 2)
434 , (IE | AE
, 'dest3_o({})' , 0, l(20), 64)
435 , (IE | AE
, 'dest2_o({})' , 0, l(20), 64)
436 , (IE | AE
, 'dest1_o({})' , 0, l(20), 64)
439 blockSpr0
.state
.cfg
.etesian
.uniformDensity
= True
440 blockSpr0
.state
.cfg
.etesian
.spaceMargin
= 0.5
441 blockSpr0
.state
.cfg
.katana
.searchHalo
= 1
442 blockSpr0
.state
.fixedHeight
= l(5000)
443 blockSpr0
.state
.useSpares
= False
444 #rvalue = blockSpr0.build()
446 trap0
= af
.getCell( 'trap0', CRL
.Catalog
.State
.Views
)
447 blockTrap0
= Block
.create \
449 , ioPins
=[ (IN
, 'clk' , l(805.0) )
450 , (IW | AB
, 'cu_issue_i' , 0, l(20), 1)
451 , (IW | AB
, 'oper_i_alu_trap0_is_32bit' , 0, l(20), 1)
452 , (IW | AB
, 'rst' , 0, l(20), 1)
453 , (IW | AB
, 'cu_rd_go_i({})' , 0, l(20), 4)
454 , (IW | AB
, 'cu_rdmaskn_i({})' , 0, l(20), 4)
455 , (IW | AB
, 'cu_wr_go_i({})' , 0, l(20), 5)
456 , (IW | AB
, 'oper_i_alu_trap0_traptype({})' , 0, l(20), 5)
457 , (IW | AB
, 'oper_i_alu_trap0_insn_type({})', 0, l(20), 7)
458 , (IW | AB
, 'oper_i_alu_trap0_fn_unit({})' , 0, l(20), 11)
459 , (IW | AB
, 'oper_i_alu_trap0_trapaddr({})' , 0, l(20), 13)
460 , (IW | AB
, 'oper_i_alu_trap0_insn({})' , 0, l(20), 32)
461 , (IW | AB
, 'oper_i_alu_trap0_cia({})' , 0, l(20), 64)
462 , (IW | AB
, 'oper_i_alu_trap0_msr({})' , 0, l(20), 64)
463 , (IW | AB
, 'src3_i({})' , 0, l(10), 64)
464 , (IS | AB
, 'src4_i({})' , 0, l(10), 64)
465 , (IS | AB
, 'src1_i({})' , 0, l(10), 64)
466 , (IS | AB
, 'src2_i({})' , 0, l(5), 64)
467 , (IE | AE
, 'cu_busy_o' , 0, l(20), 1)
468 , (IE | AE
, 'fast1_ok' , 0, l(20), 1)
469 , (IE | AE
, 'fast2_ok' , 0, l(20), 1)
470 , (IE | AE
, 'msr_ok' , 0, l(20), 1)
471 , (IE | AE
, 'nia_ok' , 0, l(20), 1)
472 , (IE | AE
, 'o_ok' , 0, l(20), 1)
473 , (IE | AE
, 'cu_rd_rel_o({})' , 0, 0, 4)
474 , (IE | AE
, 'cu_wr_rel_o({})' , 0, 0, 5)
475 , (IN | AE
, 'dest5_o({})' , 0, l(10), 64)
476 , (IN | AE
, 'dest4_o({})' , 0, l(10), 64)
477 , (IE | AE
, 'dest3_o({})' , 0, l(10), 64)
478 , (IE | AE
, 'dest2_o({})' , 0, l(10), 64)
479 , (IE | AE
, 'dest1_o({})' , 0, l(10), 64)
482 blockTrap0
.state
.cfg
.etesian
.uniformDensity
= True
483 blockTrap0
.state
.cfg
.etesian
.spaceMargin
= 0.5
484 blockTrap0
.state
.cfg
.katana
.searchHalo
= 1
485 blockTrap0
.state
.fixedHeight
= l(5000)
486 blockTrap0
.state
.useSpares
= False
487 #rvalue = blockTrap0.build()
489 fast
= af
.getCell( 'fast', CRL
.Catalog
.State
.Views
)
490 blockFast
= Block
.create \
492 , ioPins
=[ (IN
, 'clk' , l(805.0) )
493 , (IW | AB
, 'rst' , 0, l(20), 1)
494 , (IW | AB
, 'cia_ren({})' , 0, l(20), 8)
495 , (IW | AB
, 'fast_nia_wen({})', 0, l(20), 8)
496 , (IW | AB
, 'msr_ren({})' , 0, l(20), 8)
497 , (IW | AB
, 'src1_ren({})' , 0, l(20), 8)
498 , (IW | AB
, 'src2_ren({})' , 0, l(20), 8)
499 , (IW | AB
, 'wen({})' , 0, l(20), 8)
500 , (IW | AB
, 'wen_1({})' , 0, l(20), 8)
501 , (IW | AB
, 'wen_3({})' , 0, l(20), 8)
502 , (IW | AB
, 'wen_6({})' , 0, l(20), 8)
503 , (IS | AB
, 'data_i({})' , 0, l(20), 64)
504 , (IS | AB
, 'data_i_2({})' , 0, l(20), 64)
505 , (IS | AB
, 'data_i_4({})' , 0, l(10), 64)
506 , (IS | AB
, 'data_i_5({})' , 0, l(10), 64)
507 , (IS | AB
, 'data_i_7({})' , 0, l(10), 64)
508 , (IN | AE
, 'cia_data_o({})' , 0, l(20), 64)
509 , (IN | AE
, 'msr_data_o({})' , 0, l(10), 64)
510 , (IN | AE
, 'src1_data_o({})' , 0, l(10), 64)
511 , (IN | AE
, 'src2_data_o({})' , 0, l(10), 64)
514 blockFast
.state
.cfg
.etesian
.uniformDensity
= True
515 blockFast
.state
.cfg
.etesian
.aspectRatio
= 1.0
516 blockFast
.state
.cfg
.etesian
.spaceMargin
= 0.6
517 blockFast
.state
.cfg
.katana
.searchHalo
= 1
518 blockFast
.state
.useSpares
= False
519 #rvalue = blockFast.build()
521 cellInt
= af
.getCell( 'int', CRL
.Catalog
.State
.Views
)
522 blockInt
= Block
.create \
524 , ioPins
=[ (IN
, 'clk' , l(805.0) )
525 , (IW | AB
, 'rst' , 0, l(20), 1)
526 , (IW | AB
, 'wen({})' , 0, l(20), 32)
527 , (IW | AB
, 'wen_1({})' , 0, l(20), 32)
528 , (IW | AB
, 'src1_ren({})' , 0, l(20), 32)
529 , (IW | AB
, 'src2_ren({})' , 0, l(20), 32)
530 , (IW | AB
, 'src3_ren({})' , 0, l(20), 32)
531 , (IS | AB
, 'data_i({})' , 0, l(20), 64)
532 , (IS | AB
, 'data_i_2({})' , 0, l(20), 64)
533 , (IN | AE
, 'src1_data_o({})' , 0, l(10), 64)
534 , (IN | AE
, 'src2_data_o({})' , 0, l(10), 64)
535 , (IN | AE
, 'src3_data_o({})' , 0, l(10), 64)
538 blockInt
.state
.cfg
.etesian
.uniformDensity
= True
539 blockInt
.state
.cfg
.etesian
.aspectRatio
= 1.0
540 blockInt
.state
.cfg
.etesian
.spaceMargin
= 0.07
541 blockInt
.state
.cfg
.katana
.searchHalo
= 1
542 blockInt
.state
.useSpares
= False
543 #rvalue = blockInt.build()
545 issuer
= af
.getCell( 'test_issuer' , CRL
.Catalog
.State
.Logical
)
546 blockIssuer
= Block
.create \
553 # ================ =================
566 # ================ =================
568 blockIssuer
.useBlockInstance( 'subckt_1008_core.subckt_2031_fus.subckt_0_alu0'
569 , Transformation( l(1000), l(4000), Transformation
.Orientation
.ID
))
570 blockIssuer
.useBlockInstance( 'subckt_1008_core.subckt_2031_fus.subckt_1_branch0'
571 , Transformation( l(2700), l(4000), Transformation
.Orientation
.ID
))
572 blockIssuer
.useBlockInstance( 'subckt_1008_core.subckt_2031_fus.subckt_2_cr0'
573 , Transformation( l(4950), l(4000), Transformation
.Orientation
.ID
))
574 blockIssuer
.useBlockInstance( 'subckt_1008_core.subckt_2031_fus.subckt_3_ldst0'
575 , Transformation( l(6400), l(4000), Transformation
.Orientation
.ID
))
576 blockIssuer
.useBlockInstance( 'subckt_1008_core.subckt_2031_fus.subckt_4_logical0'
577 , Transformation( l(8000), l(4000), Transformation
.Orientation
.ID
))
578 blockIssuer
.useBlockInstance( 'subckt_1008_core.subckt_2031_fus.subckt_5_mul0'
579 , Transformation( l(10300), l(4000), Transformation
.Orientation
.ID
))
580 blockIssuer
.useBlockInstance( 'subckt_1008_core.subckt_2031_fus.subckt_6_shiftrot0'
581 , Transformation( l(20400), l(4000), Transformation
.Orientation
.ID
))
582 blockIssuer
.useBlockInstance( 'subckt_1008_core.subckt_2031_fus.subckt_7_spr0'
583 , Transformation( l(23250), l(4000), Transformation
.Orientation
.ID
))
584 blockIssuer
.useBlockInstance( 'subckt_1008_core.subckt_2031_fus.subckt_8_trap0'
585 , Transformation( l(25300), l(4000), Transformation
.Orientation
.ID
))
586 blockIssuer
.useBlockInstance( 'subckt_1008_core.subckt_2030_fast'
587 , Transformation( l(1000), l(4000), Transformation
.Orientation
.ID
))
588 blockIssuer
.useBlockInstance( 'subckt_1008_core.subckt_2032_int'
589 , Transformation( l(1000), l(4000), Transformation
.Orientation
.ID
))
590 blockIssuer
.useBlockInstance( 'subckt_1008_core.subckt_2034_pdecode2'
591 , Transformation( l(1000), l(4000), Transformation
.Orientation
.ID
))
592 blockIssuer
.state
.cfg
.etesian
.uniformDensity
= True
593 blockIssuer
.state
.cfg
.etesian
.aspectRatio
= 1.0
594 blockIssuer
.state
.cfg
.etesian
.spaceMargin
= 0.07
595 blockIssuer
.state
.cfg
.katana
.searchHalo
= 10000
596 blockIssuer
.state
.fixedHeight
= l(15000)
597 blockIssuer
.state
.fixedWidth
= l(29550)
598 blockIssuer
.state
.useSpares
= False
599 blockIssuer
.state
.editor
= editor
600 rvalue
= blockIssuer
.build()
602 helpers
.io
.catch( e
)