// ========== Copyright Header Begin ==========================================
// OpenSPARC T2 Processor File: niu_pio_imask0_decoder.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 ============================================
/*****************************************************************
* File Name : niu_pio_imask0_decoder.v
* Description : It contains ldf_mask 0~63 read/write decoder,
* Parent Module: niu_pio_imask0_decoder.v
* Copyright (c) 2020, Sun Microsystems, Inc.
* Sun Proprietary and Confidential
****************************************************************/
module niu_pio_imask0_decoder (/*AUTOARG*/
imask0_ack, imask0_rdata, imask0_err, ld_ldf_mask0, ld_ldf_mask1,
ld_ldf_mask2, ld_ldf_mask3, ld_ldf_mask4, ld_ldf_mask5,
ld_ldf_mask6, ld_ldf_mask7, ld_ldf_mask8, ld_ldf_mask9,
ld_ldf_mask10, ld_ldf_mask11, ld_ldf_mask12, ld_ldf_mask13,
ld_ldf_mask14, ld_ldf_mask15, ld_ldf_mask16, ld_ldf_mask17,
ld_ldf_mask18, ld_ldf_mask19, ld_ldf_mask20, ld_ldf_mask21,
ld_ldf_mask22, ld_ldf_mask23, ld_ldf_mask24, ld_ldf_mask25,
ld_ldf_mask26, ld_ldf_mask27, ld_ldf_mask28, ld_ldf_mask29,
ld_ldf_mask30, ld_ldf_mask31, ld_ldf_mask32, ld_ldf_mask33,
ld_ldf_mask34, ld_ldf_mask35, ld_ldf_mask36, ld_ldf_mask37,
ld_ldf_mask38, ld_ldf_mask39, ld_ldf_mask40, ld_ldf_mask41,
ld_ldf_mask42, ld_ldf_mask43, ld_ldf_mask44, ld_ldf_mask45,
ld_ldf_mask46, ld_ldf_mask47, ld_ldf_mask48, ld_ldf_mask49,
ld_ldf_mask50, ld_ldf_mask51, ld_ldf_mask52, ld_ldf_mask53,
ld_ldf_mask54, ld_ldf_mask55, ld_ldf_mask56, ld_ldf_mask57,
ld_ldf_mask58, ld_ldf_mask59, ld_ldf_mask60, ld_ldf_mask61,
ld_ldf_mask62, ld_ldf_mask63,
clk, reset, imask0_sel_reg, addr, rd, ldf_mask0, ldf_mask1,
ldf_mask2, ldf_mask3, ldf_mask4, ldf_mask5, ldf_mask6, ldf_mask7,
ldf_mask8, ldf_mask9, ldf_mask10, ldf_mask11, ldf_mask12,
ldf_mask13, ldf_mask14, ldf_mask15, ldf_mask16, ldf_mask17,
ldf_mask18, ldf_mask19, ldf_mask20, ldf_mask21, ldf_mask22,
ldf_mask23, ldf_mask24, ldf_mask25, ldf_mask26, ldf_mask27,
ldf_mask28, ldf_mask29, ldf_mask30, ldf_mask31, ldf_mask32,
ldf_mask33, ldf_mask34, ldf_mask35, ldf_mask36, ldf_mask37,
ldf_mask38, ldf_mask39, ldf_mask40, ldf_mask41, ldf_mask42,
ldf_mask43, ldf_mask44, ldf_mask45, ldf_mask46, ldf_mask47,
ldf_mask48, ldf_mask49, ldf_mask50, ldf_mask51, ldf_mask52,
ldf_mask53, ldf_mask54, ldf_mask55, ldf_mask56, ldf_mask57,
ldf_mask58, ldf_mask59, ldf_mask60, ldf_mask61, ldf_mask62,
output [63:0] imask0_rdata;
// common reg declaration
reg non_qualified_addr_err;
// common wrie declaration
wire [63:0] imask0_rdata;
// output reg declaration
/* ---------------------------------------------------------- */
imask0_sel_reg_int <= 1'b0;
imask0_sel_reg_int <= imask0_sel_reg ;
/* ---------------------------------------------------------- */
assign imask0_sel_reg_int = imask0_sel_reg ;
/* ----------------------------------------------------------- */
niu_rw_ctl imask0_rw_ctl(
.rdata (imask0_rdata[63:0]),
.sel (imask0_sel_reg_int),
.rd_data (rd_data[63:0]),
.non_qualified_addr_err(non_qualified_addr_err));
always @ (/*AUTOSENSE*/addr_int or ldf_mask0 or ldf_mask1 or ldf_mask10
or ldf_mask11 or ldf_mask12 or ldf_mask13 or ldf_mask14
or ldf_mask15 or ldf_mask16 or ldf_mask17 or ldf_mask18
or ldf_mask19 or ldf_mask2 or ldf_mask20 or ldf_mask21
or ldf_mask22 or ldf_mask23 or ldf_mask24 or ldf_mask25
or ldf_mask26 or ldf_mask27 or ldf_mask28 or ldf_mask29
or ldf_mask3 or ldf_mask30 or ldf_mask31 or ldf_mask32
or ldf_mask33 or ldf_mask34 or ldf_mask35 or ldf_mask36
or ldf_mask37 or ldf_mask38 or ldf_mask39 or ldf_mask4
or ldf_mask40 or ldf_mask41 or ldf_mask42 or ldf_mask43
or ldf_mask44 or ldf_mask45 or ldf_mask46 or ldf_mask47
or ldf_mask48 or ldf_mask49 or ldf_mask5 or ldf_mask50
or ldf_mask51 or ldf_mask52 or ldf_mask53 or ldf_mask54
or ldf_mask55 or ldf_mask56 or ldf_mask57 or ldf_mask58
or ldf_mask59 or ldf_mask6 or ldf_mask60 or ldf_mask61
or ldf_mask62 or ldf_mask63 or ldf_mask7 or ldf_mask8
non_qualified_addr_err = 0;
rd_data = 64'hdead_beef_dead_beef;
case({addr_int[18:3],3'b0}) //synopsys parallel_case full_case
rd_data = {62'b0,ldf_mask0};
rd_data = {62'b0,ldf_mask1};
rd_data = {62'b0,ldf_mask2};
rd_data = {62'b0,ldf_mask3};
rd_data = {62'b0,ldf_mask4};
rd_data = {62'b0,ldf_mask5};
rd_data = {62'b0,ldf_mask6};
rd_data = {62'b0,ldf_mask7};
rd_data = {62'b0,ldf_mask8};
rd_data = {62'b0,ldf_mask9};
rd_data = {62'b0,ldf_mask10};
rd_data = {62'b0,ldf_mask11};
rd_data = {62'b0,ldf_mask12};
rd_data = {62'b0,ldf_mask13};
rd_data = {62'b0,ldf_mask14};
rd_data = {62'b0,ldf_mask15};
rd_data = {62'b0,ldf_mask16};
rd_data = {62'b0,ldf_mask17};
rd_data = {62'b0,ldf_mask18};
rd_data = {62'b0,ldf_mask19};
rd_data = {62'b0,ldf_mask20};
rd_data = {62'b0,ldf_mask21};
rd_data = {62'b0,ldf_mask22};
rd_data = {62'b0,ldf_mask23};
rd_data = {62'b0,ldf_mask24};
rd_data = {62'b0,ldf_mask25};
rd_data = {62'b0,ldf_mask26};
rd_data = {62'b0,ldf_mask27};
rd_data = {62'b0,ldf_mask28};
rd_data = {62'b0,ldf_mask29};
rd_data = {62'b0,ldf_mask30};
rd_data = {62'b0,ldf_mask31};
rd_data = {62'b0,ldf_mask32};
rd_data = {62'b0,ldf_mask33};
rd_data = {62'b0,ldf_mask34};
rd_data = {62'b0,ldf_mask35};
rd_data = {62'b0,ldf_mask36};
rd_data = {62'b0,ldf_mask37};
rd_data = {62'b0,ldf_mask38};
rd_data = {62'b0,ldf_mask39};
rd_data = {62'b0,ldf_mask40};
rd_data = {62'b0,ldf_mask41};
rd_data = {62'b0,ldf_mask42};
rd_data = {62'b0,ldf_mask43};
rd_data = {62'b0,ldf_mask44};
rd_data = {62'b0,ldf_mask45};
rd_data = {62'b0,ldf_mask46};
rd_data = {62'b0,ldf_mask47};
rd_data = {62'b0,ldf_mask48};
rd_data = {62'b0,ldf_mask49};
rd_data = {62'b0,ldf_mask50};
rd_data = {62'b0,ldf_mask51};
rd_data = {62'b0,ldf_mask52};
rd_data = {62'b0,ldf_mask53};
rd_data = {62'b0,ldf_mask54};
rd_data = {62'b0,ldf_mask55};
rd_data = {62'b0,ldf_mask56};
rd_data = {62'b0,ldf_mask57};
rd_data = {62'b0,ldf_mask58};
rd_data = {62'b0,ldf_mask59};
rd_data = {62'b0,ldf_mask60};
rd_data = {62'b0,ldf_mask61};
rd_data = {62'b0,ldf_mask62};
rd_data = {62'b0,ldf_mask63};
rd_data = 64'hdead_beef_dead_beef;
non_qualified_addr_err = 1;
endcase // case({addr[18:3],3'b0})
endmodule // niu_pio_imask0_decoder