// ================================================================
// NVDLA Open Source Project
//
// Copyright(c) 2016 - 2017 NVIDIA Corporation. Licensed under the
// NVDLA Open Hardware License; Check "LICENSE" which comes with
// this distribution for more information.
// ================================================================
// File Name: NV_NVDLA_CFGROM_rom.v
// Register NVDLA_CFGROM_CFGROM_HW_VERSION_0
// Register NVDLA_CFGROM_CFGROM_GLB_DESC_0
// Register NVDLA_CFGROM_CFGROM_CIF_DESC_0
// Register NVDLA_CFGROM_CFGROM_CIF_CAP_INCOMPAT_0
// Register NVDLA_CFGROM_CFGROM_CIF_CAP_COMPAT_0
// Register NVDLA_CFGROM_CFGROM_CIF_BASE_WIDTH_0
// Register NVDLA_CFGROM_CFGROM_CIF_BASE_LATENCY_0
// Register NVDLA_CFGROM_CFGROM_CIF_BASE_BURST_LENGTH_MAX_0
// Register NVDLA_CFGROM_CFGROM_CIF_BASE_MEM_ADDR_WIDTH_0
// Register NVDLA_CFGROM_CFGROM_CDMA_DESC_0
// Register NVDLA_CFGROM_CFGROM_CDMA_CAP_INCOMPAT_0
// Register NVDLA_CFGROM_CFGROM_CDMA_CAP_COMPAT_0
// Register NVDLA_CFGROM_CFGROM_CDMA_BASE_FEATURE_TYPES_0
// Register NVDLA_CFGROM_CFGROM_CDMA_BASE_WEIGHT_TYPES_0
// Register NVDLA_CFGROM_CFGROM_CDMA_BASE_ATOMIC_C_0
// Register NVDLA_CFGROM_CFGROM_CDMA_BASE_ATOMIC_K_0
// Register NVDLA_CFGROM_CFGROM_CDMA_BASE_ATOMIC_M_0
// Register NVDLA_CFGROM_CFGROM_CDMA_BASE_CBUF_BANK_NUM_0
// Register NVDLA_CFGROM_CFGROM_CDMA_BASE_CBUF_BANK_WIDTH_0
// Register NVDLA_CFGROM_CFGROM_CDMA_BASE_CBUF_BANK_DEPTH_0
// Register NVDLA_CFGROM_CFGROM_CDMA_MULTI_BATCH_MAX_0
// Register NVDLA_CFGROM_CFGROM_CDMA_IMAGE_IN_FORMATS_PACKED_0
// Register NVDLA_CFGROM_CFGROM_CDMA_IMAGE_IN_FORMATS_SEMI_0
// Register NVDLA_CFGROM_CFGROM_CBUF_DESC_0
// Register NVDLA_CFGROM_CFGROM_CBUF_CAP_INCOMPAT_0
// Register NVDLA_CFGROM_CFGROM_CBUF_CAP_COMPAT_0
// Register NVDLA_CFGROM_CFGROM_CBUF_BASE_CBUF_BANK_NUM_0
// Register NVDLA_CFGROM_CFGROM_CBUF_BASE_CBUF_BANK_WIDTH_0
// Register NVDLA_CFGROM_CFGROM_CBUF_BASE_CBUF_BANK_DEPTH_0
// Register NVDLA_CFGROM_CFGROM_CBUF_BASE_CDMA_ID_0
// Register NVDLA_CFGROM_CFGROM_CSC_DESC_0
// Register NVDLA_CFGROM_CFGROM_CSC_CAP_INCOMPAT_0
// Register NVDLA_CFGROM_CFGROM_CSC_CAP_COMPAT_0
// Register NVDLA_CFGROM_CFGROM_CSC_BASE_FEATURE_TYPES_0
// Register NVDLA_CFGROM_CFGROM_CSC_BASE_WEIGHT_TYPES_0
// Register NVDLA_CFGROM_CFGROM_CSC_BASE_ATOMIC_C_0
// Register NVDLA_CFGROM_CFGROM_CSC_BASE_ATOMIC_K_0
// Register NVDLA_CFGROM_CFGROM_CSC_BASE_ATOMIC_M_0
// Register NVDLA_CFGROM_CFGROM_CSC_BASE_CBUF_BANK_NUM_0
// Register NVDLA_CFGROM_CFGROM_CSC_BASE_CBUF_BANK_WIDTH_0
// Register NVDLA_CFGROM_CFGROM_CSC_BASE_CBUF_BANK_DEPTH_0
// Register NVDLA_CFGROM_CFGROM_CSC_BASE_CDMA_ID_0
// Register NVDLA_CFGROM_CFGROM_CSC_MULTI_BATCH_MAX_0
// Register NVDLA_CFGROM_CFGROM_CMAC_A_DESC_0
// Register NVDLA_CFGROM_CFGROM_CMAC_A_CAP_INCOMPAT_0
// Register NVDLA_CFGROM_CFGROM_CMAC_A_CAP_COMPAT_0
// Register NVDLA_CFGROM_CFGROM_CMAC_A_BASE_FEATURE_TYPES_0
// Register NVDLA_CFGROM_CFGROM_CMAC_A_BASE_WEIGHT_TYPES_0
// Register NVDLA_CFGROM_CFGROM_CMAC_A_BASE_ATOMIC_C_0
// Register NVDLA_CFGROM_CFGROM_CMAC_A_BASE_ATOMIC_K_0
// Register NVDLA_CFGROM_CFGROM_CMAC_A_BASE_CDMA_ID_0
// Register NVDLA_CFGROM_CFGROM_CMAC_B_DESC_0
// Register NVDLA_CFGROM_CFGROM_CMAC_B_CAP_INCOMPAT_0
// Register NVDLA_CFGROM_CFGROM_CMAC_B_CAP_COMPAT_0
// Register NVDLA_CFGROM_CFGROM_CMAC_B_BASE_FEATURE_TYPES_0
// Register NVDLA_CFGROM_CFGROM_CMAC_B_BASE_WEIGHT_TYPES_0
// Register NVDLA_CFGROM_CFGROM_CMAC_B_BASE_ATOMIC_C_0
// Register NVDLA_CFGROM_CFGROM_CMAC_B_BASE_ATOMIC_K_0
// Register NVDLA_CFGROM_CFGROM_CMAC_B_BASE_CDMA_ID_0
// Register NVDLA_CFGROM_CFGROM_CACC_DESC_0
// Register NVDLA_CFGROM_CFGROM_CACC_CAP_INCOMPAT_0
// Register NVDLA_CFGROM_CFGROM_CACC_CAP_COMPAT_0
// Register NVDLA_CFGROM_CFGROM_CACC_BASE_FEATURE_TYPES_0
// Register NVDLA_CFGROM_CFGROM_CACC_BASE_WEIGHT_TYPES_0
// Register NVDLA_CFGROM_CFGROM_CACC_BASE_ATOMIC_C_0
// Register NVDLA_CFGROM_CFGROM_CACC_BASE_ATOMIC_K_0
// Register NVDLA_CFGROM_CFGROM_CACC_BASE_CDMA_ID_0
// Register NVDLA_CFGROM_CFGROM_CACC_MULTI_BATCH_MAX_0
// Register NVDLA_CFGROM_CFGROM_SDP_RDMA_DESC_0
// Register NVDLA_CFGROM_CFGROM_SDP_RDMA_CAP_INCOMPAT_0
// Register NVDLA_CFGROM_CFGROM_SDP_RDMA_CAP_COMPAT_0
// Register NVDLA_CFGROM_CFGROM_SDP_RDMA_BASE_ATOMIC_M_0
// Register NVDLA_CFGROM_CFGROM_SDP_RDMA_BASE_SDP_ID_0
// Register NVDLA_CFGROM_CFGROM_SDP_DESC_0
// Register NVDLA_CFGROM_CFGROM_SDP_CAP_INCOMPAT_0
// Register NVDLA_CFGROM_CFGROM_SDP_CAP_COMPAT_0
// Register NVDLA_CFGROM_CFGROM_SDP_BASE_FEATURE_TYPES_0
// Register NVDLA_CFGROM_CFGROM_SDP_BASE_WEIGHT_TYPES_0
// Register NVDLA_CFGROM_CFGROM_SDP_BASE_CDMA_ID_0
// Register NVDLA_CFGROM_CFGROM_SDP_MULTI_BATCH_MAX_0
// Register NVDLA_CFGROM_CFGROM_SDP_BS_THROUGHPUT_0
// Register NVDLA_CFGROM_CFGROM_SDP_BN_THROUGHPUT_0
// Register NVDLA_CFGROM_CFGROM_SDP_EW_THROUGHPUT_0
// Register NVDLA_CFGROM_CFGROM_PDP_RDMA_DESC_0
// Register NVDLA_CFGROM_CFGROM_PDP_RDMA_CAP_INCOMPAT_0
// Register NVDLA_CFGROM_CFGROM_PDP_RDMA_CAP_COMPAT_0
// Register NVDLA_CFGROM_CFGROM_PDP_RDMA_BASE_ATOMIC_M_0
// Register NVDLA_CFGROM_CFGROM_PDP_RDMA_BASE_PDP_ID_0
// Register NVDLA_CFGROM_CFGROM_PDP_DESC_0
// Register NVDLA_CFGROM_CFGROM_PDP_CAP_INCOMPAT_0
// Register NVDLA_CFGROM_CFGROM_PDP_CAP_COMPAT_0
// Register NVDLA_CFGROM_CFGROM_PDP_BASE_FEATURE_TYPES_0
// Register NVDLA_CFGROM_CFGROM_PDP_BASE_THROUGHPUT_0
// Register NVDLA_CFGROM_CFGROM_CDP_RDMA_DESC_0
// Register NVDLA_CFGROM_CFGROM_CDP_RDMA_CAP_INCOMPAT_0
// Register NVDLA_CFGROM_CFGROM_CDP_RDMA_CAP_COMPAT_0
// Register NVDLA_CFGROM_CFGROM_CDP_RDMA_BASE_ATOMIC_M_0
// Register NVDLA_CFGROM_CFGROM_CDP_RDMA_BASE_CDP_ID_0
// Register NVDLA_CFGROM_CFGROM_CDP_DESC_0
// Register NVDLA_CFGROM_CFGROM_CDP_CAP_INCOMPAT_0
// Register NVDLA_CFGROM_CFGROM_CDP_CAP_COMPAT_0
// Register NVDLA_CFGROM_CFGROM_CDP_BASE_FEATURE_TYPES_0
// Register NVDLA_CFGROM_CFGROM_CDP_BASE_THROUGHPUT_0
// Register NVDLA_CFGROM_CFGROM_END_OF_LIST_0
//
// ADDRESS SPACES
//
module NV_NVDLA_CFGROM_rom (
   reg_rd_data
  ,reg_offset
// verilint 498 off
// leda UNUSED_DEC off
  ,reg_wr_data
// verilint 498 on
// leda UNUSED_DEC on
  ,reg_wr_en
  ,nvdla_core_clk
  ,nvdla_core_rstn
  );
output [31:0] reg_rd_data;
input [11:0] reg_offset;
input [31:0] reg_wr_data; //(UNUSED_DEC)
input reg_wr_en;
input nvdla_core_clk;
input nvdla_core_rstn;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//// leda FM_2_23 off
//reg arreggen_abort_on_invalid_wr;
//reg arreggen_abort_on_rowr;
//reg arreggen_dump;
//// leda FM_2_23 on
reg [31:0] reg_rd_data;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
always @(*) begin
  case (reg_offset)
     (32'h0 & 32'h00000fff): reg_rd_data = 32'h10001 ;
     (32'h4 & 32'h00000fff): reg_rd_data = 32'h1 ;
     (32'h8 & 32'h00000fff): reg_rd_data = 32'h180002 ;
     (32'hc & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h10 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h14 & 32'h00000fff): reg_rd_data = 32'h8 ;
     (32'h18 & 32'h00000fff): reg_rd_data = 32'h32 ;
     (32'h1c & 32'h00000fff): reg_rd_data = 32'h80 ;
     (32'h20 & 32'h00000fff): reg_rd_data = 32'h400 ;
     (32'h24 & 32'h00000fff): reg_rd_data = 32'h340003 ;
     (32'h28 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h2c & 32'h00000fff): reg_rd_data = 32'h10 ;
     (32'h30 & 32'h00000fff): reg_rd_data = 32'h10 ;
     (32'h34 & 32'h00000fff): reg_rd_data = 32'h10 ;
     (32'h38 & 32'h00000fff): reg_rd_data = 32'h8 ;
     (32'h3c & 32'h00000fff): reg_rd_data = 32'h8 ;
     (32'h40 & 32'h00000fff): reg_rd_data = 32'h8 ;
     (32'h44 & 32'h00000fff): reg_rd_data = 32'h20 ;
     (32'h48 & 32'h00000fff): reg_rd_data = 32'h8 ;
     (32'h4c & 32'h00000fff): reg_rd_data = 32'h200 ;
     (32'h50 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h54 & 32'h00000fff): reg_rd_data = 32'hcfff001 ;
     (32'h58 & 32'h00000fff): reg_rd_data = 32'h3 ;
     (32'h5c & 32'h00000fff): reg_rd_data = 32'h180004 ;
     (32'h60 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h64 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h68 & 32'h00000fff): reg_rd_data = 32'h20 ;
     (32'h6c & 32'h00000fff): reg_rd_data = 32'h8 ;
     (32'h70 & 32'h00000fff): reg_rd_data = 32'h200 ;
     (32'h74 & 32'h00000fff): reg_rd_data = 32'h3 ;
     (32'h78 & 32'h00000fff): reg_rd_data = 32'h300005 ;
     (32'h7c & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h80 & 32'h00000fff): reg_rd_data = 32'h10 ;
     (32'h84 & 32'h00000fff): reg_rd_data = 32'h10 ;
     (32'h88 & 32'h00000fff): reg_rd_data = 32'h10 ;
     (32'h8c & 32'h00000fff): reg_rd_data = 32'h8 ;
     (32'h90 & 32'h00000fff): reg_rd_data = 32'h8 ;
     (32'h94 & 32'h00000fff): reg_rd_data = 32'h8 ;
     (32'h98 & 32'h00000fff): reg_rd_data = 32'h20 ;
     (32'h9c & 32'h00000fff): reg_rd_data = 32'h8 ;
     (32'ha0 & 32'h00000fff): reg_rd_data = 32'h200 ;
     (32'ha4 & 32'h00000fff): reg_rd_data = 32'h3 ;
     (32'ha8 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'hac & 32'h00000fff): reg_rd_data = 32'h1c0006 ;
     (32'hb0 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'hb4 & 32'h00000fff): reg_rd_data = 32'h10 ;
     (32'hb8 & 32'h00000fff): reg_rd_data = 32'h10 ;
     (32'hbc & 32'h00000fff): reg_rd_data = 32'h10 ;
     (32'hc0 & 32'h00000fff): reg_rd_data = 32'h8 ;
     (32'hc4 & 32'h00000fff): reg_rd_data = 32'h8 ;
     (32'hc8 & 32'h00000fff): reg_rd_data = 32'h3 ;
     (32'hcc & 32'h00000fff): reg_rd_data = 32'h1c0006 ;
     (32'hd0 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'hd4 & 32'h00000fff): reg_rd_data = 32'h10 ;
     (32'hd8 & 32'h00000fff): reg_rd_data = 32'h10 ;
     (32'hdc & 32'h00000fff): reg_rd_data = 32'h10 ;
     (32'he0 & 32'h00000fff): reg_rd_data = 32'h8 ;
     (32'he4 & 32'h00000fff): reg_rd_data = 32'h8 ;
     (32'he8 & 32'h00000fff): reg_rd_data = 32'h3 ;
     (32'hec & 32'h00000fff): reg_rd_data = 32'h200007 ;
     (32'hf0 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'hf4 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'hf8 & 32'h00000fff): reg_rd_data = 32'h10 ;
     (32'hfc & 32'h00000fff): reg_rd_data = 32'h10 ;
     (32'h100 & 32'h00000fff): reg_rd_data = 32'h8 ;
     (32'h104 & 32'h00000fff): reg_rd_data = 32'h8 ;
     (32'h108 & 32'h00000fff): reg_rd_data = 32'h3 ;
     (32'h10c & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h110 & 32'h00000fff): reg_rd_data = 32'he0008 ;
     (32'h114 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h118 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h11c & 32'h00000fff): reg_rd_data = 32'h8 ;
     (32'h120 & 32'h00000fff): reg_rd_data = 32'h9 ;
     (32'h124 & 32'h00000fff): reg_rd_data = 32'h200009 ;
     (32'h128 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h12c & 32'h00000fff): reg_rd_data = 32'h18 ;
     (32'h130 & 32'h00000fff): reg_rd_data = 32'h10 ;
     (32'h134 & 32'h00000fff): reg_rd_data = 32'h10 ;
     (32'h138 & 32'h00000fff): reg_rd_data = 32'h3 ;
     (32'h13c & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h140 & 32'h00000fff): reg_rd_data = 32'h1 ;
     (32'h144 & 32'h00000fff): reg_rd_data = 32'h1 ;
     (32'h148 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h14c & 32'h00000fff): reg_rd_data = 32'he000a ;
     (32'h150 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h154 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h158 & 32'h00000fff): reg_rd_data = 32'h8 ;
     (32'h15c & 32'h00000fff): reg_rd_data = 32'hb ;
     (32'h160 & 32'h00000fff): reg_rd_data = 32'h10000b ;
     (32'h164 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h168 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h16c & 32'h00000fff): reg_rd_data = 32'h10 ;
     (32'h170 & 32'h00000fff): reg_rd_data = 32'h1 ;
     (32'h174 & 32'h00000fff): reg_rd_data = 32'he000c ;
     (32'h178 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h17c & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h180 & 32'h00000fff): reg_rd_data = 32'h8 ;
     (32'h184 & 32'h00000fff): reg_rd_data = 32'hd ;
     (32'h188 & 32'h00000fff): reg_rd_data = 32'h10000d ;
     (32'h18c & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h190 & 32'h00000fff): reg_rd_data = 32'h0 ;
     (32'h194 & 32'h00000fff): reg_rd_data = 32'h10 ;
     (32'h198 & 32'h00000fff): reg_rd_data = 32'h1 ;
     (32'h19c & 32'h00000fff): reg_rd_data = 32'h0 ;
    default: reg_rd_data = {32{1'b0}};
  endcase
end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//// VCS coverage off
//initial begin
// arreggen_dump = $test$plusargs("arreggen_dump_wr");
// arreggen_abort_on_rowr = $test$plusargs("arreggen_abort_on_rowr");
// arreggen_abort_on_invalid_wr = $test$plusargs("arreggen_abort_on_invalid_wr");
// $timeformat(-9, 2, "ns", 15);
//end
//
//always @(posedge nvdla_core_clk) begin
// if (reg_wr_en) begin
// case(reg_offset)
// (32'h088 & 32'h00000fff): begin
// if (arreggen_dump) $display("%t:%m: read-only reg wr: NVDLA_PDP_D_INF_INPUT_NUM_0 = 0x%h", $time, reg_wr_data);
// if (arreggen_abort_on_rowr) begin $display("ERROR: write to read-only register!"); $finish; end
// end
// default: begin
// if (arreggen_dump) $display("%t:%m: reg wr: Unknown register (0x%h) = 0x%h", $time, reg_offset, reg_wr_data);
// if (arreggen_abort_on_invalid_wr) begin $display("ERROR: write to undefined register!"); $finish; end
// end
// endcase
// end
//end
//
//// VCS coverage on
//// synopsys translate_on
endmodule