// ========== Copyright Header Begin ==========================================
// OpenSPARC T2 Processor File: niu_pio.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 ============================================
/*************************************************************************
* Description : It contains niu pio interface, interrupt controller,
* Date Created : 3/08/2004
* Copyright (c) 2020, Sun Microsystems, Inc.
* Sun Proprietary and Confidential
* Modification : 4/19/04 : added reset_
* 8/25/04 : added pio_peu_32b, pio_peu_afull, pio_ht_32b.
* changed niu_reset_ to niu_reset_l.
* changed reset_ to reset_l.
*************************************************************************/
// ------------------------
// designated pio signals
// ------------------------
input [63:0] prom_pio_rdata;
input [63:0] pim_pio_rdata;
output [15:0] pio_gpio_data_out;
output [15:0] pio_gpio_en_out;
input [15:0] gpio_pio_data_in;
output [31:0] pio_smx_cfg_data ;
input [31:0] smx_pio_status ;
output pio_smx_clear_intr ;
output [31:0] pio_smx_ctrl ;
output [31:0] pio_smx_debug_vector ;
output [19:0] pio_clients_addr;
output [63:0] pio_clients_wdata;
// designated pio signals
input [63:0] mac_pio_rdata;
input [63:0] ipp_pio_rdata;
input [63:0] fflp_pio_rdata;
input [63:0] zcp_pio_rdata;
input [63:0] tdmc_pio_rdata;
input [63:0] rdmc_pio_rdata;
input [63:0] dmc_pio_intri; // level
input [63:0] dmc_pio_intrj; // level
input [63:0] txc_pio_rdata;
// pio-ucb interface signals
// ------------------------
input [`PIO_ADDR_R] addr_in;
output [31:0] pio_debug_port;
output pio_arb_dirtid_enable;
output pio_arb_dirtid_clr;
output [5:0] pio_arb_np_threshold;
output [5:0] pio_arb_rd_threshold;
input [5:0] arb_pio_dirtid_rdstatus;
input [5:0] arb_pio_dirtid_npwstatus;
input arb_pio_all_npwdirty;
input arb_pio_all_rddirty;
output [31:0] pio_arb_ctrl;
output [31:0] pio_arb_debug_vector;
// Register and Wire Declaration
// -----------------------------
wire [31:0] pio_debug_port;
wire [19:0] pio_clients_addr;
wire [63:0] pio_clients_wdata;
wire [1:0] pio_clients_buf_id;
wire [19:0] clients_addr;
wire [63:0] mac_pio_rdata;
wire [63:0] ipp_pio_rdata;
wire [63:0] fflp_pio_rdata;
wire [63:0] zcp_pio_rdata;
wire [63:0] dmc_pio_rdata;
wire [63:0] txc_pio_rdata;
wire [63:0] mac_pio_rdata_reg;
wire [63:0] ipp_pio_rdata_reg;
wire [63:0] fflp_pio_rdata_reg;
wire [63:0] zcp_pio_rdata_reg;
wire [63:0] dmc_pio_rdata_reg;
wire [63:0] txc_pio_rdata_reg;
wire [63:0] prom_pio_rdata_reg;
wire [63:0] pim_pio_rdata_reg;
wire [`PIO_ADDR_R] ucb_addr;
wire [`PIO_FIFO_W_R] fifo_din;
wire [`PIO_FIFO_W_R] fifo_dout;
wire [`PIO_FIFO_W_R] fifo_dout_reg;
// Split the PIO - DMC signals going out to RDMC and TDMC
assign pio_rdmc_sel = pio_dmc_sel & ~pio_clients_addr[18];
assign pio_tdmc_sel = pio_dmc_sel & pio_clients_addr[18];
assign dmc_pio_ack = (tdmc_pio_ack | rdmc_pio_ack);
assign dmc_pio_err = pio_rdmc_sel? rdmc_pio_err : tdmc_pio_err;
assign dmc_pio_rdata = pio_rdmc_sel? rdmc_pio_rdata : tdmc_pio_rdata;
// Beginning of automatic wires (for undeclared instantiated-module outputs)
wire [1:0] accepted_state; // From niu_pio_accepted_sm of niu_pio_accepted_sm.v
wire ack_TO_en; // From niu_pio_regs of niu_pio_regs.v
wire [9:0] ack_TO_value; // From niu_pio_regs of niu_pio_regs.v
wire arm0; // From niu_pio_regs of niu_pio_regs.v
wire arm1; // From niu_pio_regs of niu_pio_regs.v
wire arm10; // From niu_pio_regs of niu_pio_regs.v
wire arm11; // From niu_pio_regs of niu_pio_regs.v
wire arm12; // From niu_pio_regs of niu_pio_regs.v
wire arm13; // From niu_pio_regs of niu_pio_regs.v
wire arm14; // From niu_pio_regs of niu_pio_regs.v
wire arm15; // From niu_pio_regs of niu_pio_regs.v
wire arm16; // From niu_pio_regs of niu_pio_regs.v
wire arm17; // From niu_pio_regs of niu_pio_regs.v
wire arm18; // From niu_pio_regs of niu_pio_regs.v
wire arm19; // From niu_pio_regs of niu_pio_regs.v
wire arm2; // From niu_pio_regs of niu_pio_regs.v
wire arm20; // From niu_pio_regs of niu_pio_regs.v
wire arm21; // From niu_pio_regs of niu_pio_regs.v
wire arm22; // From niu_pio_regs of niu_pio_regs.v
wire arm23; // From niu_pio_regs of niu_pio_regs.v
wire arm24; // From niu_pio_regs of niu_pio_regs.v
wire arm25; // From niu_pio_regs of niu_pio_regs.v
wire arm26; // From niu_pio_regs of niu_pio_regs.v
wire arm27; // From niu_pio_regs of niu_pio_regs.v
wire arm28; // From niu_pio_regs of niu_pio_regs.v
wire arm29; // From niu_pio_regs of niu_pio_regs.v
wire arm3; // From niu_pio_regs of niu_pio_regs.v
wire arm30; // From niu_pio_regs of niu_pio_regs.v
wire arm31; // From niu_pio_regs of niu_pio_regs.v
wire arm32; // From niu_pio_regs of niu_pio_regs.v
wire arm33; // From niu_pio_regs of niu_pio_regs.v
wire arm34; // From niu_pio_regs of niu_pio_regs.v
wire arm35; // From niu_pio_regs of niu_pio_regs.v
wire arm36; // From niu_pio_regs of niu_pio_regs.v
wire arm37; // From niu_pio_regs of niu_pio_regs.v
wire arm38; // From niu_pio_regs of niu_pio_regs.v
wire arm39; // From niu_pio_regs of niu_pio_regs.v
wire arm4; // From niu_pio_regs of niu_pio_regs.v
wire arm40; // From niu_pio_regs of niu_pio_regs.v
wire arm41; // From niu_pio_regs of niu_pio_regs.v
wire arm42; // From niu_pio_regs of niu_pio_regs.v
wire arm43; // From niu_pio_regs of niu_pio_regs.v
wire arm44; // From niu_pio_regs of niu_pio_regs.v
wire arm45; // From niu_pio_regs of niu_pio_regs.v
wire arm46; // From niu_pio_regs of niu_pio_regs.v
wire arm47; // From niu_pio_regs of niu_pio_regs.v
wire arm48; // From niu_pio_regs of niu_pio_regs.v
wire arm49; // From niu_pio_regs of niu_pio_regs.v
wire arm5; // From niu_pio_regs of niu_pio_regs.v
wire arm50; // From niu_pio_regs of niu_pio_regs.v
wire arm51; // From niu_pio_regs of niu_pio_regs.v
wire arm52; // From niu_pio_regs of niu_pio_regs.v
wire arm53; // From niu_pio_regs of niu_pio_regs.v
wire arm54; // From niu_pio_regs of niu_pio_regs.v
wire arm55; // From niu_pio_regs of niu_pio_regs.v
wire arm56; // From niu_pio_regs of niu_pio_regs.v
wire arm57; // From niu_pio_regs of niu_pio_regs.v
wire arm58; // From niu_pio_regs of niu_pio_regs.v
wire arm59; // From niu_pio_regs of niu_pio_regs.v
wire arm6; // From niu_pio_regs of niu_pio_regs.v
wire arm60; // From niu_pio_regs of niu_pio_regs.v
wire arm61; // From niu_pio_regs of niu_pio_regs.v
wire arm62; // From niu_pio_regs of niu_pio_regs.v
wire arm63; // From niu_pio_regs of niu_pio_regs.v
wire arm7; // From niu_pio_regs of niu_pio_regs.v
wire arm8; // From niu_pio_regs of niu_pio_regs.v
wire arm9; // From niu_pio_regs of niu_pio_regs.v
wire fifo_rd_en; // From niu_pio_rw_sm of niu_pio_rw_sm.v
wire fzc_slv_ack; // From niu_pio_regs of niu_pio_regs.v
wire fzc_slv_err; // From niu_pio_regs of niu_pio_regs.v
wire [63:0] fzc_slv_rdata; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] group; // From niu_pio_ic of niu_pio_ic.v
wire imask0_ack; // From niu_pio_regs of niu_pio_regs.v
wire imask0_err; // From niu_pio_regs of niu_pio_regs.v
wire [63:0] imask0_rdata; // From niu_pio_regs of niu_pio_regs.v
wire imask1_ack; // From niu_pio_regs of niu_pio_regs.v
wire imask1_err; // From niu_pio_regs of niu_pio_regs.v
wire [63:0] imask1_rdata; // From niu_pio_regs of niu_pio_regs.v
wire intr_valid; // From niu_pio_ic of niu_pio_ic.v
wire [1:0] ldf_mask0; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask1; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask10; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask11; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask12; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask13; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask14; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask15; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask16; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask17; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask18; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask19; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask2; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask20; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask21; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask22; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask23; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask24; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask25; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask26; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask27; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask28; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask29; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask3; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask30; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask31; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask32; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask33; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask34; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask35; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask36; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask37; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask38; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask39; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask4; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask40; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask41; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask42; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask43; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask44; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask45; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask46; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask47; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask48; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask49; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask5; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask50; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask51; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask52; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask53; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask54; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask55; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask56; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask57; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask58; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask59; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask6; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask60; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask61; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask62; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask63; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask64; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask65; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask66; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask67; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask68; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask7; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask8; // From niu_pio_regs of niu_pio_regs.v
wire [1:0] ldf_mask9; // From niu_pio_regs of niu_pio_regs.v
wire ldgim_ack; // From niu_pio_regs of niu_pio_regs.v
wire ldgim_err; // From niu_pio_regs of niu_pio_regs.v
wire [63:0] ldgim_rdata; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn0; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn1; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn10; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn11; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn12; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn13; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn14; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn15; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn16; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn17; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn18; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn19; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn2; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn20; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn21; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn22; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn23; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn24; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn25; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn26; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn27; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn28; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn29; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn3; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn30; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn31; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn32; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn33; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn34; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn35; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn36; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn37; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn38; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn39; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn4; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn40; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn41; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn42; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn43; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn44; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn45; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn46; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn47; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn48; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn49; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn5; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn50; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn51; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn52; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn53; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn54; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn55; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn56; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn57; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn58; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn59; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn6; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn60; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn61; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn62; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn63; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn64; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn65; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn66; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn67; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn68; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn7; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn8; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] ldgn9; // From niu_pio_regs of niu_pio_regs.v
wire ldsv_ack; // From niu_pio_regs of niu_pio_regs.v
wire ldsv_err; // From niu_pio_regs of niu_pio_regs.v
wire [63:0] ldsv_rdata; // From niu_pio_regs of niu_pio_regs.v
wire [68:0] memship_group0; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group1; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group10; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group11; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group12; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group13; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group14; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group15; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group16; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group17; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group18; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group19; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group2; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group20; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group21; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group22; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group23; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group24; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group25; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group26; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group27; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group28; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group29; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group3; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group30; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group31; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group32; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group33; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group34; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group35; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group36; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group37; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group38; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group39; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group4; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group40; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group41; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group42; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group43; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group44; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group45; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group46; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group47; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group48; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group49; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group5; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group50; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group51; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group52; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group53; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group54; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group55; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group56; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group57; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group58; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group59; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group6; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group60; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group61; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group62; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group63; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group7; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group8; // From niu_pio_ic of niu_pio_ic.v
wire [68:0] memship_group9; // From niu_pio_ic of niu_pio_ic.v
wire mpc; // From niu_pio_regs of niu_pio_regs.v
wire [6:0] msi_data; // From niu_pio_regs of niu_pio_regs.v
wire pio_sel_state; // From niu_pio_rw_sm of niu_pio_rw_sm.v
wire rst_at; // From niu_pio_ic of niu_pio_ic.v
wire slv_ack; // From niu_pio_regs of niu_pio_regs.v
wire slv_err; // From niu_pio_regs of niu_pio_regs.v
wire [63:0] slv_rdata; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer0; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer1; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer10; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer11; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer12; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer13; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer14; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer15; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer16; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer17; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer18; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer19; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer2; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer20; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer21; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer22; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer23; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer24; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer25; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer26; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer27; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer28; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer29; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer3; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer30; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer31; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer32; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer33; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer34; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer35; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer36; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer37; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer38; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer39; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer4; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer40; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer41; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer42; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer43; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer44; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer45; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer46; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer47; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer48; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer49; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer5; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer50; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer51; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer52; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer53; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer54; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer55; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer56; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer57; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer58; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer59; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer6; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer60; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer61; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer62; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer63; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer7; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer8; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] timer9; // From niu_pio_regs of niu_pio_regs.v
wire [19:0] vdmc_addr; // From niu_pio_regs of niu_pio_regs.v
wire vdmc_sel_ok; // From niu_pio_regs of niu_pio_regs.v
wire [5:0] debug_select ;
wire [5:0] arb_np_threshold;
wire [5:0] arb_rd_threshold;
wire [31:0] TrainingVector;
`ifdef NEPTUNE // --------------------------------------------
wire NEPTUNE_signature = 1;
wire [63:0] prom_pio_rdata; // I
wire [63:0] pim_pio_rdata; // I
`else // N2 mode ---------------------------------------------
wire NEPTUNE_signature = 0;
wire prom_pio_ack = 0; // I
wire [63:0] prom_pio_rdata = 0; // I
wire prom_pio_err = 0; // I
wire pim_pio_ack = 0; // I
wire [63:0] pim_pio_rdata = 0; // I
wire pim_pio_err = 0; // I
// wire pim_pio_intr = 0; // I
/* --------------------- common rtl -------------------------- */
wire niu_reset = ~niu_reset_l;
wire [10:0] sys_err_mask ;
df1 # (1) reset_df1 (.clk(niu_clk),.d(niu_reset), .q(reset));
// register inputs from ucb/pci
// ---------------------------------
df1 # (1) pio_32b_df1 (.clk(niu_clk),.d(peu_pio_32b), .q(pio_32b));
df1 # (1) ucb_rd_req_df1 (.clk(niu_clk),.d(rd_req_vld), .q(ucb_rd_req));
df1 # (27) ucb_addr_df1 (.clk(niu_clk),.d(addr_in[`PIO_ADDR_R]),.q(ucb_addr[`PIO_ADDR_R]));
df1 # (6) ucb_thr_id_df1 (.clk(niu_clk),.d(thr_id_in[5:0]), .q(ucb_thr_id[5:0]));
df1 # (2) ucb_buf_id_df1 (.clk(niu_clk),.d(buf_id_in[1:0]), .q(ucb_buf_id[1:0]));
df1 # (1) ucb_rack_busy_df1(.clk(niu_clk),.d(rack_busy), .q(ucb_rack_busy));
df1 # (1) ucb_wr_req_df1 (.clk(niu_clk),.d(wr_req_vld), .q(ucb_wr_req));
df1 # (64) ucb_wdata_df1 (.clk(niu_clk),.d(data_in[63:0]), .q(ucb_wdata[63:0]));
df1 # (1) ibusy_df1 (.clk(niu_clk),.d(int_busy), .q(ibusy));
// register outputs to ucb/pci
assign ucb_rack = ucb_ack | ucb_nack;
df1 # (1) req_accepted_df1(.clk(niu_clk), .d(accepted), .q(req_accepted));
dffr # (1) rd_ack_vld_dffr (.clk(niu_clk),.reset(reset), .d(ucb_ack), .q(rd_ack_vld));
dffr # (1) rd_nack_vld_dffr(.clk(niu_clk),.reset(reset), .d(ucb_nack), .q(rd_nack_vld));
dffre # (64) data_out_dffre (.clk(niu_clk),.reset(reset),.en(pio_ack |(ucb_ack & insert_db)),.d(pio_rdata), .q(data_out[63:0]));
dffre # (64) data_out_dffre (.clk(niu_clk),.reset(reset),.en(pio_ack),.d(pio_rdata), .q(data_out[63:0]));
dffre # (6) thr_id_out_dffre(.clk(niu_clk),.reset(reset),.en(ucb_rack),.d(thr_id[5:0]),.q(thr_id_out[5:0]));
dffre # (2) buf_id_out_dffre(.clk(niu_clk),.reset(reset),.en(ucb_rack),.d(buf_id[1:0]),.q(buf_id_out[1:0]));
df1 # (1) int_vld_df1 (.clk(niu_clk),.d(intr_valid), .q(int_vld));
df1 # (7) dev_id_df1 (.clk(niu_clk),.d(msi_data), .q(dev_id));
// Registering Meta Arb Signals
dffr # (1) arb_dirtid_en_dffr (.clk(niu_clk),.reset(reset),.d(arb_dirtid_en),.q(pio_arb_dirtid_enable));
dffr # (1) arb_dirtid_clr_dffr (.clk(niu_clk),.reset(reset),.d(arb_dirtid_clr),.q(pio_arb_dirtid_clr));
dffr # (6) arb_dirtid_np_dffr (.clk(niu_clk),.reset(reset),.d(arb_np_threshold[5:0]),.q(pio_arb_np_threshold[5:0]));
dffr # (6) arb_dirtid_rd_dffr (.clk(niu_clk),.reset(reset),.d(arb_rd_threshold[5:0]),.q(pio_arb_rd_threshold[5:0]));
df1 # (6) arb_dtid_rdstat_df1 (.clk(niu_clk),.d(arb_pio_dirtid_rdstatus[5:0]),.q(arb_rdstat[5:0]));
df1 # (6) arb_dtid_npwrstat_df1 (.clk(niu_clk),.d(arb_pio_dirtid_npwstatus[5:0]),.q(arb_wrstat[5:0]));
// --------------------------------------------------------------------------------------------
reg [31:0] pio_arb_ctrl ;
reg [31:0] pio_arb_debug_vector ;
wire [31:0] arb_debug_vector ;
pio_arb_ctrl[31:0] <= arb_ctrl[31:0];
pio_arb_debug_vector[31:0] <= arb_debug_vector[31:0];
// --------------------------------------------------------------------------------------------
reg [15:0] pio_gpio_data_out ;
reg [15:0] pio_gpio_en_out ;
pio_peu_32b <= pio_peu_32b_int ;
int_invld <= intr_invalid ;
pio_gpio_data_out[15:0] <= gpio_dout[15:0] ;
pio_gpio_en_out[15:0] <= gpio_en[15:0] ;
gpio_din[15:0] <= gpio_pio_data_in[15:0] ;
// signals to smx Interface
// ------------------------
wire smx_pio_intr = 0 ; // I
wire [31:0] smx_pio_status = 32'b0 ; // I
pim_intr <= pim_pio_intr ;
wire [15:0] gpio_pio_data_in = 16'b0 ;
wire mac_pio_intr2 = 1'b0 ;
wire mac_pio_intr3 = 1'b0 ;
reg [31:0] pio_smx_cfg_data ;
reg [31:0] pio_smx_ctrl ;
reg [31:0] pio_smx_debug_vector ;
wire [31:0] smx_config_data ;
wire [31:0] smx_debug_vector ;
pio_smx_cfg_data[31:0] <= smx_config_data[31:0];
pio_smx_clear_intr <= clear_intr4smx ;
pio_smx_ctrl[31:0] <= smx_ctrl[31:0] ;
pio_smx_debug_vector[31:0] <= smx_debug_vector[31:0] ;
smx_status[31:0] <= smx_pio_status[31:0] ;
smx_intr <= smx_pio_intr ;
niu_pio_accepted_sm niu_pio_accepted_sm
.accepted_state (accepted_state[1:0]),
.ucb_rd_req (ucb_rd_req),
.ucb_wr_req (ucb_wr_req));
df1 # (1) fifo_wr_en_df1(.d(accepted), .clk(niu_clk), .q(fifo_wr_en));
assign fifo_din[`PIO_ADDR_R] = ucb_addr[`PIO_ADDR_R]; // 27b
assign fifo_din[90:27] = ucb_wdata[63:0]; // 64b
assign fifo_din[92:91] = ucb_buf_id[1:0]; // 2b
assign fifo_din[98:93] = ucb_thr_id[5:0]; // 6b
assign fifo_din[99] = ucb_rd_req; // 1b
assign fifo_din[100] = pio_32b; // 1b
// ------------ start fifo instantiation --------------
niu_pio_fifo16d niu_pio_fifo16d(
.din(fifo_din[`PIO_FIFO_W_R]),
.dout(fifo_dout[`PIO_FIFO_W_R]),
.pio_peu_afull(pio_peu_afull),
// ------------ end of fifo instantiation --------------
dffre #(101) dffre(.d(fifo_dout[`PIO_FIFO_W_R]),
.q(fifo_dout_reg[`PIO_FIFO_W_R]));
assign addr = fifo_dout_reg[`PIO_ADDR_R];
assign wdata = fifo_dout_reg[90:27];
assign buf_id = fifo_dout_reg[92:91];
assign thr_id = fifo_dout_reg[98:93];
assign rd = fifo_dout_reg[99];
assign mode32b= fifo_dout_reg[100];
assign clients_addr[19:0] = vdmc_sel ? vdmc_addr[19:0] : addr_2[19:0];
assign vdmc_sel = (dma_virt_sel_ok & vdmc_sel_ok) ? 1'b1 : 1'b0;
df1 # (20) pio_clients_addr_df1 (.clk(niu_clk),.d(clients_addr[19:0]), .q(pio_clients_addr[19:0]));
df1 # (64) pio_clients_wdata_df1 (.clk(niu_clk),.d(wdata[63:0]),.q(pio_clients_wdata[63:0]));
df1 # (2) pio_clients_buf_id_df1 (.clk(niu_clk),.d(buf_id[1:0]),.q(pio_clients_buf_id[1:0]));
// df1 # (2) pio_clients_thr_id_df1 (.clk(niu_clk),.d(thr_id[1:0]),.q(pio_clients_thr_id[1:0]));
df1 # (1) pio_clients_rd_df1 (.clk(niu_clk),.d(rd), .q(pio_clients_rd));
df1 # (1) pio_clients_32b_df1 (.clk(niu_clk),.d(mode32b), .q(pio_clients_32b));
// ------------ Logic for 32b PIO Access ----------------------
if (pio_clients_addr[2:0] == 3'b100)
// --------------------------------------------------------------
// ------------ start rw_sm instantiation --------------
// fifo read write state machine
niu_pio_rw_sm niu_pio_rw_sm
.fifo_rd_en (fifo_rd_en),
.pio_sel_state (pio_sel_state),
.pio_rw_state (pio_rw_state[2:0]),
.pio_peu_32b_int (pio_peu_32b_int),
.ack_TO_value (ack_TO_value[9:0]),
.ucb_rack_busy (ucb_rack_busy),
.pio_clients_32b (pio_clients_32b));
// ------------ End of rw_sm instantiation ----------------------
// address decoder and selection generation
// if (mpc == 1) only function 0 has write access.
// if (mpc == 0) all functions have write access.
// ------------ Original Code (Two Functions) -------------------
// assign fc0 = (addr[25:24] == 2'b00);
// assign fc1 = (addr[25:24] != 2'b00) & (~mpc | (mpc & rd));
// assign fc0 = ~addr[24];
// assign fc1 = addr[24] & (~mpc | (mpc & rd));
// assign fc = fc0 | fc1;
// ------------ End of Original Code (Two Functions) --------------
assign fc0 = (addr[26:24] == 3'b000);
assign fc1 = (addr[26:24] == 3'b010) & (~mpc | (mpc & rd));
assign fc2 = (addr[26:24] == 3'b100) & (~mpc | (mpc & rd));
assign fc3 = (addr[26:24] == 3'b110) & (~mpc | (mpc & rd));
assign fc = (fc0 | fc1 | fc2 | fc3 );
assign fc0_v = (addr[26:24] == 3'b001 );
assign fc1_v = (addr[26:24] == 3'b011);
assign fc2_v = (addr[26:24] == 3'b101);
assign fc3_v = (addr[26:24] == 3'b111);
// -----------------------------------------------------------------
always @ (/*AUTOSENSE*/addr or fc)
casex({addr[23:20],addr[19]}) // block number
5'b0000_0: slv_sel = 1; // 0
5'b0011_0: fflp_sel = 1; // 3
// 5'b0100_0: vdmc_sel = vdmc_sel_ok; // 4 // vdmc_sel_ok decodes addr[15:9] plus enable bit (binding bit).
// // vdmc_sel_ok decodes addr[26:25],addr[14],addr[12:10]
5'b0101_0: zcp_sel = 1; // 5
5'b0110_0: dmc_sel = 1; // 6
5'b0111_0: txc_sel = 1; // 7
5'b1000_0: ldsv_sel = 1; // 8
// 5'b1001_0: ldgim_sel = 1; // 9
5'b1010_0: imask0_sel = 1; // A
5'b1011_0: imask1_sel = 1; // B
5'b0000_1: fzc_slv_sel = fc;// 0
5'b0001_1: fzc_mac_sel = fc;// 1
5'b0010_1: fzc_ipp_sel = fc;// 2
5'b0011_1: fzc_fflp_sel = fc;// 3
5'b0101_1: fzc_zcp_sel = fc;// 5
5'b0110_1: fzc_dmc_sel = fc;// 6
5'b0111_1: fzc_txc_sel = fc;// 7
5'b1100_1: fzc_prom_sel = fc;// C
5'b1101_1: fzc_pim_sel = fc;// C
assign addr_2[26:0] = (pio_virt_sel_ok || fflp_virt_sel_ok) ? virt_addr[26:0] : addr[26:0];
// total 12 sets of pio acks.
df1 # (1) slv_sel_reg_df1 (.clk(niu_clk),
.d((slv_sel & !dma_virt_sel_ok & !fflp_virt_sel_ok & !pio_virt_sel_ok ) & pio_sel_state),
df1 # (1) fzc_slv_sel_reg_df1(.clk(niu_clk),.d(fzc_slv_sel & pio_sel_state),.q(fzc_slv_sel_reg));
df1 # (1) pio_mac_sel_df1 (.clk(niu_clk),.d(fzc_mac_sel & pio_sel_state),.q(pio_mac_sel));
df1 # (1) pio_ipp_sel_df1 (.clk(niu_clk),.d(fzc_ipp_sel & pio_sel_state),.q(pio_ipp_sel));
df1 # (1) pio_fflp_sel_df1 (.clk(niu_clk),.d((fzc_fflp_sel|fflp_sel|fflp_virt_sel_ok) & pio_sel_state),.q(pio_fflp_sel));
df1 # (1) pio_zcp_sel_df1 (.clk(niu_clk),.d((fzc_zcp_sel |zcp_sel) & pio_sel_state),.q(pio_zcp_sel));
df1 # (1) pio_txc_sel_df1 (.clk(niu_clk),.d((fzc_txc_sel |txc_sel) & pio_sel_state),.q(pio_txc_sel));
df1 # (1) ldsv_sel_reg_df1 (.clk(niu_clk),.d((ldsv_sel |pio_virt_sel_ok) & pio_sel_state),.q(ldsv_sel_reg));
df1 # (1) ldgin_sel_reg_df1 (.clk(niu_clk),.d(ldsv_sel & pio_sel_state),.q(ldgim_sel_reg));
df1 # (1) imask0_sel_reg_df1 (.clk(niu_clk),.d(imask0_sel & pio_sel_state),.q(imask0_sel_reg));
df1 # (1) imask1_sel_reg_df1 (.clk(niu_clk),.d(imask1_sel & pio_sel_state),.q(imask1_sel_reg));
df1 # (1) pio_dmc_sel_df1 (.clk(niu_clk),.d((fzc_dmc_sel |( dmc_sel & !pio_virt_sel_ok )| vdmc_sel) & pio_sel_state),.q(pio_dmc_sel));
// df1 # (1) pio_dmc_sel_df1 (.clk(niu_clk),.d((fzc_dmc_sel |dmc_sel | vdmc_sel) & pio_sel_state),.q(pio_dmc_sel));
df1 # (1) pio_prom_sel_reg_df1 (.clk(niu_clk),.d((fzc_prom_sel) & pio_sel_state),.q(pio_prom_sel));
df1 # (1) pio_pim_sel_reg_df1 (.clk(niu_clk),.d((fzc_pim_sel) & pio_sel_state),.q(pio_pim_sel));
assign pio_prom_sel = ((fzc_pim_sel) & pio_sel_state);
assign pio_pim_sel = ((fzc_pim_sel) & pio_sel_state);
assign sel1 = (slv_sel & !dma_virt_sel_ok & !fflp_virt_sel_ok & !pio_virt_sel_ok ) |
( dmc_sel &!pio_virt_sel_ok ) |
always @ (/*AUTOSENSE*/dmc_pio_ack_reg or dmc_pio_err_reg
or dmc_pio_rdata_reg or fflp_pio_ack_reg or fflp_pio_err_reg
or fflp_pio_rdata_reg or fzc_slv_ack or fzc_slv_err
or fzc_slv_rdata or fzc_slv_sel or imask0_ack or imask0_err
or imask0_rdata or imask0_sel_reg or imask1_ack
or imask1_err or imask1_rdata or imask1_sel_reg
or ipp_pio_ack_reg or ipp_pio_err_reg or ipp_pio_rdata_reg
or ldgim_ack or ldgim_err or ldgim_rdata
or ldsv_ack or ldsv_err or ldsv_rdata or ldsv_sel_reg
or mac_pio_ack_reg or mac_pio_err_reg or mac_pio_rdata_reg
or pio_dmc_sel or pio_fflp_sel or pio_ipp_sel or pio_mac_sel
or pio_prom_sel or pio_pim_sel or pio_txc_sel or pio_zcp_sel
or prom_pio_ack_reg or prom_pio_err_reg
or prom_pio_rdata_reg or slv_ack or slv_err or slv_rdata
or slv_sel_reg or txc_pio_ack_reg or txc_pio_err_reg
or txc_pio_rdata_reg or zcp_pio_ack_reg or zcp_pio_err_reg
or zcp_pio_rdata_reg or intr_reg_sel
or pim_pio_err_reg or pim_pio_ack_reg or pim_pio_rdata_reg
pio_rdata = 64'hdead_beef_dead_beef;
case ({pio_prom_sel,imask1_sel_reg,imask0_sel_reg,pio_pim_sel,ldsv_sel_reg,pio_txc_sel,pio_dmc_sel,pio_zcp_sel,pio_fflp_sel,pio_ipp_sel,pio_mac_sel,fzc_slv_sel,slv_sel_reg})
13'b0_0000_0000_0001:begin
pio_ack = slv_ack; // already registered in decoder logic.
pio_err = 1'b0; // already registered in decoder logic.
pio_err = slv_err; // already registered in decoder logic.
pio_rdata = ({32'b0,slv_rdata[63:32]}); // already registered in decoder logic.
pio_rdata = slv_rdata; // already registered in decoder logic.
13'b0_0000_0000_0010:begin
pio_ack = fzc_slv_ack; // already registered in decoder logic.
pio_err = 1'b0; // already registered in decoder logic.
pio_err = fzc_slv_err; // already registered in decoder logic.
pio_rdata = ({32'b0,fzc_slv_rdata[63:32]}); // already registered in decoder logic.
pio_rdata = fzc_slv_rdata; // already registered in decoder logic.
13'b0_0000_0000_0100:begin
pio_ack = mac_pio_ack_reg;
pio_rdata = mac_pio_rdata_reg;
pio_err = 1'b0; // already registered in decoder logic.
pio_err = mac_pio_err_reg;
13'b0_0000_0000_1000:begin
pio_ack = ipp_pio_ack_reg;
pio_rdata = ipp_pio_rdata_reg;
pio_err = 1'b0; // already registered in decoder logic.
pio_err = ipp_pio_err_reg;
13'b0_0000_0001_0000:begin
pio_ack = fflp_pio_ack_reg;
pio_rdata = fflp_pio_rdata_reg;
pio_err = 1'b0; // already registered in decoder logic.
pio_err = fflp_pio_err_reg;
13'b0_0000_0010_0000:begin
pio_ack = zcp_pio_ack_reg;
pio_rdata = zcp_pio_rdata_reg;
pio_err = 1'b0; // already registered in decoder logic.
pio_err = zcp_pio_err_reg;
13'b0_0000_0100_0000:begin
pio_ack = dmc_pio_ack_reg;
pio_rdata = dmc_pio_rdata_reg;
pio_err = 1'b0; // already registered in decoder logic.
pio_err = dmc_pio_err_reg;
13'b0_0000_1000_0000:begin
pio_ack = txc_pio_ack_reg;
pio_rdata = txc_pio_rdata_reg;
pio_err = 1'b0; // already registered in decoder logic.
pio_err = txc_pio_err_reg;
pio_ack = ldsv_ack; // already registered in decoder logic.
pio_err = 1'b0; // already registered in decoder logic.
pio_err = ldsv_err; // already registered in decoder logic.
pio_rdata = ({32'b0,ldsv_rdata[63:32]}); // already registered in decoder logic.
pio_rdata = ldsv_rdata; // already registered in decoder logic.
pio_ack = ldgim_ack; // already registered in decoder logic.
pio_err = 1'b0; // already registered in decoder logic.
pio_err = ldgim_err; // already registered in decoder logic.
pio_rdata = ({32'b0,ldgim_rdata[63:32]}); // already registered in decoder logic.
pio_rdata = ldgim_rdata; // already registered in decoder logic.
pio_ack = pim_pio_ack_reg;
pio_rdata = pim_pio_rdata_reg;
pio_err = 1'b0; // already registered in decoder logic.
pio_err = pim_pio_err_reg;
13'b0_0100_0000_0000:begin
pio_ack = imask0_ack; // already registered in decoder logic.
pio_err = 1'b0; // already registered in decoder logic.
pio_err = imask0_err; // already registered in decoder logic.
pio_rdata = ({32'b0,imask0_rdata[63:32]});// already registered in decoder logic.
pio_rdata = imask0_rdata; // already registered in decoder logic.
13'b0_1000_0000_0000:begin
pio_ack = imask1_ack; // already registered in decoder logic.
pio_err = 1'b0; // already registered in decoder logic.
pio_err = imask1_err; // already registered in decoder logic.
pio_rdata = ({32'b0,imask1_rdata[63:32]});// already registered in decoder logic.
pio_rdata = imask1_rdata; // already registered in decoder logic.
13'b1_0000_0000_0000:begin
pio_ack = prom_pio_ack_reg;
pio_err = 1'b0; // already registered in decoder logic.
pio_err = prom_pio_err_reg;
pio_rdata = prom_pio_rdata_reg;
pio_rdata = 64'hdead_beef_dead_beef;
pio_err = 1'b0; // already registered in decoder logic.
// register external clients input signals
df1 # (1) mac_pio_ack_reg_df1 (.d(mac_pio_ack), .clk(niu_clk),.q(mac_pio_ack_reg));
dffre # (64) mac_pio_rdata_reg_dffre (.d(mac_pio_rdata), .reset(reset),.en(mac_pio_ack), .clk(niu_clk),.q(mac_pio_rdata_reg));
df1 # (1) ipp_pio_ack_reg_df1 (.d(ipp_pio_ack), .clk(niu_clk),.q(ipp_pio_ack_reg));
dffre # (64) ipp_pio_rdata_reg_dffre (.d(ipp_pio_rdata), .reset(reset),.en(ipp_pio_ack), .clk(niu_clk),.q(ipp_pio_rdata_reg));
df1 # (1) fflp_pio_ack_reg_df1 (.d(fflp_pio_ack), .clk(niu_clk),.q(fflp_pio_ack_reg));
dffre # (64) fflp_pio_rdata_reg_dffre(.d(fflp_pio_rdata),.reset(reset),.en(fflp_pio_ack),.clk(niu_clk),.q(fflp_pio_rdata_reg));
df1 # (1) zcp_pio_ack_reg_df1 (.d(zcp_pio_ack), .clk(niu_clk),.q(zcp_pio_ack_reg));
dffre # (64) zcp_pio_rdata_reg_dffre (.d(zcp_pio_rdata), .reset(reset),.en(zcp_pio_ack), .clk(niu_clk),.q(zcp_pio_rdata_reg));
df1 # (1) dmc_pio_ack_reg_df1 (.d(dmc_pio_ack), .clk(niu_clk),.q(dmc_pio_ack_reg));
dffre # (64) dmc_pio_rdata_reg_dffre (.d(dmc_pio_rdata), .reset(reset),.en(dmc_pio_ack), .clk(niu_clk),.q(dmc_pio_rdata_reg));
df1 # (1) txc_pio_ack_reg_df1 (.d(txc_pio_ack), .clk(niu_clk),.q(txc_pio_ack_reg));
dffre # (64) txc_pio_rdata_reg_dffre (.d(txc_pio_rdata), .reset(reset),.en(txc_pio_ack), .clk(niu_clk),.q(txc_pio_rdata_reg));
df1 # (1) prom_pio_ack_reg_df1 (.d(prom_pio_ack), .clk(niu_clk),.q(prom_pio_ack_reg));
dffre # (64) prom_pio_rdata_reg_dffre(.d(prom_pio_rdata),.reset(reset),.en(prom_pio_ack),.clk(niu_clk),.q(prom_pio_rdata_reg));
dffre # (1) prom_pio_err_reg_dffre (.d(prom_pio_err), .reset(reset),.en(prom_pio_ack),.clk(niu_clk),.q(prom_pio_err_reg));
df1 # (1) pim_pio_ack_reg_df1 (.d(pim_pio_ack), .clk(niu_clk),.q(pim_pio_ack_reg));
dffre # (64) pim_pio_rdata_reg_dffre(.d(pim_pio_rdata),.reset(reset),.en(pim_pio_ack),.clk(niu_clk),.q(pim_pio_rdata_reg));
dffre # (1) pim_pio_err_reg_dffre (.d(pim_pio_err), .reset(reset),.en(pim_pio_ack),.clk(niu_clk),.q(pim_pio_err_reg));
assign mac_pio_err_reg = mac_pio_err ;
assign ipp_pio_err_reg = ipp_pio_err ;
assign fflp_pio_err_reg = fflp_pio_err ;
assign zcp_pio_err_reg = zcp_pio_err ;
assign dmc_pio_err_reg = dmc_pio_err ;
assign txc_pio_err_reg = txc_pio_err ;
dffre # (1) mac_pio_err_reg_dffre (.d(mac_pio_err), .reset(reset),.en(mac_pio_ack), .clk(niu_clk),.q(mac_pio_err_reg));
dffre # (1) ipp_pio_err_reg_dffre (.d(ipp_pio_err), .reset(reset),.en(ipp_pio_ack), .clk(niu_clk),.q(ipp_pio_err_reg));
dffre # (1) fflp_pio_err_reg_dffre (.d(fflp_pio_err), .reset(reset),.en(fflp_pio_ack),.clk(niu_clk),.q(fflp_pio_err_reg));
dffre # (1) zcp_pio_err_reg_dffre (.d(zcp_pio_err), .reset(reset),.en(zcp_pio_ack), .clk(niu_clk),.q(zcp_pio_err_reg));
dffre # (1) dmc_pio_err_reg_dffre (.d(dmc_pio_err), .reset(reset),.en(dmc_pio_ack), .clk(niu_clk),.q(dmc_pio_err_reg));
dffre # (1) txc_pio_err_reg_dffre (.d(txc_pio_err), .reset(reset),.en(txc_pio_ack), .clk(niu_clk),.q(txc_pio_err_reg));
assign prom_pio_ack_reg = prom_pio_ack ;
assign prom_pio_rdata_reg[63:0] = prom_pio_rdata[63:0] ;
assign prom_pio_err_reg = prom_pio_err ;
assign pim_pio_ack_reg = pim_pio_ack ;
assign pim_pio_rdata_reg[63:0] = pim_pio_rdata[63:0] ;
assign pim_pio_err_reg = pim_pio_err ;
// register client interrupts
// df1 # (64) dmc_intri_df1 (.d(dmc_pio_intri[63:0]),.clk(niu_clk),.q(ldfi[63:0]));
// df1 # (64) dmc_intrj_df1 (.d(dmc_pio_intrj[63:0]),.clk(niu_clk),.q(ldfj[63:0]));
wire [31:0] del_pio_clients_wdata ;
df1 # (32) del_pio_clients_wdata_df1 (.d(pio_clients_wdata[31:0]),.clk(niu_clk),.q(del_pio_clients_wdata[31:0]));
df1 # (16) dmc_intri_df1_0_15 (.d(dmc_pio_intri[15:0]),.clk(niu_clk),.q(ldfj[15:0]));
df1 # (16) dmc_intrj_df1_0_15 (.d(dmc_pio_intrj[15:0]),.clk(niu_clk),.q(ldfi[15:0]));
assign ldfi[31:16] = 16'b0 ;
assign ldfj[31:16] = 16'b0 ;
df1 # (24) dmc_intri_df1_55_32 (.d(dmc_pio_intri[55:32]),.clk(niu_clk),.q(ldfj[55:32]));
df1 # (24) dmc_intrj_df1_55_32 (.d(dmc_pio_intrj[55:32]),.clk(niu_clk),.q(ldfi[55:32]));
assign ldfi[62:56] = 7'b0 ;
assign ldfj[63:56] = 8'b0 ;
df1 # (16) dmc_intri_df1_0_15 (.d(dmc_pio_intri[15:0]),.clk(niu_clk),.q(ldfj[15:0]));
df1 # (16) dmc_intrj_df1_0_15 (.d(dmc_pio_intrj[15:0]),.clk(niu_clk),.q(ldfi[15:0]));
assign ldfi[31:16] = 16'b0 ;
assign ldfj[31:16] = 16'b0 ;
df1 # (16) dmc_intri_df1_47_32 (.d(dmc_pio_intri[47:32]),.clk(niu_clk),.q(ldfj[47:32]));
df1 # (16) dmc_intrj_df1_47_32 (.d(dmc_pio_intrj[47:32]),.clk(niu_clk),.q(ldfi[47:32]));
assign ldfi[62:48] = 15'b0 ;
assign ldfj[63:48] = 16'b0 ;
df1 # (1) mif_pio_intr_df1 (.d(mif_pio_intr), .clk(niu_clk),.q(ldfi[63]));
df1 # (1) mac_intr0_df1 (.d(mac_pio_intr0),.clk(niu_clk),.q(ldfi[64]));
df1 # (1) mac_intr1_df1 (.d(mac_pio_intr1), .clk(niu_clk),.q(ldfi[65]));
df1 # (1) mac_intr2_df1 (.d(mac_pio_intr2), .clk(niu_clk),.q(ldfi[66]));
df1 # (1) mac_intr3_df1 (.d(mac_pio_intr3), .clk(niu_clk),.q(ldfi[67]));
df1 # (1) ipp_intr_df1 (.d(ipp_pio_intr), .clk(niu_clk),.q(ipp_intr));
df1 # (1) fflp_intr_df1 (.d(fflp_pio_intr), .clk(niu_clk),.q(fflp_intr));
df1 # (1) zcp_intr_df1 (.d(zcp_pio_intr), .clk(niu_clk),.q(zcp_intr));
df1 # (1) txc_intr_df1 (.d(txc_pio_intr), .clk(niu_clk),.q(txc_intr));
df1 # (1) mif_intr_df1 (.d(mif_pio_intr), .clk(niu_clk),.q(mif_intr));
df1 # (1) rdmc_intr_df1 (.d(rdmc_pio_port_int), .clk(niu_clk),.q(rdmc_intr));
df1 # (1) meta_intr_df1 (.d(arb_pio_all_npwdirty), .clk(niu_clk),.q(meta_intr1));
df1 # (1) meta_intr_df2 (.d(arb_pio_all_rddirty), .clk(niu_clk),.q(meta_intr2));
wire other_intr = ((ipp_intr & !sys_err_mask[2]) |
(fflp_intr & !sys_err_mask[3]) |
(zcp_intr & !sys_err_mask[4]) |
(txc_intr & !sys_err_mask[7]) |
(rdmc_intr & !sys_err_mask[6]) |
(mif_intr & !sys_err_mask[1]) |
(smx_meta_intr_hld | meta_intr1 & !sys_err_mask[9]) |
(smx_meta_intr_hld | meta_intr2 & !sys_err_mask[10])|
(pim_intr & !sys_err_mask[8]) );
wire other_intr = ((ipp_intr & !sys_err_mask[2]) |
(fflp_intr & !sys_err_mask[3]) |
(zcp_intr & !sys_err_mask[4]) |
(txc_intr & !sys_err_mask[7]) |
(rdmc_intr & !sys_err_mask[6]) |
(mif_intr & !sys_err_mask[1]) |
(smx_meta_intr_hld | meta_intr1 & !sys_err_mask[9]) |
(smx_meta_intr_hld | meta_intr2 & !sys_err_mask[10])|
(smx_meta_intr_hld | smx_intr & !sys_err_mask[0]) );
df1 # (1) other_intr_df1 (.d(other_intr), .clk(niu_clk),.q(ldfi[68]));
niu_pio_regs niu_pio_regs
.slv_rdata (slv_rdata[63:0]),
.fzc_slv_ack (fzc_slv_ack),
.fzc_slv_rdata (fzc_slv_rdata[63:0]),
.fzc_slv_err (fzc_slv_err),
.vdmc_addr (vdmc_addr[19:0]),
.vdmc_sel_ok (vdmc_sel_ok),
.ldsv_rdata (ldsv_rdata[63:0]),
.ldgim_rdata (ldgim_rdata[63:0]),
.intr_reg_sel (intr_reg_sel),
.imask0_ack (imask0_ack),
.imask0_rdata (imask0_rdata[63:0]),
.imask0_err (imask0_err),
.imask1_ack (imask1_ack),
.imask1_rdata (imask1_rdata[63:0]),
.imask1_err (imask1_err),
.ack_TO_value (ack_TO_value[9:0]),
.mac_reset0 (mac_reset0),
.mac_reset1 (mac_reset1),
.mac_reset2 (mac_reset2),
.mac_reset3 (mac_reset3),
.msi_data (msi_data[6:0]),
.ldf_mask0 (ldf_mask0[1:0]),
.ldf_mask1 (ldf_mask1[1:0]),
.ldf_mask2 (ldf_mask2[1:0]),
.ldf_mask3 (ldf_mask3[1:0]),
.ldf_mask4 (ldf_mask4[1:0]),
.ldf_mask5 (ldf_mask5[1:0]),
.ldf_mask6 (ldf_mask6[1:0]),
.ldf_mask7 (ldf_mask7[1:0]),
.ldf_mask8 (ldf_mask8[1:0]),
.ldf_mask9 (ldf_mask9[1:0]),
.ldf_mask10 (ldf_mask10[1:0]),
.ldf_mask11 (ldf_mask11[1:0]),
.ldf_mask12 (ldf_mask12[1:0]),
.ldf_mask13 (ldf_mask13[1:0]),
.ldf_mask14 (ldf_mask14[1:0]),
.ldf_mask15 (ldf_mask15[1:0]),
.ldf_mask16 (ldf_mask16[1:0]),
.ldf_mask17 (ldf_mask17[1:0]),
.ldf_mask18 (ldf_mask18[1:0]),
.ldf_mask19 (ldf_mask19[1:0]),
.ldf_mask20 (ldf_mask20[1:0]),
.ldf_mask21 (ldf_mask21[1:0]),
.ldf_mask22 (ldf_mask22[1:0]),
.ldf_mask23 (ldf_mask23[1:0]),
.ldf_mask24 (ldf_mask24[1:0]),
.ldf_mask25 (ldf_mask25[1:0]),
.ldf_mask26 (ldf_mask26[1:0]),
.ldf_mask27 (ldf_mask27[1:0]),
.ldf_mask28 (ldf_mask28[1:0]),
.ldf_mask29 (ldf_mask29[1:0]),
.ldf_mask30 (ldf_mask30[1:0]),
.ldf_mask31 (ldf_mask31[1:0]),
.ldf_mask32 (ldf_mask32[1:0]),
.ldf_mask33 (ldf_mask33[1:0]),
.ldf_mask34 (ldf_mask34[1:0]),
.ldf_mask35 (ldf_mask35[1:0]),
.ldf_mask36 (ldf_mask36[1:0]),
.ldf_mask37 (ldf_mask37[1:0]),
.ldf_mask38 (ldf_mask38[1:0]),
.ldf_mask39 (ldf_mask39[1:0]),
.ldf_mask40 (ldf_mask40[1:0]),
.ldf_mask41 (ldf_mask41[1:0]),
.ldf_mask42 (ldf_mask42[1:0]),
.ldf_mask43 (ldf_mask43[1:0]),
.ldf_mask44 (ldf_mask44[1:0]),
.ldf_mask45 (ldf_mask45[1:0]),
.ldf_mask46 (ldf_mask46[1:0]),
.ldf_mask47 (ldf_mask47[1:0]),
.ldf_mask48 (ldf_mask48[1:0]),
.ldf_mask49 (ldf_mask49[1:0]),
.ldf_mask50 (ldf_mask50[1:0]),
.ldf_mask51 (ldf_mask51[1:0]),
.ldf_mask52 (ldf_mask52[1:0]),
.ldf_mask53 (ldf_mask53[1:0]),
.ldf_mask54 (ldf_mask54[1:0]),
.ldf_mask55 (ldf_mask55[1:0]),
.ldf_mask56 (ldf_mask56[1:0]),
.ldf_mask57 (ldf_mask57[1:0]),
.ldf_mask58 (ldf_mask58[1:0]),
.ldf_mask59 (ldf_mask59[1:0]),
.ldf_mask60 (ldf_mask60[1:0]),
.ldf_mask61 (ldf_mask61[1:0]),
.ldf_mask62 (ldf_mask62[1:0]),
.ldf_mask63 (ldf_mask63[1:0]),
.ldf_mask64 (ldf_mask64[1:0]),
.ldf_mask65 (ldf_mask65[1:0]),
.ldf_mask66 (ldf_mask66[1:0]),
.ldf_mask67 (ldf_mask67[1:0]),
.ldf_mask68 (ldf_mask68[1:0]),
.sys_err_mask (sys_err_mask[10:0]),
.smx_meta_intr_hld (smx_meta_intr_hld),
.slv_sel_reg (slv_sel_reg),
.fzc_slv_sel_reg (fzc_slv_sel_reg),
.ldsv_sel_reg (ldsv_sel_reg),
.ldgim_sel_reg (ldgim_sel_reg),
.imask0_sel_reg (imask0_sel_reg),
.imask1_sel_reg (imask1_sel_reg),
.wr_data (del_pio_clients_wdata[31:0]),
.wr_data (pio_clients_wdata[31:0]),
.pio_32b_wr (pio_32b_wr),
.memship_group0 (memship_group0[68:0]),
.memship_group1 (memship_group1[68:0]),
.memship_group2 (memship_group2[68:0]),
.memship_group3 (memship_group3[68:0]),
.memship_group4 (memship_group4[68:0]),
.memship_group5 (memship_group5[68:0]),
.memship_group6 (memship_group6[68:0]),
.memship_group7 (memship_group7[68:0]),
.memship_group8 (memship_group8[68:0]),
.memship_group9 (memship_group9[68:0]),
.memship_group10 (memship_group10[68:0]),
.memship_group11 (memship_group11[68:0]),
.memship_group12 (memship_group12[68:0]),
.memship_group13 (memship_group13[68:0]),
.memship_group14 (memship_group14[68:0]),
.memship_group15 (memship_group15[68:0]),
.memship_group16 (memship_group16[68:0]),
.memship_group17 (memship_group17[68:0]),
.memship_group18 (memship_group18[68:0]),
.memship_group19 (memship_group19[68:0]),
.memship_group20 (memship_group20[68:0]),
.memship_group21 (memship_group21[68:0]),
.memship_group22 (memship_group22[68:0]),
.memship_group23 (memship_group23[68:0]),
.memship_group24 (memship_group24[68:0]),
.memship_group25 (memship_group25[68:0]),
.memship_group26 (memship_group26[68:0]),
.memship_group27 (memship_group27[68:0]),
.memship_group28 (memship_group28[68:0]),
.memship_group29 (memship_group29[68:0]),
.memship_group30 (memship_group30[68:0]),
.memship_group31 (memship_group31[68:0]),
.memship_group32 (memship_group32[68:0]),
.memship_group33 (memship_group33[68:0]),
.memship_group34 (memship_group34[68:0]),
.memship_group35 (memship_group35[68:0]),
.memship_group36 (memship_group36[68:0]),
.memship_group37 (memship_group37[68:0]),
.memship_group38 (memship_group38[68:0]),
.memship_group39 (memship_group39[68:0]),
.memship_group40 (memship_group40[68:0]),
.memship_group41 (memship_group41[68:0]),
.memship_group42 (memship_group42[68:0]),
.memship_group43 (memship_group43[68:0]),
.memship_group44 (memship_group44[68:0]),
.memship_group45 (memship_group45[68:0]),
.memship_group46 (memship_group46[68:0]),
.memship_group47 (memship_group47[68:0]),
.memship_group48 (memship_group48[68:0]),
.memship_group49 (memship_group49[68:0]),
.memship_group50 (memship_group50[68:0]),
.memship_group51 (memship_group51[68:0]),
.memship_group52 (memship_group52[68:0]),
.memship_group53 (memship_group53[68:0]),
.memship_group54 (memship_group54[68:0]),
.memship_group55 (memship_group55[68:0]),
.memship_group56 (memship_group56[68:0]),
.memship_group57 (memship_group57[68:0]),
.memship_group58 (memship_group58[68:0]),
.memship_group59 (memship_group59[68:0]),
.memship_group60 (memship_group60[68:0]),
.memship_group61 (memship_group61[68:0]),
.memship_group62 (memship_group62[68:0]),
.memship_group63 (memship_group63[68:0]),
.arb_dirtid_en (arb_dirtid_en),
.arb_dirtid_clr (arb_dirtid_clr),
.arb_np_threshold (arb_np_threshold[5:0]),
.arb_rd_threshold (arb_rd_threshold[5:0]),
.arb_rdstat (arb_rdstat[5:0]),
.arb_wrstat (arb_wrstat[5:0]),
.TrainingVector (TrainingVector[31:0]),
.arb_ctrl (arb_ctrl[31:0]),
.arb_debug_vector (arb_debug_vector[31:0]),
.meta_intr1 (meta_intr1),
.meta_intr2 (meta_intr2),
.gpio_dout (gpio_dout[15:0]),
.gpio_din (gpio_din[15:0]),
.gpio_en (gpio_en[15:0]),
.debug_select (debug_select[5:0]));
.debug_select (debug_select[5:0]),
.smx_ctrl (smx_ctrl[31:0]),
.smx_debug_vector (smx_debug_vector[31:0]),
.smx_config_data (smx_config_data[31:0]),
.smx_status (smx_status[31:0]),
.smx_intr_clr (clear_intr4smx));
.intr_valid (intr_valid),
.intr_invalid (intr_invalid),
.memship_group0 (memship_group0[68:0]),
.memship_group1 (memship_group1[68:0]),
.memship_group2 (memship_group2[68:0]),
.memship_group3 (memship_group3[68:0]),
.memship_group4 (memship_group4[68:0]),
.memship_group5 (memship_group5[68:0]),
.memship_group6 (memship_group6[68:0]),
.memship_group7 (memship_group7[68:0]),
.memship_group8 (memship_group8[68:0]),
.memship_group9 (memship_group9[68:0]),
.memship_group10 (memship_group10[68:0]),
.memship_group11 (memship_group11[68:0]),
.memship_group12 (memship_group12[68:0]),
.memship_group13 (memship_group13[68:0]),
.memship_group14 (memship_group14[68:0]),
.memship_group15 (memship_group15[68:0]),
.memship_group16 (memship_group16[68:0]),
.memship_group17 (memship_group17[68:0]),
.memship_group18 (memship_group18[68:0]),
.memship_group19 (memship_group19[68:0]),
.memship_group20 (memship_group20[68:0]),
.memship_group21 (memship_group21[68:0]),
.memship_group22 (memship_group22[68:0]),
.memship_group23 (memship_group23[68:0]),
.memship_group24 (memship_group24[68:0]),
.memship_group25 (memship_group25[68:0]),
.memship_group26 (memship_group26[68:0]),
.memship_group27 (memship_group27[68:0]),
.memship_group28 (memship_group28[68:0]),
.memship_group29 (memship_group29[68:0]),
.memship_group30 (memship_group30[68:0]),
.memship_group31 (memship_group31[68:0]),
.memship_group32 (memship_group32[68:0]),
.memship_group33 (memship_group33[68:0]),
.memship_group34 (memship_group34[68:0]),
.memship_group35 (memship_group35[68:0]),
.memship_group36 (memship_group36[68:0]),
.memship_group37 (memship_group37[68:0]),
.memship_group38 (memship_group38[68:0]),
.memship_group39 (memship_group39[68:0]),
.memship_group40 (memship_group40[68:0]),
.memship_group41 (memship_group41[68:0]),
.memship_group42 (memship_group42[68:0]),
.memship_group43 (memship_group43[68:0]),
.memship_group44 (memship_group44[68:0]),
.memship_group45 (memship_group45[68:0]),
.memship_group46 (memship_group46[68:0]),
.memship_group47 (memship_group47[68:0]),
.memship_group48 (memship_group48[68:0]),
.memship_group49 (memship_group49[68:0]),
.memship_group50 (memship_group50[68:0]),
.memship_group51 (memship_group51[68:0]),
.memship_group52 (memship_group52[68:0]),
.memship_group53 (memship_group53[68:0]),
.memship_group54 (memship_group54[68:0]),
.memship_group55 (memship_group55[68:0]),
.memship_group56 (memship_group56[68:0]),
.memship_group57 (memship_group57[68:0]),
.memship_group58 (memship_group58[68:0]),
.memship_group59 (memship_group59[68:0]),
.memship_group60 (memship_group60[68:0]),
.memship_group61 (memship_group61[68:0]),
.memship_group62 (memship_group62[68:0]),
.memship_group63 (memship_group63[68:0]),
.ig_state (ig_state[2:0]),
.ldf_mask0 (ldf_mask0[1:0]),
.ldf_mask1 (ldf_mask1[1:0]),
.ldf_mask2 (ldf_mask2[1:0]),
.ldf_mask3 (ldf_mask3[1:0]),
.ldf_mask4 (ldf_mask4[1:0]),
.ldf_mask5 (ldf_mask5[1:0]),
.ldf_mask6 (ldf_mask6[1:0]),
.ldf_mask7 (ldf_mask7[1:0]),
.ldf_mask8 (ldf_mask8[1:0]),
.ldf_mask9 (ldf_mask9[1:0]),
.ldf_mask10 (ldf_mask10[1:0]),
.ldf_mask11 (ldf_mask11[1:0]),
.ldf_mask12 (ldf_mask12[1:0]),
.ldf_mask13 (ldf_mask13[1:0]),
.ldf_mask14 (ldf_mask14[1:0]),
.ldf_mask15 (ldf_mask15[1:0]),
.ldf_mask16 (ldf_mask16[1:0]),
.ldf_mask17 (ldf_mask17[1:0]),
.ldf_mask18 (ldf_mask18[1:0]),
.ldf_mask19 (ldf_mask19[1:0]),
.ldf_mask20 (ldf_mask20[1:0]),
.ldf_mask21 (ldf_mask21[1:0]),
.ldf_mask22 (ldf_mask22[1:0]),
.ldf_mask23 (ldf_mask23[1:0]),
.ldf_mask24 (ldf_mask24[1:0]),
.ldf_mask25 (ldf_mask25[1:0]),
.ldf_mask26 (ldf_mask26[1:0]),
.ldf_mask27 (ldf_mask27[1:0]),
.ldf_mask28 (ldf_mask28[1:0]),
.ldf_mask29 (ldf_mask29[1:0]),
.ldf_mask30 (ldf_mask30[1:0]),
.ldf_mask31 (ldf_mask31[1:0]),
.ldf_mask32 (ldf_mask32[1:0]),
.ldf_mask33 (ldf_mask33[1:0]),
.ldf_mask34 (ldf_mask34[1:0]),
.ldf_mask35 (ldf_mask35[1:0]),
.ldf_mask36 (ldf_mask36[1:0]),
.ldf_mask37 (ldf_mask37[1:0]),
.ldf_mask38 (ldf_mask38[1:0]),
.ldf_mask39 (ldf_mask39[1:0]),
.ldf_mask40 (ldf_mask40[1:0]),
.ldf_mask41 (ldf_mask41[1:0]),
.ldf_mask42 (ldf_mask42[1:0]),
.ldf_mask43 (ldf_mask43[1:0]),
.ldf_mask44 (ldf_mask44[1:0]),
.ldf_mask45 (ldf_mask45[1:0]),
.ldf_mask46 (ldf_mask46[1:0]),
.ldf_mask47 (ldf_mask47[1:0]),
.ldf_mask48 (ldf_mask48[1:0]),
.ldf_mask49 (ldf_mask49[1:0]),
.ldf_mask50 (ldf_mask50[1:0]),
.ldf_mask51 (ldf_mask51[1:0]),
.ldf_mask52 (ldf_mask52[1:0]),
.ldf_mask53 (ldf_mask53[1:0]),
.ldf_mask54 (ldf_mask54[1:0]),
.ldf_mask55 (ldf_mask55[1:0]),
.ldf_mask56 (ldf_mask56[1:0]),
.ldf_mask57 (ldf_mask57[1:0]),
.ldf_mask58 (ldf_mask58[1:0]),
.ldf_mask59 (ldf_mask59[1:0]),
.ldf_mask60 (ldf_mask60[1:0]),
.ldf_mask61 (ldf_mask61[1:0]),
.ldf_mask62 (ldf_mask62[1:0]),
.ldf_mask63 (ldf_mask63[1:0]),
.ldf_mask64 (ldf_mask64[1:0]),
.ldf_mask65 (ldf_mask65[1:0]),
.ldf_mask66 (ldf_mask66[1:0]),
.ldf_mask67 (ldf_mask67[1:0]),
.ldf_mask68 (ldf_mask68[1:0]),
niu_pio_debug niu_pio_debug ( // Outputs
.pio_debug_port(pio_debug_port[31:0]),
.TrainingVector(TrainingVector[31:0]),
.pio_rw_state(pio_rw_state[2:0]),
.accepted_state(accepted_state[1:0]),
.ig_state(ig_state[2:0]),
.debug_select(debug_select[5:0]));
niu_pio_virt_decode niu_pio_virt_decode (
.virt_addr(virt_addr[26:0]),
.pio_virt_sel_ok(pio_virt_sel_ok),
.fflp_virt_sel_ok(fflp_virt_sel_ok),
.dma_virt_sel_ok(dma_virt_sel_ok),
// instantiate spare here
niu_pio_spare niu_pio_spare_0 (
.di_nd3 ({1'h1, 1'h1, do_q_0[3]}),
.di_nd2 ({1'h1, 1'h1, do_q_0[2]}),
.di_nd1 ({1'h1, 1'h1, do_q_0[1]}),
.di_nd0 ({1'h1, 1'h1, do_q_0[0]}),
.rst ({niu_reset_l,niu_reset_l,niu_reset_l,niu_reset_l}),
niu_pio_spare niu_pio_spare_1 (
.di_nd3 ({1'h1, 1'h1, do_q_1[3]}),
.di_nd2 ({1'h1, 1'h1, do_q_1[2]}),
.di_nd1 ({1'h1, 1'h1, do_q_1[1]}),
.di_nd0 ({1'h1, 1'h1, do_q_1[0]}),
.rst ({niu_reset_l,niu_reset_l,niu_reset_l,niu_reset_l}),
niu_pio_spare niu_pio_spare_2 (
.di_nd3 ({1'h1, 1'h1, do_q_2[3]}),
.di_nd2 ({1'h1, 1'h1, do_q_2[2]}),
.di_nd1 ({1'h1, 1'h1, do_q_2[1]}),
.di_nd0 ({1'h1, 1'h1, do_q_2[0]}),
.rst ({niu_reset_l,niu_reset_l,niu_reset_l,niu_reset_l}),
niu_pio_spare niu_pio_spare_3 (
.di_nd3 ({1'h1, 1'h1, do_q_3[3]}),
.di_nd2 ({1'h1, 1'h1, do_q_3[2]}),
.di_nd1 ({1'h1, 1'h1, do_q_3[1]}),
.di_nd0 ({1'h1, 1'h1, do_q_3[0]}),
.rst ({niu_reset_l,niu_reset_l,niu_reset_l,niu_reset_l}),