diff --git a/src/fpga_spi.h b/src/fpga_spi.h index 201179f..d04a954 100644 --- a/src/fpga_spi.h +++ b/src/fpga_spi.h @@ -50,6 +50,7 @@ #define FPGA_SPI_FAST() spi_set_speed(SPI_SPEED_FPGA_FAST) #define FPGA_SPI_SLOW() spi_set_speed(SPI_SPEED_FPGA_SLOW) +#define FEAT_CX4 (1 << 4) #define FEAT_MSU1 (1 << 3) #define FEAT_SRTC (1 << 2) #define FEAT_ST0010 (1 << 1) diff --git a/src/memory.c b/src/memory.c index 784a115..3797114 100644 --- a/src/memory.c +++ b/src/memory.c @@ -226,18 +226,16 @@ uint32_t load_rom(uint8_t* filename, uint32_t base_addr, uint8_t flags) { sram_writebyte(0xfc, rombase+0xd5); set_fpga_time(0x0220110301180530LL); } - if(romprops.has_dspx) { - printf("DSPx game. Loading firmware image %s...\n", romprops.necdsp_fw); - if(romprops.has_st0010) { - load_dspx(romprops.necdsp_fw, 1); - } else { - load_dspx(romprops.necdsp_fw, 0); - if(file_res && romprops.necdsp_fw == DSPFW_1) { - load_dspx(DSPFW_1B, 0); - } +fpga_pgm((uint8_t*)"/sd2snes/cx4.bit"); + if(romprops.has_dspx || romprops.has_cx4) { + printf("DSPx game. Loading firmware image %s...\n", romprops.dsp_fw); + load_dspx(romprops.dsp_fw, romprops.fpga_features); + /* fallback to DSP1B firmware if DSP1.bin is not present */ + if(file_res && romprops.dsp_fw == DSPFW_1) { + load_dspx(DSPFW_1B, romprops.fpga_features); } if(file_res) { - snes_menu_errmsg(MENU_ERR_NODSP, (void*)romprops.necdsp_fw); + snes_menu_errmsg(MENU_ERR_NODSP, (void*)romprops.dsp_fw); } } uint32_t rammask; @@ -494,22 +492,29 @@ uint64_t sram_gettime(uint32_t base_addr) { return result & 0x00ffffffffffffffLL; } -void load_dspx(const uint8_t *filename, uint8_t st0010) { +void load_dspx(const uint8_t *filename, uint8_t coretype) { UINT bytes_read; DWORD filesize; uint16_t word_cnt; uint8_t wordsize_cnt = 0; uint16_t sector_remaining = 0; uint16_t sector_cnt = 0; - uint16_t pgmsize = 2048; - uint16_t datsize; + uint16_t pgmsize = 0; + uint16_t datsize = 0; uint32_t pgmdata = 0; uint16_t datdata = 0; - if(st0010) { + if(coretype & FEAT_ST0010) { datsize = 1536; - } else { + pgmsize = 2048; + } else if (coretype & FEAT_DSPX) { datsize = 1024; + pgmsize = 2048; + } else if (coretype & FEAT_CX4) { + datsize = 0; + pgmsize = 1024; /* Cx4 data ROM */ + } else { + printf("load_dspx: unknown core (%02x)!\n", coretype); } file_open((uint8_t*)filename, FA_READ); @@ -539,7 +544,7 @@ void load_dspx(const uint8_t *filename, uint8_t st0010) { } wordsize_cnt = 0; - if(st0010) { + if(coretype & FEAT_ST0010) { file_seek(0xc000); sector_remaining = 0; } diff --git a/src/smc.c b/src/smc.c index 0cf17b6..202c2ff 100644 --- a/src/smc.c +++ b/src/smc.c @@ -83,6 +83,7 @@ void smc_id(snes_romprops_t* props) { props->has_dspx = 0; props->has_st0010 = 0; + props->has_cx4 = 0; props->fpga_features = 0; for(uint8_t num = 0; num < 6; num++) { if(!file_readblock(header, hdr_addr[num], sizeof(snes_header_t)) @@ -144,39 +145,44 @@ void smc_id(snes_romprops_t* props) { props->mapper_id = 0; if(header->map == 0x31 && (header->carttype == 0x03 || header->carttype == 0x05)) { props->has_dspx = 1; - props->necdsp_fw = DSPFW_1B; + props->dsp_fw = DSPFW_1B; props->fpga_features |= FEAT_DSPX; } break; case 0x20: /* LoROM */ props->mapper_id = 1; - if ((header->map == 0x20 && header->carttype == 0x03) || + if (header->map == 0x20 && header->carttype == 0xf3) { + props->has_cx4 = 1; + props->dsp_fw = CX4FW; + props->fpga_features |= FEAT_CX4; + } + else if ((header->map == 0x20 && header->carttype == 0x03) || (header->map == 0x30 && header->carttype == 0x05 && header->licensee != 0xb2)) { props->has_dspx = 1; props->fpga_features |= FEAT_DSPX; // Pilotwings uses DSP1 instead of DSP1B if(!memcmp(header->name, "PILOTWINGS", 10)) { - props->necdsp_fw = DSPFW_1; + props->dsp_fw = DSPFW_1; } else { - props->necdsp_fw = DSPFW_1B; + props->dsp_fw = DSPFW_1B; } } else if (header->map == 0x20 && header->carttype == 0x05) { props->has_dspx = 1; - props->necdsp_fw = DSPFW_2; + props->dsp_fw = DSPFW_2; props->fpga_features |= FEAT_DSPX; } else if (header->map == 0x30 && header->carttype == 0x05 && header->licensee == 0xb2) { props->has_dspx = 1; - props->necdsp_fw = DSPFW_3; + props->dsp_fw = DSPFW_3; props->fpga_features |= FEAT_DSPX; } else if (header->map == 0x30 && header->carttype == 0x03) { props->has_dspx = 1; - props->necdsp_fw = DSPFW_4; + props->dsp_fw = DSPFW_4; props->fpga_features |= FEAT_DSPX; } else if (header->map == 0x30 && header->carttype == 0xf6 && header->romsize >= 0xa) { props->has_dspx = 1; props->has_st0010 = 1; - props->necdsp_fw = DSPFW_ST0010; + props->dsp_fw = DSPFW_ST0010; props->fpga_features |= FEAT_ST0010; header->ramsize = 2; } diff --git a/src/smc.h b/src/smc.h index 54062fe..561078f 100644 --- a/src/smc.h +++ b/src/smc.h @@ -33,6 +33,7 @@ #define DSPFW_4 ((const uint8_t*)"/sd2snes/dsp4.bin") #define DSPFW_1B ((const uint8_t*)"/sd2snes/dsp1b.bin") #define DSPFW_ST0010 ((const uint8_t*)"/sd2snes/st0010.bin") +#define CX4FW ((const uint8_t*)"/sd2snes/cx4.bin") typedef struct _snes_header { uint8_t maker[2]; /* 0xB0 */ @@ -60,10 +61,11 @@ typedef struct _snes_romprops { uint32_t expramsize_bytes; /* ExpRAM size in bytes */ uint32_t ramsize_bytes; /* CartRAM size in bytes */ uint32_t romsize_bytes; /* ROM size in bytes (rounded up) */ - const uint8_t* necdsp_fw; /* NEC DSP ROM filename */ + const uint8_t* dsp_fw; /* DSP (NEC / Hitachi) ROM filename */ uint8_t has_dspx; /* DSP[1-4] presence flag */ uint8_t has_st0010; /* st0010 presence flag (additional to dspx)*/ uint8_t has_msu1; /* MSU1 presence flag */ + uint8_t has_cx4; /* CX4 presence flag */ uint8_t fpga_features; /* feature/peripheral enable bits*/ snes_header_t header; /* original header from ROM image */ } snes_romprops_t; diff --git a/verilog/sd2snes/sd2snes.xise b/verilog/sd2snes/sd2snes.xise index c897c80..2923d2b 100644 --- a/verilog/sd2snes/sd2snes.xise +++ b/verilog/sd2snes/sd2snes.xise @@ -16,55 +16,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -72,7 +72,7 @@ - + @@ -90,11 +90,11 @@ - + - + @@ -377,8 +377,8 @@ - - + + @@ -433,7 +433,7 @@ - + diff --git a/verilog/sd2snes_cx4/cx4.v b/verilog/sd2snes_cx4/cx4.v index 6d62b47..4eb055b 100644 --- a/verilog/sd2snes_cx4/cx4.v +++ b/verilog/sd2snes_cx4/cx4.v @@ -42,11 +42,12 @@ parameter BUSY_DMA = 2'b01; parameter BUSY_CPU = 2'b10; wire datram_enable = CS & (ADDR[11:0] < 12'hc00); -wire mmio_enable = CS & (ADDR[12:5] == 8'b11111010) & (ADDR[4:0] <= 8'b11000); -wire status_enable = CS & (ADDR[12:5] == 8'b11111010) & (ADDR[4:0] > 8'b11000); +wire mmio_enable = CS & (ADDR[12:5] == 8'b11111010) & (ADDR[4:0] <= 8'b11001); +wire status_enable = CS & (ADDR[12:5] == 8'b11111010) & (ADDR[4:0] > 8'b11001); wire vector_enable = CS & (ADDR[12:5] == 8'b11111011); wire gpr_enable = CS & (&(ADDR[12:7]) && ADDR[5:4] != 2'b11); wire pgmrom_enable = CS & (ADDR[12:5] == 8'b11110000); +wire debug_enable = CS & (&(ADDR[12:7]) && &(ADDR[5:4])); wire [7:0] DATRAM_DO; reg [7:0] MMIO_DOr; @@ -54,12 +55,15 @@ wire [7:0] MMIO_DO; wire [7:0] STATUS_DO; wire [7:0] VECTOR_DO; wire [7:0] GPR_DO; +wire [7:0] DEBUG_DO; +reg [7:0] DEBUG_DOr; assign DO = datram_enable ? DATRAM_DO : mmio_enable ? MMIO_DO : status_enable ? STATUS_DO : vector_enable ? VECTOR_DO : gpr_enable ? GPR_DO + : debug_enable ? DEBUG_DO : 8'h00; /* 0x1f40 - 0x1f52: MMIO @@ -87,7 +91,20 @@ wire [47:0] cpu_mul_result; reg [23:0] const [15:0]; reg [15:0] cachetag [1:0]; // 15: valid; 14-0: bank number +reg [14:0] cache_pgmpage; +reg [14:0] cpu_cache_pgmpage; +reg cache_cachepage; +reg cpu_cache_cachepage; +reg cpu_cache_done; +reg [7:0] cpu_pc_stack [7:0]; +reg [7:0] cpu_page_stack; + initial begin + cache_pgmpage = 15'b0; + cpu_cache_pgmpage = 15'b0; + cache_cachepage = 1'b0; + cpu_cache_cachepage = 1'b0; + cpu_cache_done = 1'b0; cachetag[0] = 16'h0000; cachetag[1] = 16'h0000; cx4_busy = 3'b000; @@ -112,12 +129,22 @@ initial begin const[13] = 24'hfeffff; const[14] = 24'h000100; const[15] = 24'h00feff; + cpu_pc_stack[0] = 8'b0; + cpu_pc_stack[1] = 8'b0; + cpu_pc_stack[2] = 8'b0; + cpu_pc_stack[3] = 8'b0; + cpu_pc_stack[4] = 8'b0; + cpu_pc_stack[5] = 8'b0; + cpu_pc_stack[6] = 8'b0; + cpu_pc_stack[7] = 8'b0; + cpu_page_stack = 8'b0; end assign MMIO_DO = MMIO_DOr; assign VECTOR_DO = vector [ADDR[4:0]]; assign GPR_DO = gpr [ADDR[5:0]]; assign STATUS_DO = {1'b0, cx4_active, 4'b0000, ~cx4_active, 1'b0}; +assign DEBUG_DO = DEBUG_DOr; reg [7:0] DIr; always @(posedge CLK) DIr <= DI; @@ -143,9 +170,11 @@ reg [23:0] cpu_idb; // tmp register for reg file read */ reg CACHE_TRIG_ENr; reg CACHE_TRIG_EN2r; +reg cpu_cache_en; initial begin CACHE_TRIG_ENr = 1'b0; CACHE_TRIG_EN2r = 1'b0; + cpu_cache_en = 1'b0; end always @(posedge CLK) CACHE_TRIG_EN2r <= CACHE_TRIG_ENr; wire CACHE_TRIG_EN = CACHE_TRIG_EN2r; @@ -156,11 +185,19 @@ wire DMA_TRIG_EN = DMA_TRIG_ENr; reg CACHE_BUS_RRQr; reg DMA_BUS_RRQr; +reg cpu_bus_rq; + initial begin CACHE_BUS_RRQr = 1'b0; DMA_BUS_RRQr = 1'b0; + cpu_bus_rq = 1'b0; end -assign BUS_RRQ = CACHE_BUS_RRQr | DMA_BUS_RRQr; + +assign BUS_RRQ = CACHE_BUS_RRQr | DMA_BUS_RRQr | cpu_bus_rq; + +reg cpu_page; +reg [14:0] cpu_p; +reg [7:0] cpu_pc; reg cpu_go_en_r; initial cpu_go_en_r = 1'b0; @@ -192,23 +229,31 @@ always @(posedge CLK) begin 5'h10: MMIO_DOr <= cx4_mmio_r1f50; // 1f50 5'h11: MMIO_DOr <= {7'b0, cx4_mmio_r1f51}; // 1f51 5'h12: MMIO_DOr <= {7'b0, cx4_mmio_r1f52}; // 1f52 - - 5'h13: MMIO_DOr <= cpu_mul_result[47:40]; // 1f40 - 5'h14: MMIO_DOr <= cpu_mul_result[39:32]; // 1f40 - 5'h15: MMIO_DOr <= cpu_mul_result[31:24]; // 1f40 - 5'h16: MMIO_DOr <= cpu_mul_result[23:16]; // 1f40 - 5'h17: MMIO_DOr <= cpu_mul_result[15:8]; // 1f40 - 5'h18: MMIO_DOr <= cpu_mul_result[7:0]; // 1f40 - - -// 5'h14: MMIO_DOr <= cachetag[0][15:8]; // 1f40 -// 5'h15: MMIO_DOr <= cachetag[0][7:0]; // 1f41 -// 5'h16: MMIO_DOr <= cachetag[1][15:8]; // 1f42 -// 5'h17: MMIO_DOr <= cachetag[1][7:0]; // 1f43 default: MMIO_DOr <= 8'hff; endcase end +always @(posedge CLK) begin + case(ADDR[3:0]) + 4'h0: DEBUG_DOr <= cachetag[0][15:8]; // 1f40 + 4'h1: DEBUG_DOr <= cachetag[0][7:0]; // 1f41 + 4'h2: DEBUG_DOr <= cachetag[1][15:8]; // 1f42 + 4'h3: DEBUG_DOr <= cachetag[1][7:0]; // 1f43 + 4'h4: DEBUG_DOr <= cpu_page; + 4'h5: DEBUG_DOr <= cpu_p; + 4'h6: DEBUG_DOr <= cpu_pc; + 4'h7: DEBUG_DOr <= cx4_busy; + 4'h8: DEBUG_DOr <= cpu_page_stack[0]; + 4'h9: DEBUG_DOr <= cpu_pc_stack[0]; + 4'ha: DEBUG_DOr <= cpu_page_stack[1]; + 4'hb: DEBUG_DOr <= cpu_pc_stack[1]; + 4'hc: DEBUG_DOr <= cpu_page_stack[2]; + 4'hd: DEBUG_DOr <= cpu_pc_stack[2]; + 4'he: DEBUG_DOr <= cpu_page_stack[3]; + 4'hf: DEBUG_DOr <= cpu_pc_stack[3]; + endcase +end + always @(posedge CLK) begin if(MMIO_WR_EN) begin case(ADDR[4:0]) @@ -272,10 +317,11 @@ reg [23:0] CACHE_SRC_ADDRr; wire [22:0] MAPPED_CACHE_SRC_ADDR = {CACHE_SRC_ADDRr[23:16],CACHE_SRC_ADDRr[14:0]}; reg [23:0] DMA_SRC_ADDRr; wire [22:0] MAPPED_DMA_SRC_ADDR = {DMA_SRC_ADDRr[23:16],DMA_SRC_ADDRr[14:0]}; +wire [22:0] MAPPED_CPU_BUS_ADDR; assign BUS_ADDR = cx4_busy[BUSY_CACHE] ? MAPPED_CACHE_SRC_ADDR : cx4_busy[BUSY_DMA] ? MAPPED_DMA_SRC_ADDR - : 24'h800000 /* XXX cx4_bus_addr */; + : MAPPED_CPU_BUS_ADDR; reg cx4_pgmrom_we; initial cx4_pgmrom_we = 1'b0; @@ -288,15 +334,24 @@ always @(posedge CLK) begin ST_CACHE_IDLE: begin if(CACHE_TRIG_EN & (~cachetag[cx4_mmio_cachepage][15] - | |(cachetag[cx4_mmio_cachepage][14:0] ^ cx4_mmio_pgmpage))) - begin + | |(cachetag[cx4_mmio_cachepage][14:0] ^ cx4_mmio_pgmpage))) begin CACHE_ST <= ST_CACHE_START; - end else CACHE_ST <= ST_CACHE_IDLE; + cache_pgmpage <= cx4_mmio_pgmpage; + cache_cachepage <= cx4_mmio_cachepage; + end else if(cpu_cache_en + & (~cachetag[~cpu_page][15] + | |(cachetag[~cpu_page][14:0] ^ cpu_p))) begin + CACHE_ST <= ST_CACHE_START; + cache_pgmpage <= cpu_p; + cache_cachepage <= ~cpu_page; + cx4_busy[BUSY_CACHE] <= 1'b1; + end + else CACHE_ST <= ST_CACHE_IDLE; end ST_CACHE_START: begin cx4_busy[BUSY_CACHE] <= 1'b1; - CACHE_SRC_ADDRr <= cx4_mmio_pgmoff + {cx4_mmio_pgmpage, 9'b0}; - cx4_pgmrom_addr <= {cx4_mmio_cachepage, 9'b0}; + CACHE_SRC_ADDRr <= cx4_mmio_pgmoff + {cache_pgmpage, 9'b0}; + cx4_pgmrom_addr <= {cache_cachepage, 9'b0}; CACHE_ST <= ST_CACHE_WAIT; cache_count <= 10'b0; CACHE_BUS_RRQr <= 1'b1; @@ -315,7 +370,7 @@ always @(posedge CLK) begin cx4_pgmrom_addr <= cx4_pgmrom_addr + 1; if(cache_count == 9'h1ff) begin cx4_busy[BUSY_CACHE] <= 1'b0; - cachetag[cx4_mmio_cachepage] <= {1'b1,cx4_mmio_pgmpage}; + cachetag[cache_cachepage] <= {1'b1,cache_pgmpage}; CACHE_ST <= ST_CACHE_IDLE; end else begin CACHE_BUS_RRQr <= 1'b1; @@ -334,7 +389,7 @@ reg [11:0] cx4_dma_datram_addr; reg [11:0] cx4_cpu_datram_addr; wire [11:0] cx4_datram_addr = cx4_busy[BUSY_DMA] ? cx4_dma_datram_addr : cx4_cpu_datram_addr; reg [23:0] cx4_cpu_datram_di; -wire [23:0] cx4_datram_di = cx4_busy[BUSY_DMA] ? BUS_DI : cx4_cpu_datram_di; +wire [7:0] cx4_datram_di = cx4_busy[BUSY_DMA] ? BUS_DI : cx4_cpu_datram_di; reg [15:0] dma_count; initial dma_count = 16'b0; @@ -380,10 +435,8 @@ end =========== CPU =========== ***************************/ reg [4:0] CPU_STATE; -reg cpu_page; -reg [7:0] cpu_pc; -reg [8:0] cpu_stack [7:0]; reg [2:0] cpu_sp; +initial cpu_sp = 3'b000; wire [15:0] cpu_op_w; reg [15:0] cpu_op; reg [23:0] cpu_a; @@ -391,17 +444,20 @@ reg [23:0] cpu_busdata; reg [23:0] cpu_romdata; reg [23:0] cpu_ramdata; reg [23:0] cpu_busaddr; +assign MAPPED_CPU_BUS_ADDR = {cpu_busaddr[23:16], cpu_busaddr[14:0]}; reg [23:0] cpu_romaddr; reg [23:0] cpu_ramaddr; reg [23:0] cpu_acch; reg [23:0] cpu_accl; reg [23:0] cpu_mul_src; +reg [24:0] cpu_alu_res; +reg [23:0] cpu_dummy; +reg [23:0] cpu_tmp; reg [23:0] cpu_sa; // tmp register for shifted accumulator reg fl_n; reg fl_z; reg fl_c; -reg [15:0] cpu_p; wire [9:0] cx4_datrom_addr = cpu_a[9:0]; wire [23:0] cx4_datrom_do; @@ -413,49 +469,63 @@ parameter ST_CPU_1 = 5'b00100; parameter ST_CPU_2 = 5'b01000; parameter ST_CPU_3 = 5'b10000; -initial CPU_STATE <= ST_CPU_IDLE; +initial CPU_STATE = ST_CPU_IDLE; -parameter OP_NOP = 4'b0000; -parameter OP_JP = 4'b0001; -parameter OP_SKIP = 4'b0010; -parameter OP_RT = 4'b0011; -parameter OP_LD = 4'b0100; -parameter OP_ST = 4'b0101; -parameter OP_SWP = 4'b0110; -parameter OP_RDROM = 4'b0111; -parameter OP_RDRAM = 4'b1000; -parameter OP_WRRAM = 4'b1001; -parameter OP_ALU = 4'b1010; -parameter OP_MUL = 4'b1011; -parameter OP_WAI = 4'b1100; -parameter OP_BUS = 4'b1101; -parameter OP_HLT = 4'b1110; +parameter OP_NOP = 5'b00000; +parameter OP_JP = 5'b00001; +parameter OP_SKIP = 5'b00010; +parameter OP_RT = 5'b00011; +parameter OP_LD = 5'b00100; +parameter OP_ST = 5'b00101; +parameter OP_SWP = 5'b00110; +parameter OP_RDROM = 5'b00111; +parameter OP_RDRAM = 5'b01000; +parameter OP_WRRAM = 5'b01001; +parameter OP_ALU = 5'b01010; +parameter OP_MUL = 5'b01011; +parameter OP_WAI = 5'b01100; +parameter OP_BUS = 5'b01101; +parameter OP_CMP = 5'b01110; +parameter OP_SEX = 5'b01111; +parameter OP_HLT = 5'b10000; wire [6:0] op_id = cpu_op_w[15:10]; reg [7:0] op_param; -reg [3:0] op; +reg [4:0] op; reg [1:0] op_sa; reg op_imm; reg op_p; reg op_call; reg op_jump; reg condtrue; -reg cpu_bus_rq; + +/* XXX DEBUG */ +reg [23:0] dbg_cnt; +initial dbg_cnt = 24'b0; +always @(posedge CLK) dbg_cnt <= dbg_cnt + 1; +wire step_enable = 1'b1; always @(posedge CLK) begin + if(cpu_go_en_r) cx4_busy[BUSY_CPU] <= 1'b1; + else if((op == OP_HLT) && step_enable) cx4_busy[BUSY_CPU] <= 1'b0; +end + +always @(posedge CLK) begin +if(step_enable | cpu_go_en_r) begin case(CPU_STATE) ST_CPU_IDLE: begin if(cpu_go_en_r) begin cpu_pc <= cx4_mmio_pc; + cpu_page <= cx4_mmio_cachepage; + cpu_p <= cx4_mmio_pgmpage; op <= OP_NOP; CPU_STATE <= ST_CPU_2; - cx4_busy[BUSY_CPU] <= 1'b1; end else CPU_STATE <= ST_CPU_IDLE; end ST_CPU_0: begin // Phase 0: + cpu_cache_en <= 1'b0; if(op == OP_HLT) begin - cx4_busy[BUSY_CPU] <= 1'b0; CPU_STATE <= ST_CPU_IDLE; end else CPU_STATE <= ST_CPU_1; @@ -475,7 +545,7 @@ always @(posedge CLK) begin 2'b11: condtrue <= (fl_n == cpu_op[0]); endcase end - OP_LD, OP_SWP, OP_ALU, OP_MUL: begin + OP_LD, OP_ALU, OP_MUL, OP_CMP, OP_SEX: begin if(op_imm) cpu_idb <= {16'b0, op_param}; else casex(op_param) 8'h00: cpu_idb <= cpu_a; @@ -492,7 +562,7 @@ always @(posedge CLK) begin gpr[op_param[3:0]*3]}; default: cpu_idb <= 24'b0; endcase - if(op==OP_ALU) begin + if(op==OP_ALU || op==OP_CMP) begin case(op_sa) 2'b00: cpu_sa <= cpu_a; 2'b01: cpu_sa <= cpu_a << 1; @@ -504,8 +574,26 @@ always @(posedge CLK) begin OP_ST: begin cpu_idb <= cpu_a; end + OP_SWP: begin + cpu_idb <= cpu_a; + casex(op_param) + 8'h00: cpu_tmp <= cpu_a; + 8'h01: cpu_tmp <= cpu_acch; + 8'h02: cpu_tmp <= cpu_accl; + 8'h03: cpu_tmp <= cpu_busdata; + 8'h08: cpu_tmp <= cpu_romdata; + 8'h0c: cpu_tmp <= cpu_ramdata; + 8'h13: cpu_tmp <= cpu_busaddr; + 8'h1c: cpu_tmp <= cpu_ramaddr; + 8'h5x: cpu_tmp <= const[op_param[3:0]]; + 8'h6x: cpu_tmp <= {gpr[op_param[3:0]*3+2], + gpr[op_param[3:0]*3+1], + gpr[op_param[3:0]*3]}; + default: cpu_tmp <= 24'b0; + endcase + end OP_RDRAM, OP_WRRAM: begin - if(op_imm) cpu_ramaddr <= {16'b0, op_param}; + if(op_imm) cx4_cpu_datram_addr <= {16'b0, op_param} + cpu_ramaddr; else casex(op_param) 8'h00: cx4_cpu_datram_addr <= cpu_a; 8'h01: cx4_cpu_datram_addr <= cpu_acch; @@ -522,32 +610,39 @@ always @(posedge CLK) begin default: cx4_cpu_datram_addr <= 24'b0; endcase end + OP_BUS: cpu_bus_rq <= 1'b1; endcase end ST_CPU_1: begin CPU_STATE <= ST_CPU_2; case(op) OP_JP: begin - if(condtrue) begin - if(op_call) begin - cpu_stack[cpu_sp] <= cpu_pc + 1; - cpu_sp <= cpu_sp + 1; - end - cpu_pc <= op_param; + if(!cx4_busy[BUSY_CACHE]) begin + if(condtrue) begin + if(op_call) begin + cpu_page_stack[cpu_sp] <= cpu_page; + cpu_pc_stack[cpu_sp] <= cpu_pc + 1; + cpu_sp <= cpu_sp + 1; + end + cpu_pc <= op_param; + cpu_page <= cpu_page ^ op_p; + end else cpu_pc <= cpu_pc + 1; end end OP_SKIP: begin - if(condtrue) begin - cpu_pc <= cpu_pc + 2; - end + if(condtrue) cpu_pc <= cpu_pc + 2; + else cpu_pc <= cpu_pc + 1; end OP_RT: begin - cpu_pc <= cpu_stack[cpu_sp - 1]; + cpu_page <= cpu_page_stack[cpu_sp - 1]; + cpu_pc <= cpu_pc_stack[cpu_sp - 1]; cpu_sp <= cpu_sp - 1; end - OP_LD, OP_ST, OP_SWP, OP_RDROM, OP_RDRAM, OP_WRRAM, OP_ALU, OP_MUL, OP_BUS: - cpu_pc <= cpu_pc + 1; OP_WAI: if(BUS_RDY) cpu_pc <= cpu_pc + 1; + OP_BUS: begin + cpu_bus_rq <= 1'b0; + cpu_pc <= cpu_pc + 1; + end default: cpu_pc <= cpu_pc + 1; endcase end @@ -559,56 +654,101 @@ always @(posedge CLK) begin 4'b0x00: cpu_a <= cpu_idb; 4'b0x11: cpu_p <= cpu_idb; 4'b1100: cpu_p[7:0] <= op_param; - 4'b1101: cpu_p[15:8] <= op_param; + 4'b1101: cpu_p[14:8] <= op_param; endcase end - OP_ST: begin - casex(op_param) - 8'h00: cpu_a <= cpu_idb; + OP_ST, OP_SWP: begin + casex(op_param) +// 8'h00: cpu_a <= cpu_idb; 8'h01: cpu_acch <= cpu_idb; 8'h02: cpu_accl <= cpu_idb; - 8'h03: cpu_busdata <= cpu_idb; +// 8'h03: cpu_busdata <= cpu_idb; 8'h08: cpu_romdata <= cpu_idb; 8'h0c: cpu_ramdata <= cpu_idb; 8'h13: cpu_busaddr <= cpu_idb; 8'h1c: cpu_ramaddr <= cpu_idb; endcase - end - OP_SWP: begin - casex(op_param) - 8'h00: cpu_a <= cpu_a; - 8'h01: cpu_acch <= cpu_a; - 8'h02: cpu_accl <= cpu_a; - 8'h03: cpu_busdata <= cpu_a; - 8'h08: cpu_romdata <= cpu_a; - 8'h0c: cpu_ramdata <= cpu_a; - 8'h13: cpu_busaddr <= cpu_a; - 8'h1c: cpu_ramaddr <= cpu_a; - endcase + if(op==OP_SWP) cpu_a <= cpu_tmp; end OP_RDROM: cpu_romdata <= cx4_datrom_do; - OP_RDRAM: cpu_ramdata <= cx4_datram_do; + OP_RDRAM: begin + case(cpu_op[9:8]) + 2'b00: cpu_ramdata[7:0] <= cx4_datram_do; + 2'b01: cpu_ramdata[15:8] <= cx4_datram_do; + 2'b10: cpu_ramdata[23:16] <= cx4_datram_do; + endcase + end OP_WRRAM: begin case(cpu_op[9:8]) - 2'b00: cx4_cpu_datram_di[7:0] <= cpu_ramdata[7:0]; - 2'b01: cx4_cpu_datram_di[15:8] <= cpu_ramdata[15:8]; - 2'b10: cx4_cpu_datram_di[23:16] <= cpu_ramdata[23:16]; + 2'b00: cx4_cpu_datram_di <= cpu_ramdata[7:0]; + 2'b01: cx4_cpu_datram_di <= cpu_ramdata[15:8]; + 2'b10: cx4_cpu_datram_di <= cpu_ramdata[23:16]; endcase cx4_cpu_datram_we <= 1'b1; end - OP_ALU: begin - /* XXX TODO FUCK YEAH ALU */ + OP_CMP: begin + case(cpu_op[15:11]) + 5'b01001: cpu_alu_res <= cpu_idb - cpu_sa; + 5'b01010: cpu_alu_res <= cpu_sa - cpu_idb; + endcase + end + OP_SEX: begin + case(cpu_op[9:8]) + 2'b01: cpu_alu_res <= {{16{cpu_idb[7]}}, cpu_idb[7:0]}; + 2'b10: cpu_alu_res <= {{8{cpu_idb[15]}}, cpu_idb[15:0]}; + endcase + end + OP_ALU: begin + case(cpu_op[15:11]) + 5'b10000: cpu_alu_res <= cpu_sa + cpu_idb; + 5'b10001: cpu_alu_res <= cpu_idb - cpu_sa; + 5'b10010: cpu_alu_res <= cpu_sa - cpu_idb; + 5'b10101: cpu_alu_res <= cpu_sa ^ cpu_idb; + 5'b10110: cpu_alu_res <= cpu_sa & cpu_idb; + 5'b10111: cpu_alu_res <= cpu_sa | cpu_idb; + 5'b11000: cpu_alu_res <= cpu_a >> cpu_idb; + 5'b11001: cpu_alu_res <= $signed(cpu_a) >>> cpu_idb; + 5'b11010: {cpu_alu_res[23:0]} <= {cpu_a, cpu_a} >> cpu_idb; + 5'b11011: cpu_alu_res <= cpu_a << cpu_idb; + endcase end - OP_BUS: cpu_bus_rq <= 1'b1; endcase end ST_CPU_3: begin CPU_STATE <= ST_CPU_0; case(op) - OP_SWP: cpu_a <= cpu_idb; + OP_LD: begin + casex(cpu_op[11:8]) + 4'b0x11: cpu_cache_en <= 1'b1; + 4'b1100: cpu_cache_en <= 1'b1; + endcase + end + OP_BUS: cpu_busaddr <= cpu_busaddr + 1; OP_WRRAM: cx4_cpu_datram_we <= 1'b0; + OP_CMP: begin + fl_n <= cpu_alu_res[23]; + fl_z <= cpu_alu_res[23:0] == 24'b0; + fl_c <= ~cpu_alu_res[24]; + end + OP_SEX: cpu_a <= cpu_alu_res[23:0]; OP_ALU: begin - /* XXX TODO FUCKING FLAGS */ + cpu_a <= cpu_alu_res[23:0]; + case(cpu_op[15:11]) + 5'b10000: begin + fl_n <= cpu_alu_res[23]; + fl_z <= cpu_alu_res[23:0] == 24'b0; + fl_c <= cpu_alu_res[24]; + end + 5'b10001, 5'b10010: begin + fl_n <= cpu_alu_res[23]; + fl_z <= cpu_alu_res[23:0] == 24'b0; + fl_c <= ~cpu_alu_res[24]; + end + default: begin + fl_n <= cpu_alu_res[23]; + fl_z <= cpu_alu_res[23:0] == 24'b0; + end + endcase end OP_MUL: begin cpu_acch <= cpu_mul_result[47:24]; @@ -616,7 +756,6 @@ always @(posedge CLK) begin fl_z <= (cpu_mul_result == 48'b0); fl_n <= cpu_mul_result[47]; end - OP_BUS: cpu_bus_rq <= 1'b0; endcase cpu_op <= cpu_op_w; casex(cpu_op_w[15:11]) @@ -636,9 +775,9 @@ always @(posedge CLK) begin 5'b01101: op <= OP_RDRAM; 5'b11101: op <= OP_WRRAM; - 5'b01001: op <= OP_ALU; - 5'b01010: op <= OP_ALU; - 5'b01011: op <= OP_ALU; + 5'b01001: op <= OP_CMP; + 5'b01010: op <= OP_CMP; + 5'b01011: op <= OP_SEX; 5'b10000: op <= OP_ALU; 5'b10001: op <= OP_ALU; 5'b10010: op <= OP_ALU; @@ -659,22 +798,45 @@ always @(posedge CLK) begin op_imm <= cpu_op_w[10]; op_p <= cpu_op_w[9]; op_call <= cpu_op_w[13]; + op_param <= cpu_op_w[7:0]; + op_sa <= cpu_op_w[9:8]; end endcase end +end + +reg[2:0] BUSRD_STATE; +parameter ST_BUSRD_IDLE = 2'b01; +parameter ST_BUSRD_WAIT = 2'b10; +initial BUSRD_STATE = ST_BUSRD_IDLE; + +always @(posedge CLK) begin + if(CPU_STATE == ST_CPU_2 + && (op == OP_ST || op == OP_SWP) + && op_param == 8'h03) + cpu_busdata <= cpu_idb; + else begin + case(BUSRD_STATE) + ST_BUSRD_IDLE: begin + if(cpu_bus_rq) begin + BUSRD_STATE <= ST_BUSRD_WAIT; + end + end + ST_BUSRD_WAIT: begin + if(BUS_RDY) BUSRD_STATE <= ST_BUSRD_IDLE; + else BUSRD_STATE <= ST_BUSRD_WAIT; + if(~cpu_busaddr[22]) cpu_busdata <= BUS_DI; + else cpu_busdata <= 8'h00; + end + endcase + end +end // gpr write, either by CPU or by MMIO always @(posedge CLK) begin if(CPU_STATE == ST_CPU_2 - && (op == OP_SWP) - && (op_param[7:4] == 8'h6)) begin - gpr[op_param[3:0]*3+2] <= cpu_a[23:16]; - gpr[op_param[3:0]*3+1] <= cpu_a[15:8]; - gpr[op_param[3:0]*3] <= cpu_a[7:0]; - end - else if(CPU_STATE == ST_CPU_2 - && (op == OP_ST) - && (op_param[7:4] == 8'h6)) begin + && (op == OP_ST || op == OP_SWP) + && (op_param[7:4] == 4'h6)) begin gpr[op_param[3:0]*3+2] <= cpu_idb[23:16]; gpr[op_param[3:0]*3+1] <= cpu_idb[15:8]; gpr[op_param[3:0]*3] <= cpu_idb[7:0]; @@ -714,7 +876,7 @@ cx4_pgmrom cx4_pgmrom ( .addra(cx4_pgmrom_addr), // input [9 : 0] addra .dina(BUS_DI), // input [7 : 0] dina .clkb(CLK), // input clkb - .addrb(cpu_pc), // input [8 : 0] addrb + .addrb({cpu_page,cpu_pc}), // input [8 : 0] addrb .doutb(cpu_op_w) // output [15 : 0] doutb ); diff --git a/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.v b/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.v index 32e9bad..ebb89bc 100644 --- a/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.v +++ b/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.v @@ -7,7 +7,7 @@ // \ \ \/ Version: O.61xd // \ \ Application: netgen // / / Filename: cx4_mul.v -// /___/ /\ Timestamp: Fri Oct 21 22:38:27 2011 +// /___/ /\ Timestamp: Tue Oct 25 00:04:23 2011 // \ \ / \ // \___\/\___\ // @@ -399,6 +399,54 @@ module cx4_mul ( wire sig00000162; wire sig00000163; wire sig00000164; + wire sig00000165; + wire sig00000166; + wire sig00000167; + wire sig00000168; + wire sig00000169; + wire sig0000016a; + wire sig0000016b; + wire sig0000016c; + wire sig0000016d; + wire sig0000016e; + wire sig0000016f; + wire sig00000170; + wire sig00000171; + wire sig00000172; + wire sig00000173; + wire sig00000174; + wire sig00000175; + wire sig00000176; + wire sig00000177; + wire sig00000178; + wire sig00000179; + wire sig0000017a; + wire sig0000017b; + wire sig0000017c; + wire sig0000017d; + wire sig0000017e; + wire sig0000017f; + wire sig00000180; + wire sig00000181; + wire sig00000182; + wire sig00000183; + wire sig00000184; + wire sig00000185; + wire sig00000186; + wire sig00000187; + wire sig00000188; + wire sig00000189; + wire sig0000018a; + wire sig0000018b; + wire sig0000018c; + wire sig0000018d; + wire sig0000018e; + wire sig0000018f; + wire sig00000190; + wire sig00000191; + wire sig00000192; + wire sig00000193; + wire sig00000194; wire \NLW_blk00000003_P<35>_UNCONNECTED ; wire \NLW_blk00000003_P<34>_UNCONNECTED ; wire \NLW_blk00000003_P<33>_UNCONNECTED ; @@ -447,15 +495,15 @@ module cx4_mul ( wire \NLW_blk00000005_P<24>_UNCONNECTED ; wire \NLW_blk00000006_P<35>_UNCONNECTED ; GND blk00000001 ( - .G(sig00000001) + .G(sig00000012) ); VCC blk00000002 ( - .P(sig00000002) + .P(sig00000013) ); MULT18X18S blk00000003 ( .C(clk), - .CE(sig00000002), - .R(sig00000001), + .CE(sig00000013), + .R(sig00000012), .A({a[23], a[23], a[23], a[23], a[23], a[23], a[23], a[23], a[23], a[23], a[23], a[23], a[22], a[21], a[20], a[19], a[18], a[17]}), .B({b[23], b[23], b[23], b[23], b[23], b[23], b[23], b[23], b[23], b[23], b[23], b[23], b[22], b[21], b[20], b[19], b[18], b[17]}), .P({\NLW_blk00000003_P<35>_UNCONNECTED , \NLW_blk00000003_P<34>_UNCONNECTED , \NLW_blk00000003_P<33>_UNCONNECTED , @@ -463,1638 +511,1638 @@ module cx4_mul ( \NLW_blk00000003_P<28>_UNCONNECTED , \NLW_blk00000003_P<27>_UNCONNECTED , \NLW_blk00000003_P<26>_UNCONNECTED , \NLW_blk00000003_P<25>_UNCONNECTED , \NLW_blk00000003_P<24>_UNCONNECTED , \NLW_blk00000003_P<23>_UNCONNECTED , \NLW_blk00000003_P<22>_UNCONNECTED , \NLW_blk00000003_P<21>_UNCONNECTED , \NLW_blk00000003_P<20>_UNCONNECTED , \NLW_blk00000003_P<19>_UNCONNECTED , \NLW_blk00000003_P<18>_UNCONNECTED , \NLW_blk00000003_P<17>_UNCONNECTED , -\NLW_blk00000003_P<16>_UNCONNECTED , \NLW_blk00000003_P<15>_UNCONNECTED , \NLW_blk00000003_P<14>_UNCONNECTED , sig000000e5, sig000000e4, sig000000e3, -sig000000e2, sig000000ee, sig000000ed, sig000000ec, sig000000eb, sig000000ea, sig000000e9, sig000000e8, sig000000e7, sig000000e6, sig000000e1}) +\NLW_blk00000003_P<16>_UNCONNECTED , \NLW_blk00000003_P<15>_UNCONNECTED , \NLW_blk00000003_P<14>_UNCONNECTED , sig000000f6, sig000000f5, sig000000f4, +sig000000f3, sig000000ff, sig000000fe, sig000000fd, sig000000fc, sig000000fb, sig000000fa, sig000000f9, sig000000f8, sig000000f7, sig000000f2}) ); MULT18X18S blk00000004 ( .C(clk), - .CE(sig00000002), - .R(sig00000001), + .CE(sig00000013), + .R(sig00000012), .A({a[23], a[23], a[23], a[23], a[23], a[23], a[23], a[23], a[23], a[23], a[23], a[23], a[22], a[21], a[20], a[19], a[18], a[17]}), - .B({sig00000001, b[16], b[15], b[14], b[13], b[12], b[11], b[10], b[9], b[8], b[7], b[6], b[5], b[4], b[3], b[2], b[1], b[0]}), + .B({sig00000012, b[16], b[15], b[14], b[13], b[12], b[11], b[10], b[9], b[8], b[7], b[6], b[5], b[4], b[3], b[2], b[1], b[0]}), .P({\NLW_blk00000004_P<35>_UNCONNECTED , \NLW_blk00000004_P<34>_UNCONNECTED , \NLW_blk00000004_P<33>_UNCONNECTED , \NLW_blk00000004_P<32>_UNCONNECTED , \NLW_blk00000004_P<31>_UNCONNECTED , \NLW_blk00000004_P<30>_UNCONNECTED , \NLW_blk00000004_P<29>_UNCONNECTED , \NLW_blk00000004_P<28>_UNCONNECTED , \NLW_blk00000004_P<27>_UNCONNECTED , \NLW_blk00000004_P<26>_UNCONNECTED , \NLW_blk00000004_P<25>_UNCONNECTED , -\NLW_blk00000004_P<24>_UNCONNECTED , sig000000d8, sig000000d7, sig000000d6, sig000000d5, sig000000d3, sig000000d2, sig000000d1, sig000000d0, -sig000000cf, sig000000ce, sig000000cd, sig000000cc, sig000000cb, sig000000ca, sig000000e0, sig000000df, sig000000de, sig000000dd, sig000000dc, -sig000000db, sig000000da, sig000000d9, sig000000d4, sig000000c9}) +\NLW_blk00000004_P<24>_UNCONNECTED , sig000000e9, sig000000e8, sig000000e7, sig000000e6, sig000000e4, sig000000e3, sig000000e2, sig000000e1, +sig000000e0, sig000000df, sig000000de, sig000000dd, sig000000dc, sig000000db, sig000000f1, sig000000f0, sig000000ef, sig000000ee, sig000000ed, +sig000000ec, sig000000eb, sig000000ea, sig000000e5, sig000000da}) ); MULT18X18S blk00000005 ( .C(clk), - .CE(sig00000002), - .R(sig00000001), - .A({sig00000001, a[16], a[15], a[14], a[13], a[12], a[11], a[10], a[9], a[8], a[7], a[6], a[5], a[4], a[3], a[2], a[1], a[0]}), + .CE(sig00000013), + .R(sig00000012), + .A({sig00000012, a[16], a[15], a[14], a[13], a[12], a[11], a[10], a[9], a[8], a[7], a[6], a[5], a[4], a[3], a[2], a[1], a[0]}), .B({b[23], b[23], b[23], b[23], b[23], b[23], b[23], b[23], b[23], b[23], b[23], b[23], b[22], b[21], b[20], b[19], b[18], b[17]}), .P({\NLW_blk00000005_P<35>_UNCONNECTED , \NLW_blk00000005_P<34>_UNCONNECTED , \NLW_blk00000005_P<33>_UNCONNECTED , \NLW_blk00000005_P<32>_UNCONNECTED , \NLW_blk00000005_P<31>_UNCONNECTED , \NLW_blk00000005_P<30>_UNCONNECTED , \NLW_blk00000005_P<29>_UNCONNECTED , \NLW_blk00000005_P<28>_UNCONNECTED , \NLW_blk00000005_P<27>_UNCONNECTED , \NLW_blk00000005_P<26>_UNCONNECTED , \NLW_blk00000005_P<25>_UNCONNECTED , -\NLW_blk00000005_P<24>_UNCONNECTED , sig000000c0, sig000000bf, sig000000be, sig000000bd, sig000000bb, sig000000ba, sig000000b9, sig000000b8, -sig000000b7, sig000000b6, sig000000b5, sig000000b4, sig000000b3, sig000000b2, sig000000c8, sig000000c7, sig000000c6, sig000000c5, sig000000c4, -sig000000c3, sig000000c2, sig000000c1, sig000000bc, sig000000b1}) +\NLW_blk00000005_P<24>_UNCONNECTED , sig000000d1, sig000000d0, sig000000cf, sig000000ce, sig000000cc, sig000000cb, sig000000ca, sig000000c9, +sig000000c8, sig000000c7, sig000000c6, sig000000c5, sig000000c4, sig000000c3, sig000000d9, sig000000d8, sig000000d7, sig000000d6, sig000000d5, +sig000000d4, sig000000d3, sig000000d2, sig000000cd, sig000000c2}) ); MULT18X18S blk00000006 ( .C(clk), - .CE(sig00000002), - .R(sig00000001), - .A({sig00000001, a[16], a[15], a[14], a[13], a[12], a[11], a[10], a[9], a[8], a[7], a[6], a[5], a[4], a[3], a[2], a[1], a[0]}), - .B({sig00000001, b[16], b[15], b[14], b[13], b[12], b[11], b[10], b[9], b[8], b[7], b[6], b[5], b[4], b[3], b[2], b[1], b[0]}), - .P({\NLW_blk00000006_P<35>_UNCONNECTED , sig000000a9, sig000000a8, sig000000a7, sig000000a6, sig000000a5, sig000000a3, sig000000a2, sig000000a1, -sig000000a0, sig0000009f, sig0000009e, sig0000009d, sig0000009c, sig0000009b, sig0000009a, sig00000098, sig00000097, sig00000096, sig00000095, -sig00000094, sig00000093, sig00000092, sig00000091, sig00000090, sig0000008f, sig000000b0, sig000000af, sig000000ae, sig000000ad, sig000000ac, -sig000000ab, sig000000aa, sig000000a4, sig00000099, sig0000008e}) + .CE(sig00000013), + .R(sig00000012), + .A({sig00000012, a[16], a[15], a[14], a[13], a[12], a[11], a[10], a[9], a[8], a[7], a[6], a[5], a[4], a[3], a[2], a[1], a[0]}), + .B({sig00000012, b[16], b[15], b[14], b[13], b[12], b[11], b[10], b[9], b[8], b[7], b[6], b[5], b[4], b[3], b[2], b[1], b[0]}), + .P({\NLW_blk00000006_P<35>_UNCONNECTED , sig000000ba, sig000000b9, sig000000b8, sig000000b7, sig000000b6, sig000000b4, sig000000b3, sig000000b2, +sig000000b1, sig000000b0, sig000000af, sig000000ae, sig000000ad, sig000000ac, sig000000ab, sig000000a9, sig000000a8, sig000000a7, sig000000a6, +sig000000a5, sig000000a4, sig000000a3, sig000000a2, sig000000a1, sig000000a0, sig000000c1, sig000000c0, sig000000bf, sig000000be, sig000000bd, +sig000000bc, sig000000bb, sig000000b5, sig000000aa, sig0000009f}) ); XORCY blk00000007 ( - .CI(sig00000065), - .LI(sig00000086), - .O(p[47]) + .CI(sig00000076), + .LI(sig00000097), + .O(sig0000018f) ); LUT2 #( .INIT ( 4'h6 )) blk00000008 ( - .I0(sig0000014e), - .I1(sig0000015b), - .O(sig00000086) + .I0(sig0000016c), + .I1(sig0000015f), + .O(sig00000097) ); MUXCY blk00000009 ( + .CI(sig00000075), + .DI(sig0000015f), + .S(sig00000096), + .O(sig00000076) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000000a ( + .I0(sig0000016c), + .I1(sig0000015f), + .O(sig00000096) + ); + MUXCY blk0000000b ( + .CI(sig00000073), + .DI(sig0000015f), + .S(sig00000095), + .O(sig00000075) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000000c ( + .I0(sig0000016c), + .I1(sig0000015f), + .O(sig00000095) + ); + XORCY blk0000000d ( + .CI(sig00000072), + .LI(sig00000093), + .O(sig0000018b) + ); + MUXCY blk0000000e ( + .CI(sig00000072), + .DI(sig0000015f), + .S(sig00000093), + .O(sig00000073) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000000f ( + .I0(sig0000016b), + .I1(sig0000015f), + .O(sig00000093) + ); + XORCY blk00000010 ( + .CI(sig00000071), + .LI(sig00000092), + .O(sig0000018a) + ); + MUXCY blk00000011 ( + .CI(sig00000071), + .DI(sig0000015f), + .S(sig00000092), + .O(sig00000072) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000012 ( + .I0(sig0000016a), + .I1(sig0000015f), + .O(sig00000092) + ); + XORCY blk00000013 ( + .CI(sig00000070), + .LI(sig00000091), + .O(sig00000189) + ); + MUXCY blk00000014 ( + .CI(sig00000070), + .DI(sig0000015f), + .S(sig00000091), + .O(sig00000071) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000015 ( + .I0(sig00000169), + .I1(sig0000015f), + .O(sig00000091) + ); + XORCY blk00000016 ( + .CI(sig0000006f), + .LI(sig00000090), + .O(sig00000188) + ); + MUXCY blk00000017 ( + .CI(sig0000006f), + .DI(sig0000015f), + .S(sig00000090), + .O(sig00000070) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000018 ( + .I0(sig00000175), + .I1(sig0000015f), + .O(sig00000090) + ); + XORCY blk00000019 ( + .CI(sig0000006e), + .LI(sig0000008f), + .O(sig00000187) + ); + MUXCY blk0000001a ( + .CI(sig0000006e), + .DI(sig0000015f), + .S(sig0000008f), + .O(sig0000006f) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000001b ( + .I0(sig00000174), + .I1(sig0000015f), + .O(sig0000008f) + ); + XORCY blk0000001c ( + .CI(sig0000006d), + .LI(sig0000008e), + .O(sig00000186) + ); + MUXCY blk0000001d ( + .CI(sig0000006d), + .DI(sig0000015f), + .S(sig0000008e), + .O(sig0000006e) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000001e ( + .I0(sig00000173), + .I1(sig0000015f), + .O(sig0000008e) + ); + XORCY blk0000001f ( + .CI(sig0000006c), + .LI(sig0000008d), + .O(sig00000185) + ); + MUXCY blk00000020 ( + .CI(sig0000006c), + .DI(sig0000015f), + .S(sig0000008d), + .O(sig0000006d) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000021 ( + .I0(sig00000172), + .I1(sig0000015f), + .O(sig0000008d) + ); + XORCY blk00000022 ( + .CI(sig0000006b), + .LI(sig0000008c), + .O(sig00000184) + ); + MUXCY blk00000023 ( + .CI(sig0000006b), + .DI(sig0000015e), + .S(sig0000008c), + .O(sig0000006c) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000024 ( + .I0(sig00000171), + .I1(sig0000015e), + .O(sig0000008c) + ); + XORCY blk00000025 ( + .CI(sig0000006a), + .LI(sig0000008b), + .O(sig00000183) + ); + MUXCY blk00000026 ( + .CI(sig0000006a), + .DI(sig0000015d), + .S(sig0000008b), + .O(sig0000006b) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000027 ( + .I0(sig00000170), + .I1(sig0000015d), + .O(sig0000008b) + ); + XORCY blk00000028 ( + .CI(sig00000068), + .LI(sig0000008a), + .O(sig00000182) + ); + MUXCY blk00000029 ( + .CI(sig00000068), + .DI(sig0000015c), + .S(sig0000008a), + .O(sig0000006a) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000002a ( + .I0(sig0000016f), + .I1(sig0000015c), + .O(sig0000008a) + ); + XORCY blk0000002b ( + .CI(sig00000067), + .LI(sig00000088), + .O(sig00000180) + ); + MUXCY blk0000002c ( + .CI(sig00000067), + .DI(sig0000015a), + .S(sig00000088), + .O(sig00000068) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000002d ( + .I0(sig0000016e), + .I1(sig0000015a), + .O(sig00000088) + ); + XORCY blk0000002e ( + .CI(sig00000066), + .LI(sig00000087), + .O(sig0000017f) + ); + MUXCY blk0000002f ( + .CI(sig00000066), + .DI(sig00000159), + .S(sig00000087), + .O(sig00000067) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000030 ( + .I0(sig0000016d), + .I1(sig00000159), + .O(sig00000087) + ); + XORCY blk00000031 ( + .CI(sig00000065), + .LI(sig00000086), + .O(sig0000017e) + ); + MUXCY blk00000032 ( + .CI(sig00000065), + .DI(sig00000158), + .S(sig00000086), + .O(sig00000066) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000033 ( + .I0(sig00000168), + .I1(sig00000158), + .O(sig00000086) + ); + XORCY blk00000034 ( .CI(sig00000064), - .DI(sig0000014e), + .LI(sig00000085), + .O(sig0000017d) + ); + MUXCY blk00000035 ( + .CI(sig00000064), + .DI(sig00000157), .S(sig00000085), .O(sig00000065) ); LUT2 #( .INIT ( 4'h6 )) - blk0000000a ( - .I0(sig0000014e), - .I1(sig0000015b), + blk00000036 ( + .I0(sig00000132), + .I1(sig00000157), .O(sig00000085) ); - MUXCY blk0000000b ( - .CI(sig00000062), - .DI(sig0000014e), + XORCY blk00000037 ( + .CI(sig00000063), + .LI(sig00000084), + .O(sig0000017c) + ); + MUXCY blk00000038 ( + .CI(sig00000063), + .DI(sig00000156), .S(sig00000084), .O(sig00000064) ); LUT2 #( .INIT ( 4'h6 )) - blk0000000c ( - .I0(sig0000014e), - .I1(sig0000015b), + blk00000039 ( + .I0(sig00000131), + .I1(sig00000156), .O(sig00000084) ); - XORCY blk0000000d ( - .CI(sig00000061), - .LI(sig00000082), - .O(p[46]) - ); - MUXCY blk0000000e ( - .CI(sig00000061), - .DI(sig0000014e), - .S(sig00000082), - .O(sig00000062) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk0000000f ( - .I0(sig0000014e), - .I1(sig0000015a), - .O(sig00000082) - ); - XORCY blk00000010 ( - .CI(sig00000060), - .LI(sig00000081), - .O(p[45]) - ); - MUXCY blk00000011 ( - .CI(sig00000060), - .DI(sig0000014e), - .S(sig00000081), - .O(sig00000061) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000012 ( - .I0(sig0000014e), - .I1(sig00000159), - .O(sig00000081) - ); - XORCY blk00000013 ( - .CI(sig0000005f), - .LI(sig00000080), - .O(p[44]) - ); - MUXCY blk00000014 ( - .CI(sig0000005f), - .DI(sig0000014e), - .S(sig00000080), - .O(sig00000060) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000015 ( - .I0(sig0000014e), - .I1(sig00000158), - .O(sig00000080) - ); - XORCY blk00000016 ( - .CI(sig0000005e), - .LI(sig0000007f), - .O(p[43]) - ); - MUXCY blk00000017 ( - .CI(sig0000005e), - .DI(sig0000014e), - .S(sig0000007f), - .O(sig0000005f) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000018 ( - .I0(sig0000014e), - .I1(sig00000164), - .O(sig0000007f) - ); - XORCY blk00000019 ( - .CI(sig0000005d), - .LI(sig0000007e), - .O(p[42]) - ); - MUXCY blk0000001a ( - .CI(sig0000005d), - .DI(sig0000014e), - .S(sig0000007e), - .O(sig0000005e) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk0000001b ( - .I0(sig0000014e), - .I1(sig00000163), - .O(sig0000007e) - ); - XORCY blk0000001c ( - .CI(sig0000005c), - .LI(sig0000007d), - .O(p[41]) - ); - MUXCY blk0000001d ( - .CI(sig0000005c), - .DI(sig0000014e), - .S(sig0000007d), - .O(sig0000005d) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk0000001e ( - .I0(sig0000014e), - .I1(sig00000162), - .O(sig0000007d) - ); - XORCY blk0000001f ( - .CI(sig0000005b), - .LI(sig0000007c), - .O(p[40]) - ); - MUXCY blk00000020 ( - .CI(sig0000005b), - .DI(sig0000014e), - .S(sig0000007c), - .O(sig0000005c) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000021 ( - .I0(sig0000014e), - .I1(sig00000161), - .O(sig0000007c) - ); - XORCY blk00000022 ( - .CI(sig0000005a), - .LI(sig0000007b), - .O(p[39]) - ); - MUXCY blk00000023 ( - .CI(sig0000005a), - .DI(sig0000014d), - .S(sig0000007b), - .O(sig0000005b) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000024 ( - .I0(sig0000014d), - .I1(sig00000160), - .O(sig0000007b) - ); - XORCY blk00000025 ( - .CI(sig00000059), - .LI(sig0000007a), - .O(p[38]) - ); - MUXCY blk00000026 ( - .CI(sig00000059), - .DI(sig0000014c), - .S(sig0000007a), - .O(sig0000005a) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000027 ( - .I0(sig0000014c), - .I1(sig0000015f), - .O(sig0000007a) - ); - XORCY blk00000028 ( - .CI(sig00000057), - .LI(sig00000079), - .O(p[37]) - ); - MUXCY blk00000029 ( - .CI(sig00000057), - .DI(sig0000014b), - .S(sig00000079), - .O(sig00000059) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk0000002a ( - .I0(sig0000014b), - .I1(sig0000015e), - .O(sig00000079) - ); - XORCY blk0000002b ( - .CI(sig00000056), - .LI(sig00000077), - .O(p[36]) - ); - MUXCY blk0000002c ( - .CI(sig00000056), - .DI(sig00000149), - .S(sig00000077), - .O(sig00000057) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk0000002d ( - .I0(sig00000149), - .I1(sig0000015d), - .O(sig00000077) - ); - XORCY blk0000002e ( - .CI(sig00000055), - .LI(sig00000076), - .O(p[35]) - ); - MUXCY blk0000002f ( - .CI(sig00000055), - .DI(sig00000148), - .S(sig00000076), - .O(sig00000056) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000030 ( - .I0(sig00000148), - .I1(sig0000015c), - .O(sig00000076) - ); - XORCY blk00000031 ( - .CI(sig00000054), - .LI(sig00000075), - .O(p[34]) - ); - MUXCY blk00000032 ( - .CI(sig00000054), - .DI(sig00000147), - .S(sig00000075), - .O(sig00000055) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000033 ( - .I0(sig00000147), - .I1(sig00000157), - .O(sig00000075) - ); - XORCY blk00000034 ( - .CI(sig00000053), - .LI(sig00000074), - .O(p[33]) - ); - MUXCY blk00000035 ( - .CI(sig00000053), - .DI(sig00000146), - .S(sig00000074), - .O(sig00000054) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000036 ( - .I0(sig00000146), - .I1(sig00000121), - .O(sig00000074) - ); - XORCY blk00000037 ( - .CI(sig00000052), - .LI(sig00000073), - .O(p[32]) - ); - MUXCY blk00000038 ( - .CI(sig00000052), - .DI(sig00000145), - .S(sig00000073), - .O(sig00000053) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000039 ( - .I0(sig00000145), - .I1(sig00000120), - .O(sig00000073) - ); XORCY blk0000003a ( - .CI(sig00000051), - .LI(sig00000072), - .O(p[31]) + .CI(sig00000062), + .LI(sig00000083), + .O(sig0000017b) ); MUXCY blk0000003b ( - .CI(sig00000051), - .DI(sig00000144), - .S(sig00000072), - .O(sig00000052) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk0000003c ( - .I0(sig00000144), - .I1(sig0000011f), - .O(sig00000072) - ); - XORCY blk0000003d ( - .CI(sig00000050), - .LI(sig00000071), - .O(p[30]) - ); - MUXCY blk0000003e ( - .CI(sig00000050), - .DI(sig00000143), - .S(sig00000071), - .O(sig00000051) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk0000003f ( - .I0(sig00000143), - .I1(sig0000011e), - .O(sig00000071) - ); - XORCY blk00000040 ( - .CI(sig0000004f), - .LI(sig00000070), - .O(p[29]) - ); - MUXCY blk00000041 ( - .CI(sig0000004f), - .DI(sig00000142), - .S(sig00000070), - .O(sig00000050) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000042 ( - .I0(sig00000142), - .I1(sig0000011d), - .O(sig00000070) - ); - XORCY blk00000043 ( - .CI(sig0000004e), - .LI(sig0000006f), - .O(p[28]) - ); - MUXCY blk00000044 ( - .CI(sig0000004e), - .DI(sig00000141), - .S(sig0000006f), - .O(sig0000004f) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000045 ( - .I0(sig00000141), - .I1(sig0000011c), - .O(sig0000006f) - ); - XORCY blk00000046 ( - .CI(sig0000006c), - .LI(sig0000006e), - .O(p[27]) - ); - MUXCY blk00000047 ( - .CI(sig0000006c), - .DI(sig00000140), - .S(sig0000006e), - .O(sig0000004e) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000048 ( - .I0(sig00000140), - .I1(sig0000011b), - .O(sig0000006e) - ); - XORCY blk00000049 ( - .CI(sig0000006b), - .LI(sig0000008d), - .O(p[26]) - ); - MUXCY blk0000004a ( - .CI(sig0000006b), - .DI(sig00000156), - .S(sig0000008d), - .O(sig0000006c) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk0000004b ( - .I0(sig00000156), - .I1(sig00000130), - .O(sig0000008d) - ); - XORCY blk0000004c ( - .CI(sig0000006a), - .LI(sig0000008c), - .O(p[25]) - ); - MUXCY blk0000004d ( - .CI(sig0000006a), + .CI(sig00000062), .DI(sig00000155), - .S(sig0000008c), - .O(sig0000006b) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk0000004e ( - .I0(sig00000155), - .I1(sig0000012f), - .O(sig0000008c) - ); - XORCY blk0000004f ( - .CI(sig00000069), - .LI(sig0000008b), - .O(p[24]) - ); - MUXCY blk00000050 ( - .CI(sig00000069), - .DI(sig00000154), - .S(sig0000008b), - .O(sig0000006a) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000051 ( - .I0(sig00000154), - .I1(sig0000012e), - .O(sig0000008b) - ); - XORCY blk00000052 ( - .CI(sig00000068), - .LI(sig0000008a), - .O(p[23]) - ); - MUXCY blk00000053 ( - .CI(sig00000068), - .DI(sig00000153), - .S(sig0000008a), - .O(sig00000069) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000054 ( - .I0(sig00000153), - .I1(sig0000012d), - .O(sig0000008a) - ); - XORCY blk00000055 ( - .CI(sig00000067), - .LI(sig00000089), - .O(p[22]) - ); - MUXCY blk00000056 ( - .CI(sig00000067), - .DI(sig00000152), - .S(sig00000089), - .O(sig00000068) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000057 ( - .I0(sig00000152), - .I1(sig0000012c), - .O(sig00000089) - ); - XORCY blk00000058 ( - .CI(sig00000066), - .LI(sig00000088), - .O(p[21]) - ); - MUXCY blk00000059 ( - .CI(sig00000066), - .DI(sig00000151), - .S(sig00000088), - .O(sig00000067) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk0000005a ( - .I0(sig00000151), - .I1(sig0000012b), - .O(sig00000088) - ); - XORCY blk0000005b ( - .CI(sig00000063), - .LI(sig00000087), - .O(p[20]) - ); - MUXCY blk0000005c ( - .CI(sig00000063), - .DI(sig00000150), - .S(sig00000087), - .O(sig00000066) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk0000005d ( - .I0(sig00000150), - .I1(sig0000012a), - .O(sig00000087) - ); - XORCY blk0000005e ( - .CI(sig00000058), - .LI(sig00000083), - .O(p[19]) - ); - MUXCY blk0000005f ( - .CI(sig00000058), - .DI(sig0000014f), .S(sig00000083), .O(sig00000063) ); LUT2 #( .INIT ( 4'h6 )) - blk00000060 ( - .I0(sig0000014f), - .I1(sig00000125), + blk0000003c ( + .I0(sig00000130), + .I1(sig00000155), .O(sig00000083) ); + XORCY blk0000003d ( + .CI(sig00000061), + .LI(sig00000082), + .O(sig0000017a) + ); + MUXCY blk0000003e ( + .CI(sig00000061), + .DI(sig00000154), + .S(sig00000082), + .O(sig00000062) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000003f ( + .I0(sig0000012f), + .I1(sig00000154), + .O(sig00000082) + ); + XORCY blk00000040 ( + .CI(sig00000060), + .LI(sig00000081), + .O(sig00000179) + ); + MUXCY blk00000041 ( + .CI(sig00000060), + .DI(sig00000153), + .S(sig00000081), + .O(sig00000061) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000042 ( + .I0(sig0000012e), + .I1(sig00000153), + .O(sig00000081) + ); + XORCY blk00000043 ( + .CI(sig0000005f), + .LI(sig00000080), + .O(sig00000178) + ); + MUXCY blk00000044 ( + .CI(sig0000005f), + .DI(sig00000152), + .S(sig00000080), + .O(sig00000060) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000045 ( + .I0(sig0000012d), + .I1(sig00000152), + .O(sig00000080) + ); + XORCY blk00000046 ( + .CI(sig0000007d), + .LI(sig0000007f), + .O(sig00000177) + ); + MUXCY blk00000047 ( + .CI(sig0000007d), + .DI(sig00000151), + .S(sig0000007f), + .O(sig0000005f) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000048 ( + .I0(sig0000012c), + .I1(sig00000151), + .O(sig0000007f) + ); + XORCY blk00000049 ( + .CI(sig0000007c), + .LI(sig0000009e), + .O(sig00000194) + ); + MUXCY blk0000004a ( + .CI(sig0000007c), + .DI(sig00000167), + .S(sig0000009e), + .O(sig0000007d) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000004b ( + .I0(sig00000141), + .I1(sig00000167), + .O(sig0000009e) + ); + XORCY blk0000004c ( + .CI(sig0000007b), + .LI(sig0000009d), + .O(sig00000193) + ); + MUXCY blk0000004d ( + .CI(sig0000007b), + .DI(sig00000166), + .S(sig0000009d), + .O(sig0000007c) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000004e ( + .I0(sig00000140), + .I1(sig00000166), + .O(sig0000009d) + ); + XORCY blk0000004f ( + .CI(sig0000007a), + .LI(sig0000009c), + .O(sig00000192) + ); + MUXCY blk00000050 ( + .CI(sig0000007a), + .DI(sig00000165), + .S(sig0000009c), + .O(sig0000007b) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000051 ( + .I0(sig0000013f), + .I1(sig00000165), + .O(sig0000009c) + ); + XORCY blk00000052 ( + .CI(sig00000079), + .LI(sig0000009b), + .O(sig00000191) + ); + MUXCY blk00000053 ( + .CI(sig00000079), + .DI(sig00000164), + .S(sig0000009b), + .O(sig0000007a) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000054 ( + .I0(sig0000013e), + .I1(sig00000164), + .O(sig0000009b) + ); + XORCY blk00000055 ( + .CI(sig00000078), + .LI(sig0000009a), + .O(sig00000190) + ); + MUXCY blk00000056 ( + .CI(sig00000078), + .DI(sig00000163), + .S(sig0000009a), + .O(sig00000079) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000057 ( + .I0(sig0000013d), + .I1(sig00000163), + .O(sig0000009a) + ); + XORCY blk00000058 ( + .CI(sig00000077), + .LI(sig00000099), + .O(sig0000018e) + ); + MUXCY blk00000059 ( + .CI(sig00000077), + .DI(sig00000162), + .S(sig00000099), + .O(sig00000078) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000005a ( + .I0(sig0000013c), + .I1(sig00000162), + .O(sig00000099) + ); + XORCY blk0000005b ( + .CI(sig00000074), + .LI(sig00000098), + .O(sig0000018d) + ); + MUXCY blk0000005c ( + .CI(sig00000074), + .DI(sig00000161), + .S(sig00000098), + .O(sig00000077) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000005d ( + .I0(sig0000013b), + .I1(sig00000161), + .O(sig00000098) + ); + XORCY blk0000005e ( + .CI(sig00000069), + .LI(sig00000094), + .O(sig0000018c) + ); + MUXCY blk0000005f ( + .CI(sig00000069), + .DI(sig00000160), + .S(sig00000094), + .O(sig00000074) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000060 ( + .I0(sig00000136), + .I1(sig00000160), + .O(sig00000094) + ); XORCY blk00000061 ( - .CI(sig0000004d), - .LI(sig00000078), - .O(p[18]) + .CI(sig0000005e), + .LI(sig00000089), + .O(sig00000181) ); MUXCY blk00000062 ( - .CI(sig0000004d), - .DI(sig0000014a), - .S(sig00000078), - .O(sig00000058) + .CI(sig0000005e), + .DI(sig0000015b), + .S(sig00000089), + .O(sig00000069) ); LUT2 #( .INIT ( 4'h6 )) blk00000063 ( - .I0(sig0000014a), - .I1(sig0000011a), - .O(sig00000078) + .I0(sig0000012b), + .I1(sig0000015b), + .O(sig00000089) ); XORCY blk00000064 ( - .CI(sig00000001), - .LI(sig0000006d), - .O(p[17]) + .CI(sig00000012), + .LI(sig0000007e), + .O(sig00000176) ); MUXCY blk00000065 ( - .CI(sig00000001), - .DI(sig0000013f), - .S(sig0000006d), - .O(sig0000004d) + .CI(sig00000012), + .DI(sig00000150), + .S(sig0000007e), + .O(sig0000005e) ); LUT2 #( .INIT ( 4'h6 )) blk00000066 ( - .I0(sig0000013f), - .I1(sig00000119), - .O(sig0000006d) + .I0(sig0000012a), + .I1(sig00000150), + .O(sig0000007e) ); XORCY blk00000067 ( - .CI(sig00000011), - .LI(sig00000029), - .O(sig0000014e) + .CI(sig00000022), + .LI(sig0000003a), + .O(sig0000015f) ); LUT2 #( .INIT ( 4'h6 )) blk00000068 ( - .I0(sig00000100), - .I1(sig00000111), - .O(sig00000029) + .I0(sig00000111), + .I1(sig00000122), + .O(sig0000003a) ); XORCY blk00000069 ( - .CI(sig00000010), - .LI(sig00000028), - .O(sig0000014d) + .CI(sig00000021), + .LI(sig00000039), + .O(sig0000015e) ); MUXCY blk0000006a ( - .CI(sig00000010), - .DI(sig00000100), - .S(sig00000028), - .O(sig00000011) + .CI(sig00000021), + .DI(sig00000111), + .S(sig00000039), + .O(sig00000022) ); LUT2 #( .INIT ( 4'h6 )) blk0000006b ( - .I0(sig00000100), - .I1(sig00000110), - .O(sig00000028) + .I0(sig00000121), + .I1(sig00000111), + .O(sig00000039) ); XORCY blk0000006c ( - .CI(sig0000000f), - .LI(sig00000027), - .O(sig0000014c) + .CI(sig00000020), + .LI(sig00000038), + .O(sig0000015d) ); MUXCY blk0000006d ( - .CI(sig0000000f), - .DI(sig00000100), - .S(sig00000027), - .O(sig00000010) + .CI(sig00000020), + .DI(sig00000111), + .S(sig00000038), + .O(sig00000021) ); LUT2 #( .INIT ( 4'h6 )) blk0000006e ( - .I0(sig00000100), - .I1(sig0000010f), - .O(sig00000027) + .I0(sig00000120), + .I1(sig00000111), + .O(sig00000038) ); XORCY blk0000006f ( - .CI(sig0000000d), - .LI(sig00000026), - .O(sig0000014b) + .CI(sig0000001e), + .LI(sig00000037), + .O(sig0000015c) ); MUXCY blk00000070 ( - .CI(sig0000000d), - .DI(sig00000100), - .S(sig00000026), - .O(sig0000000f) + .CI(sig0000001e), + .DI(sig00000111), + .S(sig00000037), + .O(sig00000020) ); LUT2 #( .INIT ( 4'h6 )) blk00000071 ( - .I0(sig00000100), - .I1(sig0000010e), - .O(sig00000026) + .I0(sig0000011f), + .I1(sig00000111), + .O(sig00000037) ); XORCY blk00000072 ( - .CI(sig0000000c), - .LI(sig00000024), - .O(sig00000149) + .CI(sig0000001d), + .LI(sig00000035), + .O(sig0000015a) ); MUXCY blk00000073 ( - .CI(sig0000000c), - .DI(sig00000100), - .S(sig00000024), - .O(sig0000000d) + .CI(sig0000001d), + .DI(sig00000111), + .S(sig00000035), + .O(sig0000001e) ); LUT2 #( .INIT ( 4'h6 )) blk00000074 ( - .I0(sig00000100), - .I1(sig0000010c), - .O(sig00000024) + .I0(sig0000011d), + .I1(sig00000111), + .O(sig00000035) ); XORCY blk00000075 ( - .CI(sig0000000b), - .LI(sig00000023), - .O(sig00000148) + .CI(sig0000001c), + .LI(sig00000034), + .O(sig00000159) ); MUXCY blk00000076 ( - .CI(sig0000000b), - .DI(sig00000100), - .S(sig00000023), - .O(sig0000000c) + .CI(sig0000001c), + .DI(sig00000111), + .S(sig00000034), + .O(sig0000001d) ); LUT2 #( .INIT ( 4'h6 )) blk00000077 ( - .I0(sig00000100), - .I1(sig0000010b), - .O(sig00000023) + .I0(sig0000011c), + .I1(sig00000111), + .O(sig00000034) ); XORCY blk00000078 ( - .CI(sig0000000a), - .LI(sig00000022), - .O(sig00000147) + .CI(sig0000001b), + .LI(sig00000033), + .O(sig00000158) ); MUXCY blk00000079 ( - .CI(sig0000000a), - .DI(sig00000100), - .S(sig00000022), - .O(sig0000000b) + .CI(sig0000001b), + .DI(sig00000111), + .S(sig00000033), + .O(sig0000001c) ); LUT2 #( .INIT ( 4'h6 )) blk0000007a ( - .I0(sig00000100), - .I1(sig0000010a), - .O(sig00000022) + .I0(sig0000011b), + .I1(sig00000111), + .O(sig00000033) ); XORCY blk0000007b ( - .CI(sig00000009), - .LI(sig00000021), - .O(sig00000146) + .CI(sig0000001a), + .LI(sig00000032), + .O(sig00000157) ); MUXCY blk0000007c ( - .CI(sig00000009), - .DI(sig000000ff), - .S(sig00000021), - .O(sig0000000a) + .CI(sig0000001a), + .DI(sig00000110), + .S(sig00000032), + .O(sig0000001b) ); LUT2 #( .INIT ( 4'h6 )) blk0000007d ( - .I0(sig000000ff), - .I1(sig00000109), - .O(sig00000021) + .I0(sig00000110), + .I1(sig0000011a), + .O(sig00000032) ); XORCY blk0000007e ( - .CI(sig00000008), - .LI(sig00000020), - .O(sig00000145) + .CI(sig00000019), + .LI(sig00000031), + .O(sig00000156) ); MUXCY blk0000007f ( - .CI(sig00000008), - .DI(sig000000fe), - .S(sig00000020), - .O(sig00000009) + .CI(sig00000019), + .DI(sig0000010f), + .S(sig00000031), + .O(sig0000001a) ); LUT2 #( .INIT ( 4'h6 )) blk00000080 ( - .I0(sig000000fe), - .I1(sig00000108), - .O(sig00000020) + .I0(sig0000010f), + .I1(sig00000119), + .O(sig00000031) ); XORCY blk00000081 ( - .CI(sig00000007), - .LI(sig0000001f), - .O(sig00000144) + .CI(sig00000018), + .LI(sig00000030), + .O(sig00000155) ); MUXCY blk00000082 ( - .CI(sig00000007), - .DI(sig000000fd), - .S(sig0000001f), - .O(sig00000008) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000083 ( - .I0(sig000000fd), - .I1(sig00000107), - .O(sig0000001f) - ); - XORCY blk00000084 ( - .CI(sig00000006), - .LI(sig0000001e), - .O(sig00000143) - ); - MUXCY blk00000085 ( - .CI(sig00000006), - .DI(sig000000fc), - .S(sig0000001e), - .O(sig00000007) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000086 ( - .I0(sig000000fc), - .I1(sig00000106), - .O(sig0000001e) - ); - XORCY blk00000087 ( - .CI(sig00000005), - .LI(sig0000001d), - .O(sig00000142) - ); - MUXCY blk00000088 ( - .CI(sig00000005), - .DI(sig000000fb), - .S(sig0000001d), - .O(sig00000006) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000089 ( - .I0(sig000000fb), - .I1(sig00000105), - .O(sig0000001d) - ); - XORCY blk0000008a ( - .CI(sig00000004), - .LI(sig0000001c), - .O(sig00000141) - ); - MUXCY blk0000008b ( - .CI(sig00000004), - .DI(sig000000fa), - .S(sig0000001c), - .O(sig00000005) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk0000008c ( - .I0(sig000000fa), - .I1(sig00000104), - .O(sig0000001c) - ); - XORCY blk0000008d ( - .CI(sig00000019), - .LI(sig0000001b), - .O(sig00000140) - ); - MUXCY blk0000008e ( - .CI(sig00000019), - .DI(sig000000f9), - .S(sig0000001b), - .O(sig00000004) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk0000008f ( - .I0(sig000000f9), - .I1(sig00000103), - .O(sig0000001b) - ); - XORCY blk00000090 ( .CI(sig00000018), - .LI(sig00000031), - .O(sig00000156) - ); - MUXCY blk00000091 ( - .CI(sig00000018), - .DI(sig000000f8), - .S(sig00000031), + .DI(sig0000010e), + .S(sig00000030), .O(sig00000019) ); LUT2 #( .INIT ( 4'h6 )) - blk00000092 ( - .I0(sig000000f8), + blk00000083 ( + .I0(sig0000010e), .I1(sig00000118), - .O(sig00000031) + .O(sig00000030) ); - XORCY blk00000093 ( + XORCY blk00000084 ( .CI(sig00000017), - .LI(sig00000030), - .O(sig00000155) + .LI(sig0000002f), + .O(sig00000154) ); - MUXCY blk00000094 ( + MUXCY blk00000085 ( .CI(sig00000017), - .DI(sig000000f7), - .S(sig00000030), + .DI(sig0000010d), + .S(sig0000002f), .O(sig00000018) ); LUT2 #( .INIT ( 4'h6 )) - blk00000095 ( - .I0(sig000000f7), + blk00000086 ( + .I0(sig0000010d), .I1(sig00000117), - .O(sig00000030) + .O(sig0000002f) ); - XORCY blk00000096 ( + XORCY blk00000087 ( .CI(sig00000016), - .LI(sig0000002f), - .O(sig00000154) + .LI(sig0000002e), + .O(sig00000153) ); - MUXCY blk00000097 ( + MUXCY blk00000088 ( .CI(sig00000016), - .DI(sig000000f6), - .S(sig0000002f), + .DI(sig0000010c), + .S(sig0000002e), .O(sig00000017) ); LUT2 #( .INIT ( 4'h6 )) - blk00000098 ( - .I0(sig000000f6), + blk00000089 ( + .I0(sig0000010c), .I1(sig00000116), - .O(sig0000002f) + .O(sig0000002e) ); - XORCY blk00000099 ( + XORCY blk0000008a ( .CI(sig00000015), - .LI(sig0000002e), - .O(sig00000153) + .LI(sig0000002d), + .O(sig00000152) ); - MUXCY blk0000009a ( + MUXCY blk0000008b ( .CI(sig00000015), - .DI(sig000000f5), - .S(sig0000002e), + .DI(sig0000010b), + .S(sig0000002d), .O(sig00000016) ); LUT2 #( .INIT ( 4'h6 )) - blk0000009b ( - .I0(sig000000f5), + blk0000008c ( + .I0(sig0000010b), .I1(sig00000115), - .O(sig0000002e) + .O(sig0000002d) ); - XORCY blk0000009c ( - .CI(sig00000014), - .LI(sig0000002d), - .O(sig00000152) + XORCY blk0000008d ( + .CI(sig0000002a), + .LI(sig0000002c), + .O(sig00000151) ); - MUXCY blk0000009d ( - .CI(sig00000014), - .DI(sig000000f4), - .S(sig0000002d), + MUXCY blk0000008e ( + .CI(sig0000002a), + .DI(sig0000010a), + .S(sig0000002c), .O(sig00000015) ); LUT2 #( .INIT ( 4'h6 )) - blk0000009e ( - .I0(sig000000f4), + blk0000008f ( + .I0(sig0000010a), .I1(sig00000114), - .O(sig0000002d) + .O(sig0000002c) + ); + XORCY blk00000090 ( + .CI(sig00000029), + .LI(sig00000042), + .O(sig00000167) + ); + MUXCY blk00000091 ( + .CI(sig00000029), + .DI(sig00000109), + .S(sig00000042), + .O(sig0000002a) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000092 ( + .I0(sig00000109), + .I1(sig00000129), + .O(sig00000042) + ); + XORCY blk00000093 ( + .CI(sig00000028), + .LI(sig00000041), + .O(sig00000166) + ); + MUXCY blk00000094 ( + .CI(sig00000028), + .DI(sig00000108), + .S(sig00000041), + .O(sig00000029) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000095 ( + .I0(sig00000108), + .I1(sig00000128), + .O(sig00000041) + ); + XORCY blk00000096 ( + .CI(sig00000027), + .LI(sig00000040), + .O(sig00000165) + ); + MUXCY blk00000097 ( + .CI(sig00000027), + .DI(sig00000107), + .S(sig00000040), + .O(sig00000028) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000098 ( + .I0(sig00000107), + .I1(sig00000127), + .O(sig00000040) + ); + XORCY blk00000099 ( + .CI(sig00000026), + .LI(sig0000003f), + .O(sig00000164) + ); + MUXCY blk0000009a ( + .CI(sig00000026), + .DI(sig00000106), + .S(sig0000003f), + .O(sig00000027) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000009b ( + .I0(sig00000106), + .I1(sig00000126), + .O(sig0000003f) + ); + XORCY blk0000009c ( + .CI(sig00000025), + .LI(sig0000003e), + .O(sig00000163) + ); + MUXCY blk0000009d ( + .CI(sig00000025), + .DI(sig00000105), + .S(sig0000003e), + .O(sig00000026) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000009e ( + .I0(sig00000105), + .I1(sig00000125), + .O(sig0000003e) ); XORCY blk0000009f ( - .CI(sig00000013), - .LI(sig0000002c), - .O(sig00000151) + .CI(sig00000024), + .LI(sig0000003d), + .O(sig00000162) ); MUXCY blk000000a0 ( - .CI(sig00000013), - .DI(sig000000f3), - .S(sig0000002c), - .O(sig00000014) + .CI(sig00000024), + .DI(sig00000104), + .S(sig0000003d), + .O(sig00000025) ); LUT2 #( .INIT ( 4'h6 )) blk000000a1 ( - .I0(sig000000f3), - .I1(sig00000113), - .O(sig0000002c) + .I0(sig00000104), + .I1(sig00000124), + .O(sig0000003d) ); XORCY blk000000a2 ( - .CI(sig00000012), - .LI(sig0000002b), - .O(sig00000150) + .CI(sig00000023), + .LI(sig0000003c), + .O(sig00000161) ); MUXCY blk000000a3 ( - .CI(sig00000012), - .DI(sig000000f2), - .S(sig0000002b), - .O(sig00000013) + .CI(sig00000023), + .DI(sig00000103), + .S(sig0000003c), + .O(sig00000024) ); LUT2 #( .INIT ( 4'h6 )) blk000000a4 ( - .I0(sig000000f2), - .I1(sig00000112), - .O(sig0000002b) + .I0(sig00000103), + .I1(sig00000123), + .O(sig0000003c) ); XORCY blk000000a5 ( - .CI(sig0000000e), - .LI(sig0000002a), - .O(sig0000014f) + .CI(sig0000001f), + .LI(sig0000003b), + .O(sig00000160) ); MUXCY blk000000a6 ( - .CI(sig0000000e), - .DI(sig000000f1), - .S(sig0000002a), - .O(sig00000012) + .CI(sig0000001f), + .DI(sig00000102), + .S(sig0000003b), + .O(sig00000023) ); LUT2 #( .INIT ( 4'h6 )) blk000000a7 ( - .I0(sig000000f1), - .I1(sig0000010d), - .O(sig0000002a) + .I0(sig00000102), + .I1(sig0000011e), + .O(sig0000003b) ); XORCY blk000000a8 ( - .CI(sig00000003), - .LI(sig00000025), - .O(sig0000014a) + .CI(sig00000014), + .LI(sig00000036), + .O(sig0000015b) ); MUXCY blk000000a9 ( - .CI(sig00000003), - .DI(sig000000f0), - .S(sig00000025), - .O(sig0000000e) + .CI(sig00000014), + .DI(sig00000101), + .S(sig00000036), + .O(sig0000001f) ); LUT2 #( .INIT ( 4'h6 )) blk000000aa ( - .I0(sig000000f0), - .I1(sig00000102), - .O(sig00000025) + .I0(sig00000101), + .I1(sig00000113), + .O(sig00000036) ); XORCY blk000000ab ( - .CI(sig00000001), - .LI(sig0000001a), - .O(sig0000013f) + .CI(sig00000012), + .LI(sig0000002b), + .O(sig00000150) ); MUXCY blk000000ac ( - .CI(sig00000001), - .DI(sig000000ef), - .S(sig0000001a), - .O(sig00000003) + .CI(sig00000012), + .DI(sig00000100), + .S(sig0000002b), + .O(sig00000014) ); LUT2 #( .INIT ( 4'h6 )) blk000000ad ( - .I0(sig000000ef), - .I1(sig00000101), - .O(sig0000001a) + .I0(sig00000100), + .I1(sig00000112), + .O(sig0000002b) ); XORCY blk000000ae ( - .CI(sig00000035), - .LI(sig00000043), - .O(sig0000015b) + .CI(sig00000046), + .LI(sig00000054), + .O(sig0000016c) ); LUT2 #( .INIT ( 4'h6 )) blk000000af ( - .I0(sig00000129), - .I1(sig00000136), - .O(sig00000043) + .I0(sig0000013a), + .I1(sig00000147), + .O(sig00000054) ); XORCY blk000000b0 ( - .CI(sig00000034), - .LI(sig00000042), - .O(sig0000015a) + .CI(sig00000045), + .LI(sig00000053), + .O(sig0000016b) ); MUXCY blk000000b1 ( - .CI(sig00000034), - .DI(sig00000129), - .S(sig00000042), - .O(sig00000035) + .CI(sig00000045), + .DI(sig0000013a), + .S(sig00000053), + .O(sig00000046) ); LUT2 #( .INIT ( 4'h6 )) blk000000b2 ( - .I0(sig00000129), - .I1(sig00000135), - .O(sig00000042) + .I0(sig00000146), + .I1(sig0000013a), + .O(sig00000053) ); XORCY blk000000b3 ( - .CI(sig00000033), - .LI(sig00000041), - .O(sig00000159) + .CI(sig00000044), + .LI(sig00000052), + .O(sig0000016a) ); MUXCY blk000000b4 ( - .CI(sig00000033), - .DI(sig00000129), - .S(sig00000041), - .O(sig00000034) + .CI(sig00000044), + .DI(sig0000013a), + .S(sig00000052), + .O(sig00000045) ); LUT2 #( .INIT ( 4'h6 )) blk000000b5 ( - .I0(sig00000129), - .I1(sig00000134), - .O(sig00000041) + .I0(sig00000145), + .I1(sig0000013a), + .O(sig00000052) ); XORCY blk000000b6 ( - .CI(sig0000003e), - .LI(sig00000040), - .O(sig00000158) + .CI(sig0000004f), + .LI(sig00000051), + .O(sig00000169) ); MUXCY blk000000b7 ( - .CI(sig0000003e), - .DI(sig00000129), - .S(sig00000040), - .O(sig00000033) + .CI(sig0000004f), + .DI(sig0000013a), + .S(sig00000051), + .O(sig00000044) ); LUT2 #( .INIT ( 4'h6 )) blk000000b8 ( - .I0(sig00000129), - .I1(sig00000133), - .O(sig00000040) + .I0(sig00000144), + .I1(sig0000013a), + .O(sig00000051) ); XORCY blk000000b9 ( - .CI(sig0000003d), - .LI(sig0000004c), - .O(sig00000164) + .CI(sig0000004e), + .LI(sig0000005d), + .O(sig00000175) ); MUXCY blk000000ba ( - .CI(sig0000003d), - .DI(sig00000129), - .S(sig0000004c), - .O(sig0000003e) + .CI(sig0000004e), + .DI(sig0000013a), + .S(sig0000005d), + .O(sig0000004f) ); LUT2 #( .INIT ( 4'h6 )) blk000000bb ( - .I0(sig00000129), - .I1(sig0000013e), - .O(sig0000004c) + .I0(sig0000014f), + .I1(sig0000013a), + .O(sig0000005d) ); XORCY blk000000bc ( - .CI(sig0000003c), - .LI(sig0000004b), - .O(sig00000163) + .CI(sig0000004d), + .LI(sig0000005c), + .O(sig00000174) ); MUXCY blk000000bd ( - .CI(sig0000003c), - .DI(sig00000129), - .S(sig0000004b), - .O(sig0000003d) + .CI(sig0000004d), + .DI(sig0000013a), + .S(sig0000005c), + .O(sig0000004e) ); LUT2 #( .INIT ( 4'h6 )) blk000000be ( - .I0(sig00000129), - .I1(sig0000013d), - .O(sig0000004b) + .I0(sig0000014e), + .I1(sig0000013a), + .O(sig0000005c) ); XORCY blk000000bf ( - .CI(sig0000003b), - .LI(sig0000004a), - .O(sig00000162) + .CI(sig0000004c), + .LI(sig0000005b), + .O(sig00000173) ); MUXCY blk000000c0 ( - .CI(sig0000003b), - .DI(sig00000129), - .S(sig0000004a), - .O(sig0000003c) + .CI(sig0000004c), + .DI(sig0000013a), + .S(sig0000005b), + .O(sig0000004d) ); LUT2 #( .INIT ( 4'h6 )) blk000000c1 ( - .I0(sig00000129), - .I1(sig0000013c), - .O(sig0000004a) + .I0(sig0000014d), + .I1(sig0000013a), + .O(sig0000005b) ); XORCY blk000000c2 ( - .CI(sig0000003a), - .LI(sig00000049), - .O(sig00000161) + .CI(sig0000004b), + .LI(sig0000005a), + .O(sig00000172) ); MUXCY blk000000c3 ( - .CI(sig0000003a), - .DI(sig00000129), - .S(sig00000049), - .O(sig0000003b) + .CI(sig0000004b), + .DI(sig0000013a), + .S(sig0000005a), + .O(sig0000004c) ); LUT2 #( .INIT ( 4'h6 )) blk000000c4 ( - .I0(sig00000129), - .I1(sig0000013b), - .O(sig00000049) + .I0(sig0000014c), + .I1(sig0000013a), + .O(sig0000005a) ); XORCY blk000000c5 ( - .CI(sig00000039), - .LI(sig00000048), - .O(sig00000160) + .CI(sig0000004a), + .LI(sig00000059), + .O(sig00000171) ); MUXCY blk000000c6 ( - .CI(sig00000039), - .DI(sig00000128), - .S(sig00000048), - .O(sig0000003a) + .CI(sig0000004a), + .DI(sig00000139), + .S(sig00000059), + .O(sig0000004b) ); LUT2 #( .INIT ( 4'h6 )) blk000000c7 ( - .I0(sig00000128), - .I1(sig0000013a), - .O(sig00000048) + .I0(sig00000139), + .I1(sig0000014b), + .O(sig00000059) ); XORCY blk000000c8 ( - .CI(sig00000038), - .LI(sig00000047), - .O(sig0000015f) + .CI(sig00000049), + .LI(sig00000058), + .O(sig00000170) ); MUXCY blk000000c9 ( - .CI(sig00000038), - .DI(sig00000127), - .S(sig00000047), - .O(sig00000039) + .CI(sig00000049), + .DI(sig00000138), + .S(sig00000058), + .O(sig0000004a) ); LUT2 #( .INIT ( 4'h6 )) blk000000ca ( - .I0(sig00000127), - .I1(sig00000139), - .O(sig00000047) + .I0(sig00000138), + .I1(sig0000014a), + .O(sig00000058) ); XORCY blk000000cb ( - .CI(sig00000037), - .LI(sig00000046), - .O(sig0000015e) + .CI(sig00000048), + .LI(sig00000057), + .O(sig0000016f) ); MUXCY blk000000cc ( - .CI(sig00000037), - .DI(sig00000126), - .S(sig00000046), - .O(sig00000038) + .CI(sig00000048), + .DI(sig00000137), + .S(sig00000057), + .O(sig00000049) ); LUT2 #( .INIT ( 4'h6 )) blk000000cd ( - .I0(sig00000126), - .I1(sig00000138), - .O(sig00000046) + .I0(sig00000137), + .I1(sig00000149), + .O(sig00000057) ); XORCY blk000000ce ( - .CI(sig00000036), - .LI(sig00000045), - .O(sig0000015d) + .CI(sig00000047), + .LI(sig00000056), + .O(sig0000016e) ); MUXCY blk000000cf ( - .CI(sig00000036), - .DI(sig00000124), - .S(sig00000045), - .O(sig00000037) + .CI(sig00000047), + .DI(sig00000135), + .S(sig00000056), + .O(sig00000048) ); LUT2 #( .INIT ( 4'h6 )) blk000000d0 ( - .I0(sig00000124), - .I1(sig00000137), - .O(sig00000045) + .I0(sig00000135), + .I1(sig00000148), + .O(sig00000056) ); XORCY blk000000d1 ( - .CI(sig00000032), - .LI(sig00000044), - .O(sig0000015c) + .CI(sig00000043), + .LI(sig00000055), + .O(sig0000016d) ); MUXCY blk000000d2 ( - .CI(sig00000032), - .DI(sig00000123), - .S(sig00000044), - .O(sig00000036) + .CI(sig00000043), + .DI(sig00000134), + .S(sig00000055), + .O(sig00000047) ); LUT2 #( .INIT ( 4'h6 )) blk000000d3 ( - .I0(sig00000123), - .I1(sig00000132), - .O(sig00000044) + .I0(sig00000134), + .I1(sig00000143), + .O(sig00000055) ); XORCY blk000000d4 ( - .CI(sig00000001), - .LI(sig0000003f), - .O(sig00000157) + .CI(sig00000012), + .LI(sig00000050), + .O(sig00000168) ); MUXCY blk000000d5 ( - .CI(sig00000001), - .DI(sig00000122), - .S(sig0000003f), - .O(sig00000032) + .CI(sig00000012), + .DI(sig00000133), + .S(sig00000050), + .O(sig00000043) ); LUT2 #( .INIT ( 4'h6 )) blk000000d6 ( - .I0(sig00000122), - .I1(sig00000131), - .O(sig0000003f) + .I0(sig00000133), + .I1(sig00000142), + .O(sig00000050) ); FD #( .INIT ( 1'b0 )) blk000000d7 ( .C(clk), - .D(sig000000d8), - .Q(sig00000129) + .D(sig0000018f), + .Q(p[47]) ); FD #( .INIT ( 1'b0 )) blk000000d8 ( .C(clk), - .D(sig000000d7), - .Q(sig00000128) + .D(sig0000018b), + .Q(p[46]) ); FD #( .INIT ( 1'b0 )) blk000000d9 ( .C(clk), - .D(sig000000d6), - .Q(sig00000127) + .D(sig0000018a), + .Q(p[45]) ); FD #( .INIT ( 1'b0 )) blk000000da ( .C(clk), - .D(sig000000d5), - .Q(sig00000126) + .D(sig00000189), + .Q(p[44]) ); FD #( .INIT ( 1'b0 )) blk000000db ( .C(clk), - .D(sig000000d3), - .Q(sig00000124) + .D(sig00000188), + .Q(p[43]) ); FD #( .INIT ( 1'b0 )) blk000000dc ( .C(clk), - .D(sig000000d2), - .Q(sig00000123) + .D(sig00000187), + .Q(p[42]) ); FD #( .INIT ( 1'b0 )) blk000000dd ( .C(clk), - .D(sig000000d1), - .Q(sig00000122) + .D(sig00000186), + .Q(p[41]) ); FD #( .INIT ( 1'b0 )) blk000000de ( .C(clk), - .D(sig000000d0), - .Q(sig00000121) + .D(sig00000185), + .Q(p[40]) ); FD #( .INIT ( 1'b0 )) blk000000df ( .C(clk), - .D(sig000000cf), - .Q(sig00000120) + .D(sig00000184), + .Q(p[39]) ); FD #( .INIT ( 1'b0 )) blk000000e0 ( .C(clk), - .D(sig000000ce), - .Q(sig0000011f) + .D(sig00000183), + .Q(p[38]) ); FD #( .INIT ( 1'b0 )) blk000000e1 ( .C(clk), - .D(sig000000cd), - .Q(sig0000011e) + .D(sig00000182), + .Q(p[37]) ); FD #( .INIT ( 1'b0 )) blk000000e2 ( .C(clk), - .D(sig000000cc), - .Q(sig0000011d) + .D(sig00000180), + .Q(p[36]) ); FD #( .INIT ( 1'b0 )) blk000000e3 ( .C(clk), - .D(sig000000cb), - .Q(sig0000011c) + .D(sig0000017f), + .Q(p[35]) ); FD #( .INIT ( 1'b0 )) blk000000e4 ( .C(clk), - .D(sig000000ca), - .Q(sig0000011b) + .D(sig0000017e), + .Q(p[34]) ); FD #( .INIT ( 1'b0 )) blk000000e5 ( .C(clk), - .D(sig000000e0), - .Q(sig00000130) + .D(sig0000017d), + .Q(p[33]) ); FD #( .INIT ( 1'b0 )) blk000000e6 ( .C(clk), - .D(sig000000df), - .Q(sig0000012f) + .D(sig0000017c), + .Q(p[32]) ); FD #( .INIT ( 1'b0 )) blk000000e7 ( .C(clk), - .D(sig000000de), - .Q(sig0000012e) + .D(sig0000017b), + .Q(p[31]) ); FD #( .INIT ( 1'b0 )) blk000000e8 ( .C(clk), - .D(sig000000dd), - .Q(sig0000012d) + .D(sig0000017a), + .Q(p[30]) ); FD #( .INIT ( 1'b0 )) blk000000e9 ( .C(clk), - .D(sig000000dc), - .Q(sig0000012c) + .D(sig00000179), + .Q(p[29]) ); FD #( .INIT ( 1'b0 )) blk000000ea ( .C(clk), - .D(sig000000db), - .Q(sig0000012b) + .D(sig00000178), + .Q(p[28]) ); FD #( .INIT ( 1'b0 )) blk000000eb ( .C(clk), - .D(sig000000da), - .Q(sig0000012a) + .D(sig00000177), + .Q(p[27]) ); FD #( .INIT ( 1'b0 )) blk000000ec ( .C(clk), - .D(sig000000d9), - .Q(sig00000125) + .D(sig00000194), + .Q(p[26]) ); FD #( .INIT ( 1'b0 )) blk000000ed ( .C(clk), - .D(sig000000d4), - .Q(sig0000011a) + .D(sig00000193), + .Q(p[25]) ); FD #( .INIT ( 1'b0 )) blk000000ee ( .C(clk), - .D(sig000000c9), - .Q(sig00000119) + .D(sig00000192), + .Q(p[24]) ); FD #( .INIT ( 1'b0 )) blk000000ef ( .C(clk), - .D(sig000000c0), - .Q(sig00000111) + .D(sig00000191), + .Q(p[23]) ); FD #( .INIT ( 1'b0 )) blk000000f0 ( .C(clk), - .D(sig000000bf), - .Q(sig00000110) + .D(sig00000190), + .Q(p[22]) ); FD #( .INIT ( 1'b0 )) blk000000f1 ( .C(clk), - .D(sig000000be), - .Q(sig0000010f) + .D(sig0000018e), + .Q(p[21]) ); FD #( .INIT ( 1'b0 )) blk000000f2 ( .C(clk), - .D(sig000000bd), - .Q(sig0000010e) + .D(sig0000018d), + .Q(p[20]) ); FD #( .INIT ( 1'b0 )) blk000000f3 ( .C(clk), - .D(sig000000bb), - .Q(sig0000010c) + .D(sig0000018c), + .Q(p[19]) ); FD #( .INIT ( 1'b0 )) blk000000f4 ( .C(clk), - .D(sig000000ba), - .Q(sig0000010b) + .D(sig00000181), + .Q(p[18]) ); FD #( .INIT ( 1'b0 )) blk000000f5 ( .C(clk), - .D(sig000000b9), - .Q(sig0000010a) + .D(sig00000176), + .Q(p[17]) ); FD #( .INIT ( 1'b0 )) blk000000f6 ( .C(clk), - .D(sig000000b8), - .Q(sig00000109) + .D(sig000000f6), + .Q(sig00000147) ); FD #( .INIT ( 1'b0 )) blk000000f7 ( .C(clk), - .D(sig000000b7), - .Q(sig00000108) + .D(sig000000f5), + .Q(sig00000146) ); FD #( .INIT ( 1'b0 )) blk000000f8 ( .C(clk), - .D(sig000000b6), - .Q(sig00000107) + .D(sig000000f4), + .Q(sig00000145) ); FD #( .INIT ( 1'b0 )) blk000000f9 ( .C(clk), - .D(sig000000b5), - .Q(sig00000106) + .D(sig000000f3), + .Q(sig00000144) ); FD #( .INIT ( 1'b0 )) blk000000fa ( .C(clk), - .D(sig000000b4), - .Q(sig00000105) + .D(sig000000ff), + .Q(sig0000014f) ); FD #( .INIT ( 1'b0 )) blk000000fb ( .C(clk), - .D(sig000000b3), - .Q(sig00000104) + .D(sig000000fe), + .Q(sig0000014e) ); FD #( .INIT ( 1'b0 )) blk000000fc ( .C(clk), - .D(sig000000b2), - .Q(sig00000103) + .D(sig000000fd), + .Q(sig0000014d) ); FD #( .INIT ( 1'b0 )) blk000000fd ( .C(clk), - .D(sig000000c8), - .Q(sig00000118) + .D(sig000000fc), + .Q(sig0000014c) ); FD #( .INIT ( 1'b0 )) blk000000fe ( .C(clk), - .D(sig000000c7), - .Q(sig00000117) + .D(sig000000fb), + .Q(sig0000014b) ); FD #( .INIT ( 1'b0 )) blk000000ff ( .C(clk), - .D(sig000000c6), - .Q(sig00000116) + .D(sig000000fa), + .Q(sig0000014a) ); FD #( .INIT ( 1'b0 )) blk00000100 ( .C(clk), - .D(sig000000c5), - .Q(sig00000115) + .D(sig000000f9), + .Q(sig00000149) ); FD #( .INIT ( 1'b0 )) blk00000101 ( .C(clk), - .D(sig000000c4), - .Q(sig00000114) + .D(sig000000f8), + .Q(sig00000148) ); FD #( .INIT ( 1'b0 )) blk00000102 ( .C(clk), - .D(sig000000c3), - .Q(sig00000113) + .D(sig000000f7), + .Q(sig00000143) ); FD #( .INIT ( 1'b0 )) blk00000103 ( .C(clk), - .D(sig000000c2), - .Q(sig00000112) + .D(sig000000f2), + .Q(sig00000142) ); FD #( .INIT ( 1'b0 )) blk00000104 ( .C(clk), - .D(sig000000c1), - .Q(sig0000010d) + .D(sig000000e9), + .Q(sig0000013a) ); FD #( .INIT ( 1'b0 )) blk00000105 ( .C(clk), - .D(sig000000bc), - .Q(sig00000102) + .D(sig000000e8), + .Q(sig00000139) ); FD #( .INIT ( 1'b0 )) blk00000106 ( .C(clk), - .D(sig000000b1), - .Q(sig00000101) + .D(sig000000e7), + .Q(sig00000138) ); FD #( .INIT ( 1'b0 )) blk00000107 ( .C(clk), - .D(sig000000e5), - .Q(sig00000136) + .D(sig000000e6), + .Q(sig00000137) ); FD #( .INIT ( 1'b0 )) @@ -2120,316 +2168,720 @@ sig000000ab, sig000000aa, sig000000a4, sig00000099, sig0000008e}) FD #( .INIT ( 1'b0 )) blk0000010b ( + .C(clk), + .D(sig000000e1), + .Q(sig00000132) + ); + FD #( + .INIT ( 1'b0 )) + blk0000010c ( + .C(clk), + .D(sig000000e0), + .Q(sig00000131) + ); + FD #( + .INIT ( 1'b0 )) + blk0000010d ( + .C(clk), + .D(sig000000df), + .Q(sig00000130) + ); + FD #( + .INIT ( 1'b0 )) + blk0000010e ( + .C(clk), + .D(sig000000de), + .Q(sig0000012f) + ); + FD #( + .INIT ( 1'b0 )) + blk0000010f ( + .C(clk), + .D(sig000000dd), + .Q(sig0000012e) + ); + FD #( + .INIT ( 1'b0 )) + blk00000110 ( + .C(clk), + .D(sig000000dc), + .Q(sig0000012d) + ); + FD #( + .INIT ( 1'b0 )) + blk00000111 ( + .C(clk), + .D(sig000000db), + .Q(sig0000012c) + ); + FD #( + .INIT ( 1'b0 )) + blk00000112 ( + .C(clk), + .D(sig000000f1), + .Q(sig00000141) + ); + FD #( + .INIT ( 1'b0 )) + blk00000113 ( + .C(clk), + .D(sig000000f0), + .Q(sig00000140) + ); + FD #( + .INIT ( 1'b0 )) + blk00000114 ( + .C(clk), + .D(sig000000ef), + .Q(sig0000013f) + ); + FD #( + .INIT ( 1'b0 )) + blk00000115 ( .C(clk), .D(sig000000ee), .Q(sig0000013e) ); FD #( .INIT ( 1'b0 )) - blk0000010c ( + blk00000116 ( .C(clk), .D(sig000000ed), .Q(sig0000013d) ); FD #( .INIT ( 1'b0 )) - blk0000010d ( + blk00000117 ( .C(clk), .D(sig000000ec), .Q(sig0000013c) ); FD #( .INIT ( 1'b0 )) - blk0000010e ( + blk00000118 ( .C(clk), .D(sig000000eb), .Q(sig0000013b) ); - FD #( - .INIT ( 1'b0 )) - blk0000010f ( - .C(clk), - .D(sig000000ea), - .Q(sig0000013a) - ); - FD #( - .INIT ( 1'b0 )) - blk00000110 ( - .C(clk), - .D(sig000000e9), - .Q(sig00000139) - ); - FD #( - .INIT ( 1'b0 )) - blk00000111 ( - .C(clk), - .D(sig000000e8), - .Q(sig00000138) - ); - FD #( - .INIT ( 1'b0 )) - blk00000112 ( - .C(clk), - .D(sig000000e7), - .Q(sig00000137) - ); - FD #( - .INIT ( 1'b0 )) - blk00000113 ( - .C(clk), - .D(sig000000e6), - .Q(sig00000132) - ); - FD #( - .INIT ( 1'b0 )) - blk00000114 ( - .C(clk), - .D(sig000000e1), - .Q(sig00000131) - ); - FD #( - .INIT ( 1'b0 )) - blk00000115 ( - .C(clk), - .D(sig000000a9), - .Q(sig00000100) - ); - FD #( - .INIT ( 1'b0 )) - blk00000116 ( - .C(clk), - .D(sig000000a8), - .Q(sig000000ff) - ); - FD #( - .INIT ( 1'b0 )) - blk00000117 ( - .C(clk), - .D(sig000000a7), - .Q(sig000000fe) - ); - FD #( - .INIT ( 1'b0 )) - blk00000118 ( - .C(clk), - .D(sig000000a6), - .Q(sig000000fd) - ); FD #( .INIT ( 1'b0 )) blk00000119 ( .C(clk), - .D(sig000000a5), - .Q(sig000000fc) + .D(sig000000ea), + .Q(sig00000136) ); FD #( .INIT ( 1'b0 )) blk0000011a ( .C(clk), - .D(sig000000a3), - .Q(sig000000fb) + .D(sig000000e5), + .Q(sig0000012b) ); FD #( .INIT ( 1'b0 )) blk0000011b ( .C(clk), - .D(sig000000a2), - .Q(sig000000fa) + .D(sig000000da), + .Q(sig0000012a) ); FD #( .INIT ( 1'b0 )) blk0000011c ( .C(clk), - .D(sig000000a1), - .Q(sig000000f9) + .D(sig000000d1), + .Q(sig00000122) ); FD #( .INIT ( 1'b0 )) blk0000011d ( .C(clk), - .D(sig000000a0), - .Q(sig000000f8) + .D(sig000000d0), + .Q(sig00000121) ); FD #( .INIT ( 1'b0 )) blk0000011e ( .C(clk), - .D(sig0000009f), - .Q(sig000000f7) + .D(sig000000cf), + .Q(sig00000120) ); FD #( .INIT ( 1'b0 )) blk0000011f ( .C(clk), - .D(sig0000009e), - .Q(sig000000f6) + .D(sig000000ce), + .Q(sig0000011f) ); FD #( .INIT ( 1'b0 )) blk00000120 ( .C(clk), - .D(sig0000009d), - .Q(sig000000f5) + .D(sig000000cc), + .Q(sig0000011d) ); FD #( .INIT ( 1'b0 )) blk00000121 ( .C(clk), - .D(sig0000009c), - .Q(sig000000f4) + .D(sig000000cb), + .Q(sig0000011c) ); FD #( .INIT ( 1'b0 )) blk00000122 ( .C(clk), - .D(sig0000009b), - .Q(sig000000f3) + .D(sig000000ca), + .Q(sig0000011b) ); FD #( .INIT ( 1'b0 )) blk00000123 ( .C(clk), - .D(sig0000009a), - .Q(sig000000f2) + .D(sig000000c9), + .Q(sig0000011a) ); FD #( .INIT ( 1'b0 )) blk00000124 ( .C(clk), - .D(sig00000098), - .Q(sig000000f1) + .D(sig000000c8), + .Q(sig00000119) ); FD #( .INIT ( 1'b0 )) blk00000125 ( .C(clk), - .D(sig00000097), - .Q(sig000000f0) + .D(sig000000c7), + .Q(sig00000118) ); FD #( .INIT ( 1'b0 )) blk00000126 ( .C(clk), - .D(sig00000096), - .Q(sig000000ef) + .D(sig000000c6), + .Q(sig00000117) ); FD #( .INIT ( 1'b0 )) blk00000127 ( .C(clk), - .D(sig00000095), - .Q(p[16]) + .D(sig000000c5), + .Q(sig00000116) ); FD #( .INIT ( 1'b0 )) blk00000128 ( .C(clk), - .D(sig00000094), - .Q(p[15]) + .D(sig000000c4), + .Q(sig00000115) ); FD #( .INIT ( 1'b0 )) blk00000129 ( .C(clk), - .D(sig00000093), - .Q(p[14]) + .D(sig000000c3), + .Q(sig00000114) ); FD #( .INIT ( 1'b0 )) blk0000012a ( .C(clk), - .D(sig00000092), - .Q(p[13]) + .D(sig000000d9), + .Q(sig00000129) ); FD #( .INIT ( 1'b0 )) blk0000012b ( .C(clk), - .D(sig00000091), - .Q(p[12]) + .D(sig000000d8), + .Q(sig00000128) ); FD #( .INIT ( 1'b0 )) blk0000012c ( .C(clk), - .D(sig00000090), - .Q(p[11]) + .D(sig000000d7), + .Q(sig00000127) ); FD #( .INIT ( 1'b0 )) blk0000012d ( .C(clk), - .D(sig0000008f), - .Q(p[10]) + .D(sig000000d6), + .Q(sig00000126) ); FD #( .INIT ( 1'b0 )) blk0000012e ( .C(clk), - .D(sig000000b0), - .Q(p[9]) + .D(sig000000d5), + .Q(sig00000125) ); FD #( .INIT ( 1'b0 )) blk0000012f ( .C(clk), - .D(sig000000af), - .Q(p[8]) + .D(sig000000d4), + .Q(sig00000124) ); FD #( .INIT ( 1'b0 )) blk00000130 ( .C(clk), - .D(sig000000ae), - .Q(p[7]) + .D(sig000000d3), + .Q(sig00000123) ); FD #( .INIT ( 1'b0 )) blk00000131 ( .C(clk), - .D(sig000000ad), - .Q(p[6]) + .D(sig000000d2), + .Q(sig0000011e) ); FD #( .INIT ( 1'b0 )) blk00000132 ( .C(clk), - .D(sig000000ac), - .Q(p[5]) + .D(sig000000cd), + .Q(sig00000113) ); FD #( .INIT ( 1'b0 )) blk00000133 ( .C(clk), - .D(sig000000ab), - .Q(p[4]) + .D(sig000000c2), + .Q(sig00000112) ); FD #( .INIT ( 1'b0 )) blk00000134 ( .C(clk), - .D(sig000000aa), - .Q(p[3]) + .D(sig000000ba), + .Q(sig00000111) ); FD #( .INIT ( 1'b0 )) blk00000135 ( .C(clk), - .D(sig000000a4), - .Q(p[2]) + .D(sig000000b9), + .Q(sig00000110) ); FD #( .INIT ( 1'b0 )) blk00000136 ( .C(clk), - .D(sig00000099), - .Q(p[1]) + .D(sig000000b8), + .Q(sig0000010f) ); FD #( .INIT ( 1'b0 )) blk00000137 ( .C(clk), - .D(sig0000008e), + .D(sig000000b7), + .Q(sig0000010e) + ); + FD #( + .INIT ( 1'b0 )) + blk00000138 ( + .C(clk), + .D(sig000000b6), + .Q(sig0000010d) + ); + FD #( + .INIT ( 1'b0 )) + blk00000139 ( + .C(clk), + .D(sig000000b4), + .Q(sig0000010c) + ); + FD #( + .INIT ( 1'b0 )) + blk0000013a ( + .C(clk), + .D(sig000000b3), + .Q(sig0000010b) + ); + FD #( + .INIT ( 1'b0 )) + blk0000013b ( + .C(clk), + .D(sig000000b2), + .Q(sig0000010a) + ); + FD #( + .INIT ( 1'b0 )) + blk0000013c ( + .C(clk), + .D(sig000000b1), + .Q(sig00000109) + ); + FD #( + .INIT ( 1'b0 )) + blk0000013d ( + .C(clk), + .D(sig000000b0), + .Q(sig00000108) + ); + FD #( + .INIT ( 1'b0 )) + blk0000013e ( + .C(clk), + .D(sig000000af), + .Q(sig00000107) + ); + FD #( + .INIT ( 1'b0 )) + blk0000013f ( + .C(clk), + .D(sig000000ae), + .Q(sig00000106) + ); + FD #( + .INIT ( 1'b0 )) + blk00000140 ( + .C(clk), + .D(sig000000ad), + .Q(sig00000105) + ); + FD #( + .INIT ( 1'b0 )) + blk00000141 ( + .C(clk), + .D(sig000000ac), + .Q(sig00000104) + ); + FD #( + .INIT ( 1'b0 )) + blk00000142 ( + .C(clk), + .D(sig000000ab), + .Q(sig00000103) + ); + FD #( + .INIT ( 1'b0 )) + blk00000143 ( + .C(clk), + .D(sig000000a9), + .Q(sig00000102) + ); + FD #( + .INIT ( 1'b0 )) + blk00000144 ( + .C(clk), + .D(sig000000a8), + .Q(sig00000101) + ); + FD #( + .INIT ( 1'b0 )) + blk00000145 ( + .C(clk), + .D(sig000000a7), + .Q(sig00000100) + ); + SRL16 #( + .INIT ( 16'h0000 )) + blk00000146 ( + .A0(sig00000012), + .A1(sig00000012), + .A2(sig00000012), + .A3(sig00000012), + .CLK(clk), + .D(sig000000a4), + .Q(sig00000007) + ); + FD #( + .INIT ( 1'b0 )) + blk00000147 ( + .C(clk), + .D(sig00000007), + .Q(p[14]) + ); + SRL16 #( + .INIT ( 16'h0000 )) + blk00000148 ( + .A0(sig00000012), + .A1(sig00000012), + .A2(sig00000012), + .A3(sig00000012), + .CLK(clk), + .D(sig000000a6), + .Q(sig00000009) + ); + FD #( + .INIT ( 1'b0 )) + blk00000149 ( + .C(clk), + .D(sig00000009), + .Q(p[16]) + ); + SRL16 #( + .INIT ( 16'h0000 )) + blk0000014a ( + .A0(sig00000012), + .A1(sig00000012), + .A2(sig00000012), + .A3(sig00000012), + .CLK(clk), + .D(sig000000a5), + .Q(sig00000008) + ); + FD #( + .INIT ( 1'b0 )) + blk0000014b ( + .C(clk), + .D(sig00000008), + .Q(p[15]) + ); + SRL16 #( + .INIT ( 16'h0000 )) + blk0000014c ( + .A0(sig00000012), + .A1(sig00000012), + .A2(sig00000012), + .A3(sig00000012), + .CLK(clk), + .D(sig000000a3), + .Q(sig00000006) + ); + FD #( + .INIT ( 1'b0 )) + blk0000014d ( + .C(clk), + .D(sig00000006), + .Q(p[13]) + ); + SRL16 #( + .INIT ( 16'h0000 )) + blk0000014e ( + .A0(sig00000012), + .A1(sig00000012), + .A2(sig00000012), + .A3(sig00000012), + .CLK(clk), + .D(sig000000a2), + .Q(sig00000005) + ); + FD #( + .INIT ( 1'b0 )) + blk0000014f ( + .C(clk), + .D(sig00000005), + .Q(p[12]) + ); + SRL16 #( + .INIT ( 16'h0000 )) + blk00000150 ( + .A0(sig00000012), + .A1(sig00000012), + .A2(sig00000012), + .A3(sig00000012), + .CLK(clk), + .D(sig000000a1), + .Q(sig00000004) + ); + FD #( + .INIT ( 1'b0 )) + blk00000151 ( + .C(clk), + .D(sig00000004), + .Q(p[11]) + ); + SRL16 #( + .INIT ( 16'h0000 )) + blk00000152 ( + .A0(sig00000012), + .A1(sig00000012), + .A2(sig00000012), + .A3(sig00000012), + .CLK(clk), + .D(sig000000a0), + .Q(sig00000003) + ); + FD #( + .INIT ( 1'b0 )) + blk00000153 ( + .C(clk), + .D(sig00000003), + .Q(p[10]) + ); + SRL16 #( + .INIT ( 16'h0000 )) + blk00000154 ( + .A0(sig00000012), + .A1(sig00000012), + .A2(sig00000012), + .A3(sig00000012), + .CLK(clk), + .D(sig000000c1), + .Q(sig00000011) + ); + FD #( + .INIT ( 1'b0 )) + blk00000155 ( + .C(clk), + .D(sig00000011), + .Q(p[9]) + ); + SRL16 #( + .INIT ( 16'h0000 )) + blk00000156 ( + .A0(sig00000012), + .A1(sig00000012), + .A2(sig00000012), + .A3(sig00000012), + .CLK(clk), + .D(sig000000c0), + .Q(sig00000010) + ); + FD #( + .INIT ( 1'b0 )) + blk00000157 ( + .C(clk), + .D(sig00000010), + .Q(p[8]) + ); + SRL16 #( + .INIT ( 16'h0000 )) + blk00000158 ( + .A0(sig00000012), + .A1(sig00000012), + .A2(sig00000012), + .A3(sig00000012), + .CLK(clk), + .D(sig000000bf), + .Q(sig0000000f) + ); + FD #( + .INIT ( 1'b0 )) + blk00000159 ( + .C(clk), + .D(sig0000000f), + .Q(p[7]) + ); + SRL16 #( + .INIT ( 16'h0000 )) + blk0000015a ( + .A0(sig00000012), + .A1(sig00000012), + .A2(sig00000012), + .A3(sig00000012), + .CLK(clk), + .D(sig000000be), + .Q(sig0000000e) + ); + FD #( + .INIT ( 1'b0 )) + blk0000015b ( + .C(clk), + .D(sig0000000e), + .Q(p[6]) + ); + SRL16 #( + .INIT ( 16'h0000 )) + blk0000015c ( + .A0(sig00000012), + .A1(sig00000012), + .A2(sig00000012), + .A3(sig00000012), + .CLK(clk), + .D(sig000000bd), + .Q(sig0000000d) + ); + FD #( + .INIT ( 1'b0 )) + blk0000015d ( + .C(clk), + .D(sig0000000d), + .Q(p[5]) + ); + SRL16 #( + .INIT ( 16'h0000 )) + blk0000015e ( + .A0(sig00000012), + .A1(sig00000012), + .A2(sig00000012), + .A3(sig00000012), + .CLK(clk), + .D(sig000000bc), + .Q(sig0000000c) + ); + FD #( + .INIT ( 1'b0 )) + blk0000015f ( + .C(clk), + .D(sig0000000c), + .Q(p[4]) + ); + SRL16 #( + .INIT ( 16'h0000 )) + blk00000160 ( + .A0(sig00000012), + .A1(sig00000012), + .A2(sig00000012), + .A3(sig00000012), + .CLK(clk), + .D(sig000000bb), + .Q(sig0000000b) + ); + FD #( + .INIT ( 1'b0 )) + blk00000161 ( + .C(clk), + .D(sig0000000b), + .Q(p[3]) + ); + SRL16 #( + .INIT ( 16'h0000 )) + blk00000162 ( + .A0(sig00000012), + .A1(sig00000012), + .A2(sig00000012), + .A3(sig00000012), + .CLK(clk), + .D(sig000000b5), + .Q(sig0000000a) + ); + FD #( + .INIT ( 1'b0 )) + blk00000163 ( + .C(clk), + .D(sig0000000a), + .Q(p[2]) + ); + SRL16 #( + .INIT ( 16'h0000 )) + blk00000164 ( + .A0(sig00000012), + .A1(sig00000012), + .A2(sig00000012), + .A3(sig00000012), + .CLK(clk), + .D(sig000000aa), + .Q(sig00000002) + ); + FD #( + .INIT ( 1'b0 )) + blk00000165 ( + .C(clk), + .D(sig00000002), + .Q(p[1]) + ); + SRL16 #( + .INIT ( 16'h0000 )) + blk00000166 ( + .A0(sig00000012), + .A1(sig00000012), + .A2(sig00000012), + .A3(sig00000012), + .CLK(clk), + .D(sig0000009f), + .Q(sig00000001) + ); + FD #( + .INIT ( 1'b0 )) + blk00000167 ( + .C(clk), + .D(sig00000001), .Q(p[0]) ); diff --git a/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.xco b/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.xco index 89401df..2273be6 100644 --- a/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.xco +++ b/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.xco @@ -1,7 +1,7 @@ ############################################################## # # Xilinx Core Generator version 13.2 -# Date: Fri Oct 21 20:38:07 2011 +# Date: Mon Oct 24 22:04:01 2011 # ############################################################## # @@ -49,7 +49,7 @@ CSET multtype=Parallel_Multiplier CSET optgoal=Speed CSET outputwidthhigh=47 CSET outputwidthlow=0 -CSET pipestages=2 +CSET pipestages=3 CSET portatype=Signed CSET portawidth=24 CSET portbtype=Signed @@ -65,4 +65,4 @@ CSET zerodetect=false MISC pkg_timestamp=2011-06-21T06:26:54.000Z # END Extra information GENERATE -# CRC: efe4d30e +# CRC: fd22ef14 diff --git a/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.xise b/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.xise index 12daee6..1efcbc5 100644 --- a/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.xise +++ b/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.xise @@ -29,335 +29,29 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + + diff --git a/verilog/sd2snes_cx4/ipcore_dir/cx4_pgmrom.v b/verilog/sd2snes_cx4/ipcore_dir/cx4_pgmrom.v index 88379dd..fb18653 100644 --- a/verilog/sd2snes_cx4/ipcore_dir/cx4_pgmrom.v +++ b/verilog/sd2snes_cx4/ipcore_dir/cx4_pgmrom.v @@ -83,11 +83,11 @@ output [15 : 0] doutb; .C_HAS_RSTB(0), .C_HAS_SOFTECC_INPUT_REGS_A(0), .C_HAS_SOFTECC_OUTPUT_REGS_B(0), - .C_INIT_FILE_NAME("no_coe_file_loaded"), + .C_INIT_FILE_NAME("cx4_pgmrom.mif"), .C_INITA_VAL("0"), .C_INITB_VAL("0"), .C_INTERFACE_TYPE(0), - .C_LOAD_INIT_FILE(0), + .C_LOAD_INIT_FILE(1), .C_MEM_TYPE(1), .C_MUX_PIPELINE_STAGES(0), .C_PRIM_TYPE(1), diff --git a/verilog/sd2snes_cx4/ipcore_dir/cx4_pgmrom.xco b/verilog/sd2snes_cx4/ipcore_dir/cx4_pgmrom.xco index 59cb743..3e5d771 100644 --- a/verilog/sd2snes_cx4/ipcore_dir/cx4_pgmrom.xco +++ b/verilog/sd2snes_cx4/ipcore_dir/cx4_pgmrom.xco @@ -1,7 +1,7 @@ ############################################################## # # Xilinx Core Generator version 13.2 -# Date: Tue Oct 18 18:45:53 2011 +# Date: Sun Oct 23 22:07:47 2011 # ############################################################## # @@ -46,7 +46,7 @@ CSET axi_id_width=4 CSET axi_slave_type=Memory_Slave CSET axi_type=AXI4_Full CSET byte_size=9 -CSET coe_file=no_coe_file_loaded +CSET coe_file=/home/ikari/prj/sd2snes/verilog/sd2snes_cx4/cx4_e.coe CSET collision_warnings=ALL CSET component_name=cx4_pgmrom CSET disable_collision_warnings=false @@ -58,7 +58,7 @@ CSET enable_b=Always_Enabled CSET error_injection_type=Single_Bit_Error_Injection CSET fill_remaining_memory_locations=false CSET interface_type=Native -CSET load_init_file=false +CSET load_init_file=true CSET memory_type=Simple_Dual_Port_RAM CSET operating_mode_a=WRITE_FIRST CSET operating_mode_b=WRITE_FIRST @@ -102,4 +102,4 @@ CSET write_width_b=16 MISC pkg_timestamp=2011-03-11T08:24:14.000Z # END Extra information GENERATE -# CRC: 30264765 +# CRC: a9280b11 diff --git a/verilog/sd2snes_cx4/ipcore_dir/cx4_pgmrom.xise b/verilog/sd2snes_cx4/ipcore_dir/cx4_pgmrom.xise index 72cb4ec..81e9188 100644 --- a/verilog/sd2snes_cx4/ipcore_dir/cx4_pgmrom.xise +++ b/verilog/sd2snes_cx4/ipcore_dir/cx4_pgmrom.xise @@ -50,8 +50,8 @@ - - + + diff --git a/verilog/sd2snes_cx4/main.v b/verilog/sd2snes_cx4/main.v index b8fcf11..93c69dd 100644 --- a/verilog/sd2snes_cx4/main.v +++ b/verilog/sd2snes_cx4/main.v @@ -106,6 +106,10 @@ wire [7:0] CX4_SNES_DATA_OUT; wire [23:0] MAPPED_SNES_ADDR; wire ROM_ADDR0; +wire [23:0] cx4_datrom_data; +wire [9:0] cx4_datrom_addr; +wire cx4_datrom_we; + sd_dma snes_sd_dma( .CLK(CLK2), .SD_DAT(SD_DAT), @@ -226,7 +230,11 @@ mcu_cmd snes_mcu_cmd( .mcu_rrq(MCU_RRQ), .mcu_wrq(MCU_WRQ), .mcu_rq_rdy(MCU_RDY), - .use_msu1(use_msu1) + .use_msu1(use_msu1), + .cx4_datrom_addr_out(cx4_datrom_addr), + .cx4_datrom_data_out(cx4_datrom_data), + .cx4_datrom_we_out(cx4_datrom_we), + .cx4_reset_out(cx4_reset) ); wire [7:0] DCM_STATUS; @@ -285,9 +293,9 @@ cx4 snes_cx4 ( .nRD(SNES_READ), .nWR(SNES_WRITE), .CLK(CLK2), - .DATROM_DI(DATROM_DI), - .DATROM_WE(DATROM_WE), - .DATROM_ADDR(DATROM_ADDR), + .DATROM_DI(cx4_datrom_data), + .DATROM_WE(cx4_datrom_we), + .DATROM_ADDR(cx4_datrom_addr), .BUS_DI(CX4_DINr), .BUS_ADDR(CX4_ADDR), .BUS_RRQ(CX4_RRQ), diff --git a/verilog/sd2snes_cx4/sd2snes_cx4.xise b/verilog/sd2snes_cx4/sd2snes_cx4.xise index 0c67fd3..82ca3c5 100644 --- a/verilog/sd2snes_cx4/sd2snes_cx4.xise +++ b/verilog/sd2snes_cx4/sd2snes_cx4.xise @@ -283,14 +283,14 @@ - - + + - + @@ -311,7 +311,7 @@ - + @@ -330,7 +330,7 @@ - + @@ -338,8 +338,8 @@ - - + + @@ -361,13 +361,13 @@ - + - - + + @@ -405,7 +405,7 @@ - +