]> cvs.zerfleddert.de Git - raggedstone/blob - ethernet/source/pci/pci_bridge32.v
watch inta
[raggedstone] / ethernet / source / pci / pci_bridge32.v
1 //////////////////////////////////////////////////////////////////////
2 //// ////
3 //// File name "pci_bridge32.v" ////
4 //// ////
5 //// This file is part of the "PCI bridge" project ////
6 //// http://www.opencores.org/cores/pci/ ////
7 //// ////
8 //// Author(s): ////
9 //// - Miha Dolenc (mihad@opencores.org) ////
10 //// - Tadej Markovic (tadej@opencores.org) ////
11 //// ////
12 //// All additional information is avaliable in the README ////
13 //// file. ////
14 //// ////
15 //// ////
16 //////////////////////////////////////////////////////////////////////
17 //// ////
18 //// Copyright (C) 2001 Miha Dolenc, mihad@opencores.org ////
19 //// ////
20 //// This source file may be used and distributed without ////
21 //// restriction provided that this copyright statement is not ////
22 //// removed from the file and that any derivative work contains ////
23 //// the original copyright notice and the associated disclaimer. ////
24 //// ////
25 //// This source file is free software; you can redistribute it ////
26 //// and/or modify it under the terms of the GNU Lesser General ////
27 //// Public License as published by the Free Software Foundation; ////
28 //// either version 2.1 of the License, or (at your option) any ////
29 //// later version. ////
30 //// ////
31 //// This source is distributed in the hope that it will be ////
32 //// useful, but WITHOUT ANY WARRANTY; without even the implied ////
33 //// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ////
34 //// PURPOSE. See the GNU Lesser General Public License for more ////
35 //// details. ////
36 //// ////
37 //// You should have received a copy of the GNU Lesser General ////
38 //// Public License along with this source; if not, download it ////
39 //// from http://www.opencores.org/lgpl.shtml ////
40 //// ////
41 //////////////////////////////////////////////////////////////////////
42 //
43 // CVS Revision History
44 //
45 // $Log: pci_bridge32.v,v $
46 // Revision 1.1 2007-03-20 17:50:56 sithglan
47 // add shit
48 //
49 // Revision 1.19 2004/09/23 13:48:53 mihad
50 // The control inputs from PCI are now muxed with control outputs
51 // using output enable state for given signal.
52 //
53 // Revision 1.18 2004/08/19 15:27:34 mihad
54 // Changed minimum pci image size to 256 bytes because
55 // of some PC system problems with size of IO images.
56 //
57 // Revision 1.17 2004/01/24 11:54:18 mihad
58 // Update! SPOCI Implemented!
59 //
60 // Revision 1.16 2003/12/19 11:11:30 mihad
61 // Compact PCI Hot Swap support added.
62 // New testcases added.
63 // Specification updated.
64 // Test application changed to support WB B3 cycles.
65 //
66 // Revision 1.15 2003/12/10 12:02:54 mihad
67 // The wbs B3 to B2 translation logic had wrong reset wire connected!
68 //
69 // Revision 1.14 2003/12/09 09:33:57 simons
70 // Some warning cleanup.
71 //
72 // Revision 1.13 2003/10/17 09:11:52 markom
73 // mbist signals updated according to newest convention
74 //
75 // Revision 1.12 2003/08/21 20:49:03 tadejm
76 // Added signals for WB Master B3.
77 //
78 // Revision 1.11 2003/08/08 16:36:33 tadejm
79 // Added 'three_left_out' to pci_pciw_fifo signaling three locations before full. Added comparison between current registered cbe and next unregistered cbe to signal wb_master whether it is allowed to performe burst or not. Due to this, I needed 'three_left_out' so that writing to pci_pciw_fifo can be registered, otherwise timing problems would occure.
80 //
81 // Revision 1.10 2003/08/03 18:05:06 mihad
82 // Added limited WISHBONE B3 support for WISHBONE Slave Unit.
83 // Doesn't support full speed bursts yet.
84 //
85 // Revision 1.9 2003/01/27 16:49:31 mihad
86 // Changed module and file names. Updated scripts accordingly. FIFO synchronizations changed.
87 //
88 // Revision 1.8 2002/10/21 13:04:33 mihad
89 // Changed BIST signal names etc..
90 //
91 // Revision 1.7 2002/10/18 03:36:37 tadejm
92 // Changed wrong signal name mbist_sen into mbist_ctrl_i.
93 //
94 // Revision 1.6 2002/10/17 22:51:50 tadejm
95 // Changed BIST signals for RAMs.
96 //
97 // Revision 1.5 2002/10/11 10:09:01 mihad
98 // Added additional testcase and changed rst name in BIST to trst
99 //
100 // Revision 1.4 2002/10/08 17:17:05 mihad
101 // Added BIST signals for RAMs.
102 //
103 // Revision 1.3 2002/02/01 15:25:12 mihad
104 // Repaired a few bugs, updated specification, added test bench files and design document
105 //
106 // Revision 1.2 2001/10/05 08:14:28 mihad
107 // Updated all files with inclusion of timescale file for simulation purposes.
108 //
109 // Revision 1.1.1.1 2001/10/02 15:33:46 mihad
110 // New project directory structure
111 //
112 //
113
114 `include "pci_constants.v"
115
116 // synopsys translate_off
117 `include "timescale.v"
118 // synopsys translate_on
119
120 // this is top level module of pci bridge core
121 // it instantiates and connects other lower level modules
122 // check polarity of PCI output enables in file out_reg.v and change it according to IO interface specification
123
124 module pci_bridge32
125 (
126 // WISHBONE system signals
127 wb_clk_i,
128 wb_rst_i,
129 wb_rst_o,
130 wb_int_i,
131 wb_int_o,
132
133 // WISHBONE slave interface
134 wbs_adr_i,
135 wbs_dat_i,
136 wbs_dat_o,
137 wbs_sel_i,
138 wbs_cyc_i,
139 wbs_stb_i,
140 wbs_we_i,
141
142 `ifdef PCI_WB_REV_B3
143
144 wbs_cti_i,
145 wbs_bte_i,
146
147 `else
148
149 wbs_cab_i,
150
151 `endif
152
153 wbs_ack_o,
154 wbs_rty_o,
155 wbs_err_o,
156
157 // WISHBONE master interface
158 wbm_adr_o,
159 wbm_dat_i,
160 wbm_dat_o,
161 wbm_sel_o,
162 wbm_cyc_o,
163 wbm_stb_o,
164 wbm_we_o,
165 wbm_cti_o,
166 wbm_bte_o,
167 wbm_ack_i,
168 wbm_rty_i,
169 wbm_err_i,
170
171 // pci interface - system pins
172 pci_clk_i,
173 pci_rst_i,
174 pci_rst_o,
175 pci_inta_i,
176 pci_inta_o,
177 pci_rst_oe_o,
178 pci_inta_oe_o,
179
180 // arbitration pins
181 pci_req_o,
182 pci_req_oe_o,
183
184 pci_gnt_i,
185
186 // protocol pins
187 pci_frame_i,
188 pci_frame_o,
189
190 pci_frame_oe_o,
191 pci_irdy_oe_o,
192 pci_devsel_oe_o,
193 pci_trdy_oe_o,
194 pci_stop_oe_o,
195 pci_ad_oe_o,
196 pci_cbe_oe_o,
197
198 pci_irdy_i,
199 pci_irdy_o,
200
201 pci_idsel_i,
202
203 pci_devsel_i,
204 pci_devsel_o,
205
206 pci_trdy_i,
207 pci_trdy_o,
208
209 pci_stop_i,
210 pci_stop_o ,
211
212 // data transfer pins
213 pci_ad_i,
214 pci_ad_o,
215
216 pci_cbe_i,
217 pci_cbe_o,
218
219 // parity generation and checking pins
220 pci_par_i,
221 pci_par_o,
222 pci_par_oe_o,
223
224 pci_perr_i,
225 pci_perr_o,
226 pci_perr_oe_o,
227
228 // system error pin
229 pci_serr_o,
230 pci_serr_oe_o
231
232 `ifdef PCI_BIST
233 ,
234 // debug chain signals
235 mbist_si_i, // bist scan serial in
236 mbist_so_o, // bist scan serial out
237 mbist_ctrl_i // bist chain shift control
238 `endif
239
240 `ifdef PCI_CPCI_HS_IMPLEMENT
241 ,
242 // Compact PCI Hot Swap signals
243 pci_cpci_hs_enum_o , // ENUM# output with output enable (open drain)
244 pci_cpci_hs_enum_oe_o , // ENUM# enum output enable
245 pci_cpci_hs_led_o , // LED output with output enable (open drain)
246 pci_cpci_hs_led_oe_o , // LED output enable
247 pci_cpci_hs_es_i // ejector switch state indicator input
248 `endif
249
250 `ifdef PCI_SPOCI
251 ,
252 // Serial power on configuration interface
253 spoci_scl_o ,
254 spoci_scl_oe_o ,
255 spoci_sda_i ,
256 spoci_sda_o ,
257 spoci_sda_oe_o
258 `endif
259
260 );
261
262 `ifdef HOST
263 `ifdef NO_CNF_IMAGE
264 parameter pci_ba0_width = `PCI_NUM_OF_DEC_ADDR_LINES ;
265 `else
266 parameter pci_ba0_width = 20 ;
267 `endif
268 `endif
269
270 `ifdef GUEST
271 parameter pci_ba0_width = 20 ;
272 `endif
273
274 parameter pci_ba1_5_width = `PCI_NUM_OF_DEC_ADDR_LINES ;
275
276 // WISHBONE system signals
277 input wb_clk_i ;
278 input wb_rst_i ;
279 output wb_rst_o ;
280 input wb_int_i ;
281 output wb_int_o ;
282
283 // WISHBONE slave interface
284 input [31:0] wbs_adr_i ;
285 input [31:0] wbs_dat_i ;
286 output [31:0] wbs_dat_o ;
287 input [3:0] wbs_sel_i ;
288 input wbs_cyc_i ;
289 input wbs_stb_i ;
290 input wbs_we_i ;
291
292 `ifdef PCI_WB_REV_B3
293
294 input [2:0] wbs_cti_i ;
295 input [1:0] wbs_bte_i ;
296
297 `else
298
299 input wbs_cab_i ;
300
301 `endif
302
303 output wbs_ack_o ;
304 output wbs_rty_o ;
305 output wbs_err_o ;
306
307 // WISHBONE master interface
308 output [31:0] wbm_adr_o ;
309 input [31:0] wbm_dat_i ;
310 output [31:0] wbm_dat_o ;
311 output [3:0] wbm_sel_o ;
312 output wbm_cyc_o ;
313 output wbm_stb_o ;
314 output wbm_we_o ;
315 output [2:0] wbm_cti_o ;
316 output [1:0] wbm_bte_o ;
317 input wbm_ack_i ;
318 input wbm_rty_i ;
319 input wbm_err_i ;
320
321 // pci interface - system pins
322 input pci_clk_i ;
323 input pci_rst_i ;
324 output pci_rst_o ;
325 output pci_rst_oe_o ;
326
327 input pci_inta_i ;
328 output pci_inta_o ;
329 output pci_inta_oe_o ;
330
331 // arbitration pins
332 output pci_req_o ;
333 output pci_req_oe_o ;
334
335 input pci_gnt_i ;
336
337 // protocol pins
338 input pci_frame_i ;
339 output pci_frame_o ;
340 output pci_frame_oe_o ;
341 output pci_irdy_oe_o ;
342 output pci_devsel_oe_o ;
343 output pci_trdy_oe_o ;
344 output pci_stop_oe_o ;
345 output [31:0] pci_ad_oe_o ;
346 output [3:0] pci_cbe_oe_o ;
347
348 input pci_irdy_i ;
349 output pci_irdy_o ;
350
351 input pci_idsel_i ;
352
353 input pci_devsel_i ;
354 output pci_devsel_o ;
355
356 input pci_trdy_i ;
357 output pci_trdy_o ;
358
359 input pci_stop_i ;
360 output pci_stop_o ;
361
362 // data transfer pins
363 input [31:0] pci_ad_i ;
364 output [31:0] pci_ad_o ;
365
366 input [3:0] pci_cbe_i ;
367 output [3:0] pci_cbe_o ;
368
369 // parity generation and checking pins
370 input pci_par_i ;
371 output pci_par_o ;
372 output pci_par_oe_o ;
373
374 input pci_perr_i ;
375 output pci_perr_o ;
376 output pci_perr_oe_o ;
377
378 // system error pin
379 output pci_serr_o ;
380 output pci_serr_oe_o ;
381
382 `ifdef PCI_BIST
383 /*-----------------------------------------------------
384 BIST debug chain port signals
385 -----------------------------------------------------*/
386 input mbist_si_i; // bist scan serial in
387 output mbist_so_o; // bist scan serial out
388 input [`PCI_MBIST_CTRL_WIDTH - 1:0] mbist_ctrl_i; // bist chain shift control
389 `endif
390
391 `ifdef PCI_CPCI_HS_IMPLEMENT
392 // Compact PCI Hot Swap signals
393 output pci_cpci_hs_enum_o ; // ENUM# output with output enable (open drain)
394 output pci_cpci_hs_enum_oe_o ; // ENUM# enum output enable
395 output pci_cpci_hs_led_o ; // LED output with output enable (open drain)
396 output pci_cpci_hs_led_oe_o ; // LED output enable
397 input pci_cpci_hs_es_i ; // ejector switch state indicator input
398
399 assign pci_cpci_hs_enum_o = 1'b0 ;
400 assign pci_cpci_hs_led_o = 1'b0 ;
401 `endif
402
403 `ifdef PCI_SPOCI
404 output spoci_scl_o ;
405 output spoci_scl_oe_o ;
406 input spoci_sda_i ;
407 output spoci_sda_o ;
408 output spoci_sda_oe_o ;
409
410 assign spoci_scl_o = 1'b0 ;
411 assign spoci_sda_o = 1'b0 ;
412 `endif
413
414 // declare clock and reset wires
415 wire pci_clk = pci_clk_i ;
416 wire wb_clk = wb_clk_i ;
417 wire reset ; // assigned at pci bridge reset and interrupt logic
418
419 /*=========================================================================================================
420 First comes definition of all modules' outputs, so they can be assigned to any other module's input later
421 in the file, when module is instantiated
422 =========================================================================================================*/
423 // PCI BRIDGE RESET AND INTERRUPT LOGIC OUTPUTS
424 wire pci_reso_reset ;
425 wire pci_reso_pci_rstn_out ;
426 wire pci_reso_pci_rstn_en_out ;
427 wire pci_reso_rst_o ;
428 wire pci_into_pci_intan_out ;
429 wire pci_into_pci_intan_en_out ;
430 wire pci_into_int_o ;
431 wire pci_into_conf_isr_int_prop_out ;
432
433 // assign pci bridge reset interrupt logic outputs to top outputs where possible
434 assign reset = pci_reso_reset ;
435 assign pci_rst_o = pci_reso_pci_rstn_out ;
436 assign pci_rst_oe_o = pci_reso_pci_rstn_en_out ;
437 assign wb_rst_o = pci_reso_rst_o ;
438 assign pci_inta_o = pci_into_pci_intan_out ;
439 assign pci_inta_oe_o = pci_into_pci_intan_en_out ;
440 assign wb_int_o = pci_into_int_o ;
441
442 // WISHBONE SLAVE UNIT OUTPUTS
443 wire [31:0] wbu_sdata_out ;
444 wire wbu_ack_out ;
445 wire wbu_rty_out ;
446 wire wbu_err_out ;
447 wire wbu_pciif_req_out ;
448 wire wbu_pciif_frame_out ;
449 wire wbu_pciif_frame_en_out ;
450 wire wbu_pciif_irdy_out ;
451 wire wbu_pciif_irdy_en_out ;
452 wire [31:0] wbu_pciif_ad_out ;
453 wire wbu_pciif_ad_en_out ;
454 wire [3:0] wbu_pciif_cbe_out ;
455 wire wbu_pciif_cbe_en_out ;
456 wire [31:0] wbu_err_addr_out ;
457 wire [3:0] wbu_err_bc_out ;
458 wire wbu_err_signal_out ;
459 wire wbu_err_source_out ;
460 wire wbu_err_rty_exp_out ;
461 wire wbu_tabort_rec_out ;
462 wire wbu_mabort_rec_out ;
463 wire [11:0] wbu_conf_offset_out ;
464 wire wbu_conf_renable_out ;
465 wire wbu_conf_wenable_out ;
466 wire [3:0] wbu_conf_be_out ;
467 wire [31:0] wbu_conf_data_out ;
468 wire wbu_del_read_comp_pending_out ;
469 wire wbu_wbw_fifo_empty_out ;
470 wire wbu_ad_load_out ;
471 wire wbu_ad_load_on_transfer_out ;
472 wire wbu_pciif_frame_load_out ;
473
474 // PCI TARGET UNIT OUTPUTS
475 wire [31:0] pciu_adr_out ;
476 wire [31:0] pciu_mdata_out ;
477 wire pciu_cyc_out ;
478 wire pciu_stb_out ;
479 wire pciu_we_out ;
480 wire [2:0] pciu_cti_out ;
481 wire [1:0] pciu_bte_out ;
482 wire [3:0] pciu_sel_out ;
483 wire pciu_pciif_trdy_out ;
484 wire pciu_pciif_stop_out ;
485 wire pciu_pciif_devsel_out ;
486 wire pciu_pciif_trdy_en_out ;
487 wire pciu_pciif_stop_en_out ;
488 wire pciu_pciif_devsel_en_out ;
489 wire pciu_ad_load_out ;
490 wire pciu_ad_load_on_transfer_out ;
491 wire [31:0] pciu_pciif_ad_out ;
492 wire pciu_pciif_ad_en_out ;
493 wire pciu_pciif_tabort_set_out ;
494 wire [31:0] pciu_err_addr_out ;
495 wire [3:0] pciu_err_bc_out ;
496 wire [31:0] pciu_err_data_out ;
497 wire [3:0] pciu_err_be_out ;
498 wire pciu_err_signal_out ;
499 wire pciu_err_source_out ;
500 wire pciu_err_rty_exp_out ;
501 wire [11:0] pciu_conf_offset_out ;
502 wire pciu_conf_renable_out ;
503 wire pciu_conf_wenable_out ;
504 wire [3:0] pciu_conf_be_out ;
505 wire [31:0] pciu_conf_data_out ;
506 wire pciu_pci_drcomp_pending_out ;
507 wire pciu_pciw_fifo_empty_out ;
508
509 // assign pci target unit's outputs to top outputs where possible
510 assign wbm_adr_o = pciu_adr_out ;
511 assign wbm_dat_o = pciu_mdata_out ;
512 assign wbm_cyc_o = pciu_cyc_out ;
513 assign wbm_stb_o = pciu_stb_out ;
514 assign wbm_we_o = pciu_we_out ;
515 assign wbm_cti_o = pciu_cti_out ;
516 assign wbm_bte_o = pciu_bte_out ;
517 assign wbm_sel_o = pciu_sel_out ;
518
519 // CONFIGURATION SPACE OUTPUTS
520 wire [31:0] conf_w_data_out ;
521 wire [31:0] conf_r_data_out ;
522 wire conf_serr_enable_out ;
523 wire conf_perr_response_out ;
524 wire conf_pci_master_enable_out ;
525 wire conf_mem_space_enable_out ;
526 wire conf_io_space_enable_out ;
527 wire [7:0] conf_cache_line_size_to_pci_out ;
528 wire [7:0] conf_cache_line_size_to_wb_out ;
529 wire conf_cache_lsize_not_zero_to_wb_out ;
530 wire [7:0] conf_latency_tim_out ;
531
532 wire [pci_ba0_width - 1:0] conf_pci_ba0_out ;
533 wire [pci_ba1_5_width - 1:0] conf_pci_ba1_out ;
534 wire [pci_ba1_5_width - 1:0] conf_pci_ba2_out ;
535 wire [pci_ba1_5_width - 1:0] conf_pci_ba3_out ;
536 wire [pci_ba1_5_width - 1:0] conf_pci_ba4_out ;
537 wire [pci_ba1_5_width - 1:0] conf_pci_ba5_out ;
538 wire [pci_ba1_5_width - 1:0] conf_pci_ta0_out ;
539 wire [pci_ba1_5_width - 1:0] conf_pci_ta1_out ;
540 wire [pci_ba1_5_width - 1:0] conf_pci_ta2_out ;
541 wire [pci_ba1_5_width - 1:0] conf_pci_ta3_out ;
542 wire [pci_ba1_5_width - 1:0] conf_pci_ta4_out ;
543 wire [pci_ba1_5_width - 1:0] conf_pci_ta5_out ;
544 wire [pci_ba1_5_width - 1:0] conf_pci_am0_out ;
545 wire [pci_ba1_5_width - 1:0] conf_pci_am1_out ;
546 wire [pci_ba1_5_width - 1:0] conf_pci_am2_out ;
547 wire [pci_ba1_5_width - 1:0] conf_pci_am3_out ;
548 wire [pci_ba1_5_width - 1:0] conf_pci_am4_out ;
549 wire [pci_ba1_5_width - 1:0] conf_pci_am5_out ;
550
551 wire conf_pci_mem_io0_out ;
552 wire conf_pci_mem_io1_out ;
553 wire conf_pci_mem_io2_out ;
554 wire conf_pci_mem_io3_out ;
555 wire conf_pci_mem_io4_out ;
556 wire conf_pci_mem_io5_out ;
557
558 wire [1:0] conf_pci_img_ctrl0_out ;
559 wire [1:0] conf_pci_img_ctrl1_out ;
560 wire [1:0] conf_pci_img_ctrl2_out ;
561 wire [1:0] conf_pci_img_ctrl3_out ;
562 wire [1:0] conf_pci_img_ctrl4_out ;
563 wire [1:0] conf_pci_img_ctrl5_out ;
564
565 wire [19:(20 - `WB_NUM_OF_DEC_ADDR_LINES)] conf_wb_ba0_out ;
566 wire [19:(20 - `WB_NUM_OF_DEC_ADDR_LINES)] conf_wb_ba1_out ;
567 wire [19:(20 - `WB_NUM_OF_DEC_ADDR_LINES)] conf_wb_ba2_out ;
568 wire [19:(20 - `WB_NUM_OF_DEC_ADDR_LINES)] conf_wb_ba3_out ;
569 wire [19:(20 - `WB_NUM_OF_DEC_ADDR_LINES)] conf_wb_ba4_out ;
570 wire [19:(20 - `WB_NUM_OF_DEC_ADDR_LINES)] conf_wb_ba5_out ;
571
572 wire conf_wb_mem_io0_out ;
573 wire conf_wb_mem_io1_out ;
574 wire conf_wb_mem_io2_out ;
575 wire conf_wb_mem_io3_out ;
576 wire conf_wb_mem_io4_out ;
577 wire conf_wb_mem_io5_out ;
578
579 wire [19:(20 - `WB_NUM_OF_DEC_ADDR_LINES)] conf_wb_am0_out ;
580 wire [19:(20 - `WB_NUM_OF_DEC_ADDR_LINES)] conf_wb_am1_out ;
581 wire [19:(20 - `WB_NUM_OF_DEC_ADDR_LINES)] conf_wb_am2_out ;
582 wire [19:(20 - `WB_NUM_OF_DEC_ADDR_LINES)] conf_wb_am3_out ;
583 wire [19:(20 - `WB_NUM_OF_DEC_ADDR_LINES)] conf_wb_am4_out ;
584 wire [19:(20 - `WB_NUM_OF_DEC_ADDR_LINES)] conf_wb_am5_out ;
585 wire [19:(20 - `WB_NUM_OF_DEC_ADDR_LINES)] conf_wb_ta0_out ;
586 wire [19:(20 - `WB_NUM_OF_DEC_ADDR_LINES)] conf_wb_ta1_out ;
587 wire [19:(20 - `WB_NUM_OF_DEC_ADDR_LINES)] conf_wb_ta2_out ;
588 wire [19:(20 - `WB_NUM_OF_DEC_ADDR_LINES)] conf_wb_ta3_out ;
589 wire [19:(20 - `WB_NUM_OF_DEC_ADDR_LINES)] conf_wb_ta4_out ;
590 wire [19:(20 - `WB_NUM_OF_DEC_ADDR_LINES)] conf_wb_ta5_out ;
591 wire [2:0] conf_wb_img_ctrl0_out ;
592 wire [2:0] conf_wb_img_ctrl1_out ;
593 wire [2:0] conf_wb_img_ctrl2_out ;
594 wire [2:0] conf_wb_img_ctrl3_out ;
595 wire [2:0] conf_wb_img_ctrl4_out ;
596 wire [2:0] conf_wb_img_ctrl5_out ;
597 wire [23:0] conf_ccyc_addr_out ;
598 wire conf_soft_res_out ;
599 wire conf_int_out ;
600 wire conf_wb_init_complete_out ;
601 wire conf_pci_init_complete_out ;
602
603 // PCI IO MUX OUTPUTS
604 wire pci_mux_frame_out ;
605 wire pci_mux_irdy_out ;
606 wire pci_mux_devsel_out ;
607 wire pci_mux_trdy_out ;
608 wire pci_mux_stop_out ;
609 wire [3:0] pci_mux_cbe_out ;
610 wire [31:0] pci_mux_ad_out ;
611 wire pci_mux_ad_load_out ;
612
613 wire [31:0] pci_mux_ad_en_out ;
614 wire pci_mux_ad_en_unregistered_out ;
615 wire pci_mux_frame_en_out ;
616 wire pci_mux_irdy_en_out ;
617 wire pci_mux_devsel_en_out ;
618 wire pci_mux_trdy_en_out ;
619 wire pci_mux_stop_en_out ;
620 wire [3:0] pci_mux_cbe_en_out ;
621
622 wire pci_mux_par_out ;
623 wire pci_mux_par_en_out ;
624 wire pci_mux_perr_out ;
625 wire pci_mux_perr_en_out ;
626 wire pci_mux_serr_out ;
627 wire pci_mux_serr_en_out ;
628
629 wire pci_mux_req_out ;
630 wire pci_mux_req_en_out ;
631
632 // assign outputs to top level outputs
633
634 assign pci_ad_oe_o = pci_mux_ad_en_out ;
635 assign pci_frame_oe_o = pci_mux_frame_en_out ;
636 assign pci_irdy_oe_o = pci_mux_irdy_en_out ;
637 assign pci_cbe_oe_o = pci_mux_cbe_en_out ;
638
639 assign pci_par_o = pci_mux_par_out ;
640 assign pci_par_oe_o = pci_mux_par_en_out ;
641 assign pci_perr_o = pci_mux_perr_out ;
642 assign pci_perr_oe_o = pci_mux_perr_en_out ;
643 assign pci_serr_o = pci_mux_serr_out ;
644 assign pci_serr_oe_o = pci_mux_serr_en_out ;
645
646 assign pci_req_o = pci_mux_req_out ;
647 assign pci_req_oe_o = pci_mux_req_en_out ;
648
649 assign pci_trdy_oe_o = pci_mux_trdy_en_out ;
650 assign pci_devsel_oe_o = pci_mux_devsel_en_out ;
651 assign pci_stop_oe_o = pci_mux_stop_en_out ;
652 assign pci_trdy_o = pci_mux_trdy_out ;
653 assign pci_devsel_o = pci_mux_devsel_out ;
654 assign pci_stop_o = pci_mux_stop_out ;
655
656 assign pci_ad_o = pci_mux_ad_out ;
657 assign pci_frame_o = pci_mux_frame_out ;
658 assign pci_irdy_o = pci_mux_irdy_out ;
659 assign pci_cbe_o = pci_mux_cbe_out ;
660
661 // duplicate output register's outputs
662 wire out_bckp_frame_out ;
663 wire out_bckp_irdy_out ;
664 wire out_bckp_devsel_out ;
665 wire out_bckp_trdy_out ;
666 wire out_bckp_stop_out ;
667 wire [3:0] out_bckp_cbe_out ;
668 wire out_bckp_cbe_en_out ;
669 wire [31:0] out_bckp_ad_out ;
670 wire out_bckp_ad_en_out ;
671 wire out_bckp_irdy_en_out ;
672 wire out_bckp_frame_en_out ;
673 wire out_bckp_tar_ad_en_out ;
674 wire out_bckp_mas_ad_en_out ;
675 wire out_bckp_trdy_en_out ;
676
677 wire out_bckp_par_out ;
678 wire out_bckp_par_en_out ;
679 wire out_bckp_perr_out ;
680 wire out_bckp_perr_en_out ;
681 wire out_bckp_serr_out ;
682 wire out_bckp_serr_en_out ;
683
684 wire int_pci_frame = out_bckp_frame_en_out ? out_bckp_frame_out : pci_frame_i ;
685 wire int_pci_irdy = out_bckp_irdy_en_out ? out_bckp_irdy_out : pci_irdy_i ;
686 wire int_pci_devsel = out_bckp_trdy_en_out ? out_bckp_devsel_out : pci_devsel_i ;
687 wire int_pci_trdy = out_bckp_trdy_en_out ? out_bckp_trdy_out : pci_trdy_i ;
688 wire int_pci_stop = out_bckp_trdy_en_out ? out_bckp_stop_out : pci_stop_i ;
689 wire [ 3: 0] int_pci_cbe = out_bckp_cbe_en_out ? out_bckp_cbe_out : pci_cbe_i ;
690 wire int_pci_par = out_bckp_par_en_out ? out_bckp_par_out : pci_par_i ;
691 wire int_pci_perr = out_bckp_perr_en_out ? out_bckp_perr_out : pci_perr_i ;
692 // PARITY CHECKER OUTPUTS
693 wire parchk_pci_par_out ;
694 wire parchk_pci_par_en_out ;
695 wire parchk_pci_perr_out ;
696 wire parchk_pci_perr_en_out ;
697 wire parchk_pci_serr_out ;
698 wire parchk_pci_serr_en_out ;
699 wire parchk_par_err_detect_out ;
700 wire parchk_perr_mas_detect_out ;
701 wire parchk_sig_serr_out ;
702
703 // input register outputs
704 wire in_reg_gnt_out ;
705 wire in_reg_frame_out ;
706 wire in_reg_irdy_out ;
707 wire in_reg_trdy_out ;
708 wire in_reg_stop_out ;
709 wire in_reg_devsel_out ;
710 wire in_reg_idsel_out ;
711 wire [31:0] in_reg_ad_out ;
712 wire [3:0] in_reg_cbe_out ;
713
714 /*=========================================================================================================
715 Now comes definition of all modules' and their appropriate inputs
716 =========================================================================================================*/
717 // PCI BRIDGE RESET AND INTERRUPT LOGIC INPUTS
718 wire pci_resi_rst_i = wb_rst_i ;
719 wire pci_resi_pci_rstn_in = pci_rst_i ;
720 wire pci_resi_conf_soft_res_in = conf_soft_res_out ;
721 wire pci_inti_pci_intan_in = pci_inta_i ;
722 wire pci_inti_conf_int_in = conf_int_out ;
723 wire pci_inti_int_i = wb_int_i ;
724 wire pci_into_init_complete_in = conf_pci_init_complete_out ;
725
726 pci_rst_int pci_resets_and_interrupts
727 (
728 .clk_in (pci_clk),
729 .rst_i (pci_resi_rst_i),
730 .pci_rstn_in (pci_resi_pci_rstn_in),
731 .conf_soft_res_in (pci_resi_conf_soft_res_in),
732 .reset (pci_reso_reset),
733 .pci_rstn_out (pci_reso_pci_rstn_out),
734 .pci_rstn_en_out (pci_reso_pci_rstn_en_out),
735 .rst_o (pci_reso_rst_o),
736 .pci_intan_in (pci_inti_pci_intan_in),
737 .conf_int_in (pci_inti_conf_int_in),
738 .int_i (pci_inti_int_i),
739 .pci_intan_out (pci_into_pci_intan_out),
740 .pci_intan_en_out (pci_into_pci_intan_en_out),
741 .int_o (pci_into_int_o),
742 .conf_isr_int_prop_out (pci_into_conf_isr_int_prop_out),
743 .init_complete_in (pci_into_init_complete_in)
744 );
745
746
747 `ifdef PCI_WB_REV_B3
748
749 wire wbs_wbb3_2_wbb2_cyc_o ;
750 wire wbs_wbb3_2_wbb2_stb_o ;
751 wire [31:0] wbs_wbb3_2_wbb2_adr_o ;
752 wire [31:0] wbs_wbb3_2_wbb2_dat_i_o ;
753 wire [31:0] wbs_wbb3_2_wbb2_dat_o_o ;
754 wire wbs_wbb3_2_wbb2_we_o ;
755 wire [ 3:0] wbs_wbb3_2_wbb2_sel_o ;
756 wire wbs_wbb3_2_wbb2_ack_o ;
757 wire wbs_wbb3_2_wbb2_err_o ;
758 wire wbs_wbb3_2_wbb2_rty_o ;
759 wire wbs_wbb3_2_wbb2_cab_o ;
760
761 // assign wishbone slave unit's outputs to top outputs where possible
762 assign wbs_dat_o = wbs_wbb3_2_wbb2_dat_o_o ;
763 assign wbs_ack_o = wbs_wbb3_2_wbb2_ack_o ;
764 assign wbs_rty_o = wbs_wbb3_2_wbb2_rty_o ;
765 assign wbs_err_o = wbs_wbb3_2_wbb2_err_o ;
766
767 wire wbs_wbb3_2_wbb2_cyc_i = wbs_cyc_i ;
768 wire wbs_wbb3_2_wbb2_stb_i = wbs_stb_i ;
769 wire wbs_wbb3_2_wbb2_we_i = wbs_we_i ;
770 wire wbs_wbb3_2_wbb2_ack_i = wbu_ack_out ;
771 wire wbs_wbb3_2_wbb2_err_i = wbu_err_out ;
772 wire wbs_wbb3_2_wbb2_rty_i = wbu_rty_out ;
773 wire [31:0] wbs_wbb3_2_wbb2_adr_i = wbs_adr_i ;
774 wire [ 3:0] wbs_wbb3_2_wbb2_sel_i = wbs_sel_i ;
775 wire [31:0] wbs_wbb3_2_wbb2_dat_i_i = wbs_dat_i ;
776 wire [31:0] wbs_wbb3_2_wbb2_dat_o_i = wbu_sdata_out ;
777 wire [ 2:0] wbs_wbb3_2_wbb2_cti_i = wbs_cti_i ;
778 wire [ 1:0] wbs_wbb3_2_wbb2_bte_i = wbs_bte_i ;
779
780 pci_wbs_wbb3_2_wbb2 i_pci_wbs_wbb3_2_wbb2
781 (
782 .wb_clk_i ( wb_clk_i ) ,
783 .wb_rst_i ( reset ) ,
784
785 .wbs_cyc_i ( wbs_wbb3_2_wbb2_cyc_i ) ,
786 .wbs_cyc_o ( wbs_wbb3_2_wbb2_cyc_o ) ,
787 .wbs_stb_i ( wbs_wbb3_2_wbb2_stb_i ) ,
788 .wbs_stb_o ( wbs_wbb3_2_wbb2_stb_o ) ,
789 .wbs_adr_i ( wbs_wbb3_2_wbb2_adr_i ) ,
790 .wbs_adr_o ( wbs_wbb3_2_wbb2_adr_o ) ,
791 .wbs_dat_i_i ( wbs_wbb3_2_wbb2_dat_i_i ) ,
792 .wbs_dat_i_o ( wbs_wbb3_2_wbb2_dat_i_o ) ,
793 .wbs_dat_o_i ( wbs_wbb3_2_wbb2_dat_o_i ) ,
794 .wbs_dat_o_o ( wbs_wbb3_2_wbb2_dat_o_o ) ,
795 .wbs_we_i ( wbs_wbb3_2_wbb2_we_i ) ,
796 .wbs_we_o ( wbs_wbb3_2_wbb2_we_o ) ,
797 .wbs_sel_i ( wbs_wbb3_2_wbb2_sel_i ) ,
798 .wbs_sel_o ( wbs_wbb3_2_wbb2_sel_o ) ,
799 .wbs_ack_i ( wbs_wbb3_2_wbb2_ack_i ) ,
800 .wbs_ack_o ( wbs_wbb3_2_wbb2_ack_o ) ,
801 .wbs_err_i ( wbs_wbb3_2_wbb2_err_i ) ,
802 .wbs_err_o ( wbs_wbb3_2_wbb2_err_o ) ,
803 .wbs_rty_i ( wbs_wbb3_2_wbb2_rty_i ) ,
804 .wbs_rty_o ( wbs_wbb3_2_wbb2_rty_o ) ,
805 .wbs_cti_i ( wbs_wbb3_2_wbb2_cti_i ) ,
806 .wbs_bte_i ( wbs_wbb3_2_wbb2_bte_i ) ,
807 .wbs_cab_o ( wbs_wbb3_2_wbb2_cab_o ) ,
808 .wb_init_complete_i ( conf_wb_init_complete_out )
809 ) ;
810
811 // WISHBONE SLAVE UNIT INPUTS
812 wire [31:0] wbu_addr_in = wbs_wbb3_2_wbb2_adr_o ;
813 wire [31:0] wbu_sdata_in = wbs_wbb3_2_wbb2_dat_i_o ;
814 wire wbu_cyc_in = wbs_wbb3_2_wbb2_cyc_o ;
815 wire wbu_stb_in = wbs_wbb3_2_wbb2_stb_o ;
816 wire wbu_we_in = wbs_wbb3_2_wbb2_we_o ;
817 wire [3:0] wbu_sel_in = wbs_wbb3_2_wbb2_sel_o ;
818 wire wbu_cab_in = wbs_wbb3_2_wbb2_cab_o ;
819
820 `else
821
822 // WISHBONE SLAVE UNIT INPUTS
823 wire [31:0] wbu_addr_in = wbs_adr_i ;
824 wire [31:0] wbu_sdata_in = wbs_dat_i ;
825 wire wbu_cyc_in = wbs_cyc_i ;
826 wire wbu_stb_in = wbs_stb_i ;
827 wire wbu_we_in = wbs_we_i ;
828 wire [3:0] wbu_sel_in = wbs_sel_i ;
829 wire wbu_cab_in = wbs_cab_i ;
830
831 // assign wishbone slave unit's outputs to top outputs where possible
832 assign wbs_dat_o = wbu_sdata_out ;
833 assign wbs_ack_o = wbu_ack_out ;
834 assign wbs_rty_o = wbu_rty_out ;
835 assign wbs_err_o = wbu_err_out ;
836
837 `endif
838
839 wire [5:0] wbu_map_in = {
840 conf_wb_mem_io5_out,
841 conf_wb_mem_io4_out,
842 conf_wb_mem_io3_out,
843 conf_wb_mem_io2_out,
844 conf_wb_mem_io1_out,
845 conf_wb_mem_io0_out
846 } ;
847
848 wire [5:0] wbu_pref_en_in = {
849 conf_wb_img_ctrl5_out[1],
850 conf_wb_img_ctrl4_out[1],
851 conf_wb_img_ctrl3_out[1],
852 conf_wb_img_ctrl2_out[1],
853 conf_wb_img_ctrl1_out[1],
854 conf_wb_img_ctrl0_out[1]
855 };
856 wire [5:0] wbu_mrl_en_in = {
857 conf_wb_img_ctrl5_out[0],
858 conf_wb_img_ctrl4_out[0],
859 conf_wb_img_ctrl3_out[0],
860 conf_wb_img_ctrl2_out[0],
861 conf_wb_img_ctrl1_out[0],
862 conf_wb_img_ctrl0_out[0]
863 };
864
865 wire [5:0] wbu_at_en_in = {
866 conf_wb_img_ctrl5_out[2],
867 conf_wb_img_ctrl4_out[2],
868 conf_wb_img_ctrl3_out[2],
869 conf_wb_img_ctrl2_out[2],
870 conf_wb_img_ctrl1_out[2],
871 conf_wb_img_ctrl0_out[2]
872 } ;
873
874 wire wbu_pci_drcomp_pending_in = pciu_pci_drcomp_pending_out ;
875 wire wbu_pciw_empty_in = pciu_pciw_fifo_empty_out ;
876
877 `ifdef HOST
878 wire [31:0] wbu_conf_data_in = conf_w_data_out ;
879 `else
880 `ifdef GUEST
881 wire [31:0] wbu_conf_data_in = conf_r_data_out ;
882 `endif
883 `endif
884
885 wire [(`WB_NUM_OF_DEC_ADDR_LINES - 1):0] wbu_bar0_in = conf_wb_ba0_out ;
886 wire [(`WB_NUM_OF_DEC_ADDR_LINES - 1):0] wbu_bar1_in = conf_wb_ba1_out ;
887 wire [(`WB_NUM_OF_DEC_ADDR_LINES - 1):0] wbu_bar2_in = conf_wb_ba2_out ;
888 wire [(`WB_NUM_OF_DEC_ADDR_LINES - 1):0] wbu_bar3_in = conf_wb_ba3_out ;
889 wire [(`WB_NUM_OF_DEC_ADDR_LINES - 1):0] wbu_bar4_in = conf_wb_ba4_out ;
890 wire [(`WB_NUM_OF_DEC_ADDR_LINES - 1):0] wbu_bar5_in = conf_wb_ba5_out ;
891 wire [(`WB_NUM_OF_DEC_ADDR_LINES - 1):0] wbu_am0_in = conf_wb_am0_out ;
892 wire [(`WB_NUM_OF_DEC_ADDR_LINES - 1):0] wbu_am1_in = conf_wb_am1_out ;
893 wire [(`WB_NUM_OF_DEC_ADDR_LINES - 1):0] wbu_am2_in = conf_wb_am2_out ;
894 wire [(`WB_NUM_OF_DEC_ADDR_LINES - 1):0] wbu_am3_in = conf_wb_am3_out ;
895 wire [(`WB_NUM_OF_DEC_ADDR_LINES - 1):0] wbu_am4_in = conf_wb_am4_out ;
896 wire [(`WB_NUM_OF_DEC_ADDR_LINES - 1):0] wbu_am5_in = conf_wb_am5_out ;
897 wire [(`WB_NUM_OF_DEC_ADDR_LINES - 1):0] wbu_ta0_in = conf_wb_ta0_out ;
898 wire [(`WB_NUM_OF_DEC_ADDR_LINES - 1):0] wbu_ta1_in = conf_wb_ta1_out ;
899 wire [(`WB_NUM_OF_DEC_ADDR_LINES - 1):0] wbu_ta2_in = conf_wb_ta2_out ;
900 wire [(`WB_NUM_OF_DEC_ADDR_LINES - 1):0] wbu_ta3_in = conf_wb_ta3_out ;
901 wire [(`WB_NUM_OF_DEC_ADDR_LINES - 1):0] wbu_ta4_in = conf_wb_ta4_out ;
902 wire [(`WB_NUM_OF_DEC_ADDR_LINES - 1):0] wbu_ta5_in = conf_wb_ta5_out ;
903
904 wire [23:0] wbu_ccyc_addr_in = conf_ccyc_addr_out ;
905 wire wbu_master_enable_in = conf_pci_master_enable_out ;
906 wire wbu_cache_line_size_not_zero = conf_cache_lsize_not_zero_to_wb_out ;
907 wire [7:0] wbu_cache_line_size_in = conf_cache_line_size_to_pci_out ;
908
909 wire wbu_pciif_gnt_in = pci_gnt_i ;
910 wire wbu_pciif_frame_in = in_reg_frame_out ;
911 wire wbu_pciif_irdy_in = in_reg_irdy_out ;
912 wire wbu_pciif_trdy_in = int_pci_trdy ;
913 wire wbu_pciif_stop_in = int_pci_stop ;
914 wire wbu_pciif_devsel_in = int_pci_devsel ;
915 wire [31:0] wbu_pciif_ad_reg_in = in_reg_ad_out ;
916 wire wbu_pciif_trdy_reg_in = in_reg_trdy_out ;
917 wire wbu_pciif_stop_reg_in = in_reg_stop_out ;
918 wire wbu_pciif_devsel_reg_in = in_reg_devsel_out ;
919
920
921 wire [7:0] wbu_latency_tim_val_in = conf_latency_tim_out ;
922
923 wire wbu_pciif_frame_en_in = out_bckp_frame_en_out ;
924 wire wbu_pciif_frame_out_in = out_bckp_frame_out ;
925 wire wbu_wb_init_complete_in = conf_wb_init_complete_out ;
926
927 pci_wb_slave_unit wishbone_slave_unit
928 (
929 .reset_in (reset),
930 .wb_clock_in (wb_clk),
931 .pci_clock_in (pci_clk),
932 .ADDR_I (wbu_addr_in),
933 .SDATA_I (wbu_sdata_in),
934 .SDATA_O (wbu_sdata_out),
935 .CYC_I (wbu_cyc_in),
936 .STB_I (wbu_stb_in),
937 .WE_I (wbu_we_in),
938 .SEL_I (wbu_sel_in),
939 .ACK_O (wbu_ack_out),
940 .RTY_O (wbu_rty_out),
941 .ERR_O (wbu_err_out),
942 .CAB_I (wbu_cab_in),
943 .wbu_map_in (wbu_map_in),
944 .wbu_pref_en_in (wbu_pref_en_in),
945 .wbu_mrl_en_in (wbu_mrl_en_in),
946 .wbu_pci_drcomp_pending_in (wbu_pci_drcomp_pending_in),
947 .wbu_conf_data_in (wbu_conf_data_in),
948 .wbu_pciw_empty_in (wbu_pciw_empty_in),
949 .wbu_bar0_in (wbu_bar0_in),
950 .wbu_bar1_in (wbu_bar1_in),
951 .wbu_bar2_in (wbu_bar2_in),
952 .wbu_bar3_in (wbu_bar3_in),
953 .wbu_bar4_in (wbu_bar4_in),
954 .wbu_bar5_in (wbu_bar5_in),
955 .wbu_am0_in (wbu_am0_in),
956 .wbu_am1_in (wbu_am1_in),
957 .wbu_am2_in (wbu_am2_in),
958 .wbu_am3_in (wbu_am3_in),
959 .wbu_am4_in (wbu_am4_in),
960 .wbu_am5_in (wbu_am5_in),
961 .wbu_ta0_in (wbu_ta0_in),
962 .wbu_ta1_in (wbu_ta1_in),
963 .wbu_ta2_in (wbu_ta2_in),
964 .wbu_ta3_in (wbu_ta3_in),
965 .wbu_ta4_in (wbu_ta4_in),
966 .wbu_ta5_in (wbu_ta5_in),
967 .wbu_at_en_in (wbu_at_en_in),
968 .wbu_ccyc_addr_in (wbu_ccyc_addr_in),
969 .wbu_master_enable_in (wbu_master_enable_in),
970 .wb_init_complete_in (wbu_wb_init_complete_in),
971 .wbu_cache_line_size_not_zero (wbu_cache_line_size_not_zero),
972 .wbu_cache_line_size_in (wbu_cache_line_size_in),
973 .wbu_pciif_gnt_in (wbu_pciif_gnt_in),
974 .wbu_pciif_frame_in (wbu_pciif_frame_in),
975 .wbu_pciif_frame_en_in (wbu_pciif_frame_en_in),
976 .wbu_pciif_frame_out_in (wbu_pciif_frame_out_in),
977 .wbu_pciif_irdy_in (wbu_pciif_irdy_in),
978 .wbu_pciif_trdy_in (wbu_pciif_trdy_in),
979 .wbu_pciif_stop_in (wbu_pciif_stop_in),
980 .wbu_pciif_devsel_in (wbu_pciif_devsel_in),
981 .wbu_pciif_ad_reg_in (wbu_pciif_ad_reg_in),
982 .wbu_pciif_req_out (wbu_pciif_req_out),
983 .wbu_pciif_frame_out (wbu_pciif_frame_out),
984 .wbu_pciif_frame_en_out (wbu_pciif_frame_en_out),
985 .wbu_pciif_frame_load_out (wbu_pciif_frame_load_out),
986 .wbu_pciif_irdy_out (wbu_pciif_irdy_out),
987 .wbu_pciif_irdy_en_out (wbu_pciif_irdy_en_out),
988 .wbu_pciif_ad_out (wbu_pciif_ad_out),
989 .wbu_pciif_ad_en_out (wbu_pciif_ad_en_out),
990 .wbu_pciif_cbe_out (wbu_pciif_cbe_out),
991 .wbu_pciif_cbe_en_out (wbu_pciif_cbe_en_out),
992 .wbu_err_addr_out (wbu_err_addr_out),
993 .wbu_err_bc_out (wbu_err_bc_out),
994 .wbu_err_signal_out (wbu_err_signal_out),
995 .wbu_err_source_out (wbu_err_source_out),
996 .wbu_err_rty_exp_out (wbu_err_rty_exp_out),
997 .wbu_tabort_rec_out (wbu_tabort_rec_out),
998 .wbu_mabort_rec_out (wbu_mabort_rec_out),
999 .wbu_conf_offset_out (wbu_conf_offset_out),
1000 .wbu_conf_renable_out (wbu_conf_renable_out),
1001 .wbu_conf_wenable_out (wbu_conf_wenable_out),
1002 .wbu_conf_be_out (wbu_conf_be_out),
1003 .wbu_conf_data_out (wbu_conf_data_out),
1004 .wbu_del_read_comp_pending_out (wbu_del_read_comp_pending_out),
1005 .wbu_wbw_fifo_empty_out (wbu_wbw_fifo_empty_out),
1006 .wbu_latency_tim_val_in (wbu_latency_tim_val_in),
1007 .wbu_ad_load_out (wbu_ad_load_out),
1008 .wbu_ad_load_on_transfer_out (wbu_ad_load_on_transfer_out),
1009 .wbu_pciif_trdy_reg_in (wbu_pciif_trdy_reg_in),
1010 .wbu_pciif_stop_reg_in (wbu_pciif_stop_reg_in),
1011 .wbu_pciif_devsel_reg_in (wbu_pciif_devsel_reg_in)
1012
1013 `ifdef PCI_BIST
1014 ,
1015 .mbist_si_i (mbist_si_i),
1016 .mbist_so_o (mbist_so_o_internal),
1017 .mbist_ctrl_i (mbist_ctrl_i)
1018 `endif
1019 );
1020
1021 // PCI TARGET UNIT INPUTS
1022 wire [31:0] pciu_mdata_in = wbm_dat_i ;
1023 wire pciu_ack_in = wbm_ack_i ;
1024 wire pciu_rty_in = wbm_rty_i ;
1025 wire pciu_err_in = wbm_err_i ;
1026
1027 wire [5:0] pciu_map_in = {
1028 conf_pci_mem_io5_out,
1029 conf_pci_mem_io4_out,
1030 conf_pci_mem_io3_out,
1031 conf_pci_mem_io2_out,
1032 conf_pci_mem_io1_out,
1033 conf_pci_mem_io0_out
1034 } ;
1035
1036 wire [5:0] pciu_pref_en_in = {
1037 conf_pci_img_ctrl5_out[0],
1038 conf_pci_img_ctrl4_out[0],
1039 conf_pci_img_ctrl3_out[0],
1040 conf_pci_img_ctrl2_out[0],
1041 conf_pci_img_ctrl1_out[0],
1042 conf_pci_img_ctrl0_out[0]
1043 };
1044
1045 wire [5:0] pciu_at_en_in = {
1046 conf_pci_img_ctrl5_out[1],
1047 conf_pci_img_ctrl4_out[1],
1048 conf_pci_img_ctrl3_out[1],
1049 conf_pci_img_ctrl2_out[1],
1050 conf_pci_img_ctrl1_out[1],
1051 conf_pci_img_ctrl0_out[1]
1052 } ;
1053
1054 wire pciu_mem_enable_in = conf_mem_space_enable_out ;
1055 wire pciu_io_enable_in = conf_io_space_enable_out ;
1056
1057 wire pciu_wbw_fifo_empty_in = wbu_wbw_fifo_empty_out ;
1058 wire pciu_wbu_del_read_comp_pending_in = wbu_del_read_comp_pending_out ;
1059 wire pciu_wbu_frame_en_in = out_bckp_frame_en_out ;
1060
1061 `ifdef HOST
1062 wire [31:0] pciu_conf_data_in = conf_r_data_out ;
1063 `else
1064 `ifdef GUEST
1065 wire [31:0] pciu_conf_data_in = conf_w_data_out ;
1066 `endif
1067 `endif
1068
1069 wire [pci_ba0_width - 1:0] pciu_bar0_in = conf_pci_ba0_out ;
1070 wire [pci_ba1_5_width - 1:0] pciu_bar1_in = conf_pci_ba1_out ;
1071 wire [pci_ba1_5_width - 1:0] pciu_bar2_in = conf_pci_ba2_out ;
1072 wire [pci_ba1_5_width - 1:0] pciu_bar3_in = conf_pci_ba3_out ;
1073 wire [pci_ba1_5_width - 1:0] pciu_bar4_in = conf_pci_ba4_out ;
1074 wire [pci_ba1_5_width - 1:0] pciu_bar5_in = conf_pci_ba5_out ;
1075 wire [pci_ba1_5_width - 1:0] pciu_am0_in = conf_pci_am0_out ;
1076 wire [pci_ba1_5_width - 1:0] pciu_am1_in = conf_pci_am1_out ;
1077 wire [pci_ba1_5_width - 1:0] pciu_am2_in = conf_pci_am2_out ;
1078 wire [pci_ba1_5_width - 1:0] pciu_am3_in = conf_pci_am3_out ;
1079 wire [pci_ba1_5_width - 1:0] pciu_am4_in = conf_pci_am4_out ;
1080 wire [pci_ba1_5_width - 1:0] pciu_am5_in = conf_pci_am5_out ;
1081 wire [pci_ba1_5_width - 1:0] pciu_ta0_in = conf_pci_ta0_out ;
1082 wire [pci_ba1_5_width - 1:0] pciu_ta1_in = conf_pci_ta1_out ;
1083 wire [pci_ba1_5_width - 1:0] pciu_ta2_in = conf_pci_ta2_out ;
1084 wire [pci_ba1_5_width - 1:0] pciu_ta3_in = conf_pci_ta3_out ;
1085 wire [pci_ba1_5_width - 1:0] pciu_ta4_in = conf_pci_ta4_out ;
1086 wire [pci_ba1_5_width - 1:0] pciu_ta5_in = conf_pci_ta5_out ;
1087
1088 wire [7:0] pciu_cache_line_size_in = conf_cache_line_size_to_wb_out ;
1089 wire pciu_cache_lsize_not_zero_in = conf_cache_lsize_not_zero_to_wb_out ;
1090
1091 wire pciu_pciif_frame_in = int_pci_frame ;
1092 wire pciu_pciif_irdy_in = int_pci_irdy ;
1093 wire pciu_pciif_idsel_in = pci_idsel_i ;
1094 wire pciu_pciif_frame_reg_in = in_reg_frame_out ;
1095 wire pciu_pciif_irdy_reg_in = in_reg_irdy_out ;
1096 wire pciu_pciif_idsel_reg_in = in_reg_idsel_out ;
1097 wire [31:0] pciu_pciif_ad_reg_in = in_reg_ad_out ;
1098 wire [3:0] pciu_pciif_cbe_reg_in = in_reg_cbe_out ;
1099 wire [3:0] pciu_pciif_cbe_in = int_pci_cbe ;
1100
1101 wire pciu_pciif_bckp_trdy_en_in = out_bckp_trdy_en_out ;
1102 wire pciu_pciif_bckp_devsel_in = out_bckp_devsel_out ;
1103 wire pciu_pciif_bckp_trdy_in = out_bckp_trdy_out ;
1104 wire pciu_pciif_bckp_stop_in = out_bckp_stop_out ;
1105 wire pciu_pciif_trdy_reg_in = in_reg_trdy_out ;
1106 wire pciu_pciif_stop_reg_in = in_reg_stop_out ;
1107
1108 pci_target_unit pci_target_unit
1109 (
1110 .reset_in (reset),
1111 .wb_clock_in (wb_clk),
1112 .pci_clock_in (pci_clk),
1113 .pciu_wbm_adr_o (pciu_adr_out),
1114 .pciu_wbm_dat_o (pciu_mdata_out),
1115 .pciu_wbm_dat_i (pciu_mdata_in),
1116 .pciu_wbm_cyc_o (pciu_cyc_out),
1117 .pciu_wbm_stb_o (pciu_stb_out),
1118 .pciu_wbm_we_o (pciu_we_out),
1119 .pciu_wbm_cti_o (pciu_cti_out),
1120 .pciu_wbm_bte_o (pciu_bte_out),
1121 .pciu_wbm_sel_o (pciu_sel_out),
1122 .pciu_wbm_ack_i (pciu_ack_in),
1123 .pciu_wbm_rty_i (pciu_rty_in),
1124 .pciu_wbm_err_i (pciu_err_in),
1125 .pciu_mem_enable_in (pciu_mem_enable_in),
1126 .pciu_io_enable_in (pciu_io_enable_in),
1127 .pciu_map_in (pciu_map_in),
1128 .pciu_pref_en_in (pciu_pref_en_in),
1129 .pciu_conf_data_in (pciu_conf_data_in),
1130 .pciu_wbw_fifo_empty_in (pciu_wbw_fifo_empty_in),
1131 .pciu_wbu_del_read_comp_pending_in (pciu_wbu_del_read_comp_pending_in),
1132 .pciu_wbu_frame_en_in (pciu_wbu_frame_en_in),
1133 .pciu_bar0_in (pciu_bar0_in),
1134 .pciu_bar1_in (pciu_bar1_in),
1135 .pciu_bar2_in (pciu_bar2_in),
1136 .pciu_bar3_in (pciu_bar3_in),
1137 .pciu_bar4_in (pciu_bar4_in),
1138 .pciu_bar5_in (pciu_bar5_in),
1139 .pciu_am0_in (pciu_am0_in),
1140 .pciu_am1_in (pciu_am1_in),
1141 .pciu_am2_in (pciu_am2_in),
1142 .pciu_am3_in (pciu_am3_in),
1143 .pciu_am4_in (pciu_am4_in),
1144 .pciu_am5_in (pciu_am5_in),
1145 .pciu_ta0_in (pciu_ta0_in),
1146 .pciu_ta1_in (pciu_ta1_in),
1147 .pciu_ta2_in (pciu_ta2_in),
1148 .pciu_ta3_in (pciu_ta3_in),
1149 .pciu_ta4_in (pciu_ta4_in),
1150 .pciu_ta5_in (pciu_ta5_in),
1151 .pciu_at_en_in (pciu_at_en_in),
1152 .pciu_cache_line_size_in (pciu_cache_line_size_in),
1153 .pciu_cache_lsize_not_zero_in (pciu_cache_lsize_not_zero_in),
1154 .pciu_pciif_frame_in (pciu_pciif_frame_in),
1155 .pciu_pciif_irdy_in (pciu_pciif_irdy_in),
1156 .pciu_pciif_idsel_in (pciu_pciif_idsel_in),
1157 .pciu_pciif_frame_reg_in (pciu_pciif_frame_reg_in),
1158 .pciu_pciif_irdy_reg_in (pciu_pciif_irdy_reg_in),
1159 .pciu_pciif_idsel_reg_in (pciu_pciif_idsel_reg_in),
1160 .pciu_pciif_ad_reg_in (pciu_pciif_ad_reg_in),
1161 .pciu_pciif_cbe_reg_in (pciu_pciif_cbe_reg_in),
1162 .pciu_pciif_cbe_in (pciu_pciif_cbe_in),
1163 .pciu_pciif_bckp_trdy_en_in (pciu_pciif_bckp_trdy_en_in),
1164 .pciu_pciif_bckp_devsel_in (pciu_pciif_bckp_devsel_in),
1165 .pciu_pciif_bckp_trdy_in (pciu_pciif_bckp_trdy_in),
1166 .pciu_pciif_bckp_stop_in (pciu_pciif_bckp_stop_in),
1167 .pciu_pciif_trdy_reg_in (pciu_pciif_trdy_reg_in),
1168 .pciu_pciif_stop_reg_in (pciu_pciif_stop_reg_in),
1169 .pciu_pciif_trdy_out (pciu_pciif_trdy_out),
1170 .pciu_pciif_stop_out (pciu_pciif_stop_out),
1171 .pciu_pciif_devsel_out (pciu_pciif_devsel_out),
1172 .pciu_pciif_trdy_en_out (pciu_pciif_trdy_en_out),
1173 .pciu_pciif_stop_en_out (pciu_pciif_stop_en_out),
1174 .pciu_pciif_devsel_en_out (pciu_pciif_devsel_en_out),
1175 .pciu_ad_load_out (pciu_ad_load_out),
1176 .pciu_ad_load_on_transfer_out (pciu_ad_load_on_transfer_out),
1177 .pciu_pciif_ad_out (pciu_pciif_ad_out),
1178 .pciu_pciif_ad_en_out (pciu_pciif_ad_en_out),
1179 .pciu_pciif_tabort_set_out (pciu_pciif_tabort_set_out),
1180 .pciu_err_addr_out (pciu_err_addr_out),
1181 .pciu_err_bc_out (pciu_err_bc_out),
1182 .pciu_err_data_out (pciu_err_data_out),
1183 .pciu_err_be_out (pciu_err_be_out),
1184 .pciu_err_signal_out (pciu_err_signal_out),
1185 .pciu_err_source_out (pciu_err_source_out),
1186 .pciu_err_rty_exp_out (pciu_err_rty_exp_out),
1187 .pciu_conf_offset_out (pciu_conf_offset_out),
1188 .pciu_conf_renable_out (pciu_conf_renable_out),
1189 .pciu_conf_wenable_out (pciu_conf_wenable_out),
1190 .pciu_conf_be_out (pciu_conf_be_out),
1191 .pciu_conf_data_out (pciu_conf_data_out),
1192 .pciu_pci_drcomp_pending_out (pciu_pci_drcomp_pending_out),
1193 .pciu_pciw_fifo_empty_out (pciu_pciw_fifo_empty_out)
1194
1195 `ifdef PCI_BIST
1196 ,
1197 .mbist_si_i (mbist_so_o_internal),
1198 .mbist_so_o (mbist_so_o),
1199 .mbist_ctrl_i (mbist_ctrl_i)
1200 `endif
1201 );
1202
1203
1204 // CONFIGURATION SPACE INPUTS
1205 `ifdef HOST
1206
1207 wire [11:0] conf_w_addr_in = wbu_conf_offset_out ;
1208 wire [31:0] conf_w_data_in = wbu_conf_data_out ;
1209 wire conf_w_we_in = wbu_conf_wenable_out ;
1210 wire conf_w_re_in = wbu_conf_renable_out ;
1211 wire [3:0] conf_w_be_in = wbu_conf_be_out ;
1212 wire conf_w_clock = wb_clk ;
1213 wire [11:0] conf_r_addr_in = pciu_conf_offset_out ;
1214 wire conf_r_re_in = pciu_conf_renable_out ;
1215
1216 `else
1217 `ifdef GUEST
1218
1219 wire [11:0] conf_r_addr_in = wbu_conf_offset_out ;
1220 wire conf_r_re_in = wbu_conf_renable_out ;
1221 wire conf_w_clock = pci_clk ;
1222 wire [11:0] conf_w_addr_in = pciu_conf_offset_out ;
1223 wire [31:0] conf_w_data_in = pciu_conf_data_out ;
1224 wire conf_w_we_in = pciu_conf_wenable_out ;
1225 wire conf_w_re_in = pciu_conf_renable_out ;
1226 wire [3:0] conf_w_be_in = pciu_conf_be_out ;
1227
1228 `endif
1229 `endif
1230
1231
1232 wire conf_perr_in = parchk_par_err_detect_out ;
1233 wire conf_serr_in = parchk_sig_serr_out ;
1234 wire conf_master_abort_recv_in = wbu_mabort_rec_out ;
1235 wire conf_target_abort_recv_in = wbu_tabort_rec_out ;
1236 wire conf_target_abort_set_in = pciu_pciif_tabort_set_out ;
1237
1238 wire conf_master_data_par_err_in = parchk_perr_mas_detect_out ;
1239
1240 wire [3:0] conf_pci_err_be_in = pciu_err_be_out ;
1241 wire [3:0] conf_pci_err_bc_in = pciu_err_bc_out;
1242 wire conf_pci_err_es_in = pciu_err_source_out ;
1243 wire conf_pci_err_rty_exp_in = pciu_err_rty_exp_out ;
1244 wire conf_pci_err_sig_in = pciu_err_signal_out ;
1245 wire [31:0] conf_pci_err_addr_in = pciu_err_addr_out ;
1246 wire [31:0] conf_pci_err_data_in = pciu_err_data_out ;
1247
1248 wire [3:0] conf_wb_err_be_in = out_bckp_cbe_out ;
1249 wire [3:0] conf_wb_err_bc_in = wbu_err_bc_out ;
1250 wire conf_wb_err_rty_exp_in = wbu_err_rty_exp_out ;
1251 wire conf_wb_err_es_in = wbu_err_source_out ;
1252 wire conf_wb_err_sig_in = wbu_err_signal_out ;
1253 wire [31:0] conf_wb_err_addr_in = wbu_err_addr_out ;
1254 wire [31:0] conf_wb_err_data_in = out_bckp_ad_out ;
1255
1256 wire conf_isr_int_prop_in = pci_into_conf_isr_int_prop_out ;
1257 wire conf_par_err_int_in = parchk_perr_mas_detect_out ;
1258 wire conf_sys_err_int_in = parchk_sig_serr_out ;
1259
1260 pci_conf_space configuration(
1261 .reset (reset),
1262 .pci_clk (pci_clk),
1263 .wb_clk (wb_clk),
1264 .w_conf_address_in (conf_w_addr_in),
1265 .w_conf_data_in (conf_w_data_in),
1266 .w_conf_data_out (conf_w_data_out),
1267 .r_conf_address_in (conf_r_addr_in),
1268 .r_conf_data_out (conf_r_data_out),
1269 .w_we_i (conf_w_we_in),
1270 .w_re (conf_w_re_in),
1271 .r_re (conf_r_re_in),
1272 .w_byte_en_in (conf_w_be_in),
1273 .w_clock (conf_w_clock),
1274 .serr_enable (conf_serr_enable_out),
1275 .perr_response (conf_perr_response_out),
1276 .pci_master_enable (conf_pci_master_enable_out),
1277 .memory_space_enable (conf_mem_space_enable_out),
1278 .io_space_enable (conf_io_space_enable_out),
1279 .perr_in (conf_perr_in),
1280 .serr_in (conf_serr_in),
1281 .master_abort_recv (conf_master_abort_recv_in),
1282 .target_abort_recv (conf_target_abort_recv_in),
1283 .target_abort_set (conf_target_abort_set_in),
1284 .master_data_par_err (conf_master_data_par_err_in),
1285 .cache_line_size_to_pci (conf_cache_line_size_to_pci_out),
1286 .cache_line_size_to_wb (conf_cache_line_size_to_wb_out),
1287 .cache_lsize_not_zero_to_wb (conf_cache_lsize_not_zero_to_wb_out),
1288 .latency_tim (conf_latency_tim_out),
1289 .pci_base_addr0 (conf_pci_ba0_out),
1290 .pci_base_addr1 (conf_pci_ba1_out),
1291 .pci_base_addr2 (conf_pci_ba2_out),
1292 .pci_base_addr3 (conf_pci_ba3_out),
1293 .pci_base_addr4 (conf_pci_ba4_out),
1294 .pci_base_addr5 (conf_pci_ba5_out),
1295 .pci_memory_io0 (conf_pci_mem_io0_out),
1296 .pci_memory_io1 (conf_pci_mem_io1_out),
1297 .pci_memory_io2 (conf_pci_mem_io2_out),
1298 .pci_memory_io3 (conf_pci_mem_io3_out),
1299 .pci_memory_io4 (conf_pci_mem_io4_out),
1300 .pci_memory_io5 (conf_pci_mem_io5_out),
1301 .pci_addr_mask0 (conf_pci_am0_out),
1302 .pci_addr_mask1 (conf_pci_am1_out),
1303 .pci_addr_mask2 (conf_pci_am2_out),
1304 .pci_addr_mask3 (conf_pci_am3_out),
1305 .pci_addr_mask4 (conf_pci_am4_out),
1306 .pci_addr_mask5 (conf_pci_am5_out),
1307 .pci_tran_addr0 (conf_pci_ta0_out),
1308 .pci_tran_addr1 (conf_pci_ta1_out),
1309 .pci_tran_addr2 (conf_pci_ta2_out),
1310 .pci_tran_addr3 (conf_pci_ta3_out),
1311 .pci_tran_addr4 (conf_pci_ta4_out),
1312 .pci_tran_addr5 (conf_pci_ta5_out),
1313 .pci_img_ctrl0 (conf_pci_img_ctrl0_out),
1314 .pci_img_ctrl1 (conf_pci_img_ctrl1_out),
1315 .pci_img_ctrl2 (conf_pci_img_ctrl2_out),
1316 .pci_img_ctrl3 (conf_pci_img_ctrl3_out),
1317 .pci_img_ctrl4 (conf_pci_img_ctrl4_out),
1318 .pci_img_ctrl5 (conf_pci_img_ctrl5_out),
1319 .pci_error_be (conf_pci_err_be_in),
1320 .pci_error_bc (conf_pci_err_bc_in),
1321 .pci_error_rty_exp (conf_pci_err_rty_exp_in),
1322 .pci_error_es (conf_pci_err_es_in),
1323 .pci_error_sig (conf_pci_err_sig_in),
1324 .pci_error_addr (conf_pci_err_addr_in),
1325 .pci_error_data (conf_pci_err_data_in),
1326 .wb_base_addr0 (conf_wb_ba0_out),
1327 .wb_base_addr1 (conf_wb_ba1_out),
1328 .wb_base_addr2 (conf_wb_ba2_out),
1329 .wb_base_addr3 (conf_wb_ba3_out),
1330 .wb_base_addr4 (conf_wb_ba4_out),
1331 .wb_base_addr5 (conf_wb_ba5_out),
1332 .wb_memory_io0 (conf_wb_mem_io0_out),
1333 .wb_memory_io1 (conf_wb_mem_io1_out),
1334 .wb_memory_io2 (conf_wb_mem_io2_out),
1335 .wb_memory_io3 (conf_wb_mem_io3_out),
1336 .wb_memory_io4 (conf_wb_mem_io4_out),
1337 .wb_memory_io5 (conf_wb_mem_io5_out),
1338 .wb_addr_mask0 (conf_wb_am0_out),
1339 .wb_addr_mask1 (conf_wb_am1_out),
1340 .wb_addr_mask2 (conf_wb_am2_out),
1341 .wb_addr_mask3 (conf_wb_am3_out),
1342 .wb_addr_mask4 (conf_wb_am4_out),
1343 .wb_addr_mask5 (conf_wb_am5_out),
1344 .wb_tran_addr0 (conf_wb_ta0_out),
1345 .wb_tran_addr1 (conf_wb_ta1_out),
1346 .wb_tran_addr2 (conf_wb_ta2_out),
1347 .wb_tran_addr3 (conf_wb_ta3_out),
1348 .wb_tran_addr4 (conf_wb_ta4_out),
1349 .wb_tran_addr5 (conf_wb_ta5_out),
1350 .wb_img_ctrl0 (conf_wb_img_ctrl0_out),
1351 .wb_img_ctrl1 (conf_wb_img_ctrl1_out),
1352 .wb_img_ctrl2 (conf_wb_img_ctrl2_out),
1353 .wb_img_ctrl3 (conf_wb_img_ctrl3_out),
1354 .wb_img_ctrl4 (conf_wb_img_ctrl4_out),
1355 .wb_img_ctrl5 (conf_wb_img_ctrl5_out),
1356 .wb_error_be (conf_wb_err_be_in),
1357 .wb_error_bc (conf_wb_err_bc_in),
1358 .wb_error_rty_exp (conf_wb_err_rty_exp_in),
1359 .wb_error_es (conf_wb_err_es_in),
1360 .wb_error_sig (conf_wb_err_sig_in),
1361 .wb_error_addr (conf_wb_err_addr_in),
1362 .wb_error_data (conf_wb_err_data_in),
1363 .config_addr (conf_ccyc_addr_out),
1364 .icr_soft_res (conf_soft_res_out),
1365 .int_out (conf_int_out),
1366 .isr_int_prop (conf_isr_int_prop_in),
1367 .isr_par_err_int (conf_par_err_int_in),
1368 .isr_sys_err_int (conf_sys_err_int_in),
1369
1370 .pci_init_complete_out (conf_pci_init_complete_out),
1371 .wb_init_complete_out (conf_wb_init_complete_out)
1372
1373 `ifdef PCI_CPCI_HS_IMPLEMENT
1374 ,
1375 .pci_cpci_hs_enum_oe_o (pci_cpci_hs_enum_oe_o) ,
1376 .pci_cpci_hs_led_oe_o (pci_cpci_hs_led_oe_o ) ,
1377 .pci_cpci_hs_es_i (pci_cpci_hs_es_i)
1378 `endif
1379
1380 `ifdef PCI_SPOCI
1381 ,
1382 // Serial power on configuration interface
1383 .spoci_scl_oe_o (spoci_scl_oe_o ) ,
1384 .spoci_sda_i (spoci_sda_i ) ,
1385 .spoci_sda_oe_o (spoci_sda_oe_o )
1386 `endif
1387 ) ;
1388
1389 // pci data io multiplexer inputs
1390 wire pci_mux_tar_ad_en_in = pciu_pciif_ad_en_out ;
1391 wire pci_mux_tar_ad_en_reg_in = out_bckp_tar_ad_en_out ;
1392 wire [31:0] pci_mux_tar_ad_in = pciu_pciif_ad_out ;
1393 wire pci_mux_devsel_in = pciu_pciif_devsel_out ;
1394 wire pci_mux_devsel_en_in = pciu_pciif_devsel_en_out ;
1395 wire pci_mux_trdy_in = pciu_pciif_trdy_out ;
1396 wire pci_mux_trdy_en_in = pciu_pciif_trdy_en_out ;
1397 wire pci_mux_stop_in = pciu_pciif_stop_out ;
1398 wire pci_mux_stop_en_in = pciu_pciif_stop_en_out ;
1399 wire pci_mux_tar_load_in = pciu_ad_load_out ;
1400 wire pci_mux_tar_load_on_transfer_in = pciu_ad_load_on_transfer_out ;
1401
1402 wire pci_mux_mas_ad_en_in = wbu_pciif_ad_en_out ;
1403 wire [31:0] pci_mux_mas_ad_in = wbu_pciif_ad_out ;
1404
1405 wire pci_mux_frame_in = wbu_pciif_frame_out ;
1406 wire pci_mux_frame_en_in = wbu_pciif_frame_en_out ;
1407 wire pci_mux_irdy_in = wbu_pciif_irdy_out;
1408 wire pci_mux_irdy_en_in = wbu_pciif_irdy_en_out;
1409 wire pci_mux_mas_load_in = wbu_ad_load_out ;
1410 wire pci_mux_mas_load_on_transfer_in = wbu_ad_load_on_transfer_out ;
1411 wire [3:0] pci_mux_cbe_in = wbu_pciif_cbe_out ;
1412 wire pci_mux_cbe_en_in = wbu_pciif_cbe_en_out ;
1413
1414 wire pci_mux_par_in = parchk_pci_par_out ;
1415 wire pci_mux_par_en_in = parchk_pci_par_en_out ;
1416 wire pci_mux_perr_in = parchk_pci_perr_out ;
1417 wire pci_mux_perr_en_in = parchk_pci_perr_en_out ;
1418 wire pci_mux_serr_in = parchk_pci_serr_out ;
1419 wire pci_mux_serr_en_in = parchk_pci_serr_en_out;
1420
1421 wire pci_mux_req_in = wbu_pciif_req_out ;
1422 wire pci_mux_frame_load_in = wbu_pciif_frame_load_out ;
1423
1424 wire pci_mux_pci_irdy_in = int_pci_irdy ;
1425 wire pci_mux_pci_trdy_in = int_pci_trdy ;
1426 wire pci_mux_pci_frame_in = int_pci_frame ;
1427 wire pci_mux_pci_stop_in = int_pci_stop ;
1428
1429 wire pci_mux_init_complete_in = conf_pci_init_complete_out ;
1430
1431 pci_io_mux pci_io_mux
1432 (
1433 .reset_in (reset),
1434 .clk_in (pci_clk),
1435 .frame_in (pci_mux_frame_in),
1436 .frame_en_in (pci_mux_frame_en_in),
1437 .frame_load_in (pci_mux_frame_load_in),
1438 .irdy_in (pci_mux_irdy_in),
1439 .irdy_en_in (pci_mux_irdy_en_in),
1440 .devsel_in (pci_mux_devsel_in),
1441 .devsel_en_in (pci_mux_devsel_en_in),
1442 .trdy_in (pci_mux_trdy_in),
1443 .trdy_en_in (pci_mux_trdy_en_in),
1444 .stop_in (pci_mux_stop_in),
1445 .stop_en_in (pci_mux_stop_en_in),
1446 .master_load_in (pci_mux_mas_load_in),
1447 .master_load_on_transfer_in (pci_mux_mas_load_on_transfer_in),
1448 .target_load_in (pci_mux_tar_load_in),
1449 .target_load_on_transfer_in (pci_mux_tar_load_on_transfer_in),
1450 .cbe_in (pci_mux_cbe_in),
1451 .cbe_en_in (pci_mux_cbe_en_in),
1452 .mas_ad_in (pci_mux_mas_ad_in),
1453 .tar_ad_in (pci_mux_tar_ad_in),
1454
1455 .mas_ad_en_in (pci_mux_mas_ad_en_in),
1456 .tar_ad_en_in (pci_mux_tar_ad_en_in),
1457 .tar_ad_en_reg_in (pci_mux_tar_ad_en_reg_in),
1458
1459 .par_in (pci_mux_par_in),
1460 .par_en_in (pci_mux_par_en_in),
1461 .perr_in (pci_mux_perr_in),
1462 .perr_en_in (pci_mux_perr_en_in),
1463 .serr_in (pci_mux_serr_in),
1464 .serr_en_in (pci_mux_serr_en_in),
1465
1466 .frame_en_out (pci_mux_frame_en_out),
1467 .irdy_en_out (pci_mux_irdy_en_out),
1468 .devsel_en_out (pci_mux_devsel_en_out),
1469 .trdy_en_out (pci_mux_trdy_en_out),
1470 .stop_en_out (pci_mux_stop_en_out),
1471 .cbe_en_out (pci_mux_cbe_en_out),
1472 .ad_en_out (pci_mux_ad_en_out),
1473
1474 .frame_out (pci_mux_frame_out),
1475 .irdy_out (pci_mux_irdy_out),
1476 .devsel_out (pci_mux_devsel_out),
1477 .trdy_out (pci_mux_trdy_out),
1478 .stop_out (pci_mux_stop_out),
1479 .cbe_out (pci_mux_cbe_out),
1480 .ad_out (pci_mux_ad_out),
1481 .ad_load_out (pci_mux_ad_load_out),
1482
1483 .par_out (pci_mux_par_out),
1484 .par_en_out (pci_mux_par_en_out),
1485 .perr_out (pci_mux_perr_out),
1486 .perr_en_out (pci_mux_perr_en_out),
1487 .serr_out (pci_mux_serr_out),
1488 .serr_en_out (pci_mux_serr_en_out),
1489 .req_in (pci_mux_req_in),
1490 .req_out (pci_mux_req_out),
1491 .req_en_out (pci_mux_req_en_out),
1492 .pci_irdy_in (pci_mux_pci_irdy_in),
1493 .pci_trdy_in (pci_mux_pci_trdy_in),
1494 .pci_frame_in (pci_mux_pci_frame_in),
1495 .pci_stop_in (pci_mux_pci_stop_in),
1496 .ad_en_unregistered_out (pci_mux_ad_en_unregistered_out),
1497
1498 .init_complete_in (pci_mux_init_complete_in)
1499 );
1500
1501 pci_cur_out_reg output_backup
1502 (
1503 .reset_in (reset),
1504 .clk_in (pci_clk),
1505 .frame_in (pci_mux_frame_in),
1506 .frame_en_in (pci_mux_frame_en_in),
1507 .frame_load_in (pci_mux_frame_load_in),
1508 .irdy_in (pci_mux_irdy_in),
1509 .irdy_en_in (pci_mux_irdy_en_in),
1510 .devsel_in (pci_mux_devsel_in),
1511 .trdy_in (pci_mux_trdy_in),
1512 .trdy_en_in (pci_mux_trdy_en_in),
1513 .stop_in (pci_mux_stop_in),
1514 .ad_load_in (pci_mux_ad_load_out),
1515 .cbe_in (pci_mux_cbe_in),
1516 .cbe_en_in (pci_mux_cbe_en_in),
1517 .mas_ad_in (pci_mux_mas_ad_in),
1518 .tar_ad_in (pci_mux_tar_ad_in),
1519
1520 .mas_ad_en_in (pci_mux_mas_ad_en_in),
1521 .tar_ad_en_in (pci_mux_tar_ad_en_in),
1522 .ad_en_unregistered_in (pci_mux_ad_en_unregistered_out),
1523
1524 .par_in (pci_mux_par_in),
1525 .par_en_in (pci_mux_par_en_in),
1526 .perr_in (pci_mux_perr_in),
1527 .perr_en_in (pci_mux_perr_en_in),
1528 .serr_in (pci_mux_serr_in),
1529 .serr_en_in (pci_mux_serr_en_in),
1530
1531 .frame_out (out_bckp_frame_out),
1532 .frame_en_out (out_bckp_frame_en_out),
1533 .irdy_out (out_bckp_irdy_out),
1534 .irdy_en_out (out_bckp_irdy_en_out),
1535 .devsel_out (out_bckp_devsel_out),
1536 .trdy_out (out_bckp_trdy_out),
1537 .trdy_en_out (out_bckp_trdy_en_out),
1538 .stop_out (out_bckp_stop_out),
1539 .cbe_out (out_bckp_cbe_out),
1540 .ad_out (out_bckp_ad_out),
1541 .ad_en_out (out_bckp_ad_en_out),
1542 .cbe_en_out (out_bckp_cbe_en_out),
1543 .tar_ad_en_out (out_bckp_tar_ad_en_out),
1544 .mas_ad_en_out (out_bckp_mas_ad_en_out),
1545
1546 .par_out (out_bckp_par_out),
1547 .par_en_out (out_bckp_par_en_out),
1548 .perr_out (out_bckp_perr_out),
1549 .perr_en_out (out_bckp_perr_en_out),
1550 .serr_out (out_bckp_serr_out),
1551 .serr_en_out (out_bckp_serr_en_out)
1552 ) ;
1553
1554 // PARITY CHECKER INPUTS
1555 wire parchk_pci_par_in = int_pci_par ;
1556 wire parchk_pci_perr_in = int_pci_perr ;
1557 wire parchk_pci_frame_reg_in = in_reg_frame_out ;
1558 wire parchk_pci_frame_en_in = out_bckp_frame_en_out ;
1559 wire parchk_pci_irdy_en_in = out_bckp_irdy_en_out ;
1560 wire parchk_pci_irdy_reg_in = in_reg_irdy_out ;
1561 wire parchk_pci_trdy_reg_in = in_reg_trdy_out ;
1562
1563
1564 wire parchk_pci_trdy_en_in = out_bckp_trdy_en_out ;
1565
1566
1567 wire [31:0] parchk_pci_ad_out_in = out_bckp_ad_out ;
1568 wire [31:0] parchk_pci_ad_reg_in = in_reg_ad_out ;
1569 wire [3:0] parchk_pci_cbe_in_in = int_pci_cbe ;
1570 wire [3:0] parchk_pci_cbe_reg_in = in_reg_cbe_out ;
1571 wire [3:0] parchk_pci_cbe_out_in = out_bckp_cbe_out ;
1572 wire parchk_pci_ad_en_in = out_bckp_ad_en_out ;
1573 wire parchk_par_err_response_in = conf_perr_response_out ;
1574 wire parchk_serr_enable_in = conf_serr_enable_out ;
1575
1576 wire parchk_pci_perr_out_in = out_bckp_perr_out ;
1577 wire parchk_pci_serr_en_in = out_bckp_serr_en_out ;
1578 wire parchk_pci_serr_out_in = out_bckp_serr_out ;
1579 wire parchk_pci_cbe_en_in = out_bckp_cbe_en_out ;
1580
1581 wire parchk_pci_par_en_in = out_bckp_par_en_out ;
1582
1583 pci_parity_check parity_checker
1584 (
1585 .reset_in (reset),
1586 .clk_in (pci_clk),
1587 .pci_par_in (parchk_pci_par_in),
1588 .pci_par_out (parchk_pci_par_out),
1589 .pci_par_en_out (parchk_pci_par_en_out),
1590 .pci_par_en_in (parchk_pci_par_en_in),
1591 .pci_perr_in (parchk_pci_perr_in),
1592 .pci_perr_out (parchk_pci_perr_out),
1593 .pci_perr_en_out (parchk_pci_perr_en_out),
1594 .pci_perr_out_in (parchk_pci_perr_out_in),
1595 .pci_serr_out (parchk_pci_serr_out),
1596 .pci_serr_out_in (parchk_pci_serr_out_in),
1597 .pci_serr_en_out (parchk_pci_serr_en_out),
1598 .pci_serr_en_in (parchk_pci_serr_en_in),
1599 .pci_frame_reg_in (parchk_pci_frame_reg_in),
1600 .pci_frame_en_in (parchk_pci_frame_en_in),
1601 .pci_irdy_en_in (parchk_pci_irdy_en_in),
1602 .pci_irdy_reg_in (parchk_pci_irdy_reg_in),
1603 .pci_trdy_reg_in (parchk_pci_trdy_reg_in),
1604 .pci_trdy_en_in (parchk_pci_trdy_en_in),
1605 .pci_ad_out_in (parchk_pci_ad_out_in),
1606 .pci_ad_reg_in (parchk_pci_ad_reg_in),
1607 .pci_cbe_in_in (parchk_pci_cbe_in_in),
1608 .pci_cbe_reg_in (parchk_pci_cbe_reg_in),
1609 .pci_cbe_en_in (parchk_pci_cbe_en_in),
1610 .pci_cbe_out_in (parchk_pci_cbe_out_in),
1611 .pci_ad_en_in (parchk_pci_ad_en_in),
1612 .par_err_response_in (parchk_par_err_response_in),
1613 .par_err_detect_out (parchk_par_err_detect_out),
1614 .perr_mas_detect_out (parchk_perr_mas_detect_out),
1615 .serr_enable_in (parchk_serr_enable_in),
1616 .sig_serr_out (parchk_sig_serr_out)
1617 );
1618
1619 wire in_reg_gnt_in = pci_gnt_i ;
1620 wire in_reg_frame_in = int_pci_frame ;
1621 wire in_reg_irdy_in = int_pci_irdy ;
1622 wire in_reg_trdy_in = int_pci_trdy ;
1623 wire in_reg_stop_in = int_pci_stop ;
1624 wire in_reg_devsel_in = int_pci_devsel ;
1625 wire in_reg_idsel_in = pci_idsel_i ;
1626 wire [31:0] in_reg_ad_in = pci_ad_i ;
1627 wire [3:0] in_reg_cbe_in = int_pci_cbe ;
1628
1629 pci_in_reg input_register
1630 (
1631 .reset_in (reset),
1632 .clk_in (pci_clk),
1633 .init_complete_in (conf_pci_init_complete_out),
1634
1635 .pci_gnt_in (in_reg_gnt_in),
1636 .pci_frame_in (in_reg_frame_in),
1637 .pci_irdy_in (in_reg_irdy_in),
1638 .pci_trdy_in (in_reg_trdy_in),
1639 .pci_stop_in (in_reg_stop_in),
1640 .pci_devsel_in (in_reg_devsel_in),
1641 .pci_idsel_in (in_reg_idsel_in),
1642 .pci_ad_in (in_reg_ad_in),
1643 .pci_cbe_in (in_reg_cbe_in),
1644
1645 .pci_gnt_reg_out (in_reg_gnt_out),
1646 .pci_frame_reg_out (in_reg_frame_out),
1647 .pci_irdy_reg_out (in_reg_irdy_out),
1648 .pci_trdy_reg_out (in_reg_trdy_out),
1649 .pci_stop_reg_out (in_reg_stop_out),
1650 .pci_devsel_reg_out (in_reg_devsel_out),
1651 .pci_idsel_reg_out (in_reg_idsel_out),
1652 .pci_ad_reg_out (in_reg_ad_out),
1653 .pci_cbe_reg_out (in_reg_cbe_out)
1654 );
1655
1656 endmodule
Impressum, Datenschutz