2984 lines
238 KiB
Verilog
2984 lines
238 KiB
Verilog
|
|
/*******************************************************************************
|
|
Verilog netlist generated by IPGEN Radiant Software (64-bit) 2.0.1.281.2
|
|
Soft IP Version: 1.0.0
|
|
Sun Jul 10 15:47:32 2022
|
|
*******************************************************************************/
|
|
/*******************************************************************************
|
|
Wrapper Module generated per user settings.
|
|
*******************************************************************************/
|
|
module rom_sec (rd_clk_i,
|
|
rst_i,
|
|
rd_en_i,
|
|
rd_clk_en_i,
|
|
rd_addr_i,
|
|
rd_data_o) ;
|
|
input rd_clk_i ;
|
|
input rst_i ;
|
|
input rd_en_i ;
|
|
input rd_clk_en_i ;
|
|
input [11:0] rd_addr_i ;
|
|
output [15:0] rd_data_o ;
|
|
parameter MEM_ID = "rom_sec" ;
|
|
rom_sec_ipgen_lscc_rom #(.FAMILY("LIFCL"),
|
|
.MEM_ID(MEM_ID),
|
|
.MEM_SIZE("16,4096"),
|
|
.RADDR_DEPTH(4096),
|
|
.RDATA_WIDTH(16),
|
|
.RADDR_WIDTH(12),
|
|
.REGMODE("noreg"),
|
|
.OUTPUT_CLK_EN(0),
|
|
.ECC_ENABLE(0),
|
|
.RESETMODE("sync"),
|
|
.INIT_MODE("mem_file"),
|
|
.INIT_FILE("misc/rom_second_rom_sec_copy.mem"),
|
|
.INIT_FILE_FORMAT("hex"),
|
|
.INIT_VALUE_00("0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CF322C000x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFB060000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF300000AC000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF300062E000"),
|
|
.INIT_VALUE_01("0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F"),
|
|
.INIT_VALUE_02("0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF"),
|
|
.INIT_VALUE_03("0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC"),
|
|
.INIT_VALUE_04("0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC0"),
|
|
.INIT_VALUE_05("0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F000"),
|
|
.INIT_VALUE_06("0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F"),
|
|
.INIT_VALUE_07("0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF"),
|
|
.INIT_VALUE_08("0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC"),
|
|
.INIT_VALUE_09("0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC0"),
|
|
.INIT_VALUE_0A("0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F000"),
|
|
.INIT_VALUE_0B("0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F"),
|
|
.INIT_VALUE_0C("0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF"),
|
|
.INIT_VALUE_0D("0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC"),
|
|
.INIT_VALUE_0E("0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC0"),
|
|
.INIT_VALUE_0F("0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F000"),
|
|
.INIT_VALUE_10("0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F"),
|
|
.INIT_VALUE_11("0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF"),
|
|
.INIT_VALUE_12("0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC"),
|
|
.INIT_VALUE_13("0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC0"),
|
|
.INIT_VALUE_14("0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F000"),
|
|
.INIT_VALUE_15("0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F"),
|
|
.INIT_VALUE_16("0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF"),
|
|
.INIT_VALUE_17("0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC"),
|
|
.INIT_VALUE_18("0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC0"),
|
|
.INIT_VALUE_19("0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F000"),
|
|
.INIT_VALUE_1A("0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F"),
|
|
.INIT_VALUE_1B("0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF"),
|
|
.INIT_VALUE_1C("0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC"),
|
|
.INIT_VALUE_1D("0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC0"),
|
|
.INIT_VALUE_1E("0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F000"),
|
|
.INIT_VALUE_1F("0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F"),
|
|
.INIT_VALUE_20("0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF"),
|
|
.INIT_VALUE_21("0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC"),
|
|
.INIT_VALUE_22("0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC0"),
|
|
.INIT_VALUE_23("0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F000"),
|
|
.INIT_VALUE_24("0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F"),
|
|
.INIT_VALUE_25("0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF"),
|
|
.INIT_VALUE_26("0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC"),
|
|
.INIT_VALUE_27("0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC0"),
|
|
.INIT_VALUE_28("0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F000"),
|
|
.INIT_VALUE_29("0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F"),
|
|
.INIT_VALUE_2A("0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF"),
|
|
.INIT_VALUE_2B("0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC"),
|
|
.INIT_VALUE_2C("0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC0"),
|
|
.INIT_VALUE_2D("0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F000"),
|
|
.INIT_VALUE_2E("0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F"),
|
|
.INIT_VALUE_2F("0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF"),
|
|
.INIT_VALUE_30("0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC"),
|
|
.INIT_VALUE_31("0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC0"),
|
|
.INIT_VALUE_32("0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F000"),
|
|
.INIT_VALUE_33("0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F"),
|
|
.INIT_VALUE_34("0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF"),
|
|
.INIT_VALUE_35("0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC"),
|
|
.INIT_VALUE_36("0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC0"),
|
|
.INIT_VALUE_37("0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F000"),
|
|
.INIT_VALUE_38("0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F"),
|
|
.INIT_VALUE_39("0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF"),
|
|
.INIT_VALUE_3A("0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC"),
|
|
.INIT_VALUE_3B("0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC0"),
|
|
.INIT_VALUE_3C("0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F000"),
|
|
.INIT_VALUE_3D("0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F0x3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F"),
|
|
.INIT_VALUE_3E("0x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x3FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC00x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF0x000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF"),
|
|
.INIT_VALUE_3F("0x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0000x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC0x03CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC000FF3000F3F0003FCC003CFC")) lscc_rom_inst (.rd_clk_i(rd_clk_i),
|
|
.rst_i(rst_i),
|
|
.rd_en_i(rd_en_i),
|
|
.rd_clk_en_i(rd_clk_en_i),
|
|
.rd_out_clk_en_i(1'b1),
|
|
.rd_addr_i(rd_addr_i[11:0]),
|
|
.rd_data_o(rd_data_o[15:0]),
|
|
.one_err_det_o(),
|
|
.two_err_det_o()) ;
|
|
endmodule
|
|
|
|
|
|
|
|
// =============================================================================
|
|
// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
|
// -----------------------------------------------------------------------------
|
|
// Copyright (c) 2017 by Lattice Semiconductor Corporation
|
|
// ALL RIGHTS RESERVED
|
|
// -----------------------------------------------------------------------------
|
|
//
|
|
// Permission:
|
|
//
|
|
// Lattice SG Pte. Ltd. grants permission to use this code
|
|
// pursuant to the terms of the Lattice Reference Design License Agreement.
|
|
//
|
|
//
|
|
// Disclaimer:
|
|
//
|
|
// This VHDL or Verilog source code is intended as a design reference
|
|
// which illustrates how these types of functions can be implemented.
|
|
// It is the user's responsibility to verify their design for
|
|
// consistency and functionality through the use of formal
|
|
// verification methods. Lattice provides no warranty
|
|
// regarding the use or functionality of this code.
|
|
//
|
|
// -----------------------------------------------------------------------------
|
|
//
|
|
// Lattice SG Pte. Ltd.
|
|
// 101 Thomson Road, United Square #07-02
|
|
// Singapore 307591
|
|
//
|
|
//
|
|
// TEL: 1-800-Lattice (USA and Canada)
|
|
// +65-6631-2000 (Singapore)
|
|
// +1-503-268-8001 (other locations)
|
|
//
|
|
// web: http://www.latticesemi.com/
|
|
// email: techsupport@latticesemi.com
|
|
//
|
|
// -----------------------------------------------------------------------------
|
|
//
|
|
// =============================================================================
|
|
// FILE DETAILS
|
|
// Project : Radiant Software 1.1
|
|
// File : lscc_rom.v
|
|
// Title :
|
|
// Dependencies :
|
|
// Description : Implements a ROM implementing EBR.
|
|
// =============================================================================
|
|
// REVISION HISTORY
|
|
// Version : 1.0.0.
|
|
// Author(s) :
|
|
// Mod. Date :
|
|
// Changes Made : Initial release.
|
|
// =============================================================================
|
|
module rom_sec_ipgen_lscc_rom #(parameter FAMILY = "iCE40UP",
|
|
parameter RADDR_DEPTH = 1024,
|
|
parameter RADDR_WIDTH = clog2(RADDR_DEPTH),
|
|
parameter RDATA_WIDTH = 18,
|
|
parameter REGMODE = "reg",
|
|
parameter GSR = "",
|
|
parameter RESETMODE = "sync",
|
|
parameter INIT_FILE = "none",
|
|
parameter INIT_FILE_FORMAT = "binary",
|
|
parameter MODULE_TYPE = "rom",
|
|
parameter INIT_MODE = "none",
|
|
parameter PIPELINES = 0,
|
|
parameter ECC_ENABLE = 0,
|
|
parameter ASYNC_RST_RELEASE = "sync",
|
|
parameter OUTPUT_CLK_EN = 0,
|
|
parameter MEM_SIZE = "1024,18",
|
|
parameter MEM_ID = "MEM0",
|
|
parameter INIT_VALUE_00 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_01 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_02 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_03 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_04 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_05 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_06 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_07 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_08 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_09 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_0A = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_0B = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_0C = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_0D = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_0E = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_0F = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_10 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_11 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_12 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_13 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_14 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_15 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_16 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_17 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_18 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_19 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_1A = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_1B = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_1C = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_1D = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_1E = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_1F = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_20 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_21 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_22 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_23 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_24 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_25 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_26 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_27 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_28 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_29 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_2A = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_2B = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_2C = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_2D = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_2E = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_2F = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_30 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_31 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_32 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_33 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_34 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_35 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_36 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_37 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_38 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_39 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_3A = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_3B = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_3C = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_3D = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_3E = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_3F = "0x0000000000000000000000000000000000000000000000000000000000000000") (
|
|
// -----------------------------------------------------------------------------
|
|
// Input/Output Ports
|
|
// -----------------------------------------------------------------------------
|
|
input rd_clk_i,
|
|
input rst_i,
|
|
input rd_clk_en_i,
|
|
input rd_out_clk_en_i,
|
|
input rd_en_i,
|
|
input [(RADDR_WIDTH - 1):0] rd_addr_i,
|
|
output [(RDATA_WIDTH - 1):0] rd_data_o,
|
|
output one_err_det_o,
|
|
output two_err_det_o) ;
|
|
// -----------------------------------------------------------------------------
|
|
// Local Parameters
|
|
// -----------------------------------------------------------------------------
|
|
rom_sec_ipgen_lscc_rom_inst #(.FAMILY(FAMILY),
|
|
.ADDR_DEPTH(RADDR_DEPTH),
|
|
.ADDR_WIDTH(RADDR_WIDTH),
|
|
.DATA_WIDTH(RDATA_WIDTH),
|
|
.REGMODE(REGMODE),
|
|
.RESETMODE(RESETMODE),
|
|
.INIT_FILE(INIT_FILE),
|
|
.INIT_FILE_FORMAT(INIT_FILE_FORMAT),
|
|
.INIT_MODE(INIT_MODE),
|
|
.BYTE_ENABLE(0),
|
|
.ASYNC_RST_RELEASE(ASYNC_RST_RELEASE),
|
|
.OUTPUT_CLK_EN(OUTPUT_CLK_EN),
|
|
.OPTIMIZATION("speed"),
|
|
.MEM_SIZE(MEM_SIZE),
|
|
.MEM_ID(MEM_ID),
|
|
.ECC_ENABLE(ECC_ENABLE),
|
|
.BYTE_WIDTH(1),
|
|
.INIT_VALUE_00(INIT_VALUE_00),
|
|
.INIT_VALUE_01(INIT_VALUE_01),
|
|
.INIT_VALUE_02(INIT_VALUE_02),
|
|
.INIT_VALUE_03(INIT_VALUE_03),
|
|
.INIT_VALUE_04(INIT_VALUE_04),
|
|
.INIT_VALUE_05(INIT_VALUE_05),
|
|
.INIT_VALUE_06(INIT_VALUE_06),
|
|
.INIT_VALUE_07(INIT_VALUE_07),
|
|
.INIT_VALUE_08(INIT_VALUE_08),
|
|
.INIT_VALUE_09(INIT_VALUE_09),
|
|
.INIT_VALUE_0A(INIT_VALUE_0A),
|
|
.INIT_VALUE_0B(INIT_VALUE_0B),
|
|
.INIT_VALUE_0C(INIT_VALUE_0C),
|
|
.INIT_VALUE_0D(INIT_VALUE_0D),
|
|
.INIT_VALUE_0E(INIT_VALUE_0E),
|
|
.INIT_VALUE_0F(INIT_VALUE_0F),
|
|
.INIT_VALUE_10(INIT_VALUE_10),
|
|
.INIT_VALUE_11(INIT_VALUE_11),
|
|
.INIT_VALUE_12(INIT_VALUE_12),
|
|
.INIT_VALUE_13(INIT_VALUE_13),
|
|
.INIT_VALUE_14(INIT_VALUE_14),
|
|
.INIT_VALUE_15(INIT_VALUE_15),
|
|
.INIT_VALUE_16(INIT_VALUE_16),
|
|
.INIT_VALUE_17(INIT_VALUE_17),
|
|
.INIT_VALUE_18(INIT_VALUE_18),
|
|
.INIT_VALUE_19(INIT_VALUE_19),
|
|
.INIT_VALUE_1A(INIT_VALUE_1A),
|
|
.INIT_VALUE_1B(INIT_VALUE_1B),
|
|
.INIT_VALUE_1C(INIT_VALUE_1C),
|
|
.INIT_VALUE_1D(INIT_VALUE_1D),
|
|
.INIT_VALUE_1E(INIT_VALUE_1E),
|
|
.INIT_VALUE_1F(INIT_VALUE_1F),
|
|
.INIT_VALUE_20(INIT_VALUE_20),
|
|
.INIT_VALUE_21(INIT_VALUE_21),
|
|
.INIT_VALUE_22(INIT_VALUE_22),
|
|
.INIT_VALUE_23(INIT_VALUE_23),
|
|
.INIT_VALUE_24(INIT_VALUE_24),
|
|
.INIT_VALUE_25(INIT_VALUE_25),
|
|
.INIT_VALUE_26(INIT_VALUE_26),
|
|
.INIT_VALUE_27(INIT_VALUE_27),
|
|
.INIT_VALUE_28(INIT_VALUE_28),
|
|
.INIT_VALUE_29(INIT_VALUE_29),
|
|
.INIT_VALUE_2A(INIT_VALUE_2A),
|
|
.INIT_VALUE_2B(INIT_VALUE_2B),
|
|
.INIT_VALUE_2C(INIT_VALUE_2C),
|
|
.INIT_VALUE_2D(INIT_VALUE_2D),
|
|
.INIT_VALUE_2E(INIT_VALUE_2E),
|
|
.INIT_VALUE_2F(INIT_VALUE_2F),
|
|
.INIT_VALUE_30(INIT_VALUE_30),
|
|
.INIT_VALUE_31(INIT_VALUE_31),
|
|
.INIT_VALUE_32(INIT_VALUE_32),
|
|
.INIT_VALUE_33(INIT_VALUE_33),
|
|
.INIT_VALUE_34(INIT_VALUE_34),
|
|
.INIT_VALUE_35(INIT_VALUE_35),
|
|
.INIT_VALUE_36(INIT_VALUE_36),
|
|
.INIT_VALUE_37(INIT_VALUE_37),
|
|
.INIT_VALUE_38(INIT_VALUE_38),
|
|
.INIT_VALUE_39(INIT_VALUE_39),
|
|
.INIT_VALUE_3A(INIT_VALUE_3A),
|
|
.INIT_VALUE_3B(INIT_VALUE_3B),
|
|
.INIT_VALUE_3C(INIT_VALUE_3C),
|
|
.INIT_VALUE_3D(INIT_VALUE_3D),
|
|
.INIT_VALUE_3E(INIT_VALUE_3E),
|
|
.INIT_VALUE_3F(INIT_VALUE_3F)) u_rom (.clk_i(rd_clk_i),
|
|
.rst_i(rst_i),
|
|
.clk_en_i((rd_clk_en_i & rd_en_i)),
|
|
.rd_out_clk_en_i(rd_out_clk_en_i),
|
|
.wr_en_i(1'b0),
|
|
.wr_data_i({RDATA_WIDTH{1'b0}}),
|
|
.addr_i(rd_addr_i),
|
|
.ben_i(1'b1),
|
|
.rd_data_o(rd_data_o),
|
|
.one_err_det_o(one_err_det_o),
|
|
.two_err_det_o(two_err_det_o)) ;
|
|
// -----------------------------------------------------------------------------
|
|
// Function Definition
|
|
// -----------------------------------------------------------------------------
|
|
function [31:0] clog2 ;
|
|
input [31:0] value ;
|
|
reg [31:0] num ;
|
|
begin
|
|
num = (value - 1) ;
|
|
for (clog2 = 0 ; (num > 0) ; clog2 = (clog2 + 1))
|
|
num = (num >> 1) ;
|
|
end
|
|
endfunction
|
|
endmodule
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// lscc_rom_inst.v
|
|
// Local Variables:
|
|
// verilog-library-directories: ("../../common")
|
|
// End:
|
|
//=============================================================================
|
|
// =============================================================================
|
|
// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
|
// -----------------------------------------------------------------------------
|
|
// Copyright (c) 2017 by Lattice Semiconductor Corporation
|
|
// ALL RIGHTS RESERVED
|
|
// -----------------------------------------------------------------------------
|
|
//
|
|
// Permission:
|
|
//
|
|
// Lattice SG Pte. Ltd. grants permission to use this code
|
|
// pursuant to the terms of the Lattice Reference Design License Agreement.
|
|
//
|
|
//
|
|
// Disclaimer:
|
|
//
|
|
// This VHDL or Verilog source code is intended as a design reference
|
|
// which illustrates how these types of functions can be implemented.
|
|
// It is the user's responsibility to verify their design for
|
|
// consistency and functionality through the use of formal
|
|
// verification methods. Lattice provides no warranty
|
|
// regarding the use or functionality of this code.
|
|
//
|
|
// -----------------------------------------------------------------------------
|
|
//
|
|
// Lattice SG Pte. Ltd.
|
|
// 101 Thomson Road, United Square #07-02
|
|
// Singapore 307591
|
|
//
|
|
//
|
|
// TEL: 1-800-Lattice (USA and Canada)
|
|
// +65-6631-2000 (Singapore)
|
|
// +1-503-268-8001 (other locations)
|
|
//
|
|
// web: http://www.latticesemi.com/
|
|
// email: techsupport@latticesemi.com
|
|
//
|
|
// -----------------------------------------------------------------------------
|
|
//
|
|
// =============================================================================
|
|
// FILE DETAILS
|
|
// Project : Radiant Software 1.1
|
|
// File : lscc_rom_inst.v
|
|
// Title :
|
|
// Dependencies :
|
|
// Description : Implements a Single Port RAM using EBR.
|
|
// =============================================================================
|
|
// REVISION HISTORY
|
|
// Version : 1.1.0.
|
|
// Author(s) :
|
|
// Mod. Date :
|
|
// Changes Made : Initial release.
|
|
// =============================================================================
|
|
module rom_sec_ipgen_lscc_rom_inst #(parameter _FCODE_LIFCL_ = 1,
|
|
parameter _FCODE_ICE_ = 2,
|
|
parameter _FCODE_COMMON_ = 0,
|
|
parameter FAMILY = "LIFCL",
|
|
parameter FAMILY_CODE = ((FAMILY == "iCE40UP") ? _FCODE_ICE_ : ((FAMILY == "LIFCL") ? _FCODE_LIFCL_ : _FCODE_COMMON_)),
|
|
parameter ADDR_DEPTH = 1024,
|
|
parameter ADDR_WIDTH = clog2(ADDR_DEPTH),
|
|
parameter DATA_WIDTH = 18,
|
|
parameter REGMODE = "reg",
|
|
parameter GSR = "",
|
|
parameter RESETMODE = "sync",
|
|
parameter INIT_FILE = "none",
|
|
parameter INIT_FILE_FORMAT = "binary",
|
|
parameter WRITE_MODE = "normal",
|
|
parameter MODULE_TYPE = "ram_dq",
|
|
parameter INIT_MODE = "none",
|
|
parameter BYTE_ENABLE = 0,
|
|
parameter BYTE_SIZE = getByteSize(FAMILY_CODE,
|
|
DATA_WIDTH),
|
|
parameter BYTE_WIDTH = (DATA_WIDTH / BYTE_SIZE),
|
|
parameter PIPELINES = 0,
|
|
parameter ASYNC_RST_RELEASE = "sync",
|
|
parameter ECC_ENABLE = 0,
|
|
parameter OUTPUT_CLK_EN = 0,
|
|
parameter BYTE_ENABLE_POL = "active-high",
|
|
parameter OPTIMIZATION = "speed",
|
|
parameter MEM_SIZE = "18,1024",
|
|
parameter MEM_ID = "MEM0",
|
|
parameter INIT_VALUE_00 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_01 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_02 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_03 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_04 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_05 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_06 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_07 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_08 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_09 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_0A = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_0B = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_0C = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_0D = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_0E = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_0F = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_10 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_11 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_12 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_13 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_14 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_15 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_16 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_17 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_18 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_19 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_1A = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_1B = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_1C = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_1D = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_1E = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_1F = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_20 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_21 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_22 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_23 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_24 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_25 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_26 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_27 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_28 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_29 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_2A = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_2B = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_2C = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_2D = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_2E = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_2F = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_30 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_31 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_32 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_33 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_34 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_35 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_36 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_37 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_38 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_39 = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_3A = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_3B = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_3C = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_3D = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_3E = "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_3F = "0x0000000000000000000000000000000000000000000000000000000000000000") (
|
|
// unused
|
|
// -----------------------------------------------------------------------------
|
|
// Input/Output Ports
|
|
// -----------------------------------------------------------------------------
|
|
input clk_i,
|
|
input rst_i,
|
|
input clk_en_i,
|
|
input rd_out_clk_en_i,
|
|
input wr_en_i,
|
|
input [(DATA_WIDTH - 1):0] wr_data_i,
|
|
input [(ADDR_WIDTH - 1):0] addr_i,
|
|
input [(BYTE_WIDTH - 1):0] ben_i,
|
|
output [(DATA_WIDTH - 1):0] rd_data_o,
|
|
output one_err_det_o,
|
|
output two_err_det_o) ;
|
|
// -----------------------------------------------------------------------------
|
|
// Local Parameters
|
|
// -----------------------------------------------------------------------------
|
|
localparam IS_BYTE_ENABLE = ((BYTE_ENABLE == 0) ? 1'b0 : (((DATA_WIDTH > BYTE_SIZE) && ((DATA_WIDTH % BYTE_SIZE) == 0)) ? 1'b1 : 1'b0)) ;
|
|
localparam STRING_LENGTH = ((FAMILY == "iCE40UP") ? 66 : 82) ;
|
|
// -----------------------------------------------------------------------------
|
|
// Generate IP Wiring and Instance
|
|
// -----------------------------------------------------------------------------
|
|
genvar i0,
|
|
i1 ;
|
|
generate
|
|
if ((FAMILY_CODE != _FCODE_COMMON_))
|
|
begin : PRIM_MODE
|
|
localparam DATA_WIDTH_IMPL = getMinDataWidth(FAMILY_CODE,
|
|
DATA_WIDTH,
|
|
ADDR_DEPTH,
|
|
IS_BYTE_ENABLE) ;
|
|
localparam ADDR_DEPTH_IMPL = data_to_addr(FAMILY_CODE,
|
|
DATA_WIDTH_IMPL) ;
|
|
localparam ADDR_WIDTH_IMPL = clog2(ADDR_DEPTH_IMPL) ;
|
|
localparam BYTE_WIDTH_IMPL = ((BYTE_ENABLE == 0) ? 1 : getByteImpl(FAMILY_CODE,
|
|
DATA_WIDTH_IMPL)) ;
|
|
localparam T_BYTE_EN = ((IS_BYTE_ENABLE == 1) && (DATA_WIDTH_IMPL >= 8)) ;
|
|
localparam EBR_ADDR = roundUP(ADDR_DEPTH,
|
|
ADDR_DEPTH_IMPL) ;
|
|
localparam EBR_DATA = roundUP(DATA_WIDTH,
|
|
DATA_WIDTH_IMPL) ;
|
|
wire [(DATA_WIDTH - 1):0] rd_data_raw_w [(EBR_ADDR - 1):0] ;
|
|
for (i0 = 0;(i0 < EBR_ADDR);i0 = (i0 + 1))
|
|
begin : xADDR
|
|
wire [(DATA_WIDTH - 1):0] raw_output_w ;
|
|
assign rd_data_raw_w[i0] = raw_output_w ;
|
|
wire chk_addr_w ;
|
|
wire [(ADDR_WIDTH_IMPL - 1):0] true_addr_w ;
|
|
if ((EBR_ADDR > 1))
|
|
begin : genblk1
|
|
assign chk_addr_w = (addr_i[(ADDR_WIDTH - 1):ADDR_WIDTH_IMPL] == i0) ;
|
|
assign true_addr_w = addr_i[(ADDR_WIDTH_IMPL - 1):0] ;
|
|
end
|
|
else
|
|
begin : genblk1
|
|
assign chk_addr_w = 1'b1 ;
|
|
assign true_addr_w[(ADDR_WIDTH - 1):0] = addr_i ;
|
|
if ((ADDR_WIDTH_IMPL > ADDR_WIDTH))
|
|
begin : genblk1
|
|
assign true_addr_w[(ADDR_WIDTH_IMPL - 1):ADDR_WIDTH] = 'h0 ;
|
|
end
|
|
end
|
|
for (i1 = 0;(i1 < EBR_DATA);i1 = (i1 + 1))
|
|
begin : xDATA
|
|
localparam ECO_POSX = (i1 * DATA_WIDTH_IMPL) ;
|
|
localparam ECO_POSY = (i0 * ADDR_DEPTH_IMPL) ;
|
|
wire [(DATA_WIDTH_IMPL - 1):0] wr_data_act_w ;
|
|
wire [(DATA_WIDTH_IMPL - 1):0] rd_data_act_w ;
|
|
wire [(BYTE_WIDTH_IMPL - 1):0] ben_act_w ;
|
|
if ((((i1 + 1) * DATA_WIDTH_IMPL) <= DATA_WIDTH))
|
|
begin : genblk1
|
|
assign wr_data_act_w = wr_data_i[(((i1 + 1) * DATA_WIDTH_IMPL) - 1):(i1 * DATA_WIDTH_IMPL)] ;
|
|
assign raw_output_w[(((i1 + 1) * DATA_WIDTH_IMPL) - 1):(i1 * DATA_WIDTH_IMPL)] = rd_data_act_w ;
|
|
end
|
|
else
|
|
begin : genblk1
|
|
assign wr_data_act_w[(DATA_WIDTH - (1 + (i1 * DATA_WIDTH_IMPL))):0] = wr_data_i[(DATA_WIDTH - 1):(i1 * DATA_WIDTH_IMPL)] ;
|
|
assign wr_data_act_w[(DATA_WIDTH_IMPL - 1):(DATA_WIDTH - (i1 * DATA_WIDTH_IMPL))] = {(DATA_WIDTH_IMPL - (DATA_WIDTH - (i1 * DATA_WIDTH_IMPL))){1'b0}} ;
|
|
assign raw_output_w[(DATA_WIDTH - 1):(i1 * DATA_WIDTH_IMPL)] = rd_data_act_w[(DATA_WIDTH - (1 + (i1 * DATA_WIDTH_IMPL))):0] ;
|
|
end
|
|
if ((IS_BYTE_ENABLE == 1'b1))
|
|
begin : genblk2
|
|
if ((DATA_WIDTH_IMPL >= 8))
|
|
begin : genblk1
|
|
if ((BYTE_WIDTH_IMPL > 1))
|
|
begin : genblk1
|
|
if ((((i1 + 1) * BYTE_WIDTH_IMPL) <= BYTE_WIDTH))
|
|
begin : genblk1
|
|
assign ben_act_w = ben_i[(((i1 + 1) * BYTE_WIDTH_IMPL) - 1):(i1 * BYTE_WIDTH_IMPL)] ;
|
|
end
|
|
else
|
|
begin : genblk1
|
|
assign ben_act_w[(BYTE_WIDTH - (1 + (i1 * BYTE_WIDTH_IMPL))):0] = ben_i[(BYTE_WIDTH - 1):(i1 * BYTE_WIDTH_IMPL)] ;
|
|
assign ben_act_w[(BYTE_WIDTH_IMPL - 1):(BYTE_WIDTH - (i1 * BYTE_WIDTH_IMPL))] = {(BYTE_WIDTH_IMPL - (BYTE_WIDTH - (i1 * BYTE_WIDTH_IMPL))){1'b1}} ;
|
|
end
|
|
end
|
|
else
|
|
begin : genblk1
|
|
assign ben_act_w = ben_i[i1] ;
|
|
end
|
|
end
|
|
else
|
|
begin : genblk1
|
|
assign ben_act_w = ben_i[(((i1 * DATA_WIDTH_IMPL) * BYTE_WIDTH) / DATA_WIDTH)] ;
|
|
end
|
|
end
|
|
else
|
|
begin : genblk2
|
|
assign ben_act_w = {BYTE_WIDTH_IMPL{1'b1}} ;
|
|
end
|
|
if ((INIT_MODE == "mem_file"))
|
|
begin : mem_file
|
|
rom_sec_ipgen_lscc_rom_inst_core #(.FAMILY(FAMILY),
|
|
.DATA_WIDTH(DATA_WIDTH_IMPL),
|
|
.OUTREG(REGMODE),
|
|
.RESETMODE(RESETMODE),
|
|
.GSR(GSR),
|
|
.CSCDECODE(0),
|
|
.ASYNC_RST_RELEASE(ASYNC_RST_RELEASE),
|
|
.BYTE_ENABLE(BYTE_ENABLE),
|
|
.INIT_MODE(INIT_MODE),
|
|
.OUTPUT_CLK_EN(OUTPUT_CLK_EN),
|
|
.BYTE_ENABLE_POL(BYTE_ENABLE_POL),
|
|
.MEM_SIZE(MEM_SIZE),
|
|
.MEM_ID(MEM_ID),
|
|
.POSx(ECO_POSX),
|
|
.POSy(ECO_POSY),
|
|
.INIT_VALUE_00(INIT_VALUE_00[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)]),
|
|
.INIT_VALUE_01(INIT_VALUE_01[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)]),
|
|
.INIT_VALUE_02(INIT_VALUE_02[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)]),
|
|
.INIT_VALUE_03(INIT_VALUE_03[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)]),
|
|
.INIT_VALUE_04(INIT_VALUE_04[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)]),
|
|
.INIT_VALUE_05(INIT_VALUE_05[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)]),
|
|
.INIT_VALUE_06(INIT_VALUE_06[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)]),
|
|
.INIT_VALUE_07(INIT_VALUE_07[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)]),
|
|
.INIT_VALUE_08(INIT_VALUE_08[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)]),
|
|
.INIT_VALUE_09(INIT_VALUE_09[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)]),
|
|
.INIT_VALUE_0A(INIT_VALUE_0A[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)]),
|
|
.INIT_VALUE_0B(INIT_VALUE_0B[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)]),
|
|
.INIT_VALUE_0C(INIT_VALUE_0C[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)]),
|
|
.INIT_VALUE_0D(INIT_VALUE_0D[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)]),
|
|
.INIT_VALUE_0E(INIT_VALUE_0E[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)]),
|
|
.INIT_VALUE_0F(INIT_VALUE_0F[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)]),
|
|
.INIT_VALUE_10(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_10[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_11(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_11[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_12(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_12[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_13(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_13[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_14(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_14[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_15(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_15[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_16(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_16[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_17(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_17[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_18(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_18[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_19(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_19[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_1A(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_1A[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_1B(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_1B[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_1C(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_1C[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_1D(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_1D[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_1E(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_1E[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_1F(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_1F[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_20(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_20[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_21(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_21[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_22(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_22[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_23(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_23[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_24(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_24[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_25(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_25[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_26(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_26[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_27(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_27[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_28(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_28[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_29(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_29[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_2A(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_2A[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_2B(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_2B[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_2C(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_2C[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_2D(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_2D[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_2E(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_2E[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_2F(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_2F[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_30(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_30[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_31(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_31[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_32(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_32[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_33(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_33[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_34(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_34[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_35(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_35[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_36(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_36[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_37(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_37[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_38(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_38[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_39(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_39[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_3A(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_3A[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_3B(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_3B[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_3C(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_3C[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_3D(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_3D[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_3E(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_3E[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00")),
|
|
.INIT_VALUE_3F(((checkINIT(FAMILY_CODE) == 1) ? INIT_VALUE_3F[((((((i0 * EBR_DATA) + i1) + 1) * STRING_LENGTH) * 8) - 1):((((i0 * EBR_DATA) + i1) * STRING_LENGTH) * 8)] : "0x00"))) mem0 (.clk_i(clk_i),
|
|
.rst_i(rst_i),
|
|
.clk_en_i(clk_en_i),
|
|
.rd_out_clk_en_i(rd_out_clk_en_i),
|
|
.wr_en_i((wr_en_i & chk_addr_w)),
|
|
.wr_data_i(wr_data_act_w),
|
|
.addr_i(true_addr_w),
|
|
.ben_i(ben_act_w),
|
|
.rd_data_o(rd_data_act_w)) ;
|
|
end
|
|
else
|
|
begin : no_mem_file
|
|
rom_sec_ipgen_lscc_rom_inst_core #(.FAMILY(FAMILY),
|
|
.DATA_WIDTH(DATA_WIDTH_IMPL),
|
|
.OUTREG(REGMODE),
|
|
.RESETMODE(RESETMODE),
|
|
.GSR(GSR),
|
|
.CSCDECODE(0),
|
|
.ASYNC_RST_RELEASE(ASYNC_RST_RELEASE),
|
|
.BYTE_ENABLE(BYTE_ENABLE),
|
|
.INIT_MODE(INIT_MODE),
|
|
.OUTPUT_CLK_EN(OUTPUT_CLK_EN),
|
|
.BYTE_ENABLE_POL(BYTE_ENABLE_POL),
|
|
.MEM_SIZE(MEM_SIZE),
|
|
.MEM_ID(MEM_ID),
|
|
.POSx(ECO_POSX),
|
|
.POSy(ECO_POSY)) mem0 (.clk_i(clk_i),
|
|
.rst_i(rst_i),
|
|
.clk_en_i(clk_en_i),
|
|
.rd_out_clk_en_i(rd_out_clk_en_i),
|
|
.wr_en_i((wr_en_i & chk_addr_w)),
|
|
.wr_data_i(wr_data_act_w),
|
|
.addr_i(true_addr_w),
|
|
.ben_i(ben_act_w),
|
|
.rd_data_o(rd_data_act_w)) ;
|
|
end
|
|
end
|
|
end
|
|
if ((EBR_ADDR == 1))
|
|
begin : EBR_sing
|
|
assign rd_data_o = rd_data_raw_w[0] ;
|
|
end
|
|
else
|
|
begin : EBR_mult
|
|
reg [(DATA_WIDTH - 1):0] reg_buff_r ;
|
|
reg [(ADDR_WIDTH - 1):0] addr_r_0 ;
|
|
reg [(ADDR_WIDTH - 1):0] addr_r_1 ;
|
|
assign rd_data_o = reg_buff_r ;
|
|
if ((REGMODE == "noreg"))
|
|
begin : _nreg
|
|
if ((RESETMODE == "sync"))
|
|
begin : _sync
|
|
always
|
|
@(posedge clk_i)
|
|
begin
|
|
if (rst_i)
|
|
begin
|
|
addr_r_1 <= {ADDR_WIDTH{1'b0}} ;
|
|
end
|
|
else
|
|
begin
|
|
addr_r_1 <= addr_i ;
|
|
end
|
|
end
|
|
end
|
|
else
|
|
begin : _async
|
|
always
|
|
@(posedge clk_i or
|
|
posedge rst_i)
|
|
begin
|
|
if (rst_i)
|
|
begin
|
|
addr_r_1 <= {ADDR_WIDTH{1'b0}} ;
|
|
end
|
|
else
|
|
begin
|
|
addr_r_1 <= addr_i ;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
else
|
|
begin : _reg
|
|
if ((RESETMODE == "sync"))
|
|
begin : _sync
|
|
always
|
|
@(posedge clk_i)
|
|
begin
|
|
if (rst_i)
|
|
begin
|
|
addr_r_0 <= {ADDR_WIDTH{1'b0}} ;
|
|
addr_r_1 <= {ADDR_WIDTH{1'b0}} ;
|
|
end
|
|
else
|
|
begin
|
|
addr_r_0 <= addr_i ;
|
|
addr_r_1 <= addr_r_0 ;
|
|
end
|
|
end
|
|
end
|
|
else
|
|
begin : _async
|
|
always
|
|
@(posedge clk_i or
|
|
posedge rst_i)
|
|
begin
|
|
if (rst_i)
|
|
begin
|
|
addr_r_0 <= {ADDR_WIDTH{1'b0}} ;
|
|
addr_r_1 <= {ADDR_WIDTH{1'b0}} ;
|
|
end
|
|
else
|
|
begin
|
|
addr_r_0 <= addr_i ;
|
|
addr_r_1 <= addr_r_0 ;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
wire [(ADDR_WIDTH - (1 + ADDR_WIDTH_IMPL)):0] m = addr_r_1[(ADDR_WIDTH - 1):ADDR_WIDTH_IMPL] ;
|
|
always
|
|
@(*)
|
|
begin
|
|
reg_buff_r = rd_data_raw_w[m] ;
|
|
end
|
|
end
|
|
end
|
|
else
|
|
begin : BEHV_MODE
|
|
reg [(DATA_WIDTH - 1):0] dataout_reg ;
|
|
reg [(DATA_WIDTH - 1):0] dataout_reg_buffer ;
|
|
reg [(DATA_WIDTH - 1):0] mem /* sythesis syn_ramstyle="block_ram" */ [((2 ** ADDR_WIDTH) - 1):0] ;
|
|
initial
|
|
begin
|
|
if (((((INIT_MODE == "mem_file") && (INIT_FILE != "none")) || (INIT_MODE == "all_one")) || (INIT_MODE == "all_zero")))
|
|
begin
|
|
if ((INIT_FILE_FORMAT == "hex"))
|
|
$readmemh (INIT_FILE,
|
|
mem,
|
|
0,
|
|
(ADDR_DEPTH - 1)) ;
|
|
else
|
|
$readmemb (INIT_FILE,
|
|
mem,
|
|
0,
|
|
(ADDR_DEPTH - 1)) ;
|
|
end
|
|
end
|
|
assign rd_data_o = ((REGMODE == "reg") ? dataout_reg : dataout_reg_buffer) ;
|
|
always
|
|
@(posedge clk_i)
|
|
begin
|
|
if ((clk_en_i == 1'b1))
|
|
begin
|
|
if ((wr_en_i == 1'b1))
|
|
mem[addr_i] <= wr_data_i ;
|
|
else
|
|
dataout_reg_buffer <= mem[addr_i] ;
|
|
end
|
|
end
|
|
if ((REGMODE == "reg"))
|
|
begin : genblk1
|
|
if ((RESETMODE == "sync"))
|
|
begin : genblk1
|
|
always
|
|
@(posedge clk_i)
|
|
begin
|
|
if ((rst_i == 1'b1))
|
|
dataout_reg <= 'h0 ;
|
|
else
|
|
if (((rd_out_clk_en_i == 1'b1) && (wr_en_i == 1'b0)))
|
|
dataout_reg <= dataout_reg_buffer ;
|
|
end
|
|
end
|
|
else
|
|
if ((ASYNC_RST_RELEASE == "sync"))
|
|
begin : genblk1
|
|
always
|
|
@(posedge clk_i or
|
|
posedge rst_i)
|
|
begin
|
|
if ((rst_i == 1'b1))
|
|
dataout_reg <= 'h0 ;
|
|
else
|
|
if (((rd_out_clk_en_i == 1'b1) && (wr_en_i == 1'b0)))
|
|
dataout_reg <= dataout_reg_buffer ;
|
|
end
|
|
end
|
|
else
|
|
begin : genblk1
|
|
always
|
|
@(*)
|
|
begin
|
|
if ((rst_i == 1'b1))
|
|
dataout_reg = 'h0 ;
|
|
else
|
|
if (((rd_out_clk_en_i == 1'b1) && (wr_en_i == 1'b0)))
|
|
dataout_reg = dataout_reg_buffer ;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
endgenerate
|
|
function [31:0] getByteImpl ;
|
|
input [10:0] family_code ;
|
|
input [31:0] data_width_impl ;
|
|
begin
|
|
case (family_code)
|
|
_FCODE_ICE_ :
|
|
begin
|
|
case (data_width_impl)
|
|
8 :
|
|
getByteImpl = 1 ;
|
|
16 :
|
|
getByteImpl = 2 ;
|
|
default :
|
|
getByteImpl = 1 ;
|
|
endcase
|
|
end
|
|
_FCODE_LIFCL_ :
|
|
begin
|
|
case (data_width_impl)
|
|
8 :
|
|
getByteImpl = 1 ;
|
|
9 :
|
|
getByteImpl = 1 ;
|
|
16 :
|
|
getByteImpl = 2 ;
|
|
18 :
|
|
getByteImpl = 2 ;
|
|
default :
|
|
getByteImpl = 1 ;
|
|
endcase
|
|
end
|
|
default :
|
|
getByteImpl = 1 ;
|
|
endcase
|
|
end
|
|
endfunction
|
|
function [31:0] data_to_addr ;
|
|
input [10:0] family_code ;
|
|
input [31:0] data_width ;
|
|
begin
|
|
case (family_code)
|
|
_FCODE_ICE_ :
|
|
begin
|
|
case (data_width)
|
|
16 :
|
|
data_to_addr = 256 ;
|
|
8 :
|
|
data_to_addr = 512 ;
|
|
4 :
|
|
data_to_addr = 1024 ;
|
|
2 :
|
|
data_to_addr = 2048 ;
|
|
endcase
|
|
end
|
|
_FCODE_LIFCL_ :
|
|
begin
|
|
case (data_width)
|
|
18 :
|
|
data_to_addr = 1024 ;
|
|
16 :
|
|
data_to_addr = 1024 ;
|
|
9 :
|
|
data_to_addr = 2048 ;
|
|
8 :
|
|
data_to_addr = 2048 ;
|
|
4 :
|
|
data_to_addr = 4096 ;
|
|
2 :
|
|
data_to_addr = 8192 ;
|
|
1 :
|
|
data_to_addr = 16384 ;
|
|
endcase
|
|
end
|
|
endcase
|
|
end
|
|
endfunction
|
|
function [31:0] getMinDataWidth ;
|
|
input [10:0] family_code ;
|
|
input [31:0] dwidth ;
|
|
input [31:0] adepth ;
|
|
input is_byte_enable ;
|
|
reg [31:0] impl_x18,
|
|
impl_x16,
|
|
impl_x9,
|
|
impl_x8,
|
|
impl_x4,
|
|
impl_x2,
|
|
impl_x1 ;
|
|
begin
|
|
case (family_code)
|
|
_FCODE_ICE_ :
|
|
begin
|
|
impl_x16 = EBR_impl(adepth,
|
|
dwidth,
|
|
256,
|
|
16) ;
|
|
impl_x8 = EBR_impl(adepth,
|
|
dwidth,
|
|
512,
|
|
8) ;
|
|
impl_x4 = EBR_impl(adepth,
|
|
dwidth,
|
|
1024,
|
|
4) ;
|
|
impl_x2 = EBR_impl(adepth,
|
|
dwidth,
|
|
2048,
|
|
2) ;
|
|
if ((impl_x16 < impl_x8))
|
|
if ((impl_x16 < impl_x4))
|
|
if ((impl_x16 < impl_x2))
|
|
getMinDataWidth = 16 ;
|
|
else
|
|
getMinDataWidth = 2 ;
|
|
else
|
|
if ((impl_x4 < impl_x2))
|
|
getMinDataWidth = 4 ;
|
|
else
|
|
getMinDataWidth = 2 ;
|
|
else
|
|
if ((impl_x8 < impl_x4))
|
|
if ((impl_x8 < impl_x2))
|
|
getMinDataWidth = 8 ;
|
|
else
|
|
getMinDataWidth = 2 ;
|
|
else
|
|
if ((impl_x4 < impl_x2))
|
|
getMinDataWidth = 4 ;
|
|
else
|
|
getMinDataWidth = 2 ;
|
|
end
|
|
_FCODE_LIFCL_ :
|
|
begin
|
|
impl_x18 = EBR_impl(adepth,
|
|
dwidth,
|
|
1024,
|
|
18) ;
|
|
impl_x16 = EBR_impl(adepth,
|
|
dwidth,
|
|
1024,
|
|
16) ;
|
|
impl_x9 = EBR_impl(adepth,
|
|
dwidth,
|
|
2048,
|
|
9) ;
|
|
impl_x8 = EBR_impl(adepth,
|
|
dwidth,
|
|
2048,
|
|
8) ;
|
|
impl_x4 = EBR_impl(adepth,
|
|
dwidth,
|
|
4096,
|
|
4) ;
|
|
impl_x2 = EBR_impl(adepth,
|
|
dwidth,
|
|
8192,
|
|
2) ;
|
|
impl_x1 = EBR_impl(adepth,
|
|
dwidth,
|
|
16384,
|
|
1) ;
|
|
if (((is_byte_enable == 1'b1) && ((dwidth % 9) != 0)))
|
|
begin
|
|
if ((impl_x16 < impl_x8))
|
|
if ((impl_x16 < impl_x4))
|
|
if ((impl_x16 < impl_x2))
|
|
if ((impl_x16 < impl_x1))
|
|
getMinDataWidth = 16 ;
|
|
else
|
|
getMinDataWidth = 1 ;
|
|
else
|
|
if ((impl_x2 < impl_x1))
|
|
getMinDataWidth = 2 ;
|
|
else
|
|
getMinDataWidth = 1 ;
|
|
else
|
|
if ((impl_x4 < impl_x2))
|
|
if ((impl_x4 < impl_x1))
|
|
getMinDataWidth = 4 ;
|
|
else
|
|
getMinDataWidth = 1 ;
|
|
else
|
|
if ((impl_x2 < impl_x1))
|
|
getMinDataWidth = 2 ;
|
|
else
|
|
getMinDataWidth = 1 ;
|
|
else
|
|
if ((impl_x8 < impl_x4))
|
|
if ((impl_x8 < impl_x2))
|
|
if ((impl_x8 < impl_x1))
|
|
getMinDataWidth = 8 ;
|
|
else
|
|
getMinDataWidth = 1 ;
|
|
else
|
|
if ((impl_x2 < impl_x1))
|
|
getMinDataWidth = 2 ;
|
|
else
|
|
getMinDataWidth = 1 ;
|
|
else
|
|
if ((impl_x4 < impl_x2))
|
|
if ((impl_x4 < impl_x1))
|
|
getMinDataWidth = 4 ;
|
|
else
|
|
getMinDataWidth = 1 ;
|
|
else
|
|
if ((impl_x2 < impl_x1))
|
|
getMinDataWidth = 2 ;
|
|
else
|
|
getMinDataWidth = 1 ;
|
|
end
|
|
else
|
|
begin
|
|
if ((impl_x18 < impl_x9))
|
|
if ((impl_x18 < impl_x4))
|
|
if ((impl_x18 < impl_x2))
|
|
if ((impl_x18 < impl_x1))
|
|
getMinDataWidth = 18 ;
|
|
else
|
|
getMinDataWidth = 1 ;
|
|
else
|
|
if ((impl_x2 < impl_x1))
|
|
getMinDataWidth = 2 ;
|
|
else
|
|
getMinDataWidth = 1 ;
|
|
else
|
|
if ((impl_x4 < impl_x2))
|
|
if ((impl_x4 < impl_x1))
|
|
getMinDataWidth = 4 ;
|
|
else
|
|
getMinDataWidth = 1 ;
|
|
else
|
|
if ((impl_x2 < impl_x1))
|
|
getMinDataWidth = 2 ;
|
|
else
|
|
getMinDataWidth = 1 ;
|
|
else
|
|
if ((impl_x9 < impl_x4))
|
|
if ((impl_x9 < impl_x2))
|
|
if ((impl_x9 < impl_x1))
|
|
getMinDataWidth = 9 ;
|
|
else
|
|
getMinDataWidth = 1 ;
|
|
else
|
|
if ((impl_x2 < impl_x1))
|
|
getMinDataWidth = 2 ;
|
|
else
|
|
getMinDataWidth = 1 ;
|
|
else
|
|
if ((impl_x4 < impl_x2))
|
|
if ((impl_x4 < impl_x1))
|
|
getMinDataWidth = 4 ;
|
|
else
|
|
getMinDataWidth = 1 ;
|
|
else
|
|
if ((impl_x2 < impl_x1))
|
|
getMinDataWidth = 2 ;
|
|
else
|
|
getMinDataWidth = 1 ;
|
|
end
|
|
end
|
|
endcase
|
|
end
|
|
endfunction
|
|
function [31:0] EBR_impl ;
|
|
input [31:0] DEPTH_IMPL ;
|
|
input [31:0] WIDTH_IMPL ;
|
|
input [31:0] ADDR_DEPTH_X ;
|
|
input [31:0] DATA_WIDTH_X ;
|
|
begin
|
|
EBR_impl = (roundUP(DEPTH_IMPL,
|
|
ADDR_DEPTH_X) * roundUP(WIDTH_IMPL,
|
|
DATA_WIDTH_X)) ;
|
|
end
|
|
endfunction
|
|
function [9:0] getByteSize ;
|
|
input [31:0] family_code ;
|
|
input [31:0] dwidth_impl ;
|
|
begin
|
|
if ((family_code == _FCODE_ICE_))
|
|
begin
|
|
getByteSize = 8 ;
|
|
end
|
|
else
|
|
if ((family_code == _FCODE_LIFCL_))
|
|
begin
|
|
if (((dwidth_impl % 9) == 0))
|
|
getByteSize = 9 ;
|
|
else
|
|
getByteSize = 8 ;
|
|
end
|
|
else
|
|
begin
|
|
getByteSize = 8 ;
|
|
end
|
|
end
|
|
endfunction
|
|
function [31:0] roundUP ;
|
|
input [31:0] dividend ;
|
|
input [31:0] divisor ;
|
|
begin
|
|
if ((divisor == 1))
|
|
begin
|
|
roundUP = dividend ;
|
|
end
|
|
else
|
|
if ((dividend <= divisor))
|
|
begin
|
|
roundUP = 1 ;
|
|
end
|
|
else
|
|
begin
|
|
roundUP = ((dividend / divisor) + (((dividend % divisor) == 0) ? 0 : 1)) ;
|
|
end
|
|
end
|
|
endfunction
|
|
function checkINIT ;
|
|
input [31:0] dev_code ;
|
|
begin
|
|
case (dev_code)
|
|
_FCODE_LIFCL_ :
|
|
checkINIT = 1 ;
|
|
default :
|
|
checkINIT = 0 ;
|
|
endcase
|
|
end
|
|
endfunction
|
|
function [31:0] clog2 ;
|
|
input [31:0] value ;
|
|
reg [31:0] num ;
|
|
begin
|
|
num = (value - 1) ;
|
|
for (clog2 = 0 ; (num > 0) ; clog2 = (clog2 + 1))
|
|
num = (num >> 1) ;
|
|
end
|
|
endfunction
|
|
endmodule
|
|
|
|
|
|
|
|
// =============================================================================
|
|
// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
|
// -----------------------------------------------------------------------------
|
|
// Copyright (c) 2017 by Lattice Semiconductor Corporation
|
|
// ALL RIGHTS RESERVED
|
|
// -----------------------------------------------------------------------------
|
|
//
|
|
// Permission:
|
|
//
|
|
// Lattice SG Pte. Ltd. grants permission to use this code
|
|
// pursuant to the terms of the Lattice Reference Design License Agreement.
|
|
//
|
|
//
|
|
// Disclaimer:
|
|
//
|
|
// This VHDL or Verilog source code is intended as a design reference
|
|
// which illustrates how these types of functions can be implemented.
|
|
// It is the user's responsibility to verify their design for
|
|
// consistency and functionality through the use of formal
|
|
// verification methods. Lattice provides no warranty
|
|
// regarding the use or functionality of this code.
|
|
//
|
|
// -----------------------------------------------------------------------------
|
|
//
|
|
// Lattice SG Pte. Ltd.
|
|
// 101 Thomson Road, United Square #07-02
|
|
// Singapore 307591
|
|
//
|
|
//
|
|
// TEL: 1-800-Lattice (USA and Canada)
|
|
// +65-6631-2000 (Singapore)
|
|
// +1-503-268-8001 (other locations)
|
|
//
|
|
// web: http://www.latticesemi.com/
|
|
// email: techsupport@latticesemi.com
|
|
//
|
|
// -----------------------------------------------------------------------------
|
|
//
|
|
// =============================================================================
|
|
// FILE DETAILS
|
|
// Project : LIFCL, iCE40 UltraPlus
|
|
// File : lscc_rom_inst_core.v
|
|
// Title :
|
|
// Dependencies :
|
|
// Description : Implements a single EBR (Embedded Block RAM) block.
|
|
// : Can support registered and unregistered outputs.
|
|
// =============================================================================
|
|
// REVISION HISTORY
|
|
// Version : 1.0.0.
|
|
// Author(s) :
|
|
// Mod. Date :
|
|
// Changes Made : Initial release.
|
|
// =============================================================================
|
|
module rom_sec_ipgen_lscc_rom_inst_core #(parameter _FCODE_LIFCL_ = 1,
|
|
parameter _FCODE_ICE_ = 2,
|
|
parameter _FCODE_COMMON_ = 0,
|
|
parameter FAMILY = "common",
|
|
parameter FAMILY_CODE = ((FAMILY == "iCE40UP") ? _FCODE_ICE_ : ((FAMILY == "LIFCL") ? _FCODE_LIFCL_ : _FCODE_COMMON_)),
|
|
parameter DATA_WIDTH = 16,
|
|
parameter ADDR_WIDTH = getAddrWidth(DATA_WIDTH,
|
|
FAMILY_CODE),
|
|
parameter OUTREG = "noreg",
|
|
parameter RESETMODE = "sync",
|
|
parameter GSR = "ENABLED",
|
|
parameter CSCDECODE = 0,
|
|
parameter ASYNC_RST_RELEASE = "sync",
|
|
parameter BYTE_ENABLE = 0,
|
|
parameter BYTE_WIDTH = ((BYTE_ENABLE == 1) ? getByteWidth(DATA_WIDTH,
|
|
FAMILY_CODE) : 1),
|
|
parameter INIT_MODE = "none",
|
|
parameter OUTPUT_CLK_EN = 0,
|
|
parameter BYTE_ENABLE_POL = "active-high",
|
|
parameter POSx = 0,
|
|
parameter POSy = 0,
|
|
parameter STRING_SIZE = calculateStringSize(POSx,
|
|
POSy),
|
|
parameter MEM_SIZE = "18,1024",
|
|
parameter MEM_ID = "MEM0",
|
|
parameter INIT_VALUE_00 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_01 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_02 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_03 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_04 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_05 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_06 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_07 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_08 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_09 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_0A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_0B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_0C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_0D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_0E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_0F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_10 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_11 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_12 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_13 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_14 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_15 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_16 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_17 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_18 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_19 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_1A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_1B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_1C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_1D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_1E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_1F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_20 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_21 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_22 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_23 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_24 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_25 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_26 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_27 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_28 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_29 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_2A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_2B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_2C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_2D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_2E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_2F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_30 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_31 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_32 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_33 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_34 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_35 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_36 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_37 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_38 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_39 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_3A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_3B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_3C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_3D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_3E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
parameter INIT_VALUE_3F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000") (
|
|
input clk_i,
|
|
input rst_i,
|
|
input clk_en_i,
|
|
input rd_out_clk_en_i,
|
|
input wr_en_i,
|
|
input [(DATA_WIDTH - 1):0] wr_data_i,
|
|
input [(ADDR_WIDTH - 1):0] addr_i,
|
|
input [(BYTE_WIDTH - 1):0] ben_i,
|
|
output [(DATA_WIDTH - 1):0] rd_data_o) ;
|
|
// -----------------------------------------------------------------------------
|
|
// Local Parameters
|
|
// -----------------------------------------------------------------------------
|
|
localparam POS_X0 = (POSx % 10) ;
|
|
localparam POS_X1 = ((POSx / 10) % 10) ;
|
|
localparam POS_X2 = ((POSx / 100) % 10) ;
|
|
localparam POS_X3 = ((POSx / 1000) % 10) ;
|
|
localparam POS_X4 = ((POSx / 10000) % 10) ;
|
|
localparam POS_X5 = ((POSx / 100000) % 10) ;
|
|
localparam POS_X6 = ((POSx / 1000000) % 10) ;
|
|
localparam POS_X7 = ((POSx / 10000000) % 10) ;
|
|
localparam POS_Y0 = (POSy % 10) ;
|
|
localparam POS_Y1 = ((POSy / 10) % 10) ;
|
|
localparam POS_Y2 = ((POSy / 100) % 10) ;
|
|
localparam POS_Y3 = ((POSy / 1000) % 10) ;
|
|
localparam POS_Y4 = ((POSy / 10000) % 10) ;
|
|
localparam POS_Y5 = ((POSy / 100000) % 10) ;
|
|
localparam POS_Y6 = ((POSy / 1000000) % 10) ;
|
|
localparam POS_Y7 = ((POSy / 10000000) % 10) ;
|
|
localparam [79:0] NUM_STRING = "9876543210" ;
|
|
localparam BLOCK_POS = getStringFromPos(POSx,
|
|
POSy) ;
|
|
localparam BLOCK_SIZE = ((DATA_WIDTH == 36) ? "[36,512]" : ((DATA_WIDTH == 32) ? "[32,512]" : ((DATA_WIDTH == 18) ? "[18,1024]" : ((DATA_WIDTH == 16) ? "[16,1024]" : ((DATA_WIDTH == 9) ? "[9,2048]" : ((DATA_WIDTH == 8) ? "[8,2048]" : ((DATA_WIDTH == 4) ? "[4,4096]" : ((DATA_WIDTH == 2) ? "[2,8192]" : "[1,16384]")))))))) ;
|
|
genvar i0 ;
|
|
generate
|
|
if ((FAMILY_CODE == _FCODE_LIFCL_))
|
|
begin : LIFCL
|
|
localparam DW = (((DATA_WIDTH == 18) || (DATA_WIDTH == 16)) ? "X18" : (((DATA_WIDTH == 9) || (DATA_WIDTH == 8)) ? "X9" : ((DATA_WIDTH == 4) ? "X4" : ((DATA_WIDTH == 2) ? "X2" : "X1")))) ;
|
|
localparam CSC = ((CSCDECODE == 0) ? "000" : ((CSCDECODE == 1) ? "001" : ((CSCDECODE == 2) ? "010" : ((CSCDECODE == 3) ? "011" : ((CSCDECODE == 4) ? "100" : ((CSCDECODE == 5) ? "101" : ((CSCDECODE == 6) ? "110" : "111"))))))) ;
|
|
wire [13:0] true_addr ;
|
|
wire [17:0] true_din ;
|
|
wire [17:0] true_dout ;
|
|
wire [(DATA_WIDTH - 1):0] rd_data_w ;
|
|
if (((OUTREG == "noreg") || (OUTPUT_CLK_EN == 0)))
|
|
begin : genblk1
|
|
assign rd_data_o = rd_data_w ;
|
|
end
|
|
else
|
|
begin : genblk1
|
|
reg [(DATA_WIDTH - 1):0] rd_data_r = {DATA_WIDTH{1'b0}} ;
|
|
if ((RESETMODE == "sync"))
|
|
begin : genblk1
|
|
always
|
|
@(posedge clk_i)
|
|
begin
|
|
if ((rst_i == 1'b1))
|
|
begin
|
|
rd_data_r <= {DATA_WIDTH{1'b0}} ;
|
|
end
|
|
else
|
|
if ((rd_out_clk_en_i == 1'b1))
|
|
begin
|
|
rd_data_r <= rd_data_w ;
|
|
end
|
|
end
|
|
end
|
|
else
|
|
begin : genblk1
|
|
always
|
|
@(posedge clk_i or
|
|
posedge rst_i)
|
|
begin
|
|
if ((rst_i == 1'b1))
|
|
begin
|
|
rd_data_r <= {DATA_WIDTH{1'b0}} ;
|
|
end
|
|
else
|
|
if ((rd_out_clk_en_i == 1'b1))
|
|
begin
|
|
rd_data_r <= rd_data_w ;
|
|
end
|
|
end
|
|
end
|
|
assign rd_data_o = rd_data_r ;
|
|
end
|
|
if (((DATA_WIDTH == 18) || (DATA_WIDTH == 16)))
|
|
begin : genblk2
|
|
assign true_addr[13:4] = addr_i ;
|
|
assign true_addr[3:2] = 2'b11 ;
|
|
assign true_addr[1:0] = ((BYTE_ENABLE == 1) ? ben_i : 2'b11) ;
|
|
if ((DATA_WIDTH == 18))
|
|
begin : genblk1
|
|
assign true_din = wr_data_i ;
|
|
assign rd_data_w = true_dout ;
|
|
end
|
|
else
|
|
begin : genblk1
|
|
assign true_din[16:9] = wr_data_i[15:8] ;
|
|
assign true_din[17] = 1'b0 ;
|
|
assign true_din[8] = 1'b0 ;
|
|
assign true_din[7:0] = wr_data_i[7:0] ;
|
|
assign rd_data_w[15:8] = true_dout[16:9] ;
|
|
assign rd_data_w[7:0] = true_dout[7:0] ;
|
|
end
|
|
end
|
|
else
|
|
begin : genblk2
|
|
assign true_addr[13:(13 - (ADDR_WIDTH - 1))] = addr_i[(ADDR_WIDTH - 1):0] ;
|
|
if ((ADDR_WIDTH < 14))
|
|
begin : genblk1
|
|
assign true_addr[(13 - ADDR_WIDTH):0] = {(14 - ADDR_WIDTH){1'b1}} ;
|
|
end
|
|
assign true_din[17:DATA_WIDTH] = {(18 - DATA_WIDTH){1'b0}} ;
|
|
assign true_din[(DATA_WIDTH - 1):0] = wr_data_i ;
|
|
assign rd_data_w = true_dout[(DATA_WIDTH - 1):0] ;
|
|
end
|
|
wire t_wr_en_i = (((BYTE_ENABLE == 0) || (DATA_WIDTH >= 16)) ? wr_en_i : (wr_en_i & ben_i[0])) ;
|
|
wire t_clk_en_w = (clk_en_i | rst_i) ;
|
|
wire [17:0] DI = true_din ;
|
|
wire [13:0] AD = true_addr ;
|
|
wire CLK = clk_i ;
|
|
wire WE = (t_wr_en_i & (~rst_i)) ;
|
|
wire CE = clk_en_i ;
|
|
wire RST = rst_i ;
|
|
wire [2:0] CS = {t_clk_en_w,
|
|
t_clk_en_w,
|
|
t_clk_en_w} ;
|
|
wire [17:0] DO ;
|
|
assign true_dout = DO ;
|
|
localparam MEM_TYPE = "EBR" ;
|
|
localparam T_MEM_SIZE = {"[",
|
|
MEM_SIZE,
|
|
"]"} ;
|
|
(* ECO_MEM_TYPE=MEM_TYPE, ECO_MEM_ID=MEM_ID, ECO_MEM_SIZE=T_MEM_SIZE, ECO_MEM_BLOCK_SIZE=BLOCK_SIZE, ECO_MEM_BLOCK_POS=BLOCK_POS *) SP16K sp16k (.DI(DI),
|
|
.AD(AD),
|
|
.CLK(CLK),
|
|
.CE(CE),
|
|
.WE(WE),
|
|
.CS(CS),
|
|
.RST(RST),
|
|
.DO(DO)) ;
|
|
defparam sp16k.DATA_WIDTH = DW ;
|
|
defparam sp16k.CSDECODE = CSC ;
|
|
defparam sp16k.OUTREG = ((OUTREG == "reg") ? ((OUTPUT_CLK_EN == 0) ? "USED" : "BYPASSED") : "BYPASSED") ;
|
|
defparam sp16k.RESETMODE = ((RESETMODE == "sync") ? "SYNC" : "ASYNC") ;
|
|
defparam sp16k.ASYNC_RST_RELEASE = ((ASYNC_RST_RELEASE == "sync") ? "SYNC" : "ASYNC") ;
|
|
defparam sp16k.INIT_DATA = "DYNAMIC" ;
|
|
defparam sp16k.INITVAL_00 = ((INIT_MODE == "mem_file") ? INIT_VALUE_00 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_01 = ((INIT_MODE == "mem_file") ? INIT_VALUE_01 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_02 = ((INIT_MODE == "mem_file") ? INIT_VALUE_02 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_03 = ((INIT_MODE == "mem_file") ? INIT_VALUE_03 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_04 = ((INIT_MODE == "mem_file") ? INIT_VALUE_04 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_05 = ((INIT_MODE == "mem_file") ? INIT_VALUE_05 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_06 = ((INIT_MODE == "mem_file") ? INIT_VALUE_06 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_07 = ((INIT_MODE == "mem_file") ? INIT_VALUE_07 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_08 = ((INIT_MODE == "mem_file") ? INIT_VALUE_08 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_09 = ((INIT_MODE == "mem_file") ? INIT_VALUE_09 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_0A = ((INIT_MODE == "mem_file") ? INIT_VALUE_0A : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_0B = ((INIT_MODE == "mem_file") ? INIT_VALUE_0B : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_0C = ((INIT_MODE == "mem_file") ? INIT_VALUE_0C : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_0D = ((INIT_MODE == "mem_file") ? INIT_VALUE_0D : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_0E = ((INIT_MODE == "mem_file") ? INIT_VALUE_0E : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_0F = ((INIT_MODE == "mem_file") ? INIT_VALUE_0F : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_10 = ((INIT_MODE == "mem_file") ? INIT_VALUE_10 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_11 = ((INIT_MODE == "mem_file") ? INIT_VALUE_11 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_12 = ((INIT_MODE == "mem_file") ? INIT_VALUE_12 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_13 = ((INIT_MODE == "mem_file") ? INIT_VALUE_13 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_14 = ((INIT_MODE == "mem_file") ? INIT_VALUE_14 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_15 = ((INIT_MODE == "mem_file") ? INIT_VALUE_15 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_16 = ((INIT_MODE == "mem_file") ? INIT_VALUE_16 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_17 = ((INIT_MODE == "mem_file") ? INIT_VALUE_17 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_18 = ((INIT_MODE == "mem_file") ? INIT_VALUE_18 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_19 = ((INIT_MODE == "mem_file") ? INIT_VALUE_19 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_1A = ((INIT_MODE == "mem_file") ? INIT_VALUE_1A : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_1B = ((INIT_MODE == "mem_file") ? INIT_VALUE_1B : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_1C = ((INIT_MODE == "mem_file") ? INIT_VALUE_1C : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_1D = ((INIT_MODE == "mem_file") ? INIT_VALUE_1D : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_1E = ((INIT_MODE == "mem_file") ? INIT_VALUE_1E : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_1F = ((INIT_MODE == "mem_file") ? INIT_VALUE_1F : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_20 = ((INIT_MODE == "mem_file") ? INIT_VALUE_20 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_21 = ((INIT_MODE == "mem_file") ? INIT_VALUE_21 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_22 = ((INIT_MODE == "mem_file") ? INIT_VALUE_22 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_23 = ((INIT_MODE == "mem_file") ? INIT_VALUE_23 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_24 = ((INIT_MODE == "mem_file") ? INIT_VALUE_24 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_25 = ((INIT_MODE == "mem_file") ? INIT_VALUE_25 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_26 = ((INIT_MODE == "mem_file") ? INIT_VALUE_26 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_27 = ((INIT_MODE == "mem_file") ? INIT_VALUE_27 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_28 = ((INIT_MODE == "mem_file") ? INIT_VALUE_28 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_29 = ((INIT_MODE == "mem_file") ? INIT_VALUE_29 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_2A = ((INIT_MODE == "mem_file") ? INIT_VALUE_2A : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_2B = ((INIT_MODE == "mem_file") ? INIT_VALUE_2B : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_2C = ((INIT_MODE == "mem_file") ? INIT_VALUE_2C : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_2D = ((INIT_MODE == "mem_file") ? INIT_VALUE_2D : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_2E = ((INIT_MODE == "mem_file") ? INIT_VALUE_2E : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_2F = ((INIT_MODE == "mem_file") ? INIT_VALUE_2F : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_30 = ((INIT_MODE == "mem_file") ? INIT_VALUE_30 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_31 = ((INIT_MODE == "mem_file") ? INIT_VALUE_31 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_32 = ((INIT_MODE == "mem_file") ? INIT_VALUE_32 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_33 = ((INIT_MODE == "mem_file") ? INIT_VALUE_33 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_34 = ((INIT_MODE == "mem_file") ? INIT_VALUE_34 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_35 = ((INIT_MODE == "mem_file") ? INIT_VALUE_35 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_36 = ((INIT_MODE == "mem_file") ? INIT_VALUE_36 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_37 = ((INIT_MODE == "mem_file") ? INIT_VALUE_37 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_38 = ((INIT_MODE == "mem_file") ? INIT_VALUE_38 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_39 = ((INIT_MODE == "mem_file") ? INIT_VALUE_39 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_3A = ((INIT_MODE == "mem_file") ? INIT_VALUE_3A : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_3B = ((INIT_MODE == "mem_file") ? INIT_VALUE_3B : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_3C = ((INIT_MODE == "mem_file") ? INIT_VALUE_3C : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_3D = ((INIT_MODE == "mem_file") ? INIT_VALUE_3D : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_3E = ((INIT_MODE == "mem_file") ? INIT_VALUE_3E : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp16k.INITVAL_3F = ((INIT_MODE == "mem_file") ? INIT_VALUE_3F : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
end
|
|
else
|
|
if ((FAMILY_CODE == _FCODE_ICE_))
|
|
begin : iCE40UP
|
|
wire [10:0] addr_w ;
|
|
wire [15:0] wdata_w ;
|
|
wire [15:0] rdata_w ;
|
|
wire [15:0] mask_w ;
|
|
wire [(DATA_WIDTH - 1):0] rd_data_corr_w ;
|
|
reg [(DATA_WIDTH - 1):0] rd_data_buffer_r ;
|
|
assign rd_data_o = ((OUTREG == "reg") ? rd_data_buffer_r : rd_data_corr_w) ;
|
|
for (i0 = 0;(i0 < 16);i0 = (i0 + 1))
|
|
begin : genblk1
|
|
if ((i0 < 8))
|
|
begin: genblk1
|
|
assign mask_w[i0] = ((BYTE_ENABLE == 0) ? 1'b0 : ((DATA_WIDTH == 16) ? (~ben_i[0]) : 1'b0)) ;
|
|
end
|
|
else
|
|
begin: genblk1
|
|
assign mask_w[i0] = ((BYTE_ENABLE == 0) ? 1'b0 : ((DATA_WIDTH == 16) ? (~ben_i[1]) : 1'b0)) ;
|
|
end
|
|
end
|
|
if ((DATA_WIDTH == 16))
|
|
begin : genblk2
|
|
assign wdata_w = wr_data_i ;
|
|
assign addr_w[(ADDR_WIDTH - 1):0] = addr_i ;
|
|
assign addr_w[10:ADDR_WIDTH] = 'h0 ;
|
|
assign rd_data_corr_w = rdata_w ;
|
|
end
|
|
else
|
|
if ((DATA_WIDTH == 8))
|
|
begin : genblk2
|
|
assign wdata_w[0] = wr_data_i[0] ;
|
|
assign wdata_w[2] = wr_data_i[1] ;
|
|
assign wdata_w[4] = wr_data_i[2] ;
|
|
assign wdata_w[6] = wr_data_i[3] ;
|
|
assign wdata_w[8] = wr_data_i[4] ;
|
|
assign wdata_w[10] = wr_data_i[5] ;
|
|
assign wdata_w[12] = wr_data_i[6] ;
|
|
assign wdata_w[14] = wr_data_i[7] ;
|
|
assign addr_w[(ADDR_WIDTH - 1):0] = addr_i ;
|
|
assign addr_w[10:ADDR_WIDTH] = 'h0 ;
|
|
assign rd_data_corr_w[0] = rdata_w[0] ;
|
|
assign rd_data_corr_w[1] = rdata_w[2] ;
|
|
assign rd_data_corr_w[2] = rdata_w[4] ;
|
|
assign rd_data_corr_w[3] = rdata_w[6] ;
|
|
assign rd_data_corr_w[4] = rdata_w[8] ;
|
|
assign rd_data_corr_w[5] = rdata_w[10] ;
|
|
assign rd_data_corr_w[6] = rdata_w[12] ;
|
|
assign rd_data_corr_w[7] = rdata_w[14] ;
|
|
end
|
|
else
|
|
if ((DATA_WIDTH == 4))
|
|
begin : genblk2
|
|
assign wdata_w[1] = wr_data_i[0] ;
|
|
assign wdata_w[5] = wr_data_i[1] ;
|
|
assign wdata_w[9] = wr_data_i[2] ;
|
|
assign wdata_w[13] = wr_data_i[3] ;
|
|
assign addr_w[(ADDR_WIDTH - 1):0] = addr_i ;
|
|
assign addr_w[10:ADDR_WIDTH] = 'h0 ;
|
|
assign rd_data_corr_w[0] = rdata_w[1] ;
|
|
assign rd_data_corr_w[1] = rdata_w[5] ;
|
|
assign rd_data_corr_w[2] = rdata_w[9] ;
|
|
assign rd_data_corr_w[3] = rdata_w[13] ;
|
|
end
|
|
else
|
|
begin : genblk2
|
|
assign wdata_w[11] = wr_data_i[1] ;
|
|
assign wdata_w[3] = wr_data_i[0] ;
|
|
assign addr_w[(ADDR_WIDTH - 1):0] = addr_i ;
|
|
assign rd_data_corr_w[0] = rdata_w[3] ;
|
|
assign rd_data_corr_w[1] = rdata_w[11] ;
|
|
end
|
|
if ((OUTREG == "reg"))
|
|
begin : genblk3
|
|
if ((RESETMODE == "sync"))
|
|
begin : genblk1
|
|
always
|
|
@(posedge clk_i)
|
|
begin
|
|
if ((rst_i == 1'b1))
|
|
begin
|
|
rd_data_buffer_r <= 'h0 ;
|
|
end
|
|
else
|
|
begin
|
|
if ((rd_out_clk_en_i == 1'b1))
|
|
begin
|
|
rd_data_buffer_r <= rd_data_corr_w ;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
else
|
|
if ((ASYNC_RST_RELEASE == "sync"))
|
|
begin : genblk1
|
|
always
|
|
@(posedge clk_i or
|
|
posedge rst_i)
|
|
begin
|
|
if ((rst_i == 1'b1))
|
|
begin
|
|
rd_data_buffer_r <= 'h0 ;
|
|
end
|
|
else
|
|
begin
|
|
if ((rd_out_clk_en_i == 1'b1))
|
|
begin
|
|
rd_data_buffer_r <= rd_data_corr_w ;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
else
|
|
begin : genblk1
|
|
always
|
|
@(*)
|
|
begin
|
|
if ((rst_i == 1'b1))
|
|
begin
|
|
rd_data_buffer_r = 'h0 ;
|
|
end
|
|
else
|
|
begin
|
|
if ((rd_out_clk_en_i == 1'b1))
|
|
begin
|
|
rd_data_buffer_r = rd_data_corr_w ;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
wire t_wr_en_i = ((BYTE_ENABLE == 0) ? wr_en_i : ((BYTE_WIDTH > 1) ? wr_en_i : (wr_en_i & ben_i))) ;
|
|
PDP4K sp4k (.ADR(addr_w),
|
|
.ADW(addr_w),
|
|
.DI(wdata_w),
|
|
.MASK_N(mask_w),
|
|
.CER(clk_en_i),
|
|
.CKR(clk_i),
|
|
.RE((~wr_en_i)),
|
|
.CEW(clk_en_i),
|
|
.CKW(clk_i),
|
|
.WE(t_wr_en_i),
|
|
.DO(rdata_w)) ;
|
|
localparam R = ((DATA_WIDTH == 16) ? "16" : ((DATA_WIDTH == 8) ? "8" : ((DATA_WIDTH == 4) ? "4" : "2"))) ;
|
|
localparam W = ((DATA_WIDTH == 16) ? "16" : ((DATA_WIDTH == 8) ? "8" : ((DATA_WIDTH == 4) ? "4" : "2"))) ;
|
|
localparam X0 = ((INIT_MODE == "mem_file") ? INIT_VALUE_00 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x0000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
localparam X1 = ((INIT_MODE == "mem_file") ? INIT_VALUE_01 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x0000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
localparam X2 = ((INIT_MODE == "mem_file") ? INIT_VALUE_02 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x0000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
localparam X3 = ((INIT_MODE == "mem_file") ? INIT_VALUE_03 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x0000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
localparam X4 = ((INIT_MODE == "mem_file") ? INIT_VALUE_04 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x0000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
localparam X5 = ((INIT_MODE == "mem_file") ? INIT_VALUE_05 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x0000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
localparam X6 = ((INIT_MODE == "mem_file") ? INIT_VALUE_06 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x0000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
localparam X7 = ((INIT_MODE == "mem_file") ? INIT_VALUE_07 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x0000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
localparam X8 = ((INIT_MODE == "mem_file") ? INIT_VALUE_08 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x0000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
localparam X9 = ((INIT_MODE == "mem_file") ? INIT_VALUE_09 : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x0000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
localparam XA = ((INIT_MODE == "mem_file") ? INIT_VALUE_0A : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x0000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
localparam XB = ((INIT_MODE == "mem_file") ? INIT_VALUE_0B : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x0000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
localparam XC = ((INIT_MODE == "mem_file") ? INIT_VALUE_0C : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x0000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
localparam XD = ((INIT_MODE == "mem_file") ? INIT_VALUE_0D : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x0000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
localparam XE = ((INIT_MODE == "mem_file") ? INIT_VALUE_0E : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x0000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
localparam XF = ((INIT_MODE == "mem_file") ? INIT_VALUE_0F : ((INIT_MODE == "all_one") ? "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" : "0x0000000000000000000000000000000000000000000000000000000000000000")) ;
|
|
defparam sp4k.DATA_WIDTH_W = W ;
|
|
defparam sp4k.DATA_WIDTH_R = R ;
|
|
defparam sp4k.INITVAL_0 = X0 ;
|
|
defparam sp4k.INITVAL_1 = X1 ;
|
|
defparam sp4k.INITVAL_2 = X2 ;
|
|
defparam sp4k.INITVAL_3 = X3 ;
|
|
defparam sp4k.INITVAL_4 = X4 ;
|
|
defparam sp4k.INITVAL_5 = X5 ;
|
|
defparam sp4k.INITVAL_6 = X6 ;
|
|
defparam sp4k.INITVAL_7 = X7 ;
|
|
defparam sp4k.INITVAL_8 = X8 ;
|
|
defparam sp4k.INITVAL_9 = X9 ;
|
|
defparam sp4k.INITVAL_A = XA ;
|
|
defparam sp4k.INITVAL_B = XB ;
|
|
defparam sp4k.INITVAL_C = XC ;
|
|
defparam sp4k.INITVAL_D = XD ;
|
|
defparam sp4k.INITVAL_E = XE ;
|
|
defparam sp4k.INITVAL_F = XF ;
|
|
end
|
|
endgenerate
|
|
//------------------------------------------------------------------------------
|
|
// Function Definition
|
|
//------------------------------------------------------------------------------
|
|
function [31:0] calculateStringSize ;
|
|
input [31:0] x_calc ;
|
|
input [31:0] y_calc ;
|
|
reg [31:0] x_func ;
|
|
reg [31:0] y_func ;
|
|
begin
|
|
if ((x_calc >= 10000000))
|
|
begin
|
|
x_func = 8 ;
|
|
end
|
|
else
|
|
if ((x_calc >= 1000000))
|
|
begin
|
|
x_func = 7 ;
|
|
end
|
|
else
|
|
if ((x_calc >= 100000))
|
|
begin
|
|
x_func = 6 ;
|
|
end
|
|
else
|
|
if ((x_calc >= 10000))
|
|
begin
|
|
x_func = 5 ;
|
|
end
|
|
else
|
|
if ((x_calc >= 1000))
|
|
begin
|
|
x_func = 4 ;
|
|
end
|
|
else
|
|
if ((x_calc >= 100))
|
|
begin
|
|
x_func = 3 ;
|
|
end
|
|
else
|
|
if ((x_calc >= 10))
|
|
begin
|
|
x_func = 2 ;
|
|
end
|
|
else
|
|
begin
|
|
x_func = 1 ;
|
|
end
|
|
if ((y_calc >= 10000000))
|
|
begin
|
|
y_func = 8 ;
|
|
end
|
|
else
|
|
if ((y_calc >= 1000000))
|
|
begin
|
|
y_func = 7 ;
|
|
end
|
|
else
|
|
if ((y_calc >= 100000))
|
|
begin
|
|
y_func = 6 ;
|
|
end
|
|
else
|
|
if ((y_calc >= 10000))
|
|
begin
|
|
y_func = 5 ;
|
|
end
|
|
else
|
|
if ((y_calc >= 1000))
|
|
begin
|
|
y_func = 4 ;
|
|
end
|
|
else
|
|
if ((y_calc >= 100))
|
|
begin
|
|
y_func = 3 ;
|
|
end
|
|
else
|
|
if ((y_calc >= 10))
|
|
begin
|
|
y_func = 2 ;
|
|
end
|
|
else
|
|
begin
|
|
y_func = 1 ;
|
|
end
|
|
calculateStringSize = (((3 + x_func) + y_func) * 8) ;
|
|
end
|
|
endfunction
|
|
function [31:0] getByteWidth ;
|
|
input [31:0] data_width ;
|
|
input [31:0] dev_code ;
|
|
begin
|
|
case (dev_code)
|
|
_FCODE_LIFCL_ :
|
|
begin
|
|
if (((data_width == 18) || (data_width == 16)))
|
|
getByteWidth = 2 ;
|
|
else
|
|
getByteWidth = 1 ;
|
|
end
|
|
_FCODE_ICE_ :
|
|
begin
|
|
if ((data_width == 16))
|
|
getByteWidth = 2 ;
|
|
else
|
|
getByteWidth = 1 ;
|
|
end
|
|
default :
|
|
getByteWidth = 1 ;
|
|
endcase
|
|
end
|
|
endfunction
|
|
function [(STRING_SIZE - 1):0] getStringFromPos ;
|
|
input [31:0] x ;
|
|
input [31:0] y ;
|
|
begin
|
|
if ((y >= 10000000))
|
|
begin
|
|
if ((x >= 10000000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X7 * 8) + 7):(POS_X7 * 8)],
|
|
NUM_STRING[((POS_X6 * 8) + 7):(POS_X6 * 8)],
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y7 * 8) + 7):(POS_Y7 * 8)],
|
|
NUM_STRING[((POS_Y6 * 8) + 7):(POS_Y6 * 8)],
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 1000000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X6 * 8) + 7):(POS_X6 * 8)],
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y7 * 8) + 7):(POS_Y7 * 8)],
|
|
NUM_STRING[((POS_Y6 * 8) + 7):(POS_Y6 * 8)],
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 100000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y7 * 8) + 7):(POS_Y7 * 8)],
|
|
NUM_STRING[((POS_Y6 * 8) + 7):(POS_Y6 * 8)],
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 10000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y7 * 8) + 7):(POS_Y7 * 8)],
|
|
NUM_STRING[((POS_Y6 * 8) + 7):(POS_Y6 * 8)],
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 1000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y7 * 8) + 7):(POS_Y7 * 8)],
|
|
NUM_STRING[((POS_Y6 * 8) + 7):(POS_Y6 * 8)],
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 100))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y7 * 8) + 7):(POS_Y7 * 8)],
|
|
NUM_STRING[((POS_Y6 * 8) + 7):(POS_Y6 * 8)],
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 10))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y7 * 8) + 7):(POS_Y7 * 8)],
|
|
NUM_STRING[((POS_Y6 * 8) + 7):(POS_Y6 * 8)],
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y7 * 8) + 7):(POS_Y7 * 8)],
|
|
NUM_STRING[((POS_Y6 * 8) + 7):(POS_Y6 * 8)],
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
end
|
|
else
|
|
if ((y >= 1000000))
|
|
begin
|
|
if ((x >= 10000000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X7 * 8) + 7):(POS_X7 * 8)],
|
|
NUM_STRING[((POS_X6 * 8) + 7):(POS_X6 * 8)],
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y6 * 8) + 7):(POS_Y6 * 8)],
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 1000000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X6 * 8) + 7):(POS_X6 * 8)],
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y6 * 8) + 7):(POS_Y6 * 8)],
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 100000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y6 * 8) + 7):(POS_Y6 * 8)],
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 10000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y6 * 8) + 7):(POS_Y6 * 8)],
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 1000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y6 * 8) + 7):(POS_Y6 * 8)],
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 100))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y6 * 8) + 7):(POS_Y6 * 8)],
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 10))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y6 * 8) + 7):(POS_Y6 * 8)],
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y6 * 8) + 7):(POS_Y6 * 8)],
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
end
|
|
else
|
|
if ((y >= 100000))
|
|
begin
|
|
if ((x >= 10000000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X7 * 8) + 7):(POS_X7 * 8)],
|
|
NUM_STRING[((POS_X6 * 8) + 7):(POS_X6 * 8)],
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 1000000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X6 * 8) + 7):(POS_X6 * 8)],
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 100000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 10000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 1000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 100))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 10))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y5 * 8) + 7):(POS_Y5 * 8)],
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
end
|
|
else
|
|
if ((y >= 10000))
|
|
begin
|
|
if ((x >= 10000000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X7 * 8) + 7):(POS_X7 * 8)],
|
|
NUM_STRING[((POS_X6 * 8) + 7):(POS_X6 * 8)],
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 1000000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X6 * 8) + 7):(POS_X6 * 8)],
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 100000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 10000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 1000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 100))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 10))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y4 * 8) + 7):(POS_Y4 * 8)],
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
end
|
|
else
|
|
if ((y >= 1000))
|
|
begin
|
|
if ((x >= 10000000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X7 * 8) + 7):(POS_X7 * 8)],
|
|
NUM_STRING[((POS_X6 * 8) + 7):(POS_X6 * 8)],
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 1000000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X6 * 8) + 7):(POS_X6 * 8)],
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 100000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 10000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 1000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 100))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 10))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y3 * 8) + 7):(POS_Y3 * 8)],
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
end
|
|
else
|
|
if ((y >= 100))
|
|
begin
|
|
if ((x >= 10000000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X7 * 8) + 7):(POS_X7 * 8)],
|
|
NUM_STRING[((POS_X6 * 8) + 7):(POS_X6 * 8)],
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 1000000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X6 * 8) + 7):(POS_X6 * 8)],
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 100000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 10000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 1000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 100))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 10))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y2 * 8) + 7):(POS_Y2 * 8)],
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
end
|
|
else
|
|
if ((y >= 10))
|
|
begin
|
|
if ((x >= 10000000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X7 * 8) + 7):(POS_X7 * 8)],
|
|
NUM_STRING[((POS_X6 * 8) + 7):(POS_X6 * 8)],
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 1000000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X6 * 8) + 7):(POS_X6 * 8)],
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 100000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 10000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 1000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 100))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 10))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y1 * 8) + 7):(POS_Y1 * 8)],
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
end
|
|
else
|
|
begin
|
|
if ((x >= 10000000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X7 * 8) + 7):(POS_X7 * 8)],
|
|
NUM_STRING[((POS_X6 * 8) + 7):(POS_X6 * 8)],
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 1000000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X6 * 8) + 7):(POS_X6 * 8)],
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 100000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X5 * 8) + 7):(POS_X5 * 8)],
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 10000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X4 * 8) + 7):(POS_X4 * 8)],
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 1000))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X3 * 8) + 7):(POS_X3 * 8)],
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 100))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X2 * 8) + 7):(POS_X2 * 8)],
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
if ((x >= 10))
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X1 * 8) + 7):(POS_X1 * 8)],
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
else
|
|
begin
|
|
getStringFromPos = {"[",
|
|
NUM_STRING[((POS_X0 * 8) + 7):(POS_X0 * 8)],
|
|
",",
|
|
NUM_STRING[((POS_Y0 * 8) + 7):(POS_Y0 * 8)],
|
|
"]"} ;
|
|
end
|
|
end
|
|
end
|
|
endfunction
|
|
function [10:0] getAddrWidth ;
|
|
input [31:0] dwidth_impl ;
|
|
input [9:0] device_code ;
|
|
begin
|
|
case (device_code)
|
|
_FCODE_ICE_ :
|
|
begin
|
|
case (dwidth_impl)
|
|
16 :
|
|
getAddrWidth = 8 ;
|
|
8 :
|
|
getAddrWidth = 9 ;
|
|
4 :
|
|
getAddrWidth = 10 ;
|
|
2 :
|
|
getAddrWidth = 11 ;
|
|
endcase
|
|
end
|
|
_FCODE_LIFCL_ :
|
|
begin
|
|
case (dwidth_impl)
|
|
18 :
|
|
getAddrWidth = 10 ;
|
|
16 :
|
|
getAddrWidth = 10 ;
|
|
9 :
|
|
getAddrWidth = 11 ;
|
|
8 :
|
|
getAddrWidth = 11 ;
|
|
4 :
|
|
getAddrWidth = 12 ;
|
|
2 :
|
|
getAddrWidth = 13 ;
|
|
1 :
|
|
getAddrWidth = 14 ;
|
|
endcase
|
|
end
|
|
endcase
|
|
end
|
|
endfunction
|
|
endmodule
|
|
|
|
|