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