// ========== Copyright Header Begin ========================================== // // OpenSPARC T2 Processor File: niu_zcp_slv.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 // have any questions. // // ========== Copyright Header End ============================================ /*%W% %G%*/ /***************************************************************** * * File Name : niu_zcp_slv.v * Author Name : John Lo * Description : It contains ZCP read/write decoder, registers, * * Parent Module: niu_zcp.v * Child Module: * Interface Mod: * Date Created : 3/26/04 * * Copyright (c) 2020, Sun Microsystems, Inc. * Sun Proprietary and Confidential * * Modification : * ****************************************************************/ `include "niu_zcp.h" module niu_zcp_slv(/*AUTOARG*/ // Outputs zcp_debug_sel, ecc_chk_bypass0, double_bit_err0, single_bit_err0, last_line_err0, second_line_err0, first_line_err0, ecc_chk_bypass1, double_bit_err1, single_bit_err1, last_line_err1, second_line_err1, first_line_err1, ecc_chk_bypass2, double_bit_err2, single_bit_err2, last_line_err2, second_line_err2, first_line_err2, ecc_chk_bypass3, double_bit_err3, single_bit_err3, last_line_err3, second_line_err3, first_line_err3, zcp_pio_ack, zcp_pio_rdata, zcp_pio_err, zcp_pio_intr, handle, fn, default_rdc, table_rdc, zc_rdc, tt_en, zcp_32bit_mode, req_dis, rsp_dis, par_chk_dis, ecc_chk_dis, dmaw_threshold, reset_cfifo0, reset_cfifo1, reset_cfifo2, reset_cfifo3, training_vector, slv_request, slv_tt_index, slv_ram_addr, slv_ram_wdata, slv_ram_be, va_ram_rwen, va_ram_rwen0, va_ram_rwen1, va_ram_rwen2, va_ram_rwen3, va_ram_rwen4, va_ram_rwen5, va_ram_rwen6, va_ram_rwen7, va_ram_ren, va_ram_wen, va_ram_ren0, va_ram_wen0, va_ram_ren1, va_ram_wen1, va_ram_ren2, va_ram_wen2, va_ram_ren3, va_ram_wen3, va_ram_ren4, va_ram_wen4, va_ram_ren5, va_ram_wen5, va_ram_ren6, va_ram_wen6, va_ram_ren7, va_ram_wen7, st_ram_ren, st_ram_wen, dn_ram_ren, dn_ram_wen, cfifo_ren0, cfifo_wen0, cfifo_ren1, cfifo_wen1, cfifo_ren2, cfifo_wen2, cfifo_ren3, cfifo_wen3, tt_offset0, tt_index_start0, tt_index_end0, tt_index_chk0, tt_offset1, tt_index_start1, tt_index_end1, tt_index_chk1, tt_offset2, tt_index_start2, tt_index_end2, tt_index_chk2, tt_offset3, tt_index_start3, tt_index_end3, tt_index_chk3, ds_offset0, ds_offset1, ds_offset2, ds_offset3, chk_bit_data, ram_access_state, // Inputs clk, slv_reset, kickoff_tt_reg, ififo_state, tt_state, req_load_state, req_unload_state, rsp_load_state, rsp_unload_state, ififo_overrun, set_tt_program_err, zcp_tt_index_err, slv_tt_index_err, rsp_tt_index_err, va_ram_perr, dn_ram_perr, st_ram_perr, rrfifo_overrun, rrfifo_underrun, rspfifo_uncorr_err, pio_clients_addr, pio_clients_rd, pio_clients_wdata, pio_zcp_sel, zcp_dmc_dat_err0, zcp_dmc_dat_err1, zcp_dmc_dat_err2, zcp_dmc_dat_err3, decode_default_rdc, decode_table_rdc, decode_zc_rdc, tt_rdc_reg, fflp_rdc, rdmc_zcp_func_num, page_handle, slv_accepted, vram_slv_rdata, sram_slv_rdata, dram_slv_rdata, cfifo_slv_rdata0, cfifo_slv_rdata1, cfifo_slv_rdata2, cfifo_slv_rdata3 ); input clk; input [21:0] slv_reset; // debug signals input kickoff_tt_reg; input [2:0] ififo_state; input [3:0] tt_state; input [1:0] req_load_state; input [1:0] req_unload_state; input [3:0] rsp_load_state; input [3:0] rsp_unload_state; output [7:0] zcp_debug_sel; // error handeling input ififo_overrun; input set_tt_program_err; input zcp_tt_index_err; input slv_tt_index_err; input rsp_tt_index_err; input va_ram_perr; input dn_ram_perr; input st_ram_perr; input rrfifo_overrun; input rrfifo_underrun; input rspfifo_uncorr_err; // ecc error control output ecc_chk_bypass0; // per fifo ecc_chk disable output double_bit_err0; output single_bit_err0; output last_line_err0; output second_line_err0; output first_line_err0; output ecc_chk_bypass1; // per fifo ecc_chk disable output double_bit_err1; output single_bit_err1; output last_line_err1; output second_line_err1; output first_line_err1; output ecc_chk_bypass2; // per fifo ecc_chk disable output double_bit_err2; output single_bit_err2; output last_line_err2; output second_line_err2; output first_line_err2; output ecc_chk_bypass3; // per fifo ecc_chk disable output double_bit_err3; output single_bit_err3; output last_line_err3; output second_line_err3; output first_line_err3; // pio broadcast signals // vlint flag_dangling_net_within_module off // vlint flag_input_port_not_connected off // vlint flag_net_has_no_load off input [19:0] pio_clients_addr; // vlint flag_dangling_net_within_module on // vlint flag_input_port_not_connected on // vlint flag_net_has_no_load on input pio_clients_rd; input [31:0] pio_clients_wdata; input pio_zcp_sel; output zcp_pio_ack; output [63:0] zcp_pio_rdata; output zcp_pio_err; output zcp_pio_intr; input zcp_dmc_dat_err0; input zcp_dmc_dat_err1; input zcp_dmc_dat_err2; input zcp_dmc_dat_err3; // rdc stuff input decode_default_rdc; input decode_table_rdc; input decode_zc_rdc; input [7:0] tt_rdc_reg; input [7:0] fflp_rdc; input [31:0] rdmc_zcp_func_num; input [`PMS15:0] page_handle; // 20 bit per handle output [19:0] handle; output [1:0] fn; output [4:0] default_rdc; output [4:0] table_rdc; output [4:0] zc_rdc; // config stuff output tt_en; output zcp_32bit_mode; output req_dis; output rsp_dis; output par_chk_dis; output ecc_chk_dis; output [10:0] dmaw_threshold; output reset_cfifo0; output reset_cfifo1; output reset_cfifo2; output reset_cfifo3; output [31:0] training_vector; // slave read/write output slv_request; input slv_accepted; output [11:0] slv_tt_index; output [10:0] slv_ram_addr; output [`DN_R] slv_ram_wdata; output [16:0] slv_ram_be; input [1023:0] vram_slv_rdata; // output va_ram_rwen; output va_ram_rwen0; output va_ram_rwen1; output va_ram_rwen2; output va_ram_rwen3; output va_ram_rwen4; output va_ram_rwen5; output va_ram_rwen6; output va_ram_rwen7; output va_ram_ren ; output va_ram_wen ; output va_ram_ren0; output va_ram_wen0; output va_ram_ren1; output va_ram_wen1; output va_ram_ren2; output va_ram_wen2; output va_ram_ren3; output va_ram_wen3; output va_ram_ren4; output va_ram_wen4; output va_ram_ren5; output va_ram_wen5; output va_ram_ren6; output va_ram_wen6; output va_ram_ren7; output va_ram_wen7; // output st_ram_ren; output st_ram_wen; input [`ST_R] sram_slv_rdata; output dn_ram_ren; output dn_ram_wen; input [`DN_R] dram_slv_rdata; output cfifo_ren0; output cfifo_wen0; input [`CFIFO_W_R] cfifo_slv_rdata0; output cfifo_ren1; output cfifo_wen1; input [`CFIFO_W_R] cfifo_slv_rdata1; output cfifo_ren2; output cfifo_wen2; input [`CFIFO_W_R] cfifo_slv_rdata2; output cfifo_ren3; output cfifo_wen3; input [`CFIFO_W_R] cfifo_slv_rdata3; // output [7:0] tt_offset0 ; output [9:0] tt_index_start0 ; output [9:0] tt_index_end0 ; output tt_index_chk0 ; output [7:0] tt_offset1 ; output [9:0] tt_index_start1 ; output [9:0] tt_index_end1 ; output tt_index_chk1 ; output [7:0] tt_offset2 ; output [9:0] tt_index_start2 ; output [9:0] tt_index_end2 ; output tt_index_chk2 ; output [7:0] tt_offset3 ; output [9:0] tt_index_start3 ; output [9:0] tt_index_end3 ; output tt_index_chk3 ; output [9:0] ds_offset0 ; output [9:0] ds_offset1 ; output [9:0] ds_offset2 ; output [9:0] ds_offset3 ; output [16:0] chk_bit_data ; output [2:0] ram_access_state; // From niu_zcp_ram_access_sm of niu_zcp_ram_access_sm.v /*AUTOWIRE*/ // Beginning of automatic wires (for undeclared instantiated-module outputs) wire ld_ram2reg; // From niu_zcp_ram_access_sm of niu_zcp_ram_access_sm.v wire ram_ren; // From niu_zcp_ram_access_sm of niu_zcp_ram_access_sm.v wire ram_wen; // From niu_zcp_ram_access_sm of niu_zcp_ram_access_sm.v // End of automatics // wire [21:0] reset = slv_reset; wire reset10 = reset[10]; wire ififo_overrun_stat; wire [31:0] ecc_err_ctl0; wire [31:0] ecc_err_ctl1; wire [31:0] ecc_err_ctl2; wire [31:0] ecc_err_ctl3; wire ecc_chk_bypass0; // per fifo ecc_chk disable wire double_bit_err0; wire single_bit_err0; wire last_line_err0; wire second_line_err0; wire first_line_err0; wire ecc_chk_bypass1; // per fifo ecc_chk disable wire double_bit_err1; wire single_bit_err1; wire last_line_err1; wire second_line_err1; wire first_line_err1; wire ecc_chk_bypass2; // per fifo ecc_chk disable wire double_bit_err2; wire single_bit_err2; wire last_line_err2; wire second_line_err2; wire first_line_err2; wire ecc_chk_bypass3; // per fifo ecc_chk disable wire double_bit_err3; wire single_bit_err3; wire last_line_err3; wire second_line_err3; wire first_line_err3; // wire va_ram_perr; wire dn_ram_perr; wire st_ram_perr; wire va_ram_perr_pls; wire dn_ram_perr_pls; wire st_ram_perr_pls; wire va_ram_perr_stat; wire dn_ram_perr_stat; wire st_ram_perr_stat; wire zcp_dmc_dat_err0; wire zcp_dmc_dat_err1; wire zcp_dmc_dat_err2; wire zcp_dmc_dat_err3; reg zcp_pio_intr; reg rd_wr; reg zcp_sel; // vlint flag_variable_assign_never_reference off // vlint flag_dangling_net_within_module off // vlint flag_net_has_no_load off reg [19:0] addr_reg; // vlint flag_net_has_no_load on // vlint flag_dangling_net_within_module on // vlint flag_variable_assign_never_reference on reg [31:0] wr_data; reg [63:0] zcp_pio_rdata; reg zcp_sel_lead_d1; reg zcp_sel_lead_d2; reg ackgen; reg zcp_pio_ack; reg zcp_pio_err; wire addr_err; // reg non_qualified_addr_err; reg [31:0] rd_data; reg ld_config1 ; reg ld_status ; reg w1c_status ; reg ld_mask ; reg ld_buf4_region_ctl ; reg ld_buf8_region_ctl ; reg ld_buf16_region_ctl; reg ld_buf32_region_ctl; reg ld_ds4_region_ctl ; reg ld_ds8_region_ctl ; reg ld_ds16_region_ctl ; reg ld_ds32_region_ctl ; reg ld_ram_data0 ; reg ld_ram_data1 ; reg ld_ram_data2 ; reg ld_ram_data3 ; reg ld_ram_data4 ; reg ld_ram_be ; reg ld_ram_addr ; reg ld_chk_bit_data ; reg ld_reset_cfifo ; reg ld_ecc_err_ctl0; reg ld_ecc_err_ctl1; reg ld_ecc_err_ctl2; reg ld_ecc_err_ctl3; reg ld_training_vector; // ram selection reg [`DN_R] ram_rdata ; reg va_ram_rwen ; reg va_ram_rwen0 ; reg va_ram_rwen1 ; reg va_ram_rwen2 ; reg va_ram_rwen3 ; reg va_ram_rwen4 ; reg va_ram_rwen5 ; reg va_ram_rwen6 ; reg va_ram_rwen7 ; reg va_ram_ren ; reg va_ram_ren0 ; reg va_ram_ren1 ; reg va_ram_ren2 ; reg va_ram_ren3 ; reg va_ram_ren4 ; reg va_ram_ren5 ; reg va_ram_ren6 ; reg va_ram_ren7 ; reg st_ram_ren ; reg dn_ram_ren ; reg cfifo_ren0 ; reg cfifo_ren1 ; reg cfifo_ren2 ; reg cfifo_ren3 ; reg va_ram_wen ; reg va_ram_wen0 ; reg va_ram_wen1 ; reg va_ram_wen2 ; reg va_ram_wen3 ; reg va_ram_wen4 ; reg va_ram_wen5 ; reg va_ram_wen6 ; reg va_ram_wen7 ; reg st_ram_wen ; reg dn_ram_wen ; reg cfifo_wen0 ; reg cfifo_wen1 ; reg cfifo_wen2 ; reg cfifo_wen3 ; wire [31:0] config1; wire [31:0] status_dout; wire [31:0] mask; wire [31:0] buf4_region_ctl; wire [31:0] buf8_region_ctl; wire [31:0] buf16_region_ctl; wire [31:0] buf32_region_ctl; wire [31:0] ds4_region_ctl; wire [31:0] ds8_region_ctl; wire [31:0] ds16_region_ctl; wire [31:0] ds32_region_ctl; wire [`ST_R] sram_slv_rdata; wire [`DN_R] dram_slv_rdata; wire [`CFIFO_W_R] cfifo_slv_rdata0; wire [`CFIFO_W_R] cfifo_slv_rdata1; wire [`CFIFO_W_R] cfifo_slv_rdata2; wire [`CFIFO_W_R] cfifo_slv_rdata3; // vlint flag_dangling_net_within_module off // vlint flag_net_has_no_load off // vlint flag_undeclared_name_in_module off wire ld_ram_addr_lead; wire [31:0] ram_addr; // vlint flag_dangling_net_within_module on // vlint flag_net_has_no_load on // vlint flag_undeclared_name_in_module on wire [31:0] ram_data0; wire [31:0] ram_data1; wire [31:0] ram_data2; wire [31:0] ram_data3; wire [7:0] ram_data4; wire [`DN_R] ram_data; wire [16:0] ram_be; wire [`DN_R] slv_ram_wdata; wire [16:0] slv_ram_be; wire zcp_dmc_dat_err0_stat; wire zcp_dmc_dat_err1_stat; wire zcp_dmc_dat_err2_stat; wire zcp_dmc_dat_err3_stat; wire [7:0] tt_rdc_reg; wire [7:0] fflp_rdc; wire [3:0] tt_state; wire [1:0] req_load_state; wire [1:0] req_unload_state; wire [3:0] rsp_load_state; wire [3:0] rsp_unload_state; wire zcp_tt_index_err_stat; wire slv_tt_index_err_stat; wire rsp_tt_index_err_stat; wire tt_program_err_stat; wire rspfifo_uncorr_err_stat; wire rrfifo_overrun_stat; wire rrfifo_underrun_stat; wire ld_ram_addr_trail; // rdc specific // vlint flag_dangling_net_within_module off // vlint flag_net_has_no_load off wire [7:0] sel_rdc; // vlint flag_dangling_net_within_module on // vlint flag_net_has_no_load on reg [3:0] rdc ; wire [3:0] rdc0; wire [3:0] rdc1; wire [3:0] rdc2; wire [3:0] rdc3; wire [3:0] rdc4; wire [3:0] rdc5; wire [3:0] rdc6; wire [3:0] rdc7; wire [3:0] rdc8; wire [3:0] rdc9; wire [3:0] rdc10; wire [3:0] rdc11; wire [3:0] rdc12; wire [3:0] rdc13; wire [3:0] rdc14; wire [3:0] rdc15; wire [3:0] rdc16; wire [3:0] rdc17; wire [3:0] rdc18; wire [3:0] rdc19; wire [3:0] rdc20; wire [3:0] rdc21; wire [3:0] rdc22; wire [3:0] rdc23; wire [3:0] rdc24; wire [3:0] rdc25; wire [3:0] rdc26; wire [3:0] rdc27; wire [3:0] rdc28; wire [3:0] rdc29; wire [3:0] rdc30; wire [3:0] rdc31; wire [3:0] rdc32; wire [3:0] rdc33; wire [3:0] rdc34; wire [3:0] rdc35; wire [3:0] rdc36; wire [3:0] rdc37; wire [3:0] rdc38; wire [3:0] rdc39; wire [3:0] rdc40; wire [3:0] rdc41; wire [3:0] rdc42; wire [3:0] rdc43; wire [3:0] rdc44; wire [3:0] rdc45; wire [3:0] rdc46; wire [3:0] rdc47; wire [3:0] rdc48; wire [3:0] rdc49; wire [3:0] rdc50; wire [3:0] rdc51; wire [3:0] rdc52; wire [3:0] rdc53; wire [3:0] rdc54; wire [3:0] rdc55; wire [3:0] rdc56; wire [3:0] rdc57; wire [3:0] rdc58; wire [3:0] rdc59; wire [3:0] rdc60; wire [3:0] rdc61; wire [3:0] rdc62; wire [3:0] rdc63; wire [3:0] rdc64; wire [3:0] rdc65; wire [3:0] rdc66; wire [3:0] rdc67; wire [3:0] rdc68; wire [3:0] rdc69; wire [3:0] rdc70; wire [3:0] rdc71; wire [3:0] rdc72; wire [3:0] rdc73; wire [3:0] rdc74; wire [3:0] rdc75; wire [3:0] rdc76; wire [3:0] rdc77; wire [3:0] rdc78; wire [3:0] rdc79; wire [3:0] rdc80; wire [3:0] rdc81; wire [3:0] rdc82; wire [3:0] rdc83; wire [3:0] rdc84; wire [3:0] rdc85; wire [3:0] rdc86; wire [3:0] rdc87; wire [3:0] rdc88; wire [3:0] rdc89; wire [3:0] rdc90; wire [3:0] rdc91; wire [3:0] rdc92; wire [3:0] rdc93; wire [3:0] rdc94; wire [3:0] rdc95; wire [3:0] rdc96; wire [3:0] rdc97; wire [3:0] rdc98; wire [3:0] rdc99; wire [3:0] rdc100; wire [3:0] rdc101; wire [3:0] rdc102; wire [3:0] rdc103; wire [3:0] rdc104; wire [3:0] rdc105; wire [3:0] rdc106; wire [3:0] rdc107; wire [3:0] rdc108; wire [3:0] rdc109; wire [3:0] rdc110; wire [3:0] rdc111; wire [3:0] rdc112; wire [3:0] rdc113; wire [3:0] rdc114; wire [3:0] rdc115; wire [3:0] rdc116; wire [3:0] rdc117; wire [3:0] rdc118; wire [3:0] rdc119; wire [3:0] rdc120; wire [3:0] rdc121; wire [3:0] rdc122; wire [3:0] rdc123; wire [3:0] rdc124; wire [3:0] rdc125; wire [3:0] rdc126; wire [3:0] rdc127; reg ld_rdc0; reg ld_rdc1; reg ld_rdc2; reg ld_rdc3; reg ld_rdc4; reg ld_rdc5; reg ld_rdc6; reg ld_rdc7; reg ld_rdc8; reg ld_rdc9; reg ld_rdc10; reg ld_rdc11; reg ld_rdc12; reg ld_rdc13; reg ld_rdc14; reg ld_rdc15; reg ld_rdc16; reg ld_rdc17; reg ld_rdc18; reg ld_rdc19; reg ld_rdc20; reg ld_rdc21; reg ld_rdc22; reg ld_rdc23; reg ld_rdc24; reg ld_rdc25; reg ld_rdc26; reg ld_rdc27; reg ld_rdc28; reg ld_rdc29; reg ld_rdc30; reg ld_rdc31; reg ld_rdc32; reg ld_rdc33; reg ld_rdc34; reg ld_rdc35; reg ld_rdc36; reg ld_rdc37; reg ld_rdc38; reg ld_rdc39; reg ld_rdc40; reg ld_rdc41; reg ld_rdc42; reg ld_rdc43; reg ld_rdc44; reg ld_rdc45; reg ld_rdc46; reg ld_rdc47; reg ld_rdc48; reg ld_rdc49; reg ld_rdc50; reg ld_rdc51; reg ld_rdc52; reg ld_rdc53; reg ld_rdc54; reg ld_rdc55; reg ld_rdc56; reg ld_rdc57; reg ld_rdc58; reg ld_rdc59; reg ld_rdc60; reg ld_rdc61; reg ld_rdc62; reg ld_rdc63; reg ld_rdc64; reg ld_rdc65; reg ld_rdc66; reg ld_rdc67; reg ld_rdc68; reg ld_rdc69; reg ld_rdc70; reg ld_rdc71; reg ld_rdc72; reg ld_rdc73; reg ld_rdc74; reg ld_rdc75; reg ld_rdc76; reg ld_rdc77; reg ld_rdc78; reg ld_rdc79; reg ld_rdc80; reg ld_rdc81; reg ld_rdc82; reg ld_rdc83; reg ld_rdc84; reg ld_rdc85; reg ld_rdc86; reg ld_rdc87; reg ld_rdc88; reg ld_rdc89; reg ld_rdc90; reg ld_rdc91; reg ld_rdc92; reg ld_rdc93; reg ld_rdc94; reg ld_rdc95; reg ld_rdc96; reg ld_rdc97; reg ld_rdc98; reg ld_rdc99; reg ld_rdc100; reg ld_rdc101; reg ld_rdc102; reg ld_rdc103; reg ld_rdc104; reg ld_rdc105; reg ld_rdc106; reg ld_rdc107; reg ld_rdc108; reg ld_rdc109; reg ld_rdc110; reg ld_rdc111; reg ld_rdc112; reg ld_rdc113; reg ld_rdc114; reg ld_rdc115; reg ld_rdc116; reg ld_rdc117; reg ld_rdc118; reg ld_rdc119; reg ld_rdc120; reg ld_rdc121; reg ld_rdc122; reg ld_rdc123; reg ld_rdc124; reg ld_rdc125; reg ld_rdc126; reg ld_rdc127; /* ----------- Read and Write logic ------------------------ */ // regiser pio input signals always @ (posedge clk) begin rd_wr <= pio_clients_rd; end always @ (posedge clk) begin zcp_sel <= pio_zcp_sel; end always @ (posedge clk) begin addr_reg <= pio_clients_addr[19:0]; end always @ (posedge clk) begin wr_data <= pio_clients_wdata[31:0]; end // vlint flag_dangling_net_within_module off // vlint flag_net_has_no_load off wire zcp_sel_lead; wire zcp_sel_trail; wire rd_en = zcp_sel & rd_wr; wire rac_ok = zcp_sel_lead & rd_wr; // vlint flag_dangling_net_within_module on // vlint flag_net_has_no_load on wire wr_en = zcp_sel_lead & (~rd_wr) & (~addr_reg[2]); // prohibit illegal 32bit write zcp_pls_gen2 zcp_sel_pls_gen2(.sig_in(zcp_sel), .clk(clk), .lead(zcp_sel_lead), .trail(zcp_sel_trail)); // register pio output signals wire [31:0] rd_data_temp = addr_reg[2] ? 32'b0 : rd_data; // reserved field read. always @ (posedge clk) begin zcp_pio_rdata <= {32'b0,rd_data_temp[31:0]}; end always @ (posedge clk) begin zcp_sel_lead_d1 <= zcp_sel_lead; zcp_sel_lead_d2 <= zcp_sel_lead_d1; ackgen <= zcp_sel_lead_d2; zcp_pio_ack <= ackgen; end assign addr_err = non_qualified_addr_err & ackgen; always @ (posedge clk) begin zcp_pio_err <= addr_err; end always @ (/*AUTOSENSE*/addr_reg or buf16_region_ctl or buf32_region_ctl or buf4_region_ctl or buf8_region_ctl or chk_bit_data or config1 or ds16_region_ctl or ds32_region_ctl or ds4_region_ctl or ds8_region_ctl or ecc_err_ctl0 or ecc_err_ctl1 or ecc_err_ctl2 or ecc_err_ctl3 or ififo_state or kickoff_tt_reg or mask or ram_addr or ram_be or ram_data0 or ram_data1 or ram_data2 or ram_data3 or ram_data4 or rdc0 or rdc1 or rdc10 or rdc100 or rdc101 or rdc102 or rdc103 or rdc104 or rdc105 or rdc106 or rdc107 or rdc108 or rdc109 or rdc11 or rdc110 or rdc111 or rdc112 or rdc113 or rdc114 or rdc115 or rdc116 or rdc117 or rdc118 or rdc119 or rdc12 or rdc120 or rdc121 or rdc122 or rdc123 or rdc124 or rdc125 or rdc126 or rdc127 or rdc13 or rdc14 or rdc15 or rdc16 or rdc17 or rdc18 or rdc19 or rdc2 or rdc20 or rdc21 or rdc22 or rdc23 or rdc24 or rdc25 or rdc26 or rdc27 or rdc28 or rdc29 or rdc3 or rdc30 or rdc31 or rdc32 or rdc33 or rdc34 or rdc35 or rdc36 or rdc37 or rdc38 or rdc39 or rdc4 or rdc40 or rdc41 or rdc42 or rdc43 or rdc44 or rdc45 or rdc46 or rdc47 or rdc48 or rdc49 or rdc5 or rdc50 or rdc51 or rdc52 or rdc53 or rdc54 or rdc55 or rdc56 or rdc57 or rdc58 or rdc59 or rdc6 or rdc60 or rdc61 or rdc62 or rdc63 or rdc64 or rdc65 or rdc66 or rdc67 or rdc68 or rdc69 or rdc7 or rdc70 or rdc71 or rdc72 or rdc73 or rdc74 or rdc75 or rdc76 or rdc77 or rdc78 or rdc79 or rdc8 or rdc80 or rdc81 or rdc82 or rdc83 or rdc84 or rdc85 or rdc86 or rdc87 or rdc88 or rdc89 or rdc9 or rdc90 or rdc91 or rdc92 or rdc93 or rdc94 or rdc95 or rdc96 or rdc97 or rdc98 or rdc99 or req_load_state or req_unload_state or reset_cfifo0 or reset_cfifo1 or reset_cfifo2 or reset_cfifo3 or rsp_load_state or rsp_unload_state or status_dout or training_vector or tt_state or wr_en) begin non_qualified_addr_err = 0; rd_data = 32'hDEADBEEF; ld_config1 = 0; ld_status = 0; w1c_status = 0; ld_mask = 0; ld_buf4_region_ctl = 0; ld_buf8_region_ctl = 0; ld_buf16_region_ctl= 0; ld_buf32_region_ctl= 0; ld_ds4_region_ctl = 0; ld_ds8_region_ctl = 0; ld_ds16_region_ctl = 0; ld_ds32_region_ctl = 0; ld_ram_data0 = 0; ld_ram_data1 = 0; ld_ram_data2 = 0; ld_ram_data3 = 0; ld_ram_data4 = 0; ld_ram_be = 0; ld_ram_addr = 0; ld_chk_bit_data = 0; ld_reset_cfifo = 0; ld_ecc_err_ctl0 = 0; ld_ecc_err_ctl1 = 0; ld_ecc_err_ctl2 = 0; ld_ecc_err_ctl3 = 0; ld_training_vector = 0; // ram selection ld_rdc0 = 0; ld_rdc1 = 0; ld_rdc2 = 0; ld_rdc3 = 0; ld_rdc4 = 0; ld_rdc5 = 0; ld_rdc6 = 0; ld_rdc7 = 0; ld_rdc8 = 0; ld_rdc9 = 0; ld_rdc10 = 0; ld_rdc11 = 0; ld_rdc12 = 0; ld_rdc13 = 0; ld_rdc14 = 0; ld_rdc15 = 0; ld_rdc16 = 0; ld_rdc17 = 0; ld_rdc18 = 0; ld_rdc19 = 0; ld_rdc20 = 0; ld_rdc21 = 0; ld_rdc22 = 0; ld_rdc23 = 0; ld_rdc24 = 0; ld_rdc25 = 0; ld_rdc26 = 0; ld_rdc27 = 0; ld_rdc28 = 0; ld_rdc29 = 0; ld_rdc30 = 0; ld_rdc31 = 0; ld_rdc32 = 0; ld_rdc33 = 0; ld_rdc34 = 0; ld_rdc35 = 0; ld_rdc36 = 0; ld_rdc37 = 0; ld_rdc38 = 0; ld_rdc39 = 0; ld_rdc40 = 0; ld_rdc41 = 0; ld_rdc42 = 0; ld_rdc43 = 0; ld_rdc44 = 0; ld_rdc45 = 0; ld_rdc46 = 0; ld_rdc47 = 0; ld_rdc48 = 0; ld_rdc49 = 0; ld_rdc50 = 0; ld_rdc51 = 0; ld_rdc52 = 0; ld_rdc53 = 0; ld_rdc54 = 0; ld_rdc55 = 0; ld_rdc56 = 0; ld_rdc57 = 0; ld_rdc58 = 0; ld_rdc59 = 0; ld_rdc60 = 0; ld_rdc61 = 0; ld_rdc62 = 0; ld_rdc63 = 0; ld_rdc64 = 0; ld_rdc65 = 0; ld_rdc66 = 0; ld_rdc67 = 0; ld_rdc68 = 0; ld_rdc69 = 0; ld_rdc70 = 0; ld_rdc71 = 0; ld_rdc72 = 0; ld_rdc73 = 0; ld_rdc74 = 0; ld_rdc75 = 0; ld_rdc76 = 0; ld_rdc77 = 0; ld_rdc78 = 0; ld_rdc79 = 0; ld_rdc80 = 0; ld_rdc81 = 0; ld_rdc82 = 0; ld_rdc83 = 0; ld_rdc84 = 0; ld_rdc85 = 0; ld_rdc86 = 0; ld_rdc87 = 0; ld_rdc88 = 0; ld_rdc89 = 0; ld_rdc90 = 0; ld_rdc91 = 0; ld_rdc92 = 0; ld_rdc93 = 0; ld_rdc94 = 0; ld_rdc95 = 0; ld_rdc96 = 0; ld_rdc97 = 0; ld_rdc98 = 0; ld_rdc99 = 0; ld_rdc100 = 0; ld_rdc101 = 0; ld_rdc102 = 0; ld_rdc103 = 0; ld_rdc104 = 0; ld_rdc105 = 0; ld_rdc106 = 0; ld_rdc107 = 0; ld_rdc108 = 0; ld_rdc109 = 0; ld_rdc110 = 0; ld_rdc111 = 0; ld_rdc112 = 0; ld_rdc113 = 0; ld_rdc114 = 0; ld_rdc115 = 0; ld_rdc116 = 0; ld_rdc117 = 0; ld_rdc118 = 0; ld_rdc119 = 0; ld_rdc120 = 0; ld_rdc121 = 0; ld_rdc122 = 0; ld_rdc123 = 0; ld_rdc124 = 0; ld_rdc125 = 0; ld_rdc126 = 0; ld_rdc127 = 0; /* ----------------------------------------------- */ if (~addr_reg[16]) case ({addr_reg[11:3],3'b0}) // synopsys parallel_case full_case infer_mux 12'h000:begin // Config1 Register ld_config1 = wr_en; rd_data = config1; end /* --- Functional status register w/ w1c ---- */ 12'h008:begin // Status Register w1c_status = wr_en; rd_data = status_dout; end 12'h010:begin // Mask Register ld_mask = wr_en; rd_data = mask; end /* --- tt va_ram access control registers --- */ 12'h018:begin ld_buf4_region_ctl = wr_en; rd_data = buf4_region_ctl; end 12'h020:begin ld_buf8_region_ctl = wr_en; rd_data = buf8_region_ctl; end 12'h028:begin ld_buf16_region_ctl= wr_en; rd_data = buf16_region_ctl; end 12'h030:begin ld_buf32_region_ctl= wr_en; rd_data = buf32_region_ctl; end /* --- dn&st ram access control registers --- */ 12'h038:begin ld_ds4_region_ctl = wr_en; rd_data = ds4_region_ctl; end 12'h040:begin ld_ds8_region_ctl = wr_en; rd_data = ds8_region_ctl; end 12'h048:begin ld_ds16_region_ctl= wr_en; rd_data = ds16_region_ctl; end 12'h050:begin ld_ds32_region_ctl= wr_en; rd_data = ds32_region_ctl; end /* ------ zcp ram access data register ------ */ 12'h058:begin // ld_ram_data0 = wr_en; rd_data = ram_data0[31:0]; end 12'h060:begin // ld_ram_data1 = wr_en; rd_data = ram_data1[31:0]; end 12'h068:begin // ld_ram_data2 = wr_en; rd_data = ram_data2[31:0]; end 12'h070:begin // ld_ram_data3 = wr_en; rd_data = ram_data3[31:0]; end 12'h078:begin // ld_ram_data4 = wr_en; rd_data = {24'b0,ram_data4[7:0]}; end /* ------ zcp ram access bit enable register ------ */ 12'h080:begin // ld_ram_be = wr_en; rd_data = {15'b0,ram_be[16:0]}; end 12'h088:begin // ld_ram_addr = wr_en; rd_data = ram_addr[31:0]; end /* -------- par data register ------------------- */ 12'h090:begin // ld_chk_bit_data = wr_en; rd_data = {15'b0,chk_bit_data}; end /* -------- reset cfifo register ---------------- */ 12'h098:begin // ld_reset_cfifo = wr_en; rd_data = {28'b0,reset_cfifo3,reset_cfifo2,reset_cfifo1,reset_cfifo0}; end /* -------- ecc_err_ctl0 ------------------------ */ 12'h0a0:begin // ld_ecc_err_ctl0 = wr_en; rd_data = ecc_err_ctl0; end /* -------- ecc_err_ctl1 ------------------------ */ 12'h0a8:begin // ld_ecc_err_ctl1 = wr_en; rd_data = ecc_err_ctl1; end /* -------- ecc_err_ctl2 ------------------------ */ 12'h0b0:begin // ld_ecc_err_ctl2 = wr_en; rd_data = ecc_err_ctl2; end /* -------- ecc_err_ctl3 ------------------------ */ 12'h0b8:begin // ld_ecc_err_ctl3 = wr_en; rd_data = ecc_err_ctl3; end /* -------- debug_training_vector --------------- */ 12'h0c0:begin // ld_training_vector = wr_en; rd_data = training_vector; end /* -------- err log register -------------------- */ 12'h0c8: rd_data = {12'b0, kickoff_tt_reg, ififo_state[2:0], rsp_unload_state[3:0], // 4b rsp_load_state[3:0], // 4b req_unload_state[1:0], // 2b req_load_state[1:0], // 2b tt_state[3:0]}; // 4b /* --- Test status register w/o w1c ---- */ 12'h108:begin // Status Register ld_status = wr_en; rd_data = status_dout; end default:begin rd_data = 32'hdead_beef; non_qualified_addr_err = 1; end endcase /* -------- rdc registers ---------------------- */ else if (addr_reg[16]) // rdc case ({addr_reg[11:3],3'b0}) // synopsys parallel_case full_case infer_mux 12'h0 :begin ld_rdc0 = wr_en; rd_data = {28'b0,rdc0}; end 12'h8 :begin ld_rdc1 = wr_en; rd_data = {28'b0,rdc1}; end 12'h10 :begin ld_rdc2 = wr_en; rd_data = {28'b0,rdc2}; end 12'h18 :begin ld_rdc3 = wr_en; rd_data = {28'b0,rdc3}; end 12'h20 :begin ld_rdc4 = wr_en; rd_data = {28'b0,rdc4}; end 12'h28 :begin ld_rdc5 = wr_en; rd_data = {28'b0,rdc5}; end 12'h30 :begin ld_rdc6 = wr_en; rd_data = {28'b0,rdc6}; end 12'h38 :begin ld_rdc7 = wr_en; rd_data = {28'b0,rdc7}; end 12'h40 :begin ld_rdc8 = wr_en; rd_data = {28'b0,rdc8}; end 12'h48 :begin ld_rdc9 = wr_en; rd_data = {28'b0,rdc9}; end 12'h50 :begin ld_rdc10 = wr_en; rd_data = {28'b0,rdc10}; end 12'h58 :begin ld_rdc11 = wr_en; rd_data = {28'b0,rdc11}; end 12'h60 :begin ld_rdc12 = wr_en; rd_data = {28'b0,rdc12}; end 12'h68 :begin ld_rdc13 = wr_en; rd_data = {28'b0,rdc13}; end 12'h70 :begin ld_rdc14 = wr_en; rd_data = {28'b0,rdc14}; end 12'h78 :begin ld_rdc15 = wr_en; rd_data = {28'b0,rdc15}; end 12'h80 :begin ld_rdc16 = wr_en; rd_data = {28'b0,rdc16}; end 12'h88 :begin ld_rdc17 = wr_en; rd_data = {28'b0,rdc17}; end 12'h90 :begin ld_rdc18 = wr_en; rd_data = {28'b0,rdc18}; end 12'h98 :begin ld_rdc19 = wr_en; rd_data = {28'b0,rdc19}; end 12'ha0 :begin ld_rdc20 = wr_en; rd_data = {28'b0,rdc20}; end 12'ha8 :begin ld_rdc21 = wr_en; rd_data = {28'b0,rdc21}; end 12'hb0 :begin ld_rdc22 = wr_en; rd_data = {28'b0,rdc22}; end 12'hb8 :begin ld_rdc23 = wr_en; rd_data = {28'b0,rdc23}; end 12'hc0 :begin ld_rdc24 = wr_en; rd_data = {28'b0,rdc24}; end 12'hc8 :begin ld_rdc25 = wr_en; rd_data = {28'b0,rdc25}; end 12'hd0 :begin ld_rdc26 = wr_en; rd_data = {28'b0,rdc26}; end 12'hd8 :begin ld_rdc27 = wr_en; rd_data = {28'b0,rdc27}; end 12'he0 :begin ld_rdc28 = wr_en; rd_data = {28'b0,rdc28}; end 12'he8 :begin ld_rdc29 = wr_en; rd_data = {28'b0,rdc29}; end 12'hf0 :begin ld_rdc30 = wr_en; rd_data = {28'b0,rdc30}; end 12'hf8 :begin ld_rdc31 = wr_en; rd_data = {28'b0,rdc31}; end 12'h100:begin ld_rdc32 = wr_en; rd_data = {28'b0,rdc32}; end 12'h108:begin ld_rdc33 = wr_en; rd_data = {28'b0,rdc33}; end 12'h110:begin ld_rdc34 = wr_en; rd_data = {28'b0,rdc34}; end 12'h118:begin ld_rdc35 = wr_en; rd_data = {28'b0,rdc35}; end 12'h120:begin ld_rdc36 = wr_en; rd_data = {28'b0,rdc36}; end 12'h128:begin ld_rdc37 = wr_en; rd_data = {28'b0,rdc37}; end 12'h130:begin ld_rdc38 = wr_en; rd_data = {28'b0,rdc38}; end 12'h138:begin ld_rdc39 = wr_en; rd_data = {28'b0,rdc39}; end 12'h140:begin ld_rdc40 = wr_en; rd_data = {28'b0,rdc40}; end 12'h148:begin ld_rdc41 = wr_en; rd_data = {28'b0,rdc41}; end 12'h150:begin ld_rdc42 = wr_en; rd_data = {28'b0,rdc42}; end 12'h158:begin ld_rdc43 = wr_en; rd_data = {28'b0,rdc43}; end 12'h160:begin ld_rdc44 = wr_en; rd_data = {28'b0,rdc44}; end 12'h168:begin ld_rdc45 = wr_en; rd_data = {28'b0,rdc45}; end 12'h170:begin ld_rdc46 = wr_en; rd_data = {28'b0,rdc46}; end 12'h178:begin ld_rdc47 = wr_en; rd_data = {28'b0,rdc47}; end 12'h180:begin ld_rdc48 = wr_en; rd_data = {28'b0,rdc48}; end 12'h188:begin ld_rdc49 = wr_en; rd_data = {28'b0,rdc49}; end 12'h190:begin ld_rdc50 = wr_en; rd_data = {28'b0,rdc50}; end 12'h198:begin ld_rdc51 = wr_en; rd_data = {28'b0,rdc51}; end 12'h1a0:begin ld_rdc52 = wr_en; rd_data = {28'b0,rdc52}; end 12'h1a8:begin ld_rdc53 = wr_en; rd_data = {28'b0,rdc53}; end 12'h1b0:begin ld_rdc54 = wr_en; rd_data = {28'b0,rdc54}; end 12'h1b8:begin ld_rdc55 = wr_en; rd_data = {28'b0,rdc55}; end 12'h1c0:begin ld_rdc56 = wr_en; rd_data = {28'b0,rdc56}; end 12'h1c8:begin ld_rdc57 = wr_en; rd_data = {28'b0,rdc57}; end 12'h1d0:begin ld_rdc58 = wr_en; rd_data = {28'b0,rdc58}; end 12'h1d8:begin ld_rdc59 = wr_en; rd_data = {28'b0,rdc59}; end 12'h1e0:begin ld_rdc60 = wr_en; rd_data = {28'b0,rdc60}; end 12'h1e8:begin ld_rdc61 = wr_en; rd_data = {28'b0,rdc61}; end 12'h1f0:begin ld_rdc62 = wr_en; rd_data = {28'b0,rdc62}; end 12'h1f8:begin ld_rdc63 = wr_en; rd_data = {28'b0,rdc63}; end 12'h200:begin ld_rdc64 = wr_en; rd_data = {28'b0,rdc64}; end 12'h208:begin ld_rdc65 = wr_en; rd_data = {28'b0,rdc65}; end 12'h210:begin ld_rdc66 = wr_en; rd_data = {28'b0,rdc66}; end 12'h218:begin ld_rdc67 = wr_en; rd_data = {28'b0,rdc67}; end 12'h220:begin ld_rdc68 = wr_en; rd_data = {28'b0,rdc68}; end 12'h228:begin ld_rdc69 = wr_en; rd_data = {28'b0,rdc69}; end 12'h230:begin ld_rdc70 = wr_en; rd_data = {28'b0,rdc70}; end 12'h238:begin ld_rdc71 = wr_en; rd_data = {28'b0,rdc71}; end 12'h240:begin ld_rdc72 = wr_en; rd_data = {28'b0,rdc72}; end 12'h248:begin ld_rdc73 = wr_en; rd_data = {28'b0,rdc73}; end 12'h250:begin ld_rdc74 = wr_en; rd_data = {28'b0,rdc74}; end 12'h258:begin ld_rdc75 = wr_en; rd_data = {28'b0,rdc75}; end 12'h260:begin ld_rdc76 = wr_en; rd_data = {28'b0,rdc76}; end 12'h268:begin ld_rdc77 = wr_en; rd_data = {28'b0,rdc77}; end 12'h270:begin ld_rdc78 = wr_en; rd_data = {28'b0,rdc78}; end 12'h278:begin ld_rdc79 = wr_en; rd_data = {28'b0,rdc79}; end 12'h280:begin ld_rdc80 = wr_en; rd_data = {28'b0,rdc80}; end 12'h288:begin ld_rdc81 = wr_en; rd_data = {28'b0,rdc81}; end 12'h290:begin ld_rdc82 = wr_en; rd_data = {28'b0,rdc82}; end 12'h298:begin ld_rdc83 = wr_en; rd_data = {28'b0,rdc83}; end 12'h2a0:begin ld_rdc84 = wr_en; rd_data = {28'b0,rdc84}; end 12'h2a8:begin ld_rdc85 = wr_en; rd_data = {28'b0,rdc85}; end 12'h2b0:begin ld_rdc86 = wr_en; rd_data = {28'b0,rdc86}; end 12'h2b8:begin ld_rdc87 = wr_en; rd_data = {28'b0,rdc87}; end 12'h2c0:begin ld_rdc88 = wr_en; rd_data = {28'b0,rdc88}; end 12'h2c8:begin ld_rdc89 = wr_en; rd_data = {28'b0,rdc89}; end 12'h2d0:begin ld_rdc90 = wr_en; rd_data = {28'b0,rdc90}; end 12'h2d8:begin ld_rdc91 = wr_en; rd_data = {28'b0,rdc91}; end 12'h2e0:begin ld_rdc92 = wr_en; rd_data = {28'b0,rdc92}; end 12'h2e8:begin ld_rdc93 = wr_en; rd_data = {28'b0,rdc93}; end 12'h2f0:begin ld_rdc94 = wr_en; rd_data = {28'b0,rdc94}; end 12'h2f8:begin ld_rdc95 = wr_en; rd_data = {28'b0,rdc95}; end 12'h300:begin ld_rdc96 = wr_en; rd_data = {28'b0,rdc96}; end 12'h308:begin ld_rdc97 = wr_en; rd_data = {28'b0,rdc97}; end 12'h310:begin ld_rdc98 = wr_en; rd_data = {28'b0,rdc98}; end 12'h318:begin ld_rdc99 = wr_en; rd_data = {28'b0,rdc99}; end 12'h320:begin ld_rdc100 = wr_en; rd_data = {28'b0,rdc100}; end 12'h328:begin ld_rdc101 = wr_en; rd_data = {28'b0,rdc101}; end 12'h330:begin ld_rdc102 = wr_en; rd_data = {28'b0,rdc102}; end 12'h338:begin ld_rdc103 = wr_en; rd_data = {28'b0,rdc103}; end 12'h340:begin ld_rdc104 = wr_en; rd_data = {28'b0,rdc104}; end 12'h348:begin ld_rdc105 = wr_en; rd_data = {28'b0,rdc105}; end 12'h350:begin ld_rdc106 = wr_en; rd_data = {28'b0,rdc106}; end 12'h358:begin ld_rdc107 = wr_en; rd_data = {28'b0,rdc107}; end 12'h360:begin ld_rdc108 = wr_en; rd_data = {28'b0,rdc108}; end 12'h368:begin ld_rdc109 = wr_en; rd_data = {28'b0,rdc109}; end 12'h370:begin ld_rdc110 = wr_en; rd_data = {28'b0,rdc110}; end 12'h378:begin ld_rdc111 = wr_en; rd_data = {28'b0,rdc111}; end 12'h380:begin ld_rdc112 = wr_en; rd_data = {28'b0,rdc112}; end 12'h388:begin ld_rdc113 = wr_en; rd_data = {28'b0,rdc113}; end 12'h390:begin ld_rdc114 = wr_en; rd_data = {28'b0,rdc114}; end 12'h398:begin ld_rdc115 = wr_en; rd_data = {28'b0,rdc115}; end 12'h3a0:begin ld_rdc116 = wr_en; rd_data = {28'b0,rdc116}; end 12'h3a8:begin ld_rdc117 = wr_en; rd_data = {28'b0,rdc117}; end 12'h3b0:begin ld_rdc118 = wr_en; rd_data = {28'b0,rdc118}; end 12'h3b8:begin ld_rdc119 = wr_en; rd_data = {28'b0,rdc119}; end 12'h3c0:begin ld_rdc120 = wr_en; rd_data = {28'b0,rdc120}; end 12'h3c8:begin ld_rdc121 = wr_en; rd_data = {28'b0,rdc121}; end 12'h3d0:begin ld_rdc122 = wr_en; rd_data = {28'b0,rdc122}; end 12'h3d8:begin ld_rdc123 = wr_en; rd_data = {28'b0,rdc123}; end 12'h3e0:begin ld_rdc124 = wr_en; rd_data = {28'b0,rdc124}; end 12'h3e8:begin ld_rdc125 = wr_en; rd_data = {28'b0,rdc125}; end 12'h3f0:begin ld_rdc126 = wr_en; rd_data = {28'b0,rdc126}; end 12'h3f8:begin ld_rdc127 = wr_en; rd_data = {28'b0,rdc127}; end default:begin rd_data = 32'hdead_beef; non_qualified_addr_err = 1; end endcase else begin rd_data = 32'hdead_beef; non_qualified_addr_err = 1; end end // always @ (... /* -------------------- config1 Register -------------------- */ zcp_xREG #(25) config1_xREG (.clk(clk), .reset(reset[0]), .en(ld_config1), .din(wr_data[24:0]), .qout(config1[24:0])); wire tt_en = config1[0]; wire req_dis = config1[1]; wire rsp_dis = config1[2]; wire par_chk_dis = config1[3]; // disable parity check wire ecc_chk_dis = config1[4]; wire [10:0] dmaw_threshold = config1[15:5]; wire [7:0] zcp_debug_sel = config1[23:16]; wire zcp_32bit_mode = config1[24]; assign config1[31:25] = 0; /* --------------------- Status Register -------------------- */ zcp_w1c_ff stat0 (.clk(clk),.reset(reset[1]),.set(zcp_dmc_dat_err0),.ld(ld_status),.w1c(w1c_status),.w1c_data(wr_data[0]),.q(zcp_dmc_dat_err0_stat)); zcp_w1c_ff stat1 (.clk(clk),.reset(reset[1]),.set(zcp_dmc_dat_err1),.ld(ld_status),.w1c(w1c_status),.w1c_data(wr_data[1]),.q(zcp_dmc_dat_err1_stat)); zcp_w1c_ff stat2 (.clk(clk),.reset(reset[1]),.set(zcp_dmc_dat_err2),.ld(ld_status),.w1c(w1c_status),.w1c_data(wr_data[2]),.q(zcp_dmc_dat_err2_stat)); zcp_w1c_ff stat3 (.clk(clk),.reset(reset[1]),.set(zcp_dmc_dat_err3),.ld(ld_status),.w1c(w1c_status),.w1c_data(wr_data[3]),.q(zcp_dmc_dat_err3_stat)); zcp_w1c_ff stat4 (.clk(clk),.reset(reset[1]),.set(zcp_tt_index_err),.ld(ld_status),.w1c(w1c_status),.w1c_data(wr_data[4]),.q(zcp_tt_index_err_stat)); zcp_w1c_ff stat5 (.clk(clk),.reset(reset[1]),.set(slv_tt_index_err),.ld(ld_status),.w1c(w1c_status),.w1c_data(wr_data[5]),.q(slv_tt_index_err_stat)); zcp_w1c_ff stat6 (.clk(clk),.reset(reset[1]),.set(rsp_tt_index_err),.ld(ld_status),.w1c(w1c_status),.w1c_data(wr_data[6]),.q(rsp_tt_index_err_stat)); zcp_w1c_ff stat7 (.clk(clk),.reset(reset[1]),.set(set_tt_program_err),.ld(ld_status),.w1c(w1c_status),.w1c_data(wr_data[7]),.q(tt_program_err_stat)); // vlint flag_null_instance_port off // vlint flag_unmatched_port_connect_in_inst off zcp_pls_gen2_reg va_ram_perr_pls_gen2(.clk(clk),.sig_in(va_ram_perr),.lead(va_ram_perr_pls),.trail()); zcp_pls_gen2_reg dn_ram_perr_pls_gen2(.clk(clk),.sig_in(dn_ram_perr),.lead(dn_ram_perr_pls),.trail()); zcp_pls_gen2_reg st_ram_perr_pls_gen2(.clk(clk),.sig_in(st_ram_perr),.lead(st_ram_perr_pls),.trail()); // vlint flag_null_instance_port on // vlint flag_unmatched_port_connect_in_inst on zcp_w1c_ff stat8 (.clk(clk),.reset(reset[1]),.set(va_ram_perr_pls),.ld(ld_status),.w1c(w1c_status),.w1c_data(wr_data[8]), .q(va_ram_perr_stat)); zcp_w1c_ff stat9 (.clk(clk),.reset(reset[1]),.set(dn_ram_perr_pls),.ld(ld_status),.w1c(w1c_status),.w1c_data(wr_data[9]), .q(dn_ram_perr_stat)); zcp_w1c_ff stat10(.clk(clk),.reset(reset[1]),.set(st_ram_perr_pls),.ld(ld_status),.w1c(w1c_status),.w1c_data(wr_data[10]),.q(st_ram_perr_stat)); zcp_w1c_ff stat11(.clk(clk),.reset(reset[1]),.set(ififo_overrun), .ld(ld_status),.w1c(w1c_status),.w1c_data(wr_data[11]),.q(ififo_overrun_stat)); zcp_w1c_ff stat12(.clk(clk),.reset(reset[1]),.set(rspfifo_uncorr_err),.ld(ld_status),.w1c(w1c_status),.w1c_data(wr_data[12]),.q(rspfifo_uncorr_err_stat)); zcp_w1c_ff stat14(.clk(clk),.reset(reset[1]),.set(rrfifo_overrun), .ld(ld_status),.w1c(w1c_status),.w1c_data(wr_data[14]),.q(rrfifo_overrun_stat)); zcp_w1c_ff stat15(.clk(clk),.reset(reset[1]),.set(rrfifo_underrun),.ld(ld_status),.w1c(w1c_status),.w1c_data(wr_data[15]),.q(rrfifo_underrun_stat)); assign status_dout[0] = zcp_dmc_dat_err0_stat; assign status_dout[1] = zcp_dmc_dat_err1_stat; assign status_dout[2] = zcp_dmc_dat_err2_stat; assign status_dout[3] = zcp_dmc_dat_err3_stat; assign status_dout[4] = zcp_tt_index_err_stat; assign status_dout[5] = slv_tt_index_err_stat; assign status_dout[6] = rsp_tt_index_err_stat; assign status_dout[7] = tt_program_err_stat; assign status_dout[8] = va_ram_perr_stat; assign status_dout[9] = dn_ram_perr_stat; assign status_dout[10] = st_ram_perr_stat; assign status_dout[11] = ififo_overrun_stat; assign status_dout[12] = rspfifo_uncorr_err_stat; assign status_dout[13] = 0; assign status_dout[14] = rrfifo_overrun_stat; assign status_dout[15] = rrfifo_underrun_stat; assign status_dout[31:16] = 0; // Interrupt generation wire pio_intr = status_dout[0] & mask[0] | status_dout[1] & mask[1] | status_dout[2] & mask[2] | status_dout[3] & mask[3] | status_dout[4] & mask[4] | status_dout[5] & mask[5] | status_dout[6] & mask[6] | status_dout[7] & mask[7] | status_dout[8] & mask[8] | status_dout[9] & mask[9] | status_dout[10] & mask[10] | status_dout[11] & mask[11] | status_dout[12] & mask[12] | status_dout[14] & mask[14] | status_dout[15] & mask[15] ; always @ (posedge clk) begin zcp_pio_intr <= pio_intr; end /* ---------------------- Mask Register --------------------- */ zcp_xREG2 #(16) mask_xREG2( .clk(clk), .reset(reset[1]), .reset_value({16{1'b1}}), .load(ld_mask), .din(wr_data[15:0]), .qout(mask[15:0])); assign mask[31:16] = 16'b0; /* ---------------------- 4 buffer region_ctl --------------- */ zcp_xREG #(32) buf4_region_ctl_xREG( .clk(clk), .reset(reset[2]), .en(ld_buf4_region_ctl), .din(wr_data[31:0]), .qout(buf4_region_ctl[31:0])); wire [7:0] tt_offset0 = buf4_region_ctl[7:0]; wire [9:0] tt_index_start0 = buf4_region_ctl[19:10]; wire [9:0] tt_index_end0 = buf4_region_ctl[29:20]; wire tt_index_chk0 = buf4_region_ctl[30]; // vlint flag_dangling_net_within_module off // vlint flag_net_has_no_load off wire tt_index_rsv0 = buf4_region_ctl[31]; // vlint flag_net_has_no_load on // vlint flag_dangling_net_within_module on /* ---------------------- 8 buffer region_ctl --------------- */ zcp_xREG #(32) buf8_region_ctl_xREG( .clk(clk), .reset(reset[2]), .en(ld_buf8_region_ctl), .din(wr_data[31:0]), .qout(buf8_region_ctl[31:0])); wire [7:0] tt_offset1 = buf8_region_ctl[7:0]; wire [9:0] tt_index_start1 = buf8_region_ctl[19:10]; wire [9:0] tt_index_end1 = buf8_region_ctl[29:20]; wire tt_index_chk1 = buf8_region_ctl[30]; // vlint flag_dangling_net_within_module off // vlint flag_net_has_no_load off wire tt_index_rsv1 = buf8_region_ctl[31]; // vlint flag_net_has_no_load on // vlint flag_dangling_net_within_module on /* --------------------- 16 buffer region_ctl --------------- */ zcp_xREG #(32) buf16_region_ctl_xREG( .clk(clk), .reset(reset[3]), .en(ld_buf16_region_ctl), .din(wr_data[31:0]), .qout(buf16_region_ctl[31:0])); wire [7:0] tt_offset2 = buf16_region_ctl[7:0]; wire [9:0] tt_index_start2 = buf16_region_ctl[19:10]; wire [9:0] tt_index_end2 = buf16_region_ctl[29:20]; wire tt_index_chk2 = buf16_region_ctl[30]; // vlint flag_dangling_net_within_module off // vlint flag_net_has_no_load off wire tt_index_rsv2 = buf16_region_ctl[31]; // vlint flag_net_has_no_load on // vlint flag_dangling_net_within_module on /* --------------------- 32 buffer region_ctl --------------- */ zcp_xREG #(32) buf32_region_ctl_xREG( .clk(clk), .reset(reset[3]), .en(ld_buf32_region_ctl), .din(wr_data[31:0]), .qout(buf32_region_ctl[31:0])); wire [7:0] tt_offset3 = buf32_region_ctl[7:0]; wire [9:0] tt_index_start3 = buf32_region_ctl[19:10]; wire [9:0] tt_index_end3 = buf32_region_ctl[29:20]; wire tt_index_chk3 = buf32_region_ctl[30]; // vlint flag_dangling_net_within_module off // vlint flag_net_has_no_load off wire tt_index_rsv3 = buf32_region_ctl[31]; // vlint flag_net_has_no_load on // vlint flag_dangling_net_within_module on // ds stands for dynamic and static table ram. /* ------------------- ds 4 buffer region_ctl --------------- */ zcp_xREG #(10) ds4_region_ctl_xREG( .clk(clk), .reset(reset[4]), .en(ld_ds4_region_ctl), .din(wr_data[9:0]), .qout(ds4_region_ctl[9:0])); wire [9:0] ds_offset0 = ds4_region_ctl[9:0]; assign ds4_region_ctl[31:10] = 0; /* ------------------- ds8 buffer region_ctl --------------- */ zcp_xREG #(10) ds8_region_ctl_xREG( .clk(clk), .reset(reset[4]), .en(ld_ds8_region_ctl), .din(wr_data[9:0]), .qout(ds8_region_ctl[9:0])); wire [9:0] ds_offset1 = ds8_region_ctl[9:0]; assign ds8_region_ctl[31:10] = 0; /* ------------------- ds16 buffer region_ctl --------------- */ zcp_xREG #(10) ds16_region_ctl_xREG( .clk(clk), .reset(reset[4]), .en(ld_ds16_region_ctl), .din(wr_data[9:0]), .qout(ds16_region_ctl[9:0])); wire [9:0] ds_offset2 = ds16_region_ctl[9:0]; assign ds16_region_ctl[31:10]= 0; /* ------------------- ds32 buffer region_ctl --------------- */ zcp_xREG #(10) ds32_region_ctl_xREG( .clk(clk), .reset(reset[4]), .en(ld_ds32_region_ctl), .din(wr_data[9:0]), .qout(ds32_region_ctl[9:0])); wire [9:0] ds_offset3 = ds32_region_ctl[9:0]; assign ds32_region_ctl[31:10]= 0; /* ----- ram access data registers ------ */ zcp_RegLd #(32) ram_data0_RegLd( .clk(clk), .reset(reset[5]), .ld(ld_ram2reg), .ld_value(ram_rdata[31:0]), .we(ld_ram_data0), .din(wr_data[31:0]), .qout(ram_data0)); zcp_RegLd #(32) ram_data1_RegLd( .clk(clk), .reset(reset[5]), .ld(ld_ram2reg), .ld_value(ram_rdata[63:32]), .we(ld_ram_data1), .din(wr_data[31:0]), .qout(ram_data1)); zcp_RegLd #(32) ram_data2_RegLd( .clk(clk), .reset(reset[6]), .ld(ld_ram2reg), .ld_value(ram_rdata[95:64]), .we(ld_ram_data2), .din(wr_data[31:0]), .qout(ram_data2)); zcp_RegLd #(32) ram_data3_RegLd( .clk(clk), .reset(reset[6]), .ld(ld_ram2reg), .ld_value(ram_rdata[127:96]), .we(ld_ram_data3), .din(wr_data[31:0]), .qout(ram_data3)); zcp_RegLd #(8) ram_data4_RegLd( .clk(clk), .reset(reset[7]), .ld(ld_ram2reg), .ld_value(ram_rdata[135:128]), .we(ld_ram_data4), .din(wr_data[7:0]), .qout(ram_data4)); assign ram_data = {ram_data4,ram_data3,ram_data2,ram_data1,ram_data0}; /* ------ ram access byte enable registers ------ */ zcp_xREG #(17) ram_be_xREG( .din(wr_data[16:0]), .clk(clk), .en(ld_ram_be), .reset(reset[7]), .qout(ram_be[16:0])); /* ----- ram access address register ------ */ zcp_xREG #(31) ram_addr_xREG( .din(wr_data[30:0]), .clk(clk), .en(ld_ram_addr), .reset(reset[7]), .qout(ram_addr[30:0])); zcp_pls_gen2_reg slv_ram_pls_gen2_reg(.clk(clk),.sig_in(ld_ram_addr),.lead(ld_ram_addr_lead),.trail(ld_ram_addr_trail)); wire [10:0] slv_ram_addr = ram_addr[10:0]; // For accessing cfifo only. wire [4:0] ram_sel = ram_addr[16:12]; wire [11:0] slv_tt_index = ram_addr[28:17]; // For accessing va_ram, st_ram, dn_ram. wire rw = ram_addr[30]; assign ram_addr[31] = |ram_access_state; // ram busy assign slv_ram_wdata = ram_data; assign slv_ram_be = ram_be; /* -------- par data register ------------------- */ zcp_xREG #(17) chk_bit_data_xREG( .din(wr_data[16:0]), .clk(clk), .en(ld_chk_bit_data), .reset(reset[8]), .qout(chk_bit_data[16:0])); /* -------- reset cfifo register ---------------- */ zcp_xREG #(4) reset_cfifo_xREG( .din(wr_data[3:0]), .clk(clk), .en(ld_reset_cfifo), .reset(reset[8]), .qout({reset_cfifo3,reset_cfifo2,reset_cfifo1,reset_cfifo0})); /* -------- ecc_err_ctl ------------------------- */ wire [5:0] ecc_err_wd = {wr_data[31],wr_data[17:16],wr_data[2:0]}; // 6b zcp_xREG #(6) ecc_err_ctl0_xREG(.clk(clk),.reset(reset[8]),.en(ld_ecc_err_ctl0),.din(ecc_err_wd[5:0]), .qout({ecc_err_ctl0[31],ecc_err_ctl0[17:16],ecc_err_ctl0[2:0]})); zcp_xREG #(6) ecc_err_ctl1_xREG(.clk(clk),.reset(reset[8]),.en(ld_ecc_err_ctl1),.din(ecc_err_wd[5:0]), .qout({ecc_err_ctl1[31],ecc_err_ctl1[17:16],ecc_err_ctl1[2:0]})); zcp_xREG #(6) ecc_err_ctl2_xREG(.clk(clk),.reset(reset[8]),.en(ld_ecc_err_ctl2),.din(ecc_err_wd[5:0]), .qout({ecc_err_ctl2[31],ecc_err_ctl2[17:16],ecc_err_ctl2[2:0]})); zcp_xREG #(6) ecc_err_ctl3_xREG(.clk(clk),.reset(reset[8]),.en(ld_ecc_err_ctl3),.din(ecc_err_wd[5:0]), .qout({ecc_err_ctl3[31],ecc_err_ctl3[17:16],ecc_err_ctl3[2:0]})); assign ecc_chk_bypass0 = ecc_err_ctl0[31]; // per fifo ecc_chk disable assign ecc_err_ctl0[30:18] = 0; assign double_bit_err0 = ecc_err_ctl0[17]; assign single_bit_err0 = ecc_err_ctl0[16]; assign ecc_err_ctl0[15:11] = 0; assign ecc_err_ctl0[10] = 1'b1; // all packets assign ecc_err_ctl0[9:3] = 0; assign last_line_err0 = ecc_err_ctl0[2] ; assign second_line_err0 = ecc_err_ctl0[1] ; assign first_line_err0 = ecc_err_ctl0[0] ; assign ecc_err_ctl1[30:18] = 0; assign ecc_chk_bypass1 = ecc_err_ctl1[31]; // per fifo ecc_chk disable assign double_bit_err1 = ecc_err_ctl1[17]; assign single_bit_err1 = ecc_err_ctl1[16]; assign ecc_err_ctl1[15:11] = 0; assign ecc_err_ctl1[10] = 1'b1; // all packets assign ecc_err_ctl1[9:3] = 0; assign last_line_err1 = ecc_err_ctl1[2] ; assign second_line_err1 = ecc_err_ctl1[1] ; assign first_line_err1 = ecc_err_ctl1[0] ; assign ecc_err_ctl2[30:18] = 0; assign ecc_chk_bypass2 = ecc_err_ctl2[31]; // per fifo ecc_chk disable assign double_bit_err2 = ecc_err_ctl2[17]; assign single_bit_err2 = ecc_err_ctl2[16]; assign ecc_err_ctl2[15:11] = 0; assign ecc_err_ctl2[10] = 1'b1; // all packets assign ecc_err_ctl2[9:3] = 0; assign last_line_err2 = ecc_err_ctl2[2] ; assign second_line_err2 = ecc_err_ctl2[1] ; assign first_line_err2 = ecc_err_ctl2[0] ; assign ecc_err_ctl3[30:18] = 0; assign ecc_chk_bypass3 = ecc_err_ctl3[31]; // per fifo ecc_chk disable assign double_bit_err3 = ecc_err_ctl3[17]; assign single_bit_err3 = ecc_err_ctl3[16]; assign ecc_err_ctl3[15:11] = 0; assign ecc_err_ctl3[10] = 1'b1; // all packets assign ecc_err_ctl3[9:3] = 0; assign last_line_err3 = ecc_err_ctl3[2] ; assign second_line_err3 = ecc_err_ctl3[1] ; assign first_line_err3 = ecc_err_ctl3[0] ; /* -------- debug_training_vector --------------- */ zcp_xREG #(32) training_vector_xREG(.clk(clk),.reset(reset[9]),.en(ld_training_vector),.din(wr_data[31:0]),.qout(training_vector)); // vlint flag_empty_block off // RAM enable selection MUX always @ (posedge clk) begin // va read or write enable va_ram_rwen <= 0; va_ram_rwen0 <= 0; va_ram_rwen1 <= 0; va_ram_rwen2 <= 0; va_ram_rwen3 <= 0; va_ram_rwen4 <= 0; va_ram_rwen5 <= 0; va_ram_rwen6 <= 0; va_ram_rwen7 <= 0; // va read va_ram_ren <= 0; va_ram_ren0 <= 0; va_ram_ren1 <= 0; va_ram_ren2 <= 0; va_ram_ren3 <= 0; va_ram_ren4 <= 0; va_ram_ren5 <= 0; va_ram_ren6 <= 0; va_ram_ren7 <= 0; // va write va_ram_wen <= 0; va_ram_wen0 <= 0; va_ram_wen1 <= 0; va_ram_wen2 <= 0; va_ram_wen3 <= 0; va_ram_wen4 <= 0; va_ram_wen5 <= 0; va_ram_wen6 <= 0; va_ram_wen7 <= 0; // st ram st_ram_ren <= 0; st_ram_wen <= 0; // dn ram dn_ram_ren <= 0; dn_ram_wen <= 0; // cfifo r/w cfifo_ren0 <= 0; cfifo_ren1 <= 0; cfifo_ren2 <= 0; cfifo_ren3 <= 0; cfifo_wen0 <= 0; cfifo_wen1 <= 0; cfifo_wen2 <= 0; cfifo_wen3 <= 0; casex (ram_sel[4:0]) // synopsys parallel_case full_case // va_ram 5'h00 : begin va_ram_rwen <= ram_ren | ram_wen;// r/w enable va_ram_rwen0 <= ram_ren | ram_wen;// r/w enable va_ram_ren0 <= ram_ren;// ram_ren is a pulse va_ram_wen0 <= ram_wen;// ram_wen is a pulse va_ram_ren <= ram_ren;// ram_ren is a pulse va_ram_wen <= ram_wen;// ram_wen is a pulse end 5'h01 : begin va_ram_rwen <= ram_ren | ram_wen;// r/w enable va_ram_rwen1 <= ram_ren | ram_wen;// r/w enable va_ram_ren1 <= ram_ren;// ram_ren is a pulse va_ram_wen1 <= ram_wen;// ram_wen is a pulse va_ram_ren <= ram_ren;// ram_ren is a pulse va_ram_wen <= ram_wen;// ram_wen is a pulse end 5'h02 : begin va_ram_rwen <= ram_ren | ram_wen;// r/w enable va_ram_rwen2 <= ram_ren | ram_wen;// r/w enable va_ram_ren2 <= ram_ren;// ram_ren is a pulse va_ram_wen2 <= ram_wen;// ram_wen is a pulse va_ram_ren <= ram_ren;// ram_ren is a pulse va_ram_wen <= ram_wen;// ram_wen is a pulse end 5'h03 : begin va_ram_rwen <= ram_ren | ram_wen;// r/w enable va_ram_rwen3 <= ram_ren | ram_wen;// r/w enable va_ram_ren3 <= ram_ren;// ram_ren is a pulse va_ram_wen3 <= ram_wen;// ram_wen is a pulse va_ram_ren <= ram_ren;// ram_ren is a pulse va_ram_wen <= ram_wen;// ram_wen is a pulse end 5'h04 : begin va_ram_rwen <= ram_ren | ram_wen;// r/w enable va_ram_rwen4 <= ram_ren | ram_wen;// r/w enable va_ram_ren4 <= ram_ren;// ram_ren is a pulse va_ram_wen4 <= ram_wen;// ram_wen is a pulse va_ram_ren <= ram_ren;// ram_ren is a pulse va_ram_wen <= ram_wen;// ram_wen is a pulse end 5'h05 : begin va_ram_rwen <= ram_ren | ram_wen;// r/w enable va_ram_rwen5 <= ram_ren | ram_wen;// r/w enable va_ram_ren5 <= ram_ren;// ram_ren is a pulse va_ram_wen5 <= ram_wen;// ram_wen is a pulse va_ram_ren <= ram_ren;// ram_ren is a pulse va_ram_wen <= ram_wen;// ram_wen is a pulse end 5'h06 : begin va_ram_rwen <= ram_ren | ram_wen;// r/w enable va_ram_rwen6 <= ram_ren | ram_wen;// r/w enable va_ram_ren6 <= ram_ren;// ram_ren is a pulse va_ram_wen6 <= ram_wen;// ram_wen is a pulse va_ram_ren <= ram_ren;// ram_ren is a pulse va_ram_wen <= ram_wen;// ram_wen is a pulse end 5'h07 : begin va_ram_rwen <= ram_ren | ram_wen;// r/w enable va_ram_rwen7 <= ram_ren | ram_wen;// r/w enable va_ram_ren7 <= ram_ren; va_ram_wen7 <= ram_wen;// ram_wen is a pulse va_ram_ren <= ram_ren;// ram_ren is a pulse va_ram_wen <= ram_wen;// ram_wen is a pulse end 5'h08 : begin // st ram st_ram_ren <= ram_ren; st_ram_wen <= ram_wen;// ram_wen is a pulse end 5'h09 : begin // dn ram dn_ram_ren <= ram_ren; dn_ram_wen <= ram_wen;// ram_wen is a pulse end 5'h10 : begin //cfifo0 cfifo_ren0 <= ram_ren; cfifo_wen0 <= ram_wen;// ram_wen is a pulse end 5'h11 : begin //cfifo1 cfifo_ren1 <= ram_ren; cfifo_wen1 <= ram_wen;// ram_wen is a pulse end 5'h12 : begin //cfifo2 cfifo_ren2 <= ram_ren; cfifo_wen2 <= ram_wen;// ram_wen is a pulse end 5'h13 : begin //cfifo3 cfifo_ren3 <= ram_ren; cfifo_wen3 <= ram_wen;// ram_wen is a pulse end default:begin end endcase // casex() end // always @ (... // vlint flag_empty_block on // ram_rdata selection mux always @ ( cfifo_slv_rdata0 or cfifo_slv_rdata1 or cfifo_slv_rdata2 or cfifo_slv_rdata3 or dram_slv_rdata or ram_sel or sram_slv_rdata or vram_slv_rdata) begin ram_rdata = `DN_W'h0000_dead_beef; casex (ram_sel[4:0]) // va_ram 5'h00 : ram_rdata = {8'b0,vram_slv_rdata[`W128D0]}; 5'h01 : ram_rdata = {8'b0,vram_slv_rdata[`W128D1]}; 5'h02 : ram_rdata = {8'b0,vram_slv_rdata[`W128D2]}; 5'h03 : ram_rdata = {8'b0,vram_slv_rdata[`W128D3]}; 5'h04 : ram_rdata = {8'b0,vram_slv_rdata[`W128D4]}; 5'h05 : ram_rdata = {8'b0,vram_slv_rdata[`W128D5]}; 5'h06 : ram_rdata = {8'b0,vram_slv_rdata[`W128D6]}; 5'h07 : ram_rdata = {8'b0,vram_slv_rdata[`W128D7]}; // st_ram 5'h08 : ram_rdata = {24'b0,sram_slv_rdata}; // dn_ram 5'h09 : ram_rdata = dram_slv_rdata; // cfifo 5'h10 : ram_rdata = {6'b0,cfifo_slv_rdata0}; 5'h11 : ram_rdata = {6'b0,cfifo_slv_rdata1}; 5'h12 : ram_rdata = {6'b0,cfifo_slv_rdata2}; 5'h13 : ram_rdata = {6'b0,cfifo_slv_rdata3}; default: ram_rdata = `DN_W'h0000_dead_beef; endcase // casex() end // always @ (... niu_zcp_ram_access_sm niu_zcp_ram_access_sm (/*AUTOINST*/ // Outputs .ram_ren (ram_ren), .ram_wen (ram_wen), .slv_request (slv_request), .ld_ram2reg (ld_ram2reg), .ram_access_state (ram_access_state[2:0]), // Inputs .clk (clk), .reset10 (reset10), .ld_ram_addr_trail (ld_ram_addr_trail), .slv_accepted (slv_accepted), .rw (rw)); //////////////////////////////////////////////////////////////// // RDC table //////////////////////////////////////////////////////////////// /* -------- rdc Registers ---------------------- */ zcp_xREG #(4) rdc0_xREG( .clk(clk),.reset(reset[11]),.en(ld_rdc0),.din(wr_data[3:0]),.qout(rdc0)); zcp_xREG #(4) rdc1_xREG( .clk(clk),.reset(reset[11]),.en(ld_rdc1),.din(wr_data[3:0]),.qout(rdc1)); zcp_xREG #(4) rdc2_xREG( .clk(clk),.reset(reset[11]),.en(ld_rdc2),.din(wr_data[3:0]),.qout(rdc2)); zcp_xREG #(4) rdc3_xREG( .clk(clk),.reset(reset[11]),.en(ld_rdc3),.din(wr_data[3:0]),.qout(rdc3)); zcp_xREG #(4) rdc4_xREG( .clk(clk),.reset(reset[11]),.en(ld_rdc4),.din(wr_data[3:0]),.qout(rdc4)); zcp_xREG #(4) rdc5_xREG( .clk(clk),.reset(reset[11]),.en(ld_rdc5),.din(wr_data[3:0]),.qout(rdc5)); zcp_xREG #(4) rdc6_xREG( .clk(clk),.reset(reset[11]),.en(ld_rdc6),.din(wr_data[3:0]),.qout(rdc6)); zcp_xREG #(4) rdc7_xREG( .clk(clk),.reset(reset[11]),.en(ld_rdc7),.din(wr_data[3:0]),.qout(rdc7)); zcp_xREG #(4) rdc8_xREG( .clk(clk),.reset(reset[11]),.en(ld_rdc8),.din(wr_data[3:0]),.qout(rdc8)); zcp_xREG #(4) rdc9_xREG( .clk(clk),.reset(reset[11]),.en(ld_rdc9),.din(wr_data[3:0]),.qout(rdc9)); zcp_xREG #(4) rdc10_xREG(.clk(clk),.reset(reset[11]),.en(ld_rdc10),.din(wr_data[3:0]),.qout(rdc10)); zcp_xREG #(4) rdc11_xREG(.clk(clk),.reset(reset[11]),.en(ld_rdc11),.din(wr_data[3:0]),.qout(rdc11)); zcp_xREG #(4) rdc12_xREG(.clk(clk),.reset(reset[11]),.en(ld_rdc12),.din(wr_data[3:0]),.qout(rdc12)); zcp_xREG #(4) rdc13_xREG(.clk(clk),.reset(reset[12]),.en(ld_rdc13),.din(wr_data[3:0]),.qout(rdc13)); zcp_xREG #(4) rdc14_xREG(.clk(clk),.reset(reset[12]),.en(ld_rdc14),.din(wr_data[3:0]),.qout(rdc14)); zcp_xREG #(4) rdc15_xREG(.clk(clk),.reset(reset[12]),.en(ld_rdc15),.din(wr_data[3:0]),.qout(rdc15)); zcp_xREG #(4) rdc16_xREG(.clk(clk),.reset(reset[12]),.en(ld_rdc16),.din(wr_data[3:0]),.qout(rdc16)); zcp_xREG #(4) rdc17_xREG(.clk(clk),.reset(reset[12]),.en(ld_rdc17),.din(wr_data[3:0]),.qout(rdc17)); zcp_xREG #(4) rdc18_xREG(.clk(clk),.reset(reset[12]),.en(ld_rdc18),.din(wr_data[3:0]),.qout(rdc18)); zcp_xREG #(4) rdc19_xREG(.clk(clk),.reset(reset[12]),.en(ld_rdc19),.din(wr_data[3:0]),.qout(rdc19)); zcp_xREG #(4) rdc20_xREG(.clk(clk),.reset(reset[12]),.en(ld_rdc20),.din(wr_data[3:0]),.qout(rdc20)); zcp_xREG #(4) rdc21_xREG(.clk(clk),.reset(reset[12]),.en(ld_rdc21),.din(wr_data[3:0]),.qout(rdc21)); zcp_xREG #(4) rdc22_xREG(.clk(clk),.reset(reset[12]),.en(ld_rdc22),.din(wr_data[3:0]),.qout(rdc22)); zcp_xREG #(4) rdc23_xREG(.clk(clk),.reset(reset[12]),.en(ld_rdc23),.din(wr_data[3:0]),.qout(rdc23)); zcp_xREG #(4) rdc24_xREG(.clk(clk),.reset(reset[12]),.en(ld_rdc24),.din(wr_data[3:0]),.qout(rdc24)); zcp_xREG #(4) rdc25_xREG(.clk(clk),.reset(reset[13]),.en(ld_rdc25),.din(wr_data[3:0]),.qout(rdc25)); zcp_xREG #(4) rdc26_xREG(.clk(clk),.reset(reset[13]),.en(ld_rdc26),.din(wr_data[3:0]),.qout(rdc26)); zcp_xREG #(4) rdc27_xREG(.clk(clk),.reset(reset[13]),.en(ld_rdc27),.din(wr_data[3:0]),.qout(rdc27)); zcp_xREG #(4) rdc28_xREG(.clk(clk),.reset(reset[13]),.en(ld_rdc28),.din(wr_data[3:0]),.qout(rdc28)); zcp_xREG #(4) rdc29_xREG(.clk(clk),.reset(reset[13]),.en(ld_rdc29),.din(wr_data[3:0]),.qout(rdc29)); zcp_xREG #(4) rdc30_xREG(.clk(clk),.reset(reset[13]),.en(ld_rdc30),.din(wr_data[3:0]),.qout(rdc30)); zcp_xREG #(4) rdc31_xREG(.clk(clk),.reset(reset[13]),.en(ld_rdc31),.din(wr_data[3:0]),.qout(rdc31)); zcp_xREG #(4) rdc32_xREG(.clk(clk),.reset(reset[13]),.en(ld_rdc32),.din(wr_data[3:0]),.qout(rdc32)); zcp_xREG #(4) rdc33_xREG(.clk(clk),.reset(reset[13]),.en(ld_rdc33),.din(wr_data[3:0]),.qout(rdc33)); zcp_xREG #(4) rdc34_xREG(.clk(clk),.reset(reset[13]),.en(ld_rdc34),.din(wr_data[3:0]),.qout(rdc34)); zcp_xREG #(4) rdc35_xREG(.clk(clk),.reset(reset[13]),.en(ld_rdc35),.din(wr_data[3:0]),.qout(rdc35)); zcp_xREG #(4) rdc36_xREG(.clk(clk),.reset(reset[13]),.en(ld_rdc36),.din(wr_data[3:0]),.qout(rdc36)); zcp_xREG #(4) rdc37_xREG(.clk(clk),.reset(reset[14]),.en(ld_rdc37),.din(wr_data[3:0]),.qout(rdc37)); zcp_xREG #(4) rdc38_xREG(.clk(clk),.reset(reset[14]),.en(ld_rdc38),.din(wr_data[3:0]),.qout(rdc38)); zcp_xREG #(4) rdc39_xREG(.clk(clk),.reset(reset[14]),.en(ld_rdc39),.din(wr_data[3:0]),.qout(rdc39)); zcp_xREG #(4) rdc40_xREG(.clk(clk),.reset(reset[14]),.en(ld_rdc40),.din(wr_data[3:0]),.qout(rdc40)); zcp_xREG #(4) rdc41_xREG(.clk(clk),.reset(reset[14]),.en(ld_rdc41),.din(wr_data[3:0]),.qout(rdc41)); zcp_xREG #(4) rdc42_xREG(.clk(clk),.reset(reset[14]),.en(ld_rdc42),.din(wr_data[3:0]),.qout(rdc42)); zcp_xREG #(4) rdc43_xREG(.clk(clk),.reset(reset[14]),.en(ld_rdc43),.din(wr_data[3:0]),.qout(rdc43)); zcp_xREG #(4) rdc44_xREG(.clk(clk),.reset(reset[14]),.en(ld_rdc44),.din(wr_data[3:0]),.qout(rdc44)); zcp_xREG #(4) rdc45_xREG(.clk(clk),.reset(reset[14]),.en(ld_rdc45),.din(wr_data[3:0]),.qout(rdc45)); zcp_xREG #(4) rdc46_xREG(.clk(clk),.reset(reset[14]),.en(ld_rdc46),.din(wr_data[3:0]),.qout(rdc46)); zcp_xREG #(4) rdc47_xREG(.clk(clk),.reset(reset[14]),.en(ld_rdc47),.din(wr_data[3:0]),.qout(rdc47)); zcp_xREG #(4) rdc48_xREG(.clk(clk),.reset(reset[14]),.en(ld_rdc48),.din(wr_data[3:0]),.qout(rdc48)); zcp_xREG #(4) rdc49_xREG(.clk(clk),.reset(reset[15]),.en(ld_rdc49),.din(wr_data[3:0]),.qout(rdc49)); zcp_xREG #(4) rdc50_xREG(.clk(clk),.reset(reset[15]),.en(ld_rdc50),.din(wr_data[3:0]),.qout(rdc50)); zcp_xREG #(4) rdc51_xREG(.clk(clk),.reset(reset[15]),.en(ld_rdc51),.din(wr_data[3:0]),.qout(rdc51)); zcp_xREG #(4) rdc52_xREG(.clk(clk),.reset(reset[15]),.en(ld_rdc52),.din(wr_data[3:0]),.qout(rdc52)); zcp_xREG #(4) rdc53_xREG(.clk(clk),.reset(reset[15]),.en(ld_rdc53),.din(wr_data[3:0]),.qout(rdc53)); zcp_xREG #(4) rdc54_xREG(.clk(clk),.reset(reset[15]),.en(ld_rdc54),.din(wr_data[3:0]),.qout(rdc54)); zcp_xREG #(4) rdc55_xREG(.clk(clk),.reset(reset[15]),.en(ld_rdc55),.din(wr_data[3:0]),.qout(rdc55)); zcp_xREG #(4) rdc56_xREG(.clk(clk),.reset(reset[15]),.en(ld_rdc56),.din(wr_data[3:0]),.qout(rdc56)); zcp_xREG #(4) rdc57_xREG(.clk(clk),.reset(reset[15]),.en(ld_rdc57),.din(wr_data[3:0]),.qout(rdc57)); zcp_xREG #(4) rdc58_xREG(.clk(clk),.reset(reset[15]),.en(ld_rdc58),.din(wr_data[3:0]),.qout(rdc58)); zcp_xREG #(4) rdc59_xREG(.clk(clk),.reset(reset[15]),.en(ld_rdc59),.din(wr_data[3:0]),.qout(rdc59)); zcp_xREG #(4) rdc60_xREG(.clk(clk),.reset(reset[15]),.en(ld_rdc60),.din(wr_data[3:0]),.qout(rdc60)); zcp_xREG #(4) rdc61_xREG(.clk(clk),.reset(reset[16]),.en(ld_rdc61),.din(wr_data[3:0]),.qout(rdc61)); zcp_xREG #(4) rdc62_xREG(.clk(clk),.reset(reset[16]),.en(ld_rdc62),.din(wr_data[3:0]),.qout(rdc62)); zcp_xREG #(4) rdc63_xREG(.clk(clk),.reset(reset[16]),.en(ld_rdc63),.din(wr_data[3:0]),.qout(rdc63)); zcp_xREG #(4) rdc64_xREG(.clk(clk),.reset(reset[16]),.en(ld_rdc64),.din(wr_data[3:0]),.qout(rdc64)); zcp_xREG #(4) rdc65_xREG(.clk(clk),.reset(reset[16]),.en(ld_rdc65),.din(wr_data[3:0]),.qout(rdc65)); zcp_xREG #(4) rdc66_xREG(.clk(clk),.reset(reset[16]),.en(ld_rdc66),.din(wr_data[3:0]),.qout(rdc66)); zcp_xREG #(4) rdc67_xREG(.clk(clk),.reset(reset[16]),.en(ld_rdc67),.din(wr_data[3:0]),.qout(rdc67)); zcp_xREG #(4) rdc68_xREG(.clk(clk),.reset(reset[16]),.en(ld_rdc68),.din(wr_data[3:0]),.qout(rdc68)); zcp_xREG #(4) rdc69_xREG(.clk(clk),.reset(reset[16]),.en(ld_rdc69),.din(wr_data[3:0]),.qout(rdc69)); zcp_xREG #(4) rdc70_xREG(.clk(clk),.reset(reset[16]),.en(ld_rdc70),.din(wr_data[3:0]),.qout(rdc70)); zcp_xREG #(4) rdc71_xREG(.clk(clk),.reset(reset[16]),.en(ld_rdc71),.din(wr_data[3:0]),.qout(rdc71)); zcp_xREG #(4) rdc72_xREG(.clk(clk),.reset(reset[16]),.en(ld_rdc72),.din(wr_data[3:0]),.qout(rdc72)); zcp_xREG #(4) rdc73_xREG(.clk(clk),.reset(reset[17]),.en(ld_rdc73),.din(wr_data[3:0]),.qout(rdc73)); zcp_xREG #(4) rdc74_xREG(.clk(clk),.reset(reset[17]),.en(ld_rdc74),.din(wr_data[3:0]),.qout(rdc74)); zcp_xREG #(4) rdc75_xREG(.clk(clk),.reset(reset[17]),.en(ld_rdc75),.din(wr_data[3:0]),.qout(rdc75)); zcp_xREG #(4) rdc76_xREG(.clk(clk),.reset(reset[17]),.en(ld_rdc76),.din(wr_data[3:0]),.qout(rdc76)); zcp_xREG #(4) rdc77_xREG(.clk(clk),.reset(reset[17]),.en(ld_rdc77),.din(wr_data[3:0]),.qout(rdc77)); zcp_xREG #(4) rdc78_xREG(.clk(clk),.reset(reset[17]),.en(ld_rdc78),.din(wr_data[3:0]),.qout(rdc78)); zcp_xREG #(4) rdc79_xREG(.clk(clk),.reset(reset[17]),.en(ld_rdc79),.din(wr_data[3:0]),.qout(rdc79)); zcp_xREG #(4) rdc80_xREG(.clk(clk),.reset(reset[17]),.en(ld_rdc80),.din(wr_data[3:0]),.qout(rdc80)); zcp_xREG #(4) rdc81_xREG(.clk(clk),.reset(reset[17]),.en(ld_rdc81),.din(wr_data[3:0]),.qout(rdc81)); zcp_xREG #(4) rdc82_xREG(.clk(clk),.reset(reset[17]),.en(ld_rdc82),.din(wr_data[3:0]),.qout(rdc82)); zcp_xREG #(4) rdc83_xREG(.clk(clk),.reset(reset[17]),.en(ld_rdc83),.din(wr_data[3:0]),.qout(rdc83)); zcp_xREG #(4) rdc84_xREG(.clk(clk),.reset(reset[17]),.en(ld_rdc84),.din(wr_data[3:0]),.qout(rdc84)); zcp_xREG #(4) rdc85_xREG(.clk(clk),.reset(reset[18]),.en(ld_rdc85),.din(wr_data[3:0]),.qout(rdc85)); zcp_xREG #(4) rdc86_xREG(.clk(clk),.reset(reset[18]),.en(ld_rdc86),.din(wr_data[3:0]),.qout(rdc86)); zcp_xREG #(4) rdc87_xREG(.clk(clk),.reset(reset[18]),.en(ld_rdc87),.din(wr_data[3:0]),.qout(rdc87)); zcp_xREG #(4) rdc88_xREG(.clk(clk),.reset(reset[18]),.en(ld_rdc88),.din(wr_data[3:0]),.qout(rdc88)); zcp_xREG #(4) rdc89_xREG(.clk(clk),.reset(reset[18]),.en(ld_rdc89),.din(wr_data[3:0]),.qout(rdc89)); zcp_xREG #(4) rdc90_xREG(.clk(clk),.reset(reset[18]),.en(ld_rdc90),.din(wr_data[3:0]),.qout(rdc90)); zcp_xREG #(4) rdc91_xREG(.clk(clk),.reset(reset[18]),.en(ld_rdc91),.din(wr_data[3:0]),.qout(rdc91)); zcp_xREG #(4) rdc92_xREG(.clk(clk),.reset(reset[18]),.en(ld_rdc92),.din(wr_data[3:0]),.qout(rdc92)); zcp_xREG #(4) rdc93_xREG(.clk(clk),.reset(reset[18]),.en(ld_rdc93),.din(wr_data[3:0]),.qout(rdc93)); zcp_xREG #(4) rdc94_xREG(.clk(clk),.reset(reset[18]),.en(ld_rdc94),.din(wr_data[3:0]),.qout(rdc94)); zcp_xREG #(4) rdc95_xREG(.clk(clk),.reset(reset[18]),.en(ld_rdc95),.din(wr_data[3:0]),.qout(rdc95)); zcp_xREG #(4) rdc96_xREG(.clk(clk),.reset(reset[18]),.en(ld_rdc96),.din(wr_data[3:0]),.qout(rdc96)); zcp_xREG #(4) rdc97_xREG(.clk(clk),.reset(reset[19]),.en(ld_rdc97),.din(wr_data[3:0]),.qout(rdc97)); zcp_xREG #(4) rdc98_xREG(.clk(clk),.reset(reset[19]),.en(ld_rdc98),.din(wr_data[3:0]),.qout(rdc98)); zcp_xREG #(4) rdc99_xREG(.clk(clk),.reset(reset[19]),.en(ld_rdc99),.din(wr_data[3:0]),.qout(rdc99)); zcp_xREG #(4) rdc100_xREG(.clk(clk),.reset(reset[19]),.en(ld_rdc100),.din(wr_data[3:0]),.qout(rdc100)); zcp_xREG #(4) rdc101_xREG(.clk(clk),.reset(reset[19]),.en(ld_rdc101),.din(wr_data[3:0]),.qout(rdc101)); zcp_xREG #(4) rdc102_xREG(.clk(clk),.reset(reset[19]),.en(ld_rdc102),.din(wr_data[3:0]),.qout(rdc102)); zcp_xREG #(4) rdc103_xREG(.clk(clk),.reset(reset[19]),.en(ld_rdc103),.din(wr_data[3:0]),.qout(rdc103)); zcp_xREG #(4) rdc104_xREG(.clk(clk),.reset(reset[19]),.en(ld_rdc104),.din(wr_data[3:0]),.qout(rdc104)); zcp_xREG #(4) rdc105_xREG(.clk(clk),.reset(reset[19]),.en(ld_rdc105),.din(wr_data[3:0]),.qout(rdc105)); zcp_xREG #(4) rdc106_xREG(.clk(clk),.reset(reset[19]),.en(ld_rdc106),.din(wr_data[3:0]),.qout(rdc106)); zcp_xREG #(4) rdc107_xREG(.clk(clk),.reset(reset[19]),.en(ld_rdc107),.din(wr_data[3:0]),.qout(rdc107)); zcp_xREG #(4) rdc108_xREG(.clk(clk),.reset(reset[19]),.en(ld_rdc108),.din(wr_data[3:0]),.qout(rdc108)); zcp_xREG #(4) rdc109_xREG(.clk(clk),.reset(reset[20]),.en(ld_rdc109),.din(wr_data[3:0]),.qout(rdc109)); zcp_xREG #(4) rdc110_xREG(.clk(clk),.reset(reset[20]),.en(ld_rdc110),.din(wr_data[3:0]),.qout(rdc110)); zcp_xREG #(4) rdc111_xREG(.clk(clk),.reset(reset[20]),.en(ld_rdc111),.din(wr_data[3:0]),.qout(rdc111)); zcp_xREG #(4) rdc112_xREG(.clk(clk),.reset(reset[20]),.en(ld_rdc112),.din(wr_data[3:0]),.qout(rdc112)); zcp_xREG #(4) rdc113_xREG(.clk(clk),.reset(reset[20]),.en(ld_rdc113),.din(wr_data[3:0]),.qout(rdc113)); zcp_xREG #(4) rdc114_xREG(.clk(clk),.reset(reset[20]),.en(ld_rdc114),.din(wr_data[3:0]),.qout(rdc114)); zcp_xREG #(4) rdc115_xREG(.clk(clk),.reset(reset[20]),.en(ld_rdc115),.din(wr_data[3:0]),.qout(rdc115)); zcp_xREG #(4) rdc116_xREG(.clk(clk),.reset(reset[20]),.en(ld_rdc116),.din(wr_data[3:0]),.qout(rdc116)); zcp_xREG #(4) rdc117_xREG(.clk(clk),.reset(reset[20]),.en(ld_rdc117),.din(wr_data[3:0]),.qout(rdc117)); zcp_xREG #(4) rdc118_xREG(.clk(clk),.reset(reset[20]),.en(ld_rdc118),.din(wr_data[3:0]),.qout(rdc118)); zcp_xREG #(4) rdc119_xREG(.clk(clk),.reset(reset[20]),.en(ld_rdc119),.din(wr_data[3:0]),.qout(rdc119)); zcp_xREG #(4) rdc120_xREG(.clk(clk),.reset(reset[20]),.en(ld_rdc120),.din(wr_data[3:0]),.qout(rdc120)); zcp_xREG #(4) rdc121_xREG(.clk(clk),.reset(reset[21]),.en(ld_rdc121),.din(wr_data[3:0]),.qout(rdc121)); zcp_xREG #(4) rdc122_xREG(.clk(clk),.reset(reset[21]),.en(ld_rdc122),.din(wr_data[3:0]),.qout(rdc122)); zcp_xREG #(4) rdc123_xREG(.clk(clk),.reset(reset[21]),.en(ld_rdc123),.din(wr_data[3:0]),.qout(rdc123)); zcp_xREG #(4) rdc124_xREG(.clk(clk),.reset(reset[21]),.en(ld_rdc124),.din(wr_data[3:0]),.qout(rdc124)); zcp_xREG #(4) rdc125_xREG(.clk(clk),.reset(reset[21]),.en(ld_rdc125),.din(wr_data[3:0]),.qout(rdc125)); zcp_xREG #(4) rdc126_xREG(.clk(clk),.reset(reset[21]),.en(ld_rdc126),.din(wr_data[3:0]),.qout(rdc126)); zcp_xREG #(4) rdc127_xREG(.clk(clk),.reset(reset[21]),.en(ld_rdc127),.din(wr_data[3:0]),.qout(rdc127)); /* --- rdc decoder -------------------------- */ always @ (/*AUTOSENSE*/rdc0 or rdc1 or rdc10 or rdc100 or rdc101 or rdc102 or rdc103 or rdc104 or rdc105 or rdc106 or rdc107 or rdc108 or rdc109 or rdc11 or rdc110 or rdc111 or rdc112 or rdc113 or rdc114 or rdc115 or rdc116 or rdc117 or rdc118 or rdc119 or rdc12 or rdc120 or rdc121 or rdc122 or rdc123 or rdc124 or rdc125 or rdc126 or rdc127 or rdc13 or rdc14 or rdc15 or rdc16 or rdc17 or rdc18 or rdc19 or rdc2 or rdc20 or rdc21 or rdc22 or rdc23 or rdc24 or rdc25 or rdc26 or rdc27 or rdc28 or rdc29 or rdc3 or rdc30 or rdc31 or rdc32 or rdc33 or rdc34 or rdc35 or rdc36 or rdc37 or rdc38 or rdc39 or rdc4 or rdc40 or rdc41 or rdc42 or rdc43 or rdc44 or rdc45 or rdc46 or rdc47 or rdc48 or rdc49 or rdc5 or rdc50 or rdc51 or rdc52 or rdc53 or rdc54 or rdc55 or rdc56 or rdc57 or rdc58 or rdc59 or rdc6 or rdc60 or rdc61 or rdc62 or rdc63 or rdc64 or rdc65 or rdc66 or rdc67 or rdc68 or rdc69 or rdc7 or rdc70 or rdc71 or rdc72 or rdc73 or rdc74 or rdc75 or rdc76 or rdc77 or rdc78 or rdc79 or rdc8 or rdc80 or rdc81 or rdc82 or rdc83 or rdc84 or rdc85 or rdc86 or rdc87 or rdc88 or rdc89 or rdc9 or rdc90 or rdc91 or rdc92 or rdc93 or rdc94 or rdc95 or rdc96 or rdc97 or rdc98 or rdc99 or sel_rdc) begin rdc = rdc0; casex ({sel_rdc[7:5],sel_rdc[3:0]}) // synopsys parallel_case full_case infer_mux 7'd0: rdc = rdc0; 7'd1: rdc = rdc1; 7'd2: rdc = rdc2; 7'd3: rdc = rdc3; 7'd4: rdc = rdc4; 7'd5: rdc = rdc5; 7'd6: rdc = rdc6; 7'd7: rdc = rdc7; 7'd8: rdc = rdc8; 7'd9: rdc = rdc9; 7'd10: rdc = rdc10; 7'd11: rdc = rdc11; 7'd12: rdc = rdc12; 7'd13: rdc = rdc13; 7'd14: rdc = rdc14; 7'd15: rdc = rdc15; 7'd16: rdc = rdc16; 7'd17: rdc = rdc17; 7'd18: rdc = rdc18; 7'd19: rdc = rdc19; 7'd20: rdc = rdc20; 7'd21: rdc = rdc21; 7'd22: rdc = rdc22; 7'd23: rdc = rdc23; 7'd24: rdc = rdc24; 7'd25: rdc = rdc25; 7'd26: rdc = rdc26; 7'd27: rdc = rdc27; 7'd28: rdc = rdc28; 7'd29: rdc = rdc29; 7'd30: rdc = rdc30; 7'd31: rdc = rdc31; 7'd32: rdc = rdc32; 7'd33: rdc = rdc33; 7'd34: rdc = rdc34; 7'd35: rdc = rdc35; 7'd36: rdc = rdc36; 7'd37: rdc = rdc37; 7'd38: rdc = rdc38; 7'd39: rdc = rdc39; 7'd40: rdc = rdc40; 7'd41: rdc = rdc41; 7'd42: rdc = rdc42; 7'd43: rdc = rdc43; 7'd44: rdc = rdc44; 7'd45: rdc = rdc45; 7'd46: rdc = rdc46; 7'd47: rdc = rdc47; 7'd48: rdc = rdc48; 7'd49: rdc = rdc49; 7'd50: rdc = rdc50; 7'd51: rdc = rdc51; 7'd52: rdc = rdc52; 7'd53: rdc = rdc53; 7'd54: rdc = rdc54; 7'd55: rdc = rdc55; 7'd56: rdc = rdc56; 7'd57: rdc = rdc57; 7'd58: rdc = rdc58; 7'd59: rdc = rdc59; 7'd60: rdc = rdc60; 7'd61: rdc = rdc61; 7'd62: rdc = rdc62; 7'd63: rdc = rdc63; 7'd64: rdc = rdc64; 7'd65: rdc = rdc65; 7'd66: rdc = rdc66; 7'd67: rdc = rdc67; 7'd68: rdc = rdc68; 7'd69: rdc = rdc69; 7'd70: rdc = rdc70; 7'd71: rdc = rdc71; 7'd72: rdc = rdc72; 7'd73: rdc = rdc73; 7'd74: rdc = rdc74; 7'd75: rdc = rdc75; 7'd76: rdc = rdc76; 7'd77: rdc = rdc77; 7'd78: rdc = rdc78; 7'd79: rdc = rdc79; 7'd80: rdc = rdc80; 7'd81: rdc = rdc81; 7'd82: rdc = rdc82; 7'd83: rdc = rdc83; 7'd84: rdc = rdc84; 7'd85: rdc = rdc85; 7'd86: rdc = rdc86; 7'd87: rdc = rdc87; 7'd88: rdc = rdc88; 7'd89: rdc = rdc89; 7'd90: rdc = rdc90; 7'd91: rdc = rdc91; 7'd92: rdc = rdc92; 7'd93: rdc = rdc93; 7'd94: rdc = rdc94; 7'd95: rdc = rdc95; 7'd96: rdc = rdc96; 7'd97: rdc = rdc97; 7'd98: rdc = rdc98; 7'd99: rdc = rdc99; 7'd100: rdc = rdc100; 7'd101: rdc = rdc101; 7'd102: rdc = rdc102; 7'd103: rdc = rdc103; 7'd104: rdc = rdc104; 7'd105: rdc = rdc105; 7'd106: rdc = rdc106; 7'd107: rdc = rdc107; 7'd108: rdc = rdc108; 7'd109: rdc = rdc109; 7'd110: rdc = rdc110; 7'd111: rdc = rdc111; 7'd112: rdc = rdc112; 7'd113: rdc = rdc113; 7'd114: rdc = rdc114; 7'd115: rdc = rdc115; 7'd116: rdc = rdc116; 7'd117: rdc = rdc117; 7'd118: rdc = rdc118; 7'd119: rdc = rdc119; 7'd120: rdc = rdc120; 7'd121: rdc = rdc121; 7'd122: rdc = rdc122; 7'd123: rdc = rdc123; 7'd124: rdc = rdc124; 7'd125: rdc = rdc125; 7'd126: rdc = rdc126; 7'd127: rdc = rdc127; default:rdc = rdc0; endcase end // always @ (... assign sel_rdc[7:0] = decode_zc_rdc ? tt_rdc_reg[7:0] : decode_default_rdc ? fflp_rdc[7:0] : {fflp_rdc[7:5],5'b0}; // table_rdc // default_rdc is abailable @ DLY1 state zcp_xREG #(5) default_rdc_xREG(.clk(clk),.reset(reset[21]),.en(decode_default_rdc),.din({1'b0,rdc}),.qout(default_rdc[4:0])); // table_rdc is abailable @ DLY2 state zcp_xREG #(5) table_rdc_xREG (.clk(clk),.reset(reset[21]),.en(decode_table_rdc), .din({1'b0,rdc}),.qout(table_rdc[4:0])); // zc_rdc is available @ CAL2 state zcp_xREG #(5) zc_rdc_xREG (.clk(clk),.reset(reset[21]),.en(decode_zc_rdc), .din({1'b0,rdc}),.qout(zc_rdc[4:0])); niu_zcp_handle_decoder niu_zcp_handle_decoder (/*AUTOINST*/ // Outputs .fn (fn[1:0]), .handle (handle[19:0]), // Inputs .zc_rdc (zc_rdc[3:0]), .rdmc_zcp_func_num (rdmc_zcp_func_num[31:0]), .page_handle (page_handle[`PMS15:0])); /* --------------- spare gates --------------- */ `ifdef NEPTUNE wire [3:0] do_nad; wire [3:0] do_nor; wire [3:0] do_inv; wire [3:0] do_mux; wire [3:0] do_q; wire so; zcp_spare_gates zcp_slv_spare_gates ( .di_nd3 ({1'h1, 1'h1, do_q[3]}), .di_nd2 ({1'h1, 1'h1, do_q[2]}), .di_nd1 ({1'h1, 1'h1, do_q[1]}), .di_nd0 ({1'h1, 1'h1, do_q[0]}), .di_nr3 ({1'h0, 1'h0}), .di_nr2 ({1'h0, 1'h0}), .di_nr1 ({1'h0, 1'h0}), .di_nr0 ({1'h0, 1'h0}), .di_inv (do_nad[3:0]), .di_mx3 ({1'h0, 1'h0}), .di_mx2 ({1'h0, 1'h0}), .di_mx1 ({1'h0, 1'h0}), .di_mx0 ({1'h0, 1'h0}), .mx_sel (do_nor[3:0]), .di_reg (do_inv[3:0]), .wt_ena (do_mux[3:0]), .rst ({reset[0],reset[0],reset[0],reset[0]}), .si (1'h0), .se (1'h0), .clk (clk), .do_nad (do_nad[3:0]), .do_nor (do_nor[3:0]), .do_inv (do_inv[3:0]), .do_mux (do_mux[3:0]), .do_q (do_q[3:0]), .so (so) ); `else `endif endmodule // niu_zcp_slv