// ========== Copyright Header Begin ==========================================
// OpenSPARC T2 Processor File: dmu_cmu.v
// Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
// 4150 Network Circle, Santa Clara, California 95054, U.S.A.
// * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; version 2 of the License.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// For the avoidance of doubt, and except that if any non-GPL license
// choice is available it will apply instead, Sun elects to use only
// the General Public License version 2 (GPLv2) at this time for any
// software where a choice of GPL license versions is made
// available with the language indicating that GPLv2 or any later version
// may be used, or where a choice of which version of the GPL is applied is
// otherwise unspecified.
// Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
// CA 95054 USA or visit www.sun.com if you need additional information or
// ========== Copyright Header End ============================================
cr2cm_dbg_sel_a, // CMU debug select a
cm2cr_dbg_a, // CMU debug output a
cr2cm_dbg_sel_b, // CMU debug select b
cm2cr_dbg_b, // CMU debug output b
//************************************************
//************************************************
// parameter MM2CM_WDTH = `FIRE_DLC_ISR_REC_WDTH, //79
// CM2PM_WDTH = `FIRE_DLC_IPR_REC_WDTH, //93
// CL2CM_WDTH = `FIRE_DLC_EPR_REC_WDTH, //80
// CM2RM_WDTH = `FIRE_DLC_ERR_REC_WDTH; //70
parameter SRMSB = `FIRE_DLC_ISR_MSB, // MM2CM_SRWDTH -1
IPRMSB = `FIRE_DLC_IPR_MSB, // CM2PM_PRWDTH -1
EPRMSB = `FIRE_DLC_EPR_MSB, // CL2CM_PRWDTH -1
RRMSB = `FIRE_DLC_ERR_MSB; // CM2RM_RRWDTH -1
parameter MPS_WDTH = `FIRE_DLC_MPS;
parameter MPSMSB = MPS_WDTH - 1;
// parameter CTXARRAY_WDTH = 43, // Context CTX entry width
parameter CTXARRAY_WDTH = 44, // Context CTX entry width
CTXARRAYMSB = CTXARRAY_WDTH -1,
CTXADDRMSB = CTXADDRLSB + CTXADDR_WDTH -1;
parameter PSEQARRAY_WDTH = 5, // Context PKSEQ entry width
PSEQARRAYMSB = PSEQARRAY_WDTH -1,
PSEQADDRMSB = PSEQADDRLSB + PSEQADDR_WDTH -1;
parameter CLSTARRAY_WDTH = 54, // Context CLST entry width
CLSTARRAYMSB = CLSTARRAY_WDTH -1,
CLSTADDRMSB = CLSTADDRLSB + CLSTADDR_WDTH -1;
parameter RETADDRARRAY_WDTH = 17,
RETADDRMSB = RETADDRARRAY_WDTH -1;
//************************************************
//************************************************
input clk; // The input clock
input rst_l; // The fifo rst_l
input [SRMSB : 0] mm2cm_rcd;
output [IPRMSB : 0] cm2pm_rcd;
input [EPRMSB : 0] cl2cm_rcd;
output [RRMSB : 0] cm2rm_rcd;
input [MPSMSB :0] y2k_mps;
input [`FIRE_DLC_CMU_DS_BITS] cr2cm_dbg_sel_a; // CMU debug select a
input [`FIRE_DLC_CMU_DS_BITS] cr2cm_dbg_sel_b; // CMU debug select b
output [`FIRE_DBG_DATA_BITS] cm2cr_dbg_a; // CMU debug output a
output [`FIRE_DBG_DATA_BITS] cm2cr_dbg_b; // CMU debug output b
//************************************************
//************************************************
wire [MPSMSB :0] y2k_mps;
wire [SRMSB : 0]mm2cm_rcd;
wire [IPRMSB : 0]cm2pm_rcd;
wire [EPRMSB : 0]cl2cm_rcd;
wire [RRMSB : 0]cm2rm_rcd;
wire [CTXADDRMSB :0] ctx2rcm_nxctx_addr;
wire [CTXADDRMSB :0] rcm2ctx_ctx_addr;
wire [CTXARRAYMSB : 0] ctx2rcm_cur_ctx;
wire [CTXARRAYMSB : 0] rcm2ctx_ctx;
wire [PSEQADDRMSB :0] ctx2rcm_nxseq_addr;
wire [PSEQADDRMSB :0] rcm2ctx_pkseq_addr;
wire [PSEQARRAYMSB : 0] rcm2ctx_pkseq;
wire [CTXADDRMSB :0] tcm2ctx_ctx_addr;
wire [CTXARRAYMSB : 0] ctx2tcm_cur_ctx;
wire [CTXARRAYMSB : 0] tcm2ctx_ctx;
wire [PSEQADDRMSB :0] tcm2ctx_pkseq_addr;
wire [PSEQARRAYMSB : 0] ctx2tcm_cur_pkseq;
wire [PSEQARRAYMSB : 0] tcm2ctx_pkseq;
wire [CLSTADDRMSB :0] ctx2tcm_nxlst_addr;
wire [CLSTADDRMSB :0] tcm2ctx_ctxlst_addr;
wire [CLSTARRAYMSB : 0] tcm2ctx_lst;
wire [CLSTARRAYMSB : 0] ctx2tcm_cur_lst;
wire [RETADDRMSB :0] tcm2ctx_ret_addr;
wire [`FIRE_DLC_CMU_DS_BITS] cr2cm_dbg_sel_a; // CMU debug select a
wire [`FIRE_DLC_CMU_DS_BITS] cr2cm_dbg_sel_b; // CMU debug select b
wire [`FIRE_DBG_DATA_BITS] cm2cr_dbg_a; // CMU debug output a
wire [`FIRE_DBG_DATA_BITS] cm2cr_dbg_b; // CMU debug output b
wire [`FIRE_DLC_CMU_RCM_DS_BITS] dbg2rcm_dbg_sel_a;
wire [`FIRE_DLC_CMU_RCM_DS_BITS] dbg2rcm_dbg_sel_b;
wire [`FIRE_DBG_DATA_BITS] rcm2dbg_dbg_a;
wire [`FIRE_DBG_DATA_BITS] rcm2dbg_dbg_b;
wire [`FIRE_DLC_CMU_TCM_DS_BITS] dbg2tcm_dbg_sel_a;
wire [`FIRE_DLC_CMU_TCM_DS_BITS] dbg2tcm_dbg_sel_b;
wire [`FIRE_DBG_DATA_BITS] tcm2dbg_dbg_a;
wire [`FIRE_DBG_DATA_BITS] tcm2dbg_dbg_b;
wire [`FIRE_DLC_CMU_CTX_DS_BITS] dbg2ctx_dbg_sel_a;
wire [`FIRE_DLC_CMU_CTX_DS_BITS] dbg2ctx_dbg_sel_b;
wire [`FIRE_DBG_DATA_BITS] ctx2dbg_dbg_a;
wire [`FIRE_DBG_DATA_BITS] ctx2dbg_dbg_b;
//************************************************
//************************************************
.dbg2rcm_dbg_sel_a (dbg2rcm_dbg_sel_a),
.dbg2rcm_dbg_sel_b (dbg2rcm_dbg_sel_b),
.rcm2dbg_dbg_a (rcm2dbg_dbg_a),
.rcm2dbg_dbg_b (rcm2dbg_dbg_b),
.mm2cm_rcd_enq (mm2cm_rcd_enq),
.cm2mm_rcd_full (cm2mm_rcd_full),
.cm2pm_rcd_enq (cm2pm_rcd_enq),
.pm2cm_rcd_full (pm2cm_rcd_full),
.rcm2ctx_ctx_req(rcm2ctx_ctx_req),
.ctx2rcm_ctx_gnt (ctx2rcm_ctx_gnt),
.ctx2rcm_nxctx_addr (ctx2rcm_nxctx_addr),
.rcm2ctx_ctx_addr (rcm2ctx_ctx_addr),
.rcm2ctx_ctx_rw (rcm2ctx_ctx_rw),
.ctx2rcm_cur_ctx (ctx2rcm_cur_ctx),
.rcm2ctx_ctx (rcm2ctx_ctx),
.rcm2ctx_seq_req (rcm2ctx_seq_req),
.ctx2rcm_seq_gnt (ctx2rcm_seq_gnt),
.ctx2rcm_nxseq_addr (ctx2rcm_nxseq_addr),
.rcm2ctx_pkseq_addr (rcm2ctx_pkseq_addr),
.rcm2ctx_pkseq_rw (rcm2ctx_pkseq_rw),
.rcm2ctx_pkseq (rcm2ctx_pkseq),
.dbg2tcm_dbg_sel_a (dbg2tcm_dbg_sel_a),
.dbg2tcm_dbg_sel_b (dbg2tcm_dbg_sel_b),
.tcm2dbg_dbg_a (tcm2dbg_dbg_a),
.tcm2dbg_dbg_b (tcm2dbg_dbg_b),
.cl2cm_rcd_enq (cl2cm_rcd_enq),
.cm2cl_rcd_full (cm2cl_rcd_full),
.cm2rm_rcd_enq (cm2rm_rcd_enq),
.rm2cm_rcd_full (rm2cm_rcd_full),
.tcm2ctx_ctx_addr (tcm2ctx_ctx_addr),
.tcm2ctx_ctx_rw (tcm2ctx_ctx_rw),
.ctx2tcm_cur_ctx (ctx2tcm_cur_ctx),
.tcm2ctx_ctx (tcm2ctx_ctx),
.tcm2ctx_pkseq_addr (tcm2ctx_pkseq_addr),
.tcm2ctx_pkseq_rw (tcm2ctx_pkseq_rw),
.ctx2tcm_cur_pkseq (ctx2tcm_cur_pkseq),
.tcm2ctx_pkseq (tcm2ctx_pkseq),
.tcm2ctx_lst_req (tcm2ctx_lst_req),
.ctx2tcm_lst_gnt (ctx2tcm_lst_gnt),
.ctx2tcm_nxlst_addr (ctx2tcm_nxlst_addr),
.tcm2ctx_ctxlst_addr (tcm2ctx_ctxlst_addr),
.tcm2ctx_clst_rw (tcm2ctx_clst_rw),
.tcm2ctx_lst (tcm2ctx_lst),
.ctx2tcm_cur_lst (ctx2tcm_cur_lst),
.tcm2ctx_ret_req (tcm2ctx_ret_req),
.tcm2ctx_ret_addr (tcm2ctx_ret_addr)
.dbg2ctx_dbg_sel_a (dbg2ctx_dbg_sel_a),
.dbg2ctx_dbg_sel_b (dbg2ctx_dbg_sel_b),
.ctx2dbg_dbg_a (ctx2dbg_dbg_a),
.ctx2dbg_dbg_b (ctx2dbg_dbg_b),
.rcm2ctx_ctx_req(rcm2ctx_ctx_req),
.ctx2rcm_ctx_gnt (ctx2rcm_ctx_gnt),
.ctx2rcm_nxctx_addr (ctx2rcm_nxctx_addr),
.rcm2ctx_ctx_addr (rcm2ctx_ctx_addr),
.rcm2ctx_ctx_rw (rcm2ctx_ctx_rw),
.ctx2rcm_cur_ctx (ctx2rcm_cur_ctx),
.rcm2ctx_ctx (rcm2ctx_ctx),
.rcm2ctx_seq_req (rcm2ctx_seq_req),
.ctx2rcm_seq_gnt (ctx2rcm_seq_gnt),
.ctx2rcm_nxseq_addr (ctx2rcm_nxseq_addr),
.rcm2ctx_pkseq_addr (rcm2ctx_pkseq_addr),
.rcm2ctx_pkseq_rw (rcm2ctx_pkseq_rw),
.rcm2ctx_pkseq (rcm2ctx_pkseq),
.tcm2ctx_ctx_addr (tcm2ctx_ctx_addr),
.tcm2ctx_ctx_rw (tcm2ctx_ctx_rw),
.ctx2tcm_cur_ctx (ctx2tcm_cur_ctx),
.tcm2ctx_ctx (tcm2ctx_ctx),
.tcm2ctx_pkseq_addr (tcm2ctx_pkseq_addr),
.tcm2ctx_pkseq_rw (tcm2ctx_pkseq_rw),
.ctx2tcm_cur_pkseq (ctx2tcm_cur_pkseq),
.tcm2ctx_pkseq (tcm2ctx_pkseq),
.tcm2ctx_lst_req (tcm2ctx_lst_req),
.ctx2tcm_lst_gnt (ctx2tcm_lst_gnt),
.ctx2tcm_nxlst_addr (ctx2tcm_nxlst_addr),
.tcm2ctx_ctxlst_addr (tcm2ctx_ctxlst_addr),
.tcm2ctx_clst_rw (tcm2ctx_clst_rw),
.tcm2ctx_lst (tcm2ctx_lst),
.ctx2tcm_cur_lst (ctx2tcm_cur_lst),
.tcm2ctx_ret_req (tcm2ctx_ret_req),
.tcm2ctx_ret_addr (tcm2ctx_ret_addr)
.cr2cm_dbg_sel_a (cr2cm_dbg_sel_a), // CMU debug select a
.cr2cm_dbg_sel_b (cr2cm_dbg_sel_b), // CMU debug select b
.cm2cr_dbg_a (cm2cr_dbg_a), // CMU debug output a
.cm2cr_dbg_b (cm2cr_dbg_b), // CMU debug output b
.dbg2rcm_dbg_sel_a (dbg2rcm_dbg_sel_a), // RCM debug select a
.dbg2rcm_dbg_sel_b (dbg2rcm_dbg_sel_b), // RCM debug select b
.rcm2dbg_dbg_a (rcm2dbg_dbg_a), // RCM debug output a
.rcm2dbg_dbg_b (rcm2dbg_dbg_b), // RCM debug output b
.dbg2tcm_dbg_sel_a (dbg2tcm_dbg_sel_a), // TCM debug select a
.dbg2tcm_dbg_sel_b (dbg2tcm_dbg_sel_b), // TCM debug select b
.tcm2dbg_dbg_a (tcm2dbg_dbg_a), // TCM debug output a
.tcm2dbg_dbg_b (tcm2dbg_dbg_b), // TCM debug output b
.dbg2ctx_dbg_sel_a (dbg2ctx_dbg_sel_a), // CTX debug select a
.dbg2ctx_dbg_sel_b (dbg2ctx_dbg_sel_b), // CTX debug select b
.ctx2dbg_dbg_a (ctx2dbg_dbg_a), // CTX debug output a
.ctx2dbg_dbg_b (ctx2dbg_dbg_b) // CTX debug output b