// ========== Copyright Header Begin ==========================================
// OpenSPARC T2 Processor File: mcu_adrq_dp.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 ============================================
wire u_mcu_rd_adr_sync_scanin;
wire u_mcu_rd_adr_sync_scanout;
wire [2:0] mcu_rd_req_id;
wire [3:0] mcu_rank_rd_adr;
wire [2:0] mcu_bank_rd_adr;
wire [14:0] mcu_ras_rd_adr;
wire [10:0] mcu_cas_rd_adr;
wire u_mcu_wr_adr_sync_scanin;
wire u_mcu_wr_adr_sync_scanout;
wire [3:0] mcu_rank_wr_adr;
wire [2:0] mcu_bank_wr_adr;
wire [14:0] mcu_ras_wr_adr;
wire [10:0] mcu_cas_wr_adr;
wire u_rd_adr_queue7_scanin;
wire u_rd_adr_queue7_scanout;
wire [2:0] rd_req_id_queue7;
wire [3:0] rank_rd_adr_queue7;
wire [2:0] bank_rd_adr_queue7;
wire [14:0] ras_rd_adr_queue7;
wire [10:0] cas_rd_adr_queue7;
wire u_rd_adr_queue6_scanin;
wire u_rd_adr_queue6_scanout;
wire [2:0] rd_req_id_queue6;
wire [3:0] rank_rd_adr_queue6;
wire [2:0] bank_rd_adr_queue6;
wire [14:0] ras_rd_adr_queue6;
wire [10:0] cas_rd_adr_queue6;
wire u_rd_adr_queue5_scanin;
wire u_rd_adr_queue5_scanout;
wire [2:0] rd_req_id_queue5;
wire [3:0] rank_rd_adr_queue5;
wire [2:0] bank_rd_adr_queue5;
wire [14:0] ras_rd_adr_queue5;
wire [10:0] cas_rd_adr_queue5;
wire u_rd_adr_queue4_scanin;
wire u_rd_adr_queue4_scanout;
wire [2:0] rd_req_id_queue4;
wire [3:0] rank_rd_adr_queue4;
wire [2:0] bank_rd_adr_queue4;
wire [14:0] ras_rd_adr_queue4;
wire [10:0] cas_rd_adr_queue4;
wire u_rd_adr_queue3_scanin;
wire u_rd_adr_queue3_scanout;
wire [2:0] rd_req_id_queue3;
wire [3:0] rank_rd_adr_queue3;
wire [2:0] bank_rd_adr_queue3;
wire [14:0] ras_rd_adr_queue3;
wire [10:0] cas_rd_adr_queue3;
wire u_rd_adr_queue2_scanin;
wire u_rd_adr_queue2_scanout;
wire [2:0] rd_req_id_queue2;
wire [3:0] rank_rd_adr_queue2;
wire [2:0] bank_rd_adr_queue2;
wire [14:0] ras_rd_adr_queue2;
wire [10:0] cas_rd_adr_queue2;
wire u_rd_adr_queue1_scanin;
wire u_rd_adr_queue1_scanout;
wire [2:0] rd_req_id_queue1;
wire [3:0] rank_rd_adr_queue1;
wire [2:0] bank_rd_adr_queue1;
wire [14:0] ras_rd_adr_queue1;
wire [10:0] cas_rd_adr_queue1;
wire u_rd_adr_queue0_scanin;
wire u_rd_adr_queue0_scanout;
wire [2:0] rd_req_id_queue0;
wire [3:0] rank_rd_adr_queue0;
wire [2:0] bank_rd_adr_queue0;
wire [14:0] ras_rd_adr_queue0;
wire [10:0] cas_rd_adr_queue0;
wire [3:0] rank_rd_adr_queue;
wire [2:0] bank_rd_adr_queue;
wire [14:0] ras_rd_adr_queue;
wire [10:0] cas_rd_adr_queue;
wire u_wr_adr_queue7_scanin;
wire u_wr_adr_queue7_scanout;
wire [3:0] rank_wr_adr_queue7;
wire [2:0] bank_wr_adr_queue7;
wire [14:0] ras_wr_adr_queue7;
wire [10:0] cas_wr_adr_queue7;
wire u_wr_adr_queue6_scanin;
wire u_wr_adr_queue6_scanout;
wire [3:0] rank_wr_adr_queue6;
wire [2:0] bank_wr_adr_queue6;
wire [14:0] ras_wr_adr_queue6;
wire [10:0] cas_wr_adr_queue6;
wire u_wr_adr_queue5_scanin;
wire u_wr_adr_queue5_scanout;
wire [3:0] rank_wr_adr_queue5;
wire [2:0] bank_wr_adr_queue5;
wire [14:0] ras_wr_adr_queue5;
wire [10:0] cas_wr_adr_queue5;
wire u_wr_adr_queue4_scanin;
wire u_wr_adr_queue4_scanout;
wire [3:0] rank_wr_adr_queue4;
wire [2:0] bank_wr_adr_queue4;
wire [14:0] ras_wr_adr_queue4;
wire [10:0] cas_wr_adr_queue4;
wire u_wr_adr_queue3_scanin;
wire u_wr_adr_queue3_scanout;
wire [3:0] rank_wr_adr_queue3;
wire [2:0] bank_wr_adr_queue3;
wire [14:0] ras_wr_adr_queue3;
wire [10:0] cas_wr_adr_queue3;
wire u_wr_adr_queue2_scanin;
wire u_wr_adr_queue2_scanout;
wire [3:0] rank_wr_adr_queue2;
wire [2:0] bank_wr_adr_queue2;
wire [14:0] ras_wr_adr_queue2;
wire [10:0] cas_wr_adr_queue2;
wire u_wr_adr_queue1_scanin;
wire u_wr_adr_queue1_scanout;
wire [3:0] rank_wr_adr_queue1;
wire [2:0] bank_wr_adr_queue1;
wire [14:0] ras_wr_adr_queue1;
wire [10:0] cas_wr_adr_queue1;
wire u_wr_adr_queue0_scanin;
wire u_wr_adr_queue0_scanout;
wire [3:0] rank_wr_adr_queue0;
wire [2:0] bank_wr_adr_queue0;
wire [14:0] ras_wr_adr_queue0;
wire [10:0] cas_wr_adr_queue0;
wire [14:0] ras_wr_adr_queue;
wire [10:0] cas_wr_adr_queue;
input [7:0] rd_adr_queue_sel;
input [7:0] wr_adr_queue_sel;
input [7:0] wr1_adr_queue_sel;
input [7:0] wr2_adr_queue_sel;
input [1:0] req_rdwr_addr_sel;
output [14:0] ras_adr_queue; // RAS address
output [10:0] cas_adr_queue; // CAS address
output [2:0] rd_req_id_queue; // read request ID
output [14:0] ras_wr1_adr_queue; // RAS for write in B Command slot
output [10:0] cas_wr1_adr_queue; // CAS for write in B Command slot
output [14:0] ras_wr2_adr_queue; // RAS for write in C Command slot
output [10:0] cas_wr2_adr_queue; // CAS for write in C Command slot
assign pce_ov = tcu_pce_ov;
// read request address flops
mcu_adrq_dp_msff_macro__stack_38r__width_36 u_mcu_rd_adr_sync (
.scan_in(u_mcu_rd_adr_sync_scanin),
.scan_out(u_mcu_rd_adr_sync_scanout),
.din ( { l2rd_req_id[2:0], rd_rank_adr[3:0], rd_bank_adr[2:0], rd_ras_adr[14:0], rd_cas_adr[10:0] } ),
.dout ( { mcu_rd_req_id[2:0], mcu_rank_rd_adr[3:0], mcu_bank_rd_adr[2:0], mcu_ras_rd_adr[14:0], mcu_cas_rd_adr[10:0] } ),
// write request address flops
mcu_adrq_dp_msff_macro__stack_38r__width_34 u_mcu_wr_adr_sync (
.scan_in(u_mcu_wr_adr_sync_scanin),
.scan_out(u_mcu_wr_adr_sync_scanout),
.din ( { drif_scm, wr_rank_adr[3:0], wr_bank_adr[2:0], wr_ras_adr[14:0], wr_cas_adr[10:2], 2'b0 } ),
.dout ( { adrq_scm, mcu_rank_wr_adr[3:0], mcu_bank_wr_adr[2:0], mcu_ras_wr_adr[14:0], mcu_cas_wr_adr[10:0] }),
// 8-entry read address request queue
mcu_adrq_dp_msff_macro__stack_38r__width_36 u_rd_adr_queue7 (
.scan_in(u_rd_adr_queue7_scanin),
.scan_out(u_rd_adr_queue7_scanout),
.en ( rd_adr_queue7_en ),
.din ( { mcu_rd_req_id[2:0], mcu_rank_rd_adr[3:0], mcu_bank_rd_adr[2:0], mcu_ras_rd_adr[14:0], mcu_cas_rd_adr[10:0] } ),
.dout ( { rd_req_id_queue7[2:0], rank_rd_adr_queue7[3:0], bank_rd_adr_queue7[2:0], ras_rd_adr_queue7[14:0], cas_rd_adr_queue7[10:0] } ),
mcu_adrq_dp_msff_macro__stack_38r__width_36 u_rd_adr_queue6 (
.scan_in(u_rd_adr_queue6_scanin),
.scan_out(u_rd_adr_queue6_scanout),
.en ( rd_adr_queue6_en ),
.din ( { mcu_rd_req_id[2:0], mcu_rank_rd_adr[3:0], mcu_bank_rd_adr[2:0], mcu_ras_rd_adr[14:0], mcu_cas_rd_adr[10:0] } ),
.dout ( { rd_req_id_queue6[2:0], rank_rd_adr_queue6[3:0], bank_rd_adr_queue6[2:0], ras_rd_adr_queue6[14:0], cas_rd_adr_queue6[10:0] } ),
mcu_adrq_dp_msff_macro__stack_38r__width_36 u_rd_adr_queue5 (
.scan_in(u_rd_adr_queue5_scanin),
.scan_out(u_rd_adr_queue5_scanout),
.en ( rd_adr_queue5_en ),
.din ( { mcu_rd_req_id[2:0], mcu_rank_rd_adr[3:0], mcu_bank_rd_adr[2:0], mcu_ras_rd_adr[14:0], mcu_cas_rd_adr[10:0] } ),
.dout ( { rd_req_id_queue5[2:0], rank_rd_adr_queue5[3:0], bank_rd_adr_queue5[2:0], ras_rd_adr_queue5[14:0], cas_rd_adr_queue5[10:0] } ),
mcu_adrq_dp_msff_macro__stack_38r__width_36 u_rd_adr_queue4 (
.scan_in(u_rd_adr_queue4_scanin),
.scan_out(u_rd_adr_queue4_scanout),
.en ( rd_adr_queue4_en ),
.din ( { mcu_rd_req_id[2:0], mcu_rank_rd_adr[3:0], mcu_bank_rd_adr[2:0], mcu_ras_rd_adr[14:0], mcu_cas_rd_adr[10:0] } ),
.dout ( { rd_req_id_queue4[2:0], rank_rd_adr_queue4[3:0], bank_rd_adr_queue4[2:0], ras_rd_adr_queue4[14:0], cas_rd_adr_queue4[10:0] } ),
mcu_adrq_dp_msff_macro__stack_38r__width_36 u_rd_adr_queue3 (
.scan_in(u_rd_adr_queue3_scanin),
.scan_out(u_rd_adr_queue3_scanout),
.en ( rd_adr_queue3_en ),
.din ( { mcu_rd_req_id[2:0], mcu_rank_rd_adr[3:0], mcu_bank_rd_adr[2:0], mcu_ras_rd_adr[14:0], mcu_cas_rd_adr[10:0] } ),
.dout ( { rd_req_id_queue3[2:0], rank_rd_adr_queue3[3:0], bank_rd_adr_queue3[2:0], ras_rd_adr_queue3[14:0], cas_rd_adr_queue3[10:0] } ),
mcu_adrq_dp_msff_macro__stack_38r__width_36 u_rd_adr_queue2 (
.scan_in(u_rd_adr_queue2_scanin),
.scan_out(u_rd_adr_queue2_scanout),
.en ( rd_adr_queue2_en ),
.din ( { mcu_rd_req_id[2:0], mcu_rank_rd_adr[3:0], mcu_bank_rd_adr[2:0], mcu_ras_rd_adr[14:0], mcu_cas_rd_adr[10:0] } ),
.dout ( { rd_req_id_queue2[2:0], rank_rd_adr_queue2[3:0], bank_rd_adr_queue2[2:0], ras_rd_adr_queue2[14:0], cas_rd_adr_queue2[10:0] } ),
mcu_adrq_dp_msff_macro__stack_38r__width_36 u_rd_adr_queue1 (
.scan_in(u_rd_adr_queue1_scanin),
.scan_out(u_rd_adr_queue1_scanout),
.en ( rd_adr_queue1_en ),
.din ( { mcu_rd_req_id[2:0], mcu_rank_rd_adr[3:0], mcu_bank_rd_adr[2:0], mcu_ras_rd_adr[14:0], mcu_cas_rd_adr[10:0] } ),
.dout ( { rd_req_id_queue1[2:0], rank_rd_adr_queue1[3:0], bank_rd_adr_queue1[2:0], ras_rd_adr_queue1[14:0], cas_rd_adr_queue1[10:0] } ),
mcu_adrq_dp_msff_macro__stack_38r__width_36 u_rd_adr_queue0 (
.scan_in(u_rd_adr_queue0_scanin),
.scan_out(u_rd_adr_queue0_scanout),
.en ( rd_adr_queue0_en ),
.din ( { mcu_rd_req_id[2:0], mcu_rank_rd_adr[3:0], mcu_bank_rd_adr[2:0], mcu_ras_rd_adr[14:0], mcu_cas_rd_adr[10:0] } ),
.dout ( { rd_req_id_queue0[2:0], rank_rd_adr_queue0[3:0], bank_rd_adr_queue0[2:0], ras_rd_adr_queue0[14:0], cas_rd_adr_queue0[10:0] } ),
mcu_adrq_dp_mux_macro__mux_aonpe__ports_8__stack_38r__width_36 u_rd_adr_queue (
.din0 ( { rd_req_id_queue0[2:0], rank_rd_adr_queue0[3:0], bank_rd_adr_queue0[2:0], ras_rd_adr_queue0[14:0], cas_rd_adr_queue0[10:0] } ), // default
.din1 ( { rd_req_id_queue1[2:0], rank_rd_adr_queue1[3:0], bank_rd_adr_queue1[2:0], ras_rd_adr_queue1[14:0], cas_rd_adr_queue1[10:0] } ),
.din2 ( { rd_req_id_queue2[2:0], rank_rd_adr_queue2[3:0], bank_rd_adr_queue2[2:0], ras_rd_adr_queue2[14:0], cas_rd_adr_queue2[10:0] } ),
.din3 ( { rd_req_id_queue3[2:0], rank_rd_adr_queue3[3:0], bank_rd_adr_queue3[2:0], ras_rd_adr_queue3[14:0], cas_rd_adr_queue3[10:0] } ),
.din4 ( { rd_req_id_queue4[2:0], rank_rd_adr_queue4[3:0], bank_rd_adr_queue4[2:0], ras_rd_adr_queue4[14:0], cas_rd_adr_queue4[10:0] } ),
.din5 ( { rd_req_id_queue5[2:0], rank_rd_adr_queue5[3:0], bank_rd_adr_queue5[2:0], ras_rd_adr_queue5[14:0], cas_rd_adr_queue5[10:0] } ),
.din6 ( { rd_req_id_queue6[2:0], rank_rd_adr_queue6[3:0], bank_rd_adr_queue6[2:0], ras_rd_adr_queue6[14:0], cas_rd_adr_queue6[10:0] } ),
.din7 ( { rd_req_id_queue7[2:0], rank_rd_adr_queue7[3:0], bank_rd_adr_queue7[2:0], ras_rd_adr_queue7[14:0], cas_rd_adr_queue7[10:0] } ),
.sel0 ( rd_adr_queue_sel[0] ),
.sel1 ( rd_adr_queue_sel[1] ),
.sel2 ( rd_adr_queue_sel[2] ),
.sel3 ( rd_adr_queue_sel[3] ),
.sel4 ( rd_adr_queue_sel[4] ),
.sel5 ( rd_adr_queue_sel[5] ),
.sel6 ( rd_adr_queue_sel[6] ),
.sel7 ( rd_adr_queue_sel[7] ),
.dout ( { rd_req_id_queue[2:0], rank_rd_adr_queue[3:0], bank_rd_adr_queue[2:0], ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:0] } ) );
// Mask off bit 2 in single channel mode for RAW hazard compare
mcu_adrq_dp_inv_macro u_inv_scm ( .din(adrq_scm), .dout(adrq_scm_l));
mcu_adrq_dp_and_macro u_rd_adr_2 ( .din0(adrq_scm_l), .din1(cas_rd_adr_queue[2]), .dout(cas_rd_adr_cmp_2));
// 8-entry write address request queue
mcu_adrq_dp_msff_macro__stack_38r__width_33 u_wr_adr_queue7 (
.scan_in(u_wr_adr_queue7_scanin),
.scan_out(u_wr_adr_queue7_scanout),
.en ( wr_adr_queue7_en ),
.din ( { mcu_rank_wr_adr[3:0], mcu_bank_wr_adr[2:0], mcu_ras_wr_adr[14:0], mcu_cas_wr_adr[10:0] } ),
.dout ( { rank_wr_adr_queue7[3:0], bank_wr_adr_queue7[2:0], ras_wr_adr_queue7[14:0], cas_wr_adr_queue7[10:0] } ),
mcu_adrq_dp_cmp_macro__width_32 u_cmp_adr_queue7 (
.din0 ( { 1'b0, rank_rd_adr_queue[3:0], bank_rd_adr_queue[2:0], ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:3], cas_rd_adr_cmp_2 } ),
.din1 ( { 1'b0, rank_wr_adr_queue7[3:0], bank_wr_adr_queue7[2:0], ras_wr_adr_queue7[14:0], cas_wr_adr_queue7[10:2] } ),
.dout ( rd_wr_adr7_eq ));
mcu_adrq_dp_msff_macro__stack_38r__width_33 u_wr_adr_queue6 (
.scan_in(u_wr_adr_queue6_scanin),
.scan_out(u_wr_adr_queue6_scanout),
.en ( wr_adr_queue6_en ),
.din ( { mcu_rank_wr_adr[3:0], mcu_bank_wr_adr[2:0], mcu_ras_wr_adr[14:0], mcu_cas_wr_adr[10:0] } ),
.dout ( { rank_wr_adr_queue6[3:0], bank_wr_adr_queue6[2:0], ras_wr_adr_queue6[14:0], cas_wr_adr_queue6[10:0] } ),
mcu_adrq_dp_cmp_macro__width_32 u_cmp_adr_queue6 (
.din0 ( { 1'b0, rank_rd_adr_queue[3:0], bank_rd_adr_queue[2:0], ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:3], cas_rd_adr_cmp_2 } ),
.din1 ( { 1'b0, rank_wr_adr_queue6[3:0], bank_wr_adr_queue6[2:0], ras_wr_adr_queue6[14:0], cas_wr_adr_queue6[10:2] } ),
.dout ( rd_wr_adr6_eq ));
mcu_adrq_dp_msff_macro__stack_38r__width_33 u_wr_adr_queue5 (
.scan_in(u_wr_adr_queue5_scanin),
.scan_out(u_wr_adr_queue5_scanout),
.en ( wr_adr_queue5_en ),
.din ( { mcu_rank_wr_adr[3:0], mcu_bank_wr_adr[2:0], mcu_ras_wr_adr[14:0], mcu_cas_wr_adr[10:0] } ),
.dout ( { rank_wr_adr_queue5[3:0], bank_wr_adr_queue5[2:0], ras_wr_adr_queue5[14:0], cas_wr_adr_queue5[10:0] } ),
mcu_adrq_dp_cmp_macro__width_32 u_cmp_adr_queue5 (
.din0 ( { 1'b0, rank_rd_adr_queue[3:0], bank_rd_adr_queue[2:0], ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:3], cas_rd_adr_cmp_2 } ),
.din1 ( { 1'b0, rank_wr_adr_queue5[3:0], bank_wr_adr_queue5[2:0], ras_wr_adr_queue5[14:0], cas_wr_adr_queue5[10:2] } ),
.dout ( rd_wr_adr5_eq ));
mcu_adrq_dp_msff_macro__stack_38r__width_33 u_wr_adr_queue4 (
.scan_in(u_wr_adr_queue4_scanin),
.scan_out(u_wr_adr_queue4_scanout),
.en ( wr_adr_queue4_en ),
.din ( { mcu_rank_wr_adr[3:0], mcu_bank_wr_adr[2:0], mcu_ras_wr_adr[14:0], mcu_cas_wr_adr[10:0] } ),
.dout ( { rank_wr_adr_queue4[3:0], bank_wr_adr_queue4[2:0], ras_wr_adr_queue4[14:0], cas_wr_adr_queue4[10:0] } ),
mcu_adrq_dp_cmp_macro__width_32 u_cmp_adr_queue4 (
.din0 ( { 1'b0, rank_rd_adr_queue[3:0], bank_rd_adr_queue[2:0], ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:3], cas_rd_adr_cmp_2 } ),
.din1 ( { 1'b0, rank_wr_adr_queue4[3:0], bank_wr_adr_queue4[2:0], ras_wr_adr_queue4[14:0], cas_wr_adr_queue4[10:2] } ),
.dout ( rd_wr_adr4_eq ));
mcu_adrq_dp_msff_macro__stack_38r__width_33 u_wr_adr_queue3 (
.scan_in(u_wr_adr_queue3_scanin),
.scan_out(u_wr_adr_queue3_scanout),
.en ( wr_adr_queue3_en ),
.din ( { mcu_rank_wr_adr[3:0], mcu_bank_wr_adr[2:0], mcu_ras_wr_adr[14:0], mcu_cas_wr_adr[10:0] } ),
.dout ( { rank_wr_adr_queue3[3:0], bank_wr_adr_queue3[2:0], ras_wr_adr_queue3[14:0], cas_wr_adr_queue3[10:0] } ),
mcu_adrq_dp_cmp_macro__width_32 u_cmp_adr_queue3 (
.din0 ( { 1'b0, rank_rd_adr_queue[3:0], bank_rd_adr_queue[2:0], ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:3], cas_rd_adr_cmp_2 } ),
.din1 ( { 1'b0, rank_wr_adr_queue3[3:0], bank_wr_adr_queue3[2:0], ras_wr_adr_queue3[14:0], cas_wr_adr_queue3[10:2] } ),
.dout ( rd_wr_adr3_eq ));
mcu_adrq_dp_msff_macro__stack_38r__width_33 u_wr_adr_queue2 (
.scan_in(u_wr_adr_queue2_scanin),
.scan_out(u_wr_adr_queue2_scanout),
.en ( wr_adr_queue2_en ),
.din ( { mcu_rank_wr_adr[3:0], mcu_bank_wr_adr[2:0], mcu_ras_wr_adr[14:0], mcu_cas_wr_adr[10:0] } ),
.dout ( { rank_wr_adr_queue2[3:0], bank_wr_adr_queue2[2:0], ras_wr_adr_queue2[14:0], cas_wr_adr_queue2[10:0] } ),
mcu_adrq_dp_cmp_macro__width_32 u_cmp_adr_queue2 (
.din0 ( { 1'b0, rank_rd_adr_queue[3:0], bank_rd_adr_queue[2:0], ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:3], cas_rd_adr_cmp_2 } ),
.din1 ( { 1'b0, rank_wr_adr_queue2[3:0], bank_wr_adr_queue2[2:0], ras_wr_adr_queue2[14:0], cas_wr_adr_queue2[10:2] } ),
.dout ( rd_wr_adr2_eq ));
mcu_adrq_dp_msff_macro__stack_38r__width_33 u_wr_adr_queue1 (
.scan_in(u_wr_adr_queue1_scanin),
.scan_out(u_wr_adr_queue1_scanout),
.en ( wr_adr_queue1_en ),
.din ( { mcu_rank_wr_adr[3:0], mcu_bank_wr_adr[2:0], mcu_ras_wr_adr[14:0], mcu_cas_wr_adr[10:0] } ),
.dout ( { rank_wr_adr_queue1[3:0], bank_wr_adr_queue1[2:0], ras_wr_adr_queue1[14:0], cas_wr_adr_queue1[10:0] } ),
mcu_adrq_dp_cmp_macro__width_32 u_cmp_adr_queue1 (
.din0 ( { 1'b0, rank_rd_adr_queue[3:0], bank_rd_adr_queue[2:0], ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:3], cas_rd_adr_cmp_2 } ),
.din1 ( { 1'b0, rank_wr_adr_queue1[3:0], bank_wr_adr_queue1[2:0], ras_wr_adr_queue1[14:0], cas_wr_adr_queue1[10:2] } ),
.dout ( rd_wr_adr1_eq ));
mcu_adrq_dp_msff_macro__stack_38r__width_33 u_wr_adr_queue0 (
.scan_in(u_wr_adr_queue0_scanin),
.scan_out(u_wr_adr_queue0_scanout),
.en ( wr_adr_queue0_en ),
.din ( { mcu_rank_wr_adr[3:0], mcu_bank_wr_adr[2:0], mcu_ras_wr_adr[14:0], mcu_cas_wr_adr[10:0] } ),
.dout ( { rank_wr_adr_queue0[3:0], bank_wr_adr_queue0[2:0], ras_wr_adr_queue0[14:0], cas_wr_adr_queue0[10:0] } ),
mcu_adrq_dp_cmp_macro__width_32 u_cmp_adr_queue0 (
.din0 ( { 1'b0, rank_rd_adr_queue[3:0], bank_rd_adr_queue[2:0], ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:3], cas_rd_adr_cmp_2 } ),
.din1 ( { 1'b0, rank_wr_adr_queue0[3:0], bank_wr_adr_queue0[2:0], ras_wr_adr_queue0[14:0], cas_wr_adr_queue0[10:2] } ),
.dout ( rd_wr_adr0_eq ));
mcu_adrq_dp_mux_macro__mux_aonpe__ports_8__stack_38r__width_26 u_wr0_adr_queue (
.din0 ( { ras_wr_adr_queue0[14:0], cas_wr_adr_queue0[10:0] } ), // default
.din1 ( { ras_wr_adr_queue1[14:0], cas_wr_adr_queue1[10:0] } ),
.din2 ( { ras_wr_adr_queue2[14:0], cas_wr_adr_queue2[10:0] } ),
.din3 ( { ras_wr_adr_queue3[14:0], cas_wr_adr_queue3[10:0] } ),
.din4 ( { ras_wr_adr_queue4[14:0], cas_wr_adr_queue4[10:0] } ),
.din5 ( { ras_wr_adr_queue5[14:0], cas_wr_adr_queue5[10:0] } ),
.din6 ( { ras_wr_adr_queue6[14:0], cas_wr_adr_queue6[10:0] } ),
.din7 ( { ras_wr_adr_queue7[14:0], cas_wr_adr_queue7[10:0] } ),
.sel0 ( wr_adr_queue_sel[0] ),
.sel1 ( wr_adr_queue_sel[1] ),
.sel2 ( wr_adr_queue_sel[2] ),
.sel3 ( wr_adr_queue_sel[3] ),
.sel4 ( wr_adr_queue_sel[4] ),
.sel5 ( wr_adr_queue_sel[5] ),
.sel6 ( wr_adr_queue_sel[6] ),
.sel7 ( wr_adr_queue_sel[7] ),
.dout ( { ras_wr_adr_queue[14:0], cas_wr_adr_queue[10:0] } ) );
// request read/write address mux
mcu_adrq_dp_mux_macro__mux_aonpe__ports_2__stack_38r__width_26 u_rdwr_adr_queue (
.din0 ( { ras_wr_adr_queue[14:0], cas_wr_adr_queue[10:0] } ),
.din1 ( { ras_rd_adr_queue[14:0], cas_rd_adr_queue[10:0] } ), // default
.sel0 ( req_rdwr_addr_sel[0] ),
.sel1 ( req_rdwr_addr_sel[1] ),
.dout ( { ras_adr_queue[14:0], cas_adr_queue[10:0] } ) );
mcu_adrq_dp_mux_macro__mux_aonpe__ports_8__stack_38r__width_26 u_wr1_adr_queue (
.din0 ( { ras_wr_adr_queue0[14:0], cas_wr_adr_queue0[10:0] } ), // default
.din1 ( { ras_wr_adr_queue1[14:0], cas_wr_adr_queue1[10:0] } ),
.din2 ( { ras_wr_adr_queue2[14:0], cas_wr_adr_queue2[10:0] } ),
.din3 ( { ras_wr_adr_queue3[14:0], cas_wr_adr_queue3[10:0] } ),
.din4 ( { ras_wr_adr_queue4[14:0], cas_wr_adr_queue4[10:0] } ),
.din5 ( { ras_wr_adr_queue5[14:0], cas_wr_adr_queue5[10:0] } ),
.din6 ( { ras_wr_adr_queue6[14:0], cas_wr_adr_queue6[10:0] } ),
.din7 ( { ras_wr_adr_queue7[14:0], cas_wr_adr_queue7[10:0] } ),
.sel0 ( wr1_adr_queue_sel[0] ),
.sel1 ( wr1_adr_queue_sel[1] ),
.sel2 ( wr1_adr_queue_sel[2] ),
.sel3 ( wr1_adr_queue_sel[3] ),
.sel4 ( wr1_adr_queue_sel[4] ),
.sel5 ( wr1_adr_queue_sel[5] ),
.sel6 ( wr1_adr_queue_sel[6] ),
.sel7 ( wr1_adr_queue_sel[7] ),
.dout ( { ras_wr1_adr_queue[14:0], cas_wr1_adr_queue[10:0] } ) );
mcu_adrq_dp_mux_macro__mux_aonpe__ports_8__stack_38r__width_26 u_wr2_adr_queue (
.din0 ( { ras_wr_adr_queue0[14:0], cas_wr_adr_queue0[10:0] } ), // default
.din1 ( { ras_wr_adr_queue1[14:0], cas_wr_adr_queue1[10:0] } ),
.din2 ( { ras_wr_adr_queue2[14:0], cas_wr_adr_queue2[10:0] } ),
.din3 ( { ras_wr_adr_queue3[14:0], cas_wr_adr_queue3[10:0] } ),
.din4 ( { ras_wr_adr_queue4[14:0], cas_wr_adr_queue4[10:0] } ),
.din5 ( { ras_wr_adr_queue5[14:0], cas_wr_adr_queue5[10:0] } ),
.din6 ( { ras_wr_adr_queue6[14:0], cas_wr_adr_queue6[10:0] } ),
.din7 ( { ras_wr_adr_queue7[14:0], cas_wr_adr_queue7[10:0] } ),
.sel0 ( wr2_adr_queue_sel[0] ),
.sel1 ( wr2_adr_queue_sel[1] ),
.sel2 ( wr2_adr_queue_sel[2] ),
.sel3 ( wr2_adr_queue_sel[3] ),
.sel4 ( wr2_adr_queue_sel[4] ),
.sel5 ( wr2_adr_queue_sel[5] ),
.sel6 ( wr2_adr_queue_sel[6] ),
.sel7 ( wr2_adr_queue_sel[7] ),
.dout ( { ras_wr2_adr_queue[14:0], cas_wr2_adr_queue[10:0] } ) );
assign u_mcu_rd_adr_sync_scanin = scan_in ;
assign u_mcu_wr_adr_sync_scanin = u_mcu_rd_adr_sync_scanout;
assign u_rd_adr_queue7_scanin = u_mcu_wr_adr_sync_scanout;
assign u_rd_adr_queue6_scanin = u_rd_adr_queue7_scanout ;
assign u_rd_adr_queue5_scanin = u_rd_adr_queue6_scanout ;
assign u_rd_adr_queue4_scanin = u_rd_adr_queue5_scanout ;
assign u_rd_adr_queue3_scanin = u_rd_adr_queue4_scanout ;
assign u_rd_adr_queue2_scanin = u_rd_adr_queue3_scanout ;
assign u_rd_adr_queue1_scanin = u_rd_adr_queue2_scanout ;
assign u_rd_adr_queue0_scanin = u_rd_adr_queue1_scanout ;
assign u_wr_adr_queue7_scanin = u_rd_adr_queue0_scanout ;
assign u_wr_adr_queue6_scanin = u_wr_adr_queue7_scanout ;
assign u_wr_adr_queue5_scanin = u_wr_adr_queue6_scanout ;
assign u_wr_adr_queue4_scanin = u_wr_adr_queue5_scanout ;
assign u_wr_adr_queue3_scanin = u_wr_adr_queue4_scanout ;
assign u_wr_adr_queue2_scanin = u_wr_adr_queue3_scanout ;
assign u_wr_adr_queue1_scanin = u_wr_adr_queue2_scanout ;
assign u_wr_adr_queue0_scanin = u_wr_adr_queue1_scanout ;
assign scan_out = u_wr_adr_queue0_scanout ;
// any PARAMS parms go into naming of macro
module mcu_adrq_dp_msff_macro__stack_38r__width_36 (
.so({so[34:0],scan_out}),
// any PARAMS parms go into naming of macro
module mcu_adrq_dp_msff_macro__stack_38r__width_34 (
.so({so[32:0],scan_out}),
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module mcu_adrq_dp_mux_macro__mux_aonpe__ports_8__stack_38r__width_36 (
cl_dp1_muxbuff8_8x c0_0 (
module mcu_adrq_dp_inv_macro (
// and macro for ports = 2,3,4
module mcu_adrq_dp_and_macro (
// any PARAMS parms go into naming of macro
module mcu_adrq_dp_msff_macro__stack_38r__width_33 (
.so({so[31:0],scan_out}),
// comparator macro (output is 1 if both inputs are equal; 0 otherwise)
module mcu_adrq_dp_cmp_macro__width_32 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module mcu_adrq_dp_mux_macro__mux_aonpe__ports_8__stack_38r__width_26 (
cl_dp1_muxbuff8_8x c0_0 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module mcu_adrq_dp_mux_macro__mux_aonpe__ports_2__stack_38r__width_26 (
cl_dp1_muxbuff2_8x c0_0 (