OpenCores
URL https://opencores.org/ocsvn/adv_debug_sys/adv_debug_sys/trunk

Subversion Repositories adv_debug_sys

[/] [adv_debug_sys/] [trunk/] [Hardware/] [adv_dbg_if/] [bench/] [full_system/] [xsv_fpga_top.v] - Diff between revs 8 and 32

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 8 Rev 32
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
////                                                              ////
////                                                              ////
////  OR1K test application for XESS XSV board, Top Level         ////
////  OR1K test application for XESS XSV board, Top Level         ////
////                                                              ////
////                                                              ////
////  This file is part of the OR1K test application              ////
////  This file is part of the OR1K test application              ////
////  http://www.opencores.org/cores/or1k/                        ////
////  http://www.opencores.org/cores/or1k/                        ////
////                                                              ////
////                                                              ////
////  Description                                                 ////
////  Description                                                 ////
////  Top level instantiating all the blocks.                     ////
////  Top level instantiating all the blocks.                     ////
////                                                              ////
////                                                              ////
////  To Do:                                                      ////
////  To Do:                                                      ////
////   - nothing really                                           ////
////   - nothing really                                           ////
////                                                              ////
////                                                              ////
////  Author(s):                                                  ////
////  Author(s):                                                  ////
////      - Damjan Lampret, lampret@opencores.org                 ////
////      - Damjan Lampret, lampret@opencores.org                 ////
////                                                              ////
////                                                              ////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
////                                                              ////
////                                                              ////
//// Copyright (C) 2001 Authors                                   ////
//// Copyright (C) 2001 Authors                                   ////
////                                                              ////
////                                                              ////
//// This source file may be used and distributed without         ////
//// This source file may be used and distributed without         ////
//// restriction provided that this copyright statement is not    ////
//// restriction provided that this copyright statement is not    ////
//// removed from the file and that any derivative work contains  ////
//// removed from the file and that any derivative work contains  ////
//// the original copyright notice and the associated disclaimer. ////
//// the original copyright notice and the associated disclaimer. ////
////                                                              ////
////                                                              ////
//// This source file is free software; you can redistribute it   ////
//// This source file is free software; you can redistribute it   ////
//// and/or modify it under the terms of the GNU Lesser General   ////
//// and/or modify it under the terms of the GNU Lesser General   ////
//// Public License as published by the Free Software Foundation; ////
//// Public License as published by the Free Software Foundation; ////
//// either version 2.1 of the License, or (at your option) any   ////
//// either version 2.1 of the License, or (at your option) any   ////
//// later version.                                               ////
//// later version.                                               ////
////                                                              ////
////                                                              ////
//// This source is distributed in the hope that it will be       ////
//// This source is distributed in the hope that it will be       ////
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
//// PURPOSE.  See the GNU Lesser General Public License for more ////
//// PURPOSE.  See the GNU Lesser General Public License for more ////
//// details.                                                     ////
//// details.                                                     ////
////                                                              ////
////                                                              ////
//// You should have received a copy of the GNU Lesser General    ////
//// You should have received a copy of the GNU Lesser General    ////
//// Public License along with this source; if not, download it   ////
//// Public License along with this source; if not, download it   ////
//// from http://www.opencores.org/lgpl.shtml                     ////
//// from http://www.opencores.org/lgpl.shtml                     ////
////                                                              ////
////                                                              ////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//
//
// CVS Revision History
// CVS Revision History
//
//
// $Log: xsv_fpga_top.v,v $
// $Log: xsv_fpga_top.v,v $
 
// Revision 1.5  2010-01-16 02:15:22  Nathan
 
// Updated to match changes in hardware.  Added support for hi-speed mode.
 
//
 
// Revision 1.4  2010-01-08 01:41:07  Nathan
 
// Removed unused, non-existant include from CPU behavioral model.  Minor text edits.
 
//
// Revision 1.3  2008/07/11 08:22:17  Nathan
// Revision 1.3  2008/07/11 08:22:17  Nathan
// Added code to make the native TAP simulate a Xilinx BSCAN device, and code to simulate the behavior of the xilinx_internal_jtag module.  The adv_dbg_module should get inputs that emulate the xilinx_internal_jtag device outputs.
// Added code to make the native TAP simulate a Xilinx BSCAN device, and code to simulate the behavior of the xilinx_internal_jtag module.  The adv_dbg_module should get inputs that emulate the xilinx_internal_jtag device outputs.
//
//
// Revision 1.10  2004/04/05 08:44:35  lampret
// Revision 1.10  2004/04/05 08:44:35  lampret
// Merged branch_qmem into main tree.
// Merged branch_qmem into main tree.
//
//
// Revision 1.8  2003/04/07 21:05:58  lampret
// Revision 1.8  2003/04/07 21:05:58  lampret
// WB = 1/2 RISC clock test code enabled.
// WB = 1/2 RISC clock test code enabled.
//
//
// Revision 1.7  2003/04/07 01:28:17  lampret
// Revision 1.7  2003/04/07 01:28:17  lampret
// Adding OR1200_CLMODE_1TO2 test code.
// Adding OR1200_CLMODE_1TO2 test code.
//
//
// Revision 1.6  2002/08/12 05:35:12  lampret
// Revision 1.6  2002/08/12 05:35:12  lampret
// rty_i are unused - tied to zero.
// rty_i are unused - tied to zero.
//
//
// Revision 1.5  2002/03/29 20:58:51  lampret
// Revision 1.5  2002/03/29 20:58:51  lampret
// Changed hardcoded address for fake MC to use a define.
// Changed hardcoded address for fake MC to use a define.
//
//
// Revision 1.4  2002/03/29 16:30:47  lampret
// Revision 1.4  2002/03/29 16:30:47  lampret
// Fixed port names that changed.
// Fixed port names that changed.
//
//
// Revision 1.3  2002/03/29 15:50:03  lampret
// Revision 1.3  2002/03/29 15:50:03  lampret
// Added response from memory controller (addr 0x60000000)
// Added response from memory controller (addr 0x60000000)
//
//
// Revision 1.2  2002/03/21 17:39:16  lampret
// Revision 1.2  2002/03/21 17:39:16  lampret
// Fixed some typos
// Fixed some typos
//
//
//
//
 
 
`include "xsv_fpga_defines.v"
`include "xsv_fpga_defines.v"
//`include "bench_defines.v"
//`include "bench_defines.v"
 
 
module xsv_fpga_top (
module xsv_fpga_top (
 
 
        //
        //
        // Global signals
        // Global signals
        //
        //
        //clk,
        //clk,
        //rstn,
        //rstn,
 
 
        // UART signals
        // UART signals
        uart_stx, uart_srx
        uart_stx, uart_srx
 
 
        // SDRAM signals
        // SDRAM signals
        /*
        /*
        sdram_clk_i, sdram_addr_o, sdram_ba_o, sdram_dqm_o,
        sdram_clk_i, sdram_addr_o, sdram_ba_o, sdram_dqm_o,
        sdram_we_o, sdram_cas_o, sdram_ras_o,
        sdram_we_o, sdram_cas_o, sdram_ras_o,
        sdram_cke_o, sdram_cs_o, sdram_data_io
        sdram_cke_o, sdram_cs_o, sdram_data_io
        */
        */
);
);
 
 
//
//
// I/O Ports
// I/O Ports
//
//
 
 
//
//
// Global
// Global
//
//
//input                 clk;
//input                 clk;
//input                 rstn;
//input                 rstn;
 
 
// UART
// UART
input uart_srx;
input uart_srx;
output uart_stx;
output uart_stx;
 
 
// SDRAM
// SDRAM
/*
/*
input sdram_clk_i;
input sdram_clk_i;
output [11:0] sdram_addr_o;
output [11:0] sdram_addr_o;
output [1:0] sdram_ba_o;
output [1:0] sdram_ba_o;
output [3:0] sdram_dqm_o;
output [3:0] sdram_dqm_o;
output sdram_we_o;
output sdram_we_o;
output sdram_cas_o;
output sdram_cas_o;
output sdram_ras_o;
output sdram_ras_o;
output sdram_cke_o;
output sdram_cke_o;
output sdram_cs_o;
output sdram_cs_o;
inout [31:0] sdram_data_io;
inout [31:0] sdram_data_io;
*/
*/
 
 
//
//
// Internal wires
// Internal wires
//
//
 
 
wire clk;
wire clk;
wire rstn;
wire rstn;
 
 
//
//
// Debug core master i/f wires
// Debug core master i/f wires
//
//
wire    [31:0]           wb_dm_adr_o;
wire    [31:0]           wb_dm_adr_o;
wire    [31:0]           wb_dm_dat_i;
wire    [31:0]           wb_dm_dat_i;
wire    [31:0]           wb_dm_dat_o;
wire    [31:0]           wb_dm_dat_o;
wire    [3:0]            wb_dm_sel_o;
wire    [3:0]            wb_dm_sel_o;
wire                    wb_dm_we_o;
wire                    wb_dm_we_o;
wire                    wb_dm_stb_o;
wire                    wb_dm_stb_o;
wire                    wb_dm_cyc_o;
wire                    wb_dm_cyc_o;
wire                    wb_dm_cab_o;
wire                    wb_dm_cab_o;
wire                    wb_dm_ack_i;
wire                    wb_dm_ack_i;
wire                    wb_dm_err_i;
wire                    wb_dm_err_i;
 
 
//
//
// Debug <-> RISC wires
// Debug <-> RISC wires
//
//
wire    [3:0]            dbg_lss;
wire    [3:0]            dbg_lss;
wire    [1:0]            dbg_is;
wire    [1:0]            dbg_is;
wire    [10:0]   dbg_wp;
wire    [10:0]   dbg_wp;
wire                    dbg_bp;
wire                    dbg_bp;
wire    [31:0]   dbg_dat_dbg;
wire    [31:0]   dbg_dat_dbg;
wire    [31:0]   dbg_dat_risc;
wire    [31:0]   dbg_dat_risc;
wire    [31:0]   dbg_adr;
wire    [31:0]   dbg_adr;
wire                    dbg_ewt;
wire                    dbg_ewt;
wire                    dbg_stall;
wire                    dbg_stall;
wire                    dbg_we;
wire                    dbg_we;
wire                    dbg_stb;
wire                    dbg_stb;
wire                    dbg_ack;
wire                    dbg_ack;
wire     dbg_cpu0_rst;
wire     dbg_cpu0_rst;
 
 
//
//
// TAP<->dbg_interface
// TAP<->dbg_interface
//      
//      
wire debug_rst;
wire debug_rst;
wire debug_select;
wire debug_select;
wire debug_tdi;
wire debug_tdi;
wire debug_tdo;
wire debug_tdo;
wire shift_dr;
wire shift_dr;
wire pause_dr;
wire pause_dr;
wire update_dr;
wire update_dr;
wire capture_dr;
wire capture_dr;
wire drck;  // To emulate the BSCAN_VIRTEX/SPARTAN devices
wire drck;  // To emulate the BSCAN_VIRTEX/SPARTAN devices
 
 
//
//
// RISC instruction master i/f wires
// RISC instruction master i/f wires
//
//
wire    [31:0]           wb_rim_adr_o;
wire    [31:0]           wb_rim_adr_o;
wire                    wb_rim_cyc_o;
wire                    wb_rim_cyc_o;
wire    [31:0]           wb_rim_dat_i;
wire    [31:0]           wb_rim_dat_i;
wire    [31:0]           wb_rim_dat_o;
wire    [31:0]           wb_rim_dat_o;
wire    [3:0]            wb_rim_sel_o;
wire    [3:0]            wb_rim_sel_o;
wire                    wb_rim_ack_i;
wire                    wb_rim_ack_i;
wire                    wb_rim_err_i;
wire                    wb_rim_err_i;
wire                    wb_rim_rty_i = 1'b0;
wire                    wb_rim_rty_i = 1'b0;
wire                    wb_rim_we_o;
wire                    wb_rim_we_o;
wire                    wb_rim_stb_o;
wire                    wb_rim_stb_o;
wire                    wb_rim_cab_o;
wire                    wb_rim_cab_o;
//wire  [31:0]          wb_rif_adr;
//wire  [31:0]          wb_rif_adr;
//reg                   prefix_flash;
//reg                   prefix_flash;
 
 
//
//
// RISC data master i/f wires
// RISC data master i/f wires
//
//
wire    [31:0]           wb_rdm_adr_o;
wire    [31:0]           wb_rdm_adr_o;
wire                    wb_rdm_cyc_o;
wire                    wb_rdm_cyc_o;
wire    [31:0]           wb_rdm_dat_i;
wire    [31:0]           wb_rdm_dat_i;
wire    [31:0]           wb_rdm_dat_o;
wire    [31:0]           wb_rdm_dat_o;
wire    [3:0]            wb_rdm_sel_o;
wire    [3:0]            wb_rdm_sel_o;
wire                    wb_rdm_ack_i;
wire                    wb_rdm_ack_i;
wire                    wb_rdm_err_i;
wire                    wb_rdm_err_i;
wire                    wb_rdm_rty_i = 1'b0;
wire                    wb_rdm_rty_i = 1'b0;
wire                    wb_rdm_we_o;
wire                    wb_rdm_we_o;
wire                    wb_rdm_stb_o;
wire                    wb_rdm_stb_o;
wire                    wb_rdm_cab_o;
wire                    wb_rdm_cab_o;
 
 
//
//
// RISC misc
// RISC misc
//
//
//wire  [19:0]          pic_ints;
//wire  [19:0]          pic_ints;
 
 
//
//
// SRAM controller slave i/f wires
// SRAM controller slave i/f wires
//
//
wire    [31:0]           wb_ss_dat_i;
wire    [31:0]           wb_ss_dat_i;
wire    [31:0]           wb_ss_dat_o;
wire    [31:0]           wb_ss_dat_o;
wire    [31:0]           wb_ss_adr_i;
wire    [31:0]           wb_ss_adr_i;
wire    [3:0]            wb_ss_sel_i;
wire    [3:0]            wb_ss_sel_i;
wire                    wb_ss_we_i;
wire                    wb_ss_we_i;
wire                    wb_ss_cyc_i;
wire                    wb_ss_cyc_i;
wire                    wb_ss_stb_i;
wire                    wb_ss_stb_i;
wire                    wb_ss_ack_o;
wire                    wb_ss_ack_o;
wire                    wb_ss_err_o;
wire                    wb_ss_err_o;
 
 
 
 
//
//
// UART16550 core slave i/f wires
// UART16550 core slave i/f wires
//
//
wire    [31:0]           wb_us_dat_i;
wire    [31:0]           wb_us_dat_i;
wire    [31:0]           wb_us_dat_o;
wire    [31:0]           wb_us_dat_o;
wire    [31:0]           wb_us_adr_i;
wire    [31:0]           wb_us_adr_i;
wire    [3:0]            wb_us_sel_i;
wire    [3:0]            wb_us_sel_i;
wire                    wb_us_we_i;
wire                    wb_us_we_i;
wire                    wb_us_cyc_i;
wire                    wb_us_cyc_i;
wire                    wb_us_stb_i;
wire                    wb_us_stb_i;
wire                    wb_us_ack_o;
wire                    wb_us_ack_o;
wire                    wb_us_err_o;
wire                    wb_us_err_o;
 
 
//
//
// UART external i/f wires
// UART external i/f wires
//
//
wire                    uart_stx;
wire                    uart_stx;
wire                    uart_srx;
wire                    uart_srx;
 
 
 
 
//
//
// Memory controller core slave i/f wires
// Memory controller core slave i/f wires
//
//
/*
/*
wire    [31:0]          wb_mem_dat_i;
wire    [31:0]          wb_mem_dat_i;
wire    [31:0]          wb_mem_dat_o;
wire    [31:0]          wb_mem_dat_o;
wire    [31:0]          wb_mem_adr_i;
wire    [31:0]          wb_mem_adr_i;
wire    [3:0]           wb_mem_sel_i;
wire    [3:0]           wb_mem_sel_i;
wire                    wb_mem_we_i;
wire                    wb_mem_we_i;
wire                    wb_mem_cyc_i;
wire                    wb_mem_cyc_i;
wire                    wb_mem_stb_i;
wire                    wb_mem_stb_i;
wire                    wb_mem_ack_o;
wire                    wb_mem_ack_o;
wire                    wb_mem_err_o;
wire                    wb_mem_err_o;
 
 
// Internal mem control wires
// Internal mem control wires
wire [7:0] mc_cs;
wire [7:0] mc_cs;
wire [12:0] mc_addr_o;
wire [12:0] mc_addr_o;
 
 
 
 
// Memory control external wires
// Memory control external wires
wire sdram_clk_i;
wire sdram_clk_i;
wire [11:0] sdram_addr_o;
wire [11:0] sdram_addr_o;
wire [1:0] sdram_ba_o;
wire [1:0] sdram_ba_o;
wire [3:0] sdram_dqm_o;
wire [3:0] sdram_dqm_o;
wire sdram_we_o;
wire sdram_we_o;
wire sdram_cas_o;
wire sdram_cas_o;
wire sdram_ras_o;
wire sdram_ras_o;
wire sdram_cke_o;
wire sdram_cke_o;
wire sdram_cs_o;
wire sdram_cs_o;
wire [31:0] sdram_data_io;
wire [31:0] sdram_data_io;
*/
*/
 
 
//
//
// JTAG wires
// JTAG wires
//
//
wire                    jtag_tdi;
wire                    jtag_tdi;
wire                    jtag_tms;
wire                    jtag_tms;
wire                    jtag_tck;
wire                    jtag_tck;
wire                    jtag_trst;
wire                    jtag_trst;
wire                    jtag_tdo;
wire                    jtag_tdo;
 
 
 
 
//
//
// Reset debounce
// Reset debounce
//
//
reg      rstn_debounce;
reg      rstn_debounce;
wire     rst_r;
wire     rst_r;
reg      wb_rst;
reg      wb_rst;
reg      cpu_rst;
reg      cpu_rst;
 
 
//
//
// Global clock
// Global clock
//
//
`ifdef OR1200_CLMODE_1TO2
`ifdef OR1200_CLMODE_1TO2
reg                     wb_clk;
reg                     wb_clk;
`else
`else
wire                    wb_clk;
wire                    wb_clk;
`endif
`endif
 
 
//
//
// Reset debounce
// Reset debounce
//
//
always @(posedge wb_clk or negedge rstn)
always @(posedge wb_clk or negedge rstn)
        if (~rstn)
        if (~rstn)
                rstn_debounce <= 1'b0;
                rstn_debounce <= 1'b0;
        else
        else
                rstn_debounce <= #1 1'b1;
                rstn_debounce <= #1 1'b1;
 
 
assign rst_r = ~rstn_debounce;
assign rst_r = ~rstn_debounce;
//assign dbg_trst = rstn_debounce & jtag_trst;
//assign dbg_trst = rstn_debounce & jtag_trst;
 
 
//
//
// Reset debounce
// Reset debounce
//
//
always @(posedge wb_clk)
always @(posedge wb_clk)
        wb_rst <= #1 rst_r;
        wb_rst <= #1 rst_r;
 
 
always @ (posedge wb_clk)
always @ (posedge wb_clk)
        cpu_rst <= dbg_cpu0_rst | rst_r;
        cpu_rst <= dbg_cpu0_rst | rst_r;
 
 
//
//
// This is purely for testing 1/2 WB clock
// This is purely for testing 1/2 WB clock
// This should never be used when implementing in
// This should never be used when implementing in
// an FPGA. It is used only for simulation regressions.
// an FPGA. It is used only for simulation regressions.
//
//
`ifdef OR1200_CLMODE_1TO2
`ifdef OR1200_CLMODE_1TO2
initial wb_clk = 0;
initial wb_clk = 0;
always @(posedge clk)
always @(posedge clk)
        wb_clk = ~wb_clk;
        wb_clk = ~wb_clk;
`else
`else
//
//
// Some Xilinx P&R tools need this
// Some Xilinx P&R tools need this
//
//
`ifdef TARGET_VIRTEX
`ifdef TARGET_VIRTEX
IBUFG IBUFG1 (
IBUFG IBUFG1 (
        .O      ( wb_clk ),
        .O      ( wb_clk ),
        .I      ( clk )
        .I      ( clk )
);
);
`else
`else
assign wb_clk = clk;
assign wb_clk = clk;
`endif
`endif
`endif // OR1200_CLMODE_1TO2
`endif // OR1200_CLMODE_1TO2
 
 
//
//
// Unused WISHBONE signals
// Unused WISHBONE signals
//
//
assign wb_us_err_o = 1'b0;
assign wb_us_err_o = 1'b0;
 
 
 
 
assign jtag_tvref = 1'b1;
assign jtag_tvref = 1'b1;
assign jtag_tgnd = 1'b0;
assign jtag_tgnd = 1'b0;
 
 
// JTAG / adv. debug control testbench
// JTAG / adv. debug control testbench
adv_debug_tb tb (
adv_debug_tb tb (
 
 
.jtag_tck_o(jtag_tck),
.jtag_tck_o(jtag_tck),
.jtag_tms_o(jtag_tms),
.jtag_tms_o(jtag_tms),
.jtag_tdo_o(jtag_tdi),
.jtag_tdo_o(jtag_tdi),
.jtag_tdi_i(jtag_tdo),
.jtag_tdi_i(jtag_tdo),
 
 
.wb_clk_o(clk),
.wb_clk_o(clk),
.sys_rstn_o(rstn)
.sys_rstn_o(rstn)
);
);
 
 
//
//
// JTAG TAP controller instantiation
// JTAG TAP controller instantiation
//
//
tap_top tap (
tap_top tap (
                // JTAG pads
                // JTAG pads
                .tms_pad_i(jtag_tms),
                .tms_pad_i(jtag_tms),
                .tck_pad_i(jtag_tck),
                .tck_pad_i(jtag_tck),
                .trstn_pad_i(1'b1),
                .trstn_pad_i(1'b1),
                .tdi_pad_i(jtag_tdi),
                .tdi_pad_i(jtag_tdi),
                .tdo_pad_o(jtag_tdo),
                .tdo_pad_o(jtag_tdo),
                .tdo_padoe_o(),
                .tdo_padoe_o(),
 
 
                // TAP states
                // TAP states
                                   .test_logic_reset_o(debug_rst),
                                   .test_logic_reset_o(debug_rst),
                                   .run_test_idle_o(),
                                   .run_test_idle_o(),
                .shift_dr_o(shift_dr),
                .shift_dr_o(shift_dr),
                .pause_dr_o(),
                .pause_dr_o(),
                .update_dr_o(update_dr),
                .update_dr_o(update_dr),
                .capture_dr_o(capture_dr),
                .capture_dr_o(capture_dr),
 
 
                // Select signals for boundary scan or mbist
                // Select signals for boundary scan or mbist
                .extest_select_o(),
                .extest_select_o(),
                .sample_preload_select_o(),
                .sample_preload_select_o(),
                .mbist_select_o(),
                .mbist_select_o(),
                .debug_select_o(debug_select),
                .debug_select_o(debug_select),
 
 
                // TDO signal that is connected to TDI of sub-modules.
                // TDO signal that is connected to TDI of sub-modules.
                .tdo_o(debug_tdi),
                .tdi_o(debug_tdi),
 
 
                // TDI signals from sub-modules
                // TDI signals from sub-modules
                .debug_tdi_i(debug_tdo),    // from debug module
                .debug_tdo_i(debug_tdo),    // from debug module
                .bs_chain_tdi_i(1'b0), // from Boundary Scan Chain
                .bs_chain_tdo_i(1'b0), // from Boundary Scan Chain
                .mbist_tdi_i(1'b0)     // from Mbist Chain
                .mbist_tdo_i(1'b0)     // from Mbist Chain
              );
              );
 
 
// This is taken from the xilinx bscan_virtex4.v module
// This is taken from the xilinx bscan_virtex4.v module
// It simulates the DRCK output of a BSCAN_* block
// It simulates the DRCK output of a BSCAN_* block
assign drck = ((debug_select & !shift_dr & !capture_dr) ||
assign drck = ((debug_select & !shift_dr & !capture_dr) ||
               (debug_select & shift_dr & jtag_tck) ||
               (debug_select & shift_dr & jtag_tck) ||
               (debug_select & capture_dr & jtag_tck));
               (debug_select & capture_dr & jtag_tck));
 
 
reg xshift;
reg xshift;
reg xcapture;
reg xcapture;
reg xupdate;
reg xupdate;
reg xselect;
reg xselect;
 
 
// TAP state outputs are also delayed half a cycle.
// TAP state outputs are also delayed half a cycle.
always @(negedge jtag_tck)
always @(negedge jtag_tck)
begin
begin
   xshift = shift_dr;
   xshift = shift_dr;
   xcapture = capture_dr;
   xcapture = capture_dr;
   xupdate = update_dr;
   xupdate = update_dr;
   xselect = debug_select;
   xselect = debug_select;
end
end
 
 
//////////////////////////////////////////               
//////////////////////////////////////////               
 
 
 
 
wire tck2;
wire tck2;
assign tck2 = (drck & !xupdate);
assign tck2 = (drck & !xupdate);
 
 
reg update2;
reg update2;
 
 
always @ (posedge xupdate or posedge xcapture or negedge xselect)
always @ (posedge xupdate or posedge xcapture or negedge xselect)
begin
begin
   if(xupdate) update2 <= 1'b1;
   if(xupdate) update2 <= 1'b1;
   else if(xcapture) update2 <= 1'b0;
   else if(xcapture) update2 <= 1'b0;
   else if(!xselect) update2 <= 1'b0;
   else if(!xselect) update2 <= 1'b0;
end
end
 
 
//
//
// Instantiation of the development i/f
// Instantiation of the development i/f
//
//
dbg_top dbg_top  (
adbg_top dbg_top  (
 
 
        // JTAG pins
        // JTAG pins
        .tck_i  ( tck2 ),
        .tck_i  ( tck2 ),
        .tdi_i  ( debug_tdi ),
        .tdi_i  ( debug_tdi ),
        .tdo_o  ( debug_tdo ),
        .tdo_o  ( debug_tdo ),
        .rst_i  ( debug_rst ),
        .rst_i  ( debug_rst ),
 
 
     // TAP states
     // TAP states
     .shift_dr_i( xshift ),
     .shift_dr_i( xshift ),
     .pause_dr_i( pause_dr ),
     .pause_dr_i( pause_dr ),
     .update_dr_i( update2 ),
     .update_dr_i( update2 ),
     .capture_dr_i (xcapture),
     .capture_dr_i (xcapture),
 
 
     // Instructions
     // Instructions
     .debug_select_i( xselect ),
     .debug_select_i( xselect ),
 
 
        // RISC signals
        // RISC signals
        .cpu0_clk_i             ( wb_clk ),
        .cpu0_clk_i             ( wb_clk ),
        .cpu0_addr_o    ( dbg_adr ),
        .cpu0_addr_o    ( dbg_adr ),
        .cpu0_data_i    ( dbg_dat_risc ),
        .cpu0_data_i    ( dbg_dat_risc ),
        .cpu0_data_o    ( dbg_dat_dbg ),
        .cpu0_data_o    ( dbg_dat_dbg ),
        .cpu0_bp_i              ( dbg_bp ),
        .cpu0_bp_i              ( dbg_bp ),
        .cpu0_stall_o   ( dbg_stall ),
        .cpu0_stall_o   ( dbg_stall ),
        .cpu0_stb_o     ( dbg_stb ),
        .cpu0_stb_o     ( dbg_stb ),
        .cpu0_we_o              ( dbg_we ),
        .cpu0_we_o              ( dbg_we ),
        .cpu0_ack_i     ( dbg_ack ),
        .cpu0_ack_i     ( dbg_ack ),
        .cpu0_rst_o             ( dbg_cpu0_rst),
        .cpu0_rst_o             ( dbg_cpu0_rst),
 
 
        // WISHBONE common
        // WISHBONE common
        .wb_clk_i       ( wb_clk ),
        .wb_clk_i       ( wb_clk ),
 
 
        // WISHBONE master interface
        // WISHBONE master interface
        .wb_adr_o       ( wb_dm_adr_o ),
        .wb_adr_o       ( wb_dm_adr_o ),
        .wb_dat_o       ( wb_dm_dat_o ),
        .wb_dat_o       ( wb_dm_dat_o ),
        .wb_dat_i       ( wb_dm_dat_i ),
        .wb_dat_i       ( wb_dm_dat_i ),
        .wb_cyc_o       ( wb_dm_cyc_o ),
        .wb_cyc_o       ( wb_dm_cyc_o ),
        .wb_stb_o       ( wb_dm_stb_o ),
        .wb_stb_o       ( wb_dm_stb_o ),
        .wb_sel_o       ( wb_dm_sel_o ),
        .wb_sel_o       ( wb_dm_sel_o ),
        .wb_we_o        ( wb_dm_we_o  ),
        .wb_we_o        ( wb_dm_we_o  ),
        .wb_ack_i       ( wb_dm_ack_i ),
        .wb_ack_i       ( wb_dm_ack_i ),
        .wb_cab_o       ( wb_dm_cab_o ),
        .wb_cab_o       ( wb_dm_cab_o ),
        .wb_err_i       ( wb_dm_err_i ),
        .wb_err_i       ( wb_dm_err_i ),
        .wb_cti_o   (),
        .wb_cti_o   (),
        .wb_bte_o   ()
        .wb_bte_o   ()
);
);
 
 
 
 
//
//
// Instantiation of the OR1200 RISC
// Instantiation of the OR1200 RISC
//
//
or1200_top or1200_top (
or1200_top or1200_top (
 
 
        // Common
        // Common
        .rst_i          ( cpu_rst ),
        .rst_i          ( cpu_rst ),
        .clk_i          ( clk ),
        .clk_i          ( clk ),
`ifdef OR1200_CLMODE_1TO2
`ifdef OR1200_CLMODE_1TO2
        .clmode_i       ( 2'b01 ),
        .clmode_i       ( 2'b01 ),
`else
`else
`ifdef OR1200_CLMODE_1TO4
`ifdef OR1200_CLMODE_1TO4
        .clmode_i       ( 2'b11 ),
        .clmode_i       ( 2'b11 ),
`else
`else
        .clmode_i       ( 2'b00 ),
        .clmode_i       ( 2'b00 ),
`endif
`endif
`endif
`endif
 
 
        // WISHBONE Instruction Master
        // WISHBONE Instruction Master
        .iwb_clk_i      ( wb_clk ),
        .iwb_clk_i      ( wb_clk ),
        .iwb_rst_i      ( wb_rst ),
        .iwb_rst_i      ( wb_rst ),
        .iwb_cyc_o      ( wb_rim_cyc_o ),
        .iwb_cyc_o      ( wb_rim_cyc_o ),
        .iwb_adr_o      ( wb_rim_adr_o ),
        .iwb_adr_o      ( wb_rim_adr_o ),
        .iwb_dat_i      ( wb_rim_dat_i ),
        .iwb_dat_i      ( wb_rim_dat_i ),
        .iwb_dat_o      ( wb_rim_dat_o ),
        .iwb_dat_o      ( wb_rim_dat_o ),
        .iwb_sel_o      ( wb_rim_sel_o ),
        .iwb_sel_o      ( wb_rim_sel_o ),
        .iwb_ack_i      ( wb_rim_ack_i ),
        .iwb_ack_i      ( wb_rim_ack_i ),
        .iwb_err_i      ( wb_rim_err_i ),
        .iwb_err_i      ( wb_rim_err_i ),
        .iwb_rty_i      ( wb_rim_rty_i ),
        .iwb_rty_i      ( wb_rim_rty_i ),
        .iwb_we_o       ( wb_rim_we_o  ),
        .iwb_we_o       ( wb_rim_we_o  ),
        .iwb_stb_o      ( wb_rim_stb_o ),
        .iwb_stb_o      ( wb_rim_stb_o ),
        .iwb_cab_o      ( wb_rim_cab_o ),
        .iwb_cab_o      ( wb_rim_cab_o ),
 
 
        // WISHBONE Data Master
        // WISHBONE Data Master
        .dwb_clk_i      ( wb_clk ),
        .dwb_clk_i      ( wb_clk ),
        .dwb_rst_i      ( wb_rst ),
        .dwb_rst_i      ( wb_rst ),
        .dwb_cyc_o      ( wb_rdm_cyc_o ),
        .dwb_cyc_o      ( wb_rdm_cyc_o ),
        .dwb_adr_o      ( wb_rdm_adr_o ),
        .dwb_adr_o      ( wb_rdm_adr_o ),
        .dwb_dat_i      ( wb_rdm_dat_i ),
        .dwb_dat_i      ( wb_rdm_dat_i ),
        .dwb_dat_o      ( wb_rdm_dat_o ),
        .dwb_dat_o      ( wb_rdm_dat_o ),
        .dwb_sel_o      ( wb_rdm_sel_o ),
        .dwb_sel_o      ( wb_rdm_sel_o ),
        .dwb_ack_i      ( wb_rdm_ack_i ),
        .dwb_ack_i      ( wb_rdm_ack_i ),
        .dwb_err_i      ( wb_rdm_err_i ),
        .dwb_err_i      ( wb_rdm_err_i ),
        .dwb_rty_i      ( wb_rdm_rty_i ),
        .dwb_rty_i      ( wb_rdm_rty_i ),
        .dwb_we_o       ( wb_rdm_we_o  ),
        .dwb_we_o       ( wb_rdm_we_o  ),
        .dwb_stb_o      ( wb_rdm_stb_o ),
        .dwb_stb_o      ( wb_rdm_stb_o ),
        .dwb_cab_o      ( wb_rdm_cab_o ),
        .dwb_cab_o      ( wb_rdm_cab_o ),
 
 
        // Debug
        // Debug
        .dbg_stall_i    ( dbg_stall ),  // Set to 1'b0 if debug is absent / broken
        .dbg_stall_i    ( dbg_stall ),  // Set to 1'b0 if debug is absent / broken
        .dbg_dat_i      ( dbg_dat_dbg ),
        .dbg_dat_i      ( dbg_dat_dbg ),
        .dbg_adr_i      ( dbg_adr ),
        .dbg_adr_i      ( dbg_adr ),
        .dbg_ewt_i      ( 1'b0 ),
        .dbg_ewt_i      ( 1'b0 ),
        .dbg_lss_o      ( ),
        .dbg_lss_o      ( ),
        .dbg_is_o       ( ),
        .dbg_is_o       ( ),
        .dbg_wp_o       ( ),
        .dbg_wp_o       ( ),
        .dbg_bp_o       ( dbg_bp ),
        .dbg_bp_o       ( dbg_bp ),
        .dbg_dat_o      ( dbg_dat_risc ),
        .dbg_dat_o      ( dbg_dat_risc ),
        .dbg_ack_o      ( dbg_ack ),
        .dbg_ack_o      ( dbg_ack ),
        .dbg_stb_i      ( dbg_stb ),
        .dbg_stb_i      ( dbg_stb ),
        .dbg_we_i       ( dbg_we ),
        .dbg_we_i       ( dbg_we ),
 
 
        // Power Management
        // Power Management
        .pm_clksd_o     ( ),
        .pm_clksd_o     ( ),
        .pm_cpustall_i  ( 1'b0 ),
        .pm_cpustall_i  ( 1'b0 ),
        .pm_dc_gate_o   ( ),
        .pm_dc_gate_o   ( ),
        .pm_ic_gate_o   ( ),
        .pm_ic_gate_o   ( ),
        .pm_dmmu_gate_o ( ),
        .pm_dmmu_gate_o ( ),
        .pm_immu_gate_o ( ),
        .pm_immu_gate_o ( ),
        .pm_tt_gate_o   ( ),
        .pm_tt_gate_o   ( ),
        .pm_cpu_gate_o  ( ),
        .pm_cpu_gate_o  ( ),
        .pm_wakeup_o    ( ),
        .pm_wakeup_o    ( ),
        .pm_lvolt_o     ( ),
        .pm_lvolt_o     ( ),
 
 
        // Interrupts
        // Interrupts
        .pic_ints_i     (20'b0)
        .pic_ints_i     (20'b0)
);
);
 
 
 
 
//
//
// Instantiation of the On-chip RAM controller
// Instantiation of the On-chip RAM controller
//
//
onchip_ram_top  #(
onchip_ram_top  #(
        .dwidth  (32),
        .dwidth  (32),
        .size_bytes(16384)
        .size_bytes(16384)
        ) onchip_ram_top (
        ) onchip_ram_top (
 
 
        // WISHBONE common
        // WISHBONE common
        .wb_clk_i       ( wb_clk ),
        .wb_clk_i       ( wb_clk ),
        .wb_rst_i       ( wb_rst ),
        .wb_rst_i       ( wb_rst ),
 
 
        // WISHBONE slave
        // WISHBONE slave
        .wb_dat_i       ( wb_ss_dat_i ),
        .wb_dat_i       ( wb_ss_dat_i ),
        .wb_dat_o       ( wb_ss_dat_o ),
        .wb_dat_o       ( wb_ss_dat_o ),
        .wb_adr_i       ( wb_ss_adr_i ),
        .wb_adr_i       ( wb_ss_adr_i ),
        .wb_sel_i       ( wb_ss_sel_i ),
        .wb_sel_i       ( wb_ss_sel_i ),
        .wb_we_i        ( wb_ss_we_i  ),
        .wb_we_i        ( wb_ss_we_i  ),
        .wb_cyc_i       ( wb_ss_cyc_i ),
        .wb_cyc_i       ( wb_ss_cyc_i ),
        .wb_stb_i       ( wb_ss_stb_i ),
        .wb_stb_i       ( wb_ss_stb_i ),
        .wb_ack_o       ( wb_ss_ack_o ),
        .wb_ack_o       ( wb_ss_ack_o ),
        .wb_err_o       ( wb_ss_err_o )
        .wb_err_o       ( wb_ss_err_o )
);
);
 
 
//
//
// Instantiation of the UART16550
// Instantiation of the UART16550
//
//
uart_top uart_top (
uart_top uart_top (
 
 
        // WISHBONE common
        // WISHBONE common
        .wb_clk_i       ( wb_clk ),
        .wb_clk_i       ( wb_clk ),
        .wb_rst_i       ( wb_rst ),
        .wb_rst_i       ( wb_rst ),
 
 
        // WISHBONE slave
        // WISHBONE slave
        .wb_adr_i       ( wb_us_adr_i[4:0] ),
        .wb_adr_i       ( wb_us_adr_i[4:0] ),
        .wb_dat_i       ( wb_us_dat_i ),
        .wb_dat_i       ( wb_us_dat_i ),
        .wb_dat_o       ( wb_us_dat_o ),
        .wb_dat_o       ( wb_us_dat_o ),
        .wb_we_i        ( wb_us_we_i  ),
        .wb_we_i        ( wb_us_we_i  ),
        .wb_stb_i       ( wb_us_stb_i ),
        .wb_stb_i       ( wb_us_stb_i ),
        .wb_cyc_i       ( wb_us_cyc_i ),
        .wb_cyc_i       ( wb_us_cyc_i ),
        .wb_ack_o       ( wb_us_ack_o ),
        .wb_ack_o       ( wb_us_ack_o ),
        .wb_sel_i       ( wb_us_sel_i ),
        .wb_sel_i       ( wb_us_sel_i ),
 
 
        // Interrupt request
        // Interrupt request
        .int_o          ( ),
        .int_o          ( ),
 
 
        // UART signals
        // UART signals
        // serial input/output
        // serial input/output
        .stx_pad_o      ( uart_stx ),
        .stx_pad_o      ( uart_stx ),
        .srx_pad_i      ( uart_srx ),
        .srx_pad_i      ( uart_srx ),
 
 
        // modem signals
        // modem signals
        .rts_pad_o      ( ),
        .rts_pad_o      ( ),
        .cts_pad_i      ( 1'b0 ),
        .cts_pad_i      ( 1'b0 ),
        .dtr_pad_o      ( ),
        .dtr_pad_o      ( ),
        .dsr_pad_i      ( 1'b0 ),
        .dsr_pad_i      ( 1'b0 ),
        .ri_pad_i       ( 1'b0 ),
        .ri_pad_i       ( 1'b0 ),
        .dcd_pad_i      ( 1'b0 )
        .dcd_pad_i      ( 1'b0 )
);
);
 
 
/*
/*
mc_wrapper mc_wrapper (
mc_wrapper mc_wrapper (
        .clk_i ( wb_clk ),
        .clk_i ( wb_clk ),
        .rst_i ( wb_rst ),
        .rst_i ( wb_rst ),
        .clk_mem_i ( sdram_clk_i ),
        .clk_mem_i ( sdram_clk_i ),
 
 
        .wb_data_i ( wb_mem_dat_i ),
        .wb_data_i ( wb_mem_dat_i ),
        .wb_data_o ( wb_mem_dat_o ),
        .wb_data_o ( wb_mem_dat_o ),
        .wb_addr_i ( wb_mem_adr_i ),
        .wb_addr_i ( wb_mem_adr_i ),
        .wb_sel_i ( wb_mem_sel_i ),
        .wb_sel_i ( wb_mem_sel_i ),
        .wb_we_i ( wb_mem_we_i ),
        .wb_we_i ( wb_mem_we_i ),
        .wb_cyc_i ( wb_mem_cyc_i ),
        .wb_cyc_i ( wb_mem_cyc_i ),
        .wb_stb_i ( wb_mem_stb_i ),
        .wb_stb_i ( wb_mem_stb_i ),
        .wb_ack_o ( wb_mem_ack_o ),
        .wb_ack_o ( wb_mem_ack_o ),
        .wb_err_o ( wb_mem_err_o ),
        .wb_err_o ( wb_mem_err_o ),
 
 
        .susp_req_i ( 1'b0 ),
        .susp_req_i ( 1'b0 ),
        .resume_req_i ( 1'b0 ),
        .resume_req_i ( 1'b0 ),
        .suspended_o (),
        .suspended_o (),
        .poc_o ( ),  // This is an output so the rest of the system can configure itself
        .poc_o ( ),  // This is an output so the rest of the system can configure itself
 
 
        .sdram_addr_o ( mc_addr_o ),
        .sdram_addr_o ( mc_addr_o ),
        .sdram_ba_o ( sdram_ba_o ),
        .sdram_ba_o ( sdram_ba_o ),
        .sdram_cas_n_o ( sdram_cas_o ),
        .sdram_cas_n_o ( sdram_cas_o ),
        .sdram_ras_n_o ( sdram_ras_o ),
        .sdram_ras_n_o ( sdram_ras_o ),
        .sdram_cke_n_o ( sdram_cke_o ),
        .sdram_cke_n_o ( sdram_cke_o ),
 
 
        .mc_dqm_o ( sdram_dqm_o  ),
        .mc_dqm_o ( sdram_dqm_o  ),
        .mc_we_n_o ( sdram_we_o ),
        .mc_we_n_o ( sdram_we_o ),
        .mc_oe_n_o ( ),
        .mc_oe_n_o ( ),
        .mc_data_io ( sdram_data_io ),
        .mc_data_io ( sdram_data_io ),
        .mc_parity_io ( ),
        .mc_parity_io ( ),
        .mc_cs_n_o ( mc_cs )
        .mc_cs_n_o ( mc_cs )
        );
        );
 
 
assign sdram_cs_o = mc_cs[0];
assign sdram_cs_o = mc_cs[0];
assign sdram_addr_o = mc_addr_o[11:0];
assign sdram_addr_o = mc_addr_o[11:0];
*/
*/
 
 
//
//
// Instantiation of the Traffic COP
// Instantiation of the Traffic COP
//
//
wb_conbus_top #(.s0_addr_w  (`APP_ADDR_DEC_W),
wb_conbus_top #(.s0_addr_w  (`APP_ADDR_DEC_W),
         .s0_addr    (`APP_ADDR_SDRAM),
         .s0_addr    (`APP_ADDR_SDRAM),
         .s1_addr_w  (`APP_ADDR_DEC2_W),
         .s1_addr_w  (`APP_ADDR_DEC2_W),
         .s1_addr    (`APP_ADDR_OCRAM),
         .s1_addr    (`APP_ADDR_OCRAM),
         .s27_addr_w (`APP_ADDR_DECP_W),
         .s27_addr_w (`APP_ADDR_DECP_W),
         .s2_addr    (`APP_ADDR_VGA),
         .s2_addr    (`APP_ADDR_VGA),
         .s3_addr    (`APP_ADDR_ETH),
         .s3_addr    (`APP_ADDR_ETH),
         .s4_addr    (`APP_ADDR_AUDIO),
         .s4_addr    (`APP_ADDR_AUDIO),
         .s5_addr    (`APP_ADDR_UART),
         .s5_addr    (`APP_ADDR_UART),
         .s6_addr    (`APP_ADDR_PS2),
         .s6_addr    (`APP_ADDR_PS2),
         .s7_addr    (`APP_ADDR_RES1)
         .s7_addr    (`APP_ADDR_RES1)
        ) tc_top (
        ) tc_top (
 
 
        // WISHBONE common
        // WISHBONE common
        .clk_i  ( wb_clk ),
        .clk_i  ( wb_clk ),
        .rst_i  ( wb_rst ),
        .rst_i  ( wb_rst ),
 
 
        // WISHBONE Initiator 0
        // WISHBONE Initiator 0
        .m0_cyc_i       ( 1'b0 ),
        .m0_cyc_i       ( 1'b0 ),
        .m0_stb_i       ( 1'b0 ),
        .m0_stb_i       ( 1'b0 ),
        .m0_cab_i       ( 1'b0 ),
        .m0_cab_i       ( 1'b0 ),
        .m0_adr_i       ( 32'h0000_0000 ),
        .m0_adr_i       ( 32'h0000_0000 ),
        .m0_sel_i       ( 4'b0000 ),
        .m0_sel_i       ( 4'b0000 ),
        .m0_we_i        ( 1'b0 ),
        .m0_we_i        ( 1'b0 ),
        .m0_dat_i       ( 32'h0000_0000 ),
        .m0_dat_i       ( 32'h0000_0000 ),
        .m0_dat_o       ( ),
        .m0_dat_o       ( ),
        .m0_ack_o       ( ),
        .m0_ack_o       ( ),
        .m0_err_o       ( ),
        .m0_err_o       ( ),
 
 
        // WISHBONE Initiator 1
        // WISHBONE Initiator 1
        .m1_cyc_i       ( 1'b0 ),
        .m1_cyc_i       ( 1'b0 ),
        .m1_stb_i       ( 1'b0 ),
        .m1_stb_i       ( 1'b0 ),
        .m1_cab_i       ( 1'b0 ),
        .m1_cab_i       ( 1'b0 ),
        .m1_adr_i       ( 32'h0000_0000 ),
        .m1_adr_i       ( 32'h0000_0000 ),
        .m1_sel_i       ( 4'b0000 ),
        .m1_sel_i       ( 4'b0000 ),
        .m1_we_i        ( 1'b0 ),
        .m1_we_i        ( 1'b0 ),
        .m1_dat_i       ( 32'h0000_0000 ),
        .m1_dat_i       ( 32'h0000_0000 ),
        .m1_dat_o       ( ),
        .m1_dat_o       ( ),
        .m1_ack_o       ( ),
        .m1_ack_o       ( ),
        .m1_err_o       ( ),
        .m1_err_o       ( ),
 
 
        // WISHBONE Initiator 2
        // WISHBONE Initiator 2
        .m2_cyc_i       ( 1'b0 ),
        .m2_cyc_i       ( 1'b0 ),
        .m2_stb_i       ( 1'b0 ),
        .m2_stb_i       ( 1'b0 ),
        .m2_cab_i       ( 1'b0 ),
        .m2_cab_i       ( 1'b0 ),
        .m2_adr_i       ( 32'h0000_0000 ),
        .m2_adr_i       ( 32'h0000_0000 ),
        .m2_sel_i       ( 4'b0000 ),
        .m2_sel_i       ( 4'b0000 ),
        .m2_we_i        ( 1'b0 ),
        .m2_we_i        ( 1'b0 ),
        .m2_dat_i       ( 32'h0000_0000 ),
        .m2_dat_i       ( 32'h0000_0000 ),
        .m2_dat_o       ( ),
        .m2_dat_o       ( ),
        .m2_ack_o       ( ),
        .m2_ack_o       ( ),
        .m2_err_o       ( ),
        .m2_err_o       ( ),
 
 
        // WISHBONE Initiator 3
        // WISHBONE Initiator 3
        .m3_cyc_i       ( wb_dm_cyc_o ),
        .m3_cyc_i       ( wb_dm_cyc_o ),
        .m3_stb_i       ( wb_dm_stb_o ),
        .m3_stb_i       ( wb_dm_stb_o ),
        .m3_cab_i       ( wb_dm_cab_o ),
        .m3_cab_i       ( wb_dm_cab_o ),
        .m3_adr_i       ( wb_dm_adr_o ),
        .m3_adr_i       ( wb_dm_adr_o ),
        .m3_sel_i       ( wb_dm_sel_o ),
        .m3_sel_i       ( wb_dm_sel_o ),
        .m3_we_i        ( wb_dm_we_o  ),
        .m3_we_i        ( wb_dm_we_o  ),
        .m3_dat_i       ( wb_dm_dat_o ),
        .m3_dat_i       ( wb_dm_dat_o ),
        .m3_dat_o       ( wb_dm_dat_i ),
        .m3_dat_o       ( wb_dm_dat_i ),
        .m3_ack_o       ( wb_dm_ack_i ),
        .m3_ack_o       ( wb_dm_ack_i ),
        .m3_err_o       ( wb_dm_err_i ),
        .m3_err_o       ( wb_dm_err_i ),
 
 
        // WISHBONE Initiator 4
        // WISHBONE Initiator 4
        .m4_cyc_i       ( wb_rdm_cyc_o ),
        .m4_cyc_i       ( wb_rdm_cyc_o ),
        .m4_stb_i       ( wb_rdm_stb_o ),
        .m4_stb_i       ( wb_rdm_stb_o ),
        .m4_cab_i       ( wb_rdm_cab_o ),
        .m4_cab_i       ( wb_rdm_cab_o ),
        .m4_adr_i       ( wb_rdm_adr_o ),
        .m4_adr_i       ( wb_rdm_adr_o ),
        .m4_sel_i       ( wb_rdm_sel_o ),
        .m4_sel_i       ( wb_rdm_sel_o ),
        .m4_we_i        ( wb_rdm_we_o  ),
        .m4_we_i        ( wb_rdm_we_o  ),
        .m4_dat_i       ( wb_rdm_dat_o ),
        .m4_dat_i       ( wb_rdm_dat_o ),
        .m4_dat_o       ( wb_rdm_dat_i ),
        .m4_dat_o       ( wb_rdm_dat_i ),
        .m4_ack_o       ( wb_rdm_ack_i ),
        .m4_ack_o       ( wb_rdm_ack_i ),
        .m4_err_o       ( wb_rdm_err_i ),
        .m4_err_o       ( wb_rdm_err_i ),
 
 
        // WISHBONE Initiator 5
        // WISHBONE Initiator 5
        .m5_cyc_i       ( wb_rim_cyc_o ),
        .m5_cyc_i       ( wb_rim_cyc_o ),
        .m5_stb_i       ( wb_rim_stb_o ),
        .m5_stb_i       ( wb_rim_stb_o ),
        .m5_cab_i       ( wb_rim_cab_o ),
        .m5_cab_i       ( wb_rim_cab_o ),
        .m5_adr_i       ( wb_rim_adr_o ),
        .m5_adr_i       ( wb_rim_adr_o ),
        .m5_sel_i       ( wb_rim_sel_o ),
        .m5_sel_i       ( wb_rim_sel_o ),
        .m5_we_i        ( wb_rim_we_o  ),
        .m5_we_i        ( wb_rim_we_o  ),
        .m5_dat_i       ( wb_rim_dat_o ),
        .m5_dat_i       ( wb_rim_dat_o ),
        .m5_dat_o       ( wb_rim_dat_i ),
        .m5_dat_o       ( wb_rim_dat_i ),
        .m5_ack_o       ( wb_rim_ack_i ),
        .m5_ack_o       ( wb_rim_ack_i ),
        .m5_err_o       ( wb_rim_err_i ),
        .m5_err_o       ( wb_rim_err_i ),
 
 
        // WISHBONE Initiator 6
        // WISHBONE Initiator 6
        .m6_cyc_i       ( 1'b0 ),
        .m6_cyc_i       ( 1'b0 ),
        .m6_stb_i       ( 1'b0 ),
        .m6_stb_i       ( 1'b0 ),
        .m6_cab_i       ( 1'b0 ),
        .m6_cab_i       ( 1'b0 ),
        .m6_adr_i       ( 32'h0000_0000 ),
        .m6_adr_i       ( 32'h0000_0000 ),
        .m6_sel_i       ( 4'b0000 ),
        .m6_sel_i       ( 4'b0000 ),
        .m6_we_i        ( 1'b0 ),
        .m6_we_i        ( 1'b0 ),
        .m6_dat_i       ( 32'h0000_0000 ),
        .m6_dat_i       ( 32'h0000_0000 ),
        .m6_dat_o       ( ),
        .m6_dat_o       ( ),
        .m6_ack_o       ( ),
        .m6_ack_o       ( ),
        .m6_err_o       ( ),
        .m6_err_o       ( ),
 
 
        // WISHBONE Initiator 7
        // WISHBONE Initiator 7
        .m7_cyc_i       ( 1'b0 ),
        .m7_cyc_i       ( 1'b0 ),
        .m7_stb_i       ( 1'b0 ),
        .m7_stb_i       ( 1'b0 ),
        .m7_cab_i       ( 1'b0 ),
        .m7_cab_i       ( 1'b0 ),
        .m7_adr_i       ( 32'h0000_0000 ),
        .m7_adr_i       ( 32'h0000_0000 ),
        .m7_sel_i       ( 4'b0000 ),
        .m7_sel_i       ( 4'b0000 ),
        .m7_we_i        ( 1'b0 ),
        .m7_we_i        ( 1'b0 ),
        .m7_dat_i       ( 32'h0000_0000 ),
        .m7_dat_i       ( 32'h0000_0000 ),
        .m7_dat_o       ( ),
        .m7_dat_o       ( ),
        .m7_ack_o       ( ),
        .m7_ack_o       ( ),
        .m7_err_o       ( ),
        .m7_err_o       ( ),
 
 
        // WISHBONE Target 0
        // WISHBONE Target 0
        .s0_cyc_o       ( ),
        .s0_cyc_o       ( ),
        .s0_stb_o       ( ),
        .s0_stb_o       ( ),
        .s0_cab_o       ( ),
        .s0_cab_o       ( ),
        .s0_adr_o       ( ),
        .s0_adr_o       ( ),
        .s0_sel_o       ( ),
        .s0_sel_o       ( ),
        .s0_we_o        ( ),
        .s0_we_o        ( ),
        .s0_dat_o       ( ),
        .s0_dat_o       ( ),
        .s0_dat_i       ( 32'h0000_0000 ),
        .s0_dat_i       ( 32'h0000_0000 ),
        .s0_ack_i       ( 1'b0 ),
        .s0_ack_i       ( 1'b0 ),
        .s0_err_i       ( 1'b0 ),
        .s0_err_i       ( 1'b0 ),
        .s0_rty_i ( 1'b0 ),
        .s0_rty_i ( 1'b0 ),
        /*
        /*
        .s0_cyc_o       ( wb_mem_cyc_i ),
        .s0_cyc_o       ( wb_mem_cyc_i ),
        .s0_stb_o       ( wb_mem_stb_i ),
        .s0_stb_o       ( wb_mem_stb_i ),
        .s0_cab_o       ( wb_mem_cab_i ),
        .s0_cab_o       ( wb_mem_cab_i ),
        .s0_adr_o       ( wb_mem_adr_i ),
        .s0_adr_o       ( wb_mem_adr_i ),
        .s0_sel_o       ( wb_mem_sel_i ),
        .s0_sel_o       ( wb_mem_sel_i ),
        .s0_we_o        ( wb_mem_we_i ),
        .s0_we_o        ( wb_mem_we_i ),
        .s0_dat_o       ( wb_mem_dat_i ),
        .s0_dat_o       ( wb_mem_dat_i ),
        .s0_dat_i       ( wb_mem_dat_o ),
        .s0_dat_i       ( wb_mem_dat_o ),
        .s0_ack_i       ( wb_mem_ack_o ),
        .s0_ack_i       ( wb_mem_ack_o ),
        .s0_err_i       ( wb_mem_err_o ),
        .s0_err_i       ( wb_mem_err_o ),
        .s0_rty_i ( 1'b0),
        .s0_rty_i ( 1'b0),
        */
        */
 
 
        // WISHBONE Target 1
        // WISHBONE Target 1
        .s1_cyc_o       ( wb_ss_cyc_i ),
        .s1_cyc_o       ( wb_ss_cyc_i ),
        .s1_stb_o       ( wb_ss_stb_i ),
        .s1_stb_o       ( wb_ss_stb_i ),
        .s1_cab_o       ( wb_ss_cab_i ),
        .s1_cab_o       ( wb_ss_cab_i ),
        .s1_adr_o       ( wb_ss_adr_i ),
        .s1_adr_o       ( wb_ss_adr_i ),
        .s1_sel_o       ( wb_ss_sel_i ),
        .s1_sel_o       ( wb_ss_sel_i ),
        .s1_we_o        ( wb_ss_we_i  ),
        .s1_we_o        ( wb_ss_we_i  ),
        .s1_dat_o       ( wb_ss_dat_i ),
        .s1_dat_o       ( wb_ss_dat_i ),
        .s1_dat_i       ( wb_ss_dat_o ),
        .s1_dat_i       ( wb_ss_dat_o ),
        .s1_ack_i       ( wb_ss_ack_o ),
        .s1_ack_i       ( wb_ss_ack_o ),
        .s1_err_i       ( wb_ss_err_o ),
        .s1_err_i       ( wb_ss_err_o ),
        .s1_rty_i ( 1'b0 ),
        .s1_rty_i ( 1'b0 ),
 
 
        // WISHBONE Target 2
        // WISHBONE Target 2
        .s2_cyc_o       ( ),
        .s2_cyc_o       ( ),
        .s2_stb_o       ( ),
        .s2_stb_o       ( ),
        .s2_cab_o       ( ),
        .s2_cab_o       ( ),
        .s2_adr_o       ( ),
        .s2_adr_o       ( ),
        .s2_sel_o       ( ),
        .s2_sel_o       ( ),
        .s2_we_o        ( ),
        .s2_we_o        ( ),
        .s2_dat_o       ( ),
        .s2_dat_o       ( ),
        .s2_dat_i       ( 32'h0000_0000 ),
        .s2_dat_i       ( 32'h0000_0000 ),
        .s2_ack_i       ( 1'b0 ),
        .s2_ack_i       ( 1'b0 ),
        .s2_err_i       ( 1'b0 ),
        .s2_err_i       ( 1'b0 ),
        .s2_rty_i ( 1'b0 ),
        .s2_rty_i ( 1'b0 ),
 
 
        // WISHBONE Target 3
        // WISHBONE Target 3
        .s3_cyc_o       ( ),
        .s3_cyc_o       ( ),
        .s3_stb_o       ( ),
        .s3_stb_o       ( ),
        .s3_cab_o       ( ),
        .s3_cab_o       ( ),
        .s3_adr_o       ( ),
        .s3_adr_o       ( ),
        .s3_sel_o       ( ),
        .s3_sel_o       ( ),
        .s3_we_o        ( ),
        .s3_we_o        ( ),
        .s3_dat_o       ( ),
        .s3_dat_o       ( ),
        .s3_dat_i       ( 32'h0000_0000 ),
        .s3_dat_i       ( 32'h0000_0000 ),
        .s3_ack_i       ( 1'b0 ),
        .s3_ack_i       ( 1'b0 ),
        .s3_err_i       ( 1'b0 ),
        .s3_err_i       ( 1'b0 ),
        .s3_rty_i ( 1'b0),
        .s3_rty_i ( 1'b0),
 
 
        // WISHBONE Target 4
        // WISHBONE Target 4
        .s4_cyc_o       ( ),
        .s4_cyc_o       ( ),
        .s4_stb_o       ( ),
        .s4_stb_o       ( ),
        .s4_cab_o       ( ),
        .s4_cab_o       ( ),
        .s4_adr_o       ( ),
        .s4_adr_o       ( ),
        .s4_sel_o       ( ),
        .s4_sel_o       ( ),
        .s4_we_o        ( ),
        .s4_we_o        ( ),
        .s4_dat_o       ( ),
        .s4_dat_o       ( ),
        .s4_dat_i       ( 32'h0000_0000 ),
        .s4_dat_i       ( 32'h0000_0000 ),
        .s4_ack_i       ( 1'b0 ),
        .s4_ack_i       ( 1'b0 ),
        .s4_err_i       ( 1'b0 ),
        .s4_err_i       ( 1'b0 ),
        .s4_rty_i ( 1'b0),
        .s4_rty_i ( 1'b0),
 
 
        // WISHBONE Target 5
        // WISHBONE Target 5
        .s5_cyc_o       ( wb_us_cyc_i ),
        .s5_cyc_o       ( wb_us_cyc_i ),
        .s5_stb_o       ( wb_us_stb_i ),
        .s5_stb_o       ( wb_us_stb_i ),
        .s5_cab_o       ( wb_us_cab_i ),
        .s5_cab_o       ( wb_us_cab_i ),
        .s5_adr_o       ( wb_us_adr_i ),
        .s5_adr_o       ( wb_us_adr_i ),
        .s5_sel_o       ( wb_us_sel_i ),
        .s5_sel_o       ( wb_us_sel_i ),
        .s5_we_o        ( wb_us_we_i  ),
        .s5_we_o        ( wb_us_we_i  ),
        .s5_dat_o       ( wb_us_dat_i ),
        .s5_dat_o       ( wb_us_dat_i ),
        .s5_dat_i       ( wb_us_dat_o ),
        .s5_dat_i       ( wb_us_dat_o ),
        .s5_ack_i       ( wb_us_ack_o ),
        .s5_ack_i       ( wb_us_ack_o ),
        .s5_err_i       ( wb_us_err_o ),
        .s5_err_i       ( wb_us_err_o ),
        .s5_rty_i ( 1'b0 ),
        .s5_rty_i ( 1'b0 ),
 
 
        // WISHBONE Target 6
        // WISHBONE Target 6
        .s6_cyc_o       ( ),
        .s6_cyc_o       ( ),
        .s6_stb_o       ( ),
        .s6_stb_o       ( ),
        .s6_cab_o       ( ),
        .s6_cab_o       ( ),
        .s6_adr_o       ( ),
        .s6_adr_o       ( ),
        .s6_sel_o       ( ),
        .s6_sel_o       ( ),
        .s6_we_o        ( ),
        .s6_we_o        ( ),
        .s6_dat_o       ( ),
        .s6_dat_o       ( ),
        .s6_dat_i       ( 32'h0000_0000 ),
        .s6_dat_i       ( 32'h0000_0000 ),
        .s6_ack_i       ( 1'b0 ),
        .s6_ack_i       ( 1'b0 ),
        .s6_err_i       ( 1'b0 ),
        .s6_err_i       ( 1'b0 ),
        .s6_rty_i ( 1'b0),
        .s6_rty_i ( 1'b0),
 
 
        // WISHBONE Target 7
        // WISHBONE Target 7
        .s7_cyc_o       ( ),
        .s7_cyc_o       ( ),
        .s7_stb_o       ( ),
        .s7_stb_o       ( ),
        .s7_cab_o       ( ),
        .s7_cab_o       ( ),
        .s7_adr_o       ( ),
        .s7_adr_o       ( ),
        .s7_sel_o       ( ),
        .s7_sel_o       ( ),
        .s7_we_o        ( ),
        .s7_we_o        ( ),
        .s7_dat_o       ( ),
        .s7_dat_o       ( ),
        .s7_dat_i       ( 32'h0000_0000 ),
        .s7_dat_i       ( 32'h0000_0000 ),
        .s7_ack_i       ( 1'b0 ),
        .s7_ack_i       ( 1'b0 ),
        .s7_err_i       ( 1'b0 ),
        .s7_err_i       ( 1'b0 ),
        .s7_rty_i ( 1'b0)
        .s7_rty_i ( 1'b0)
 
 
);
);
 
 
//initial begin
//initial begin
//  $dumpvars(0);
//  $dumpvars(0);
//  $dumpfile("dump.vcd");
//  $dumpfile("dump.vcd");
//end
//end
 
 
endmodule
endmodule
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.