From 7643790fedd67f2ac3a126c47b2d6fb202ef9ff7 Mon Sep 17 00:00:00 2001 From: ikari Date: Sun, 30 Oct 2011 01:53:56 +0200 Subject: [PATCH] FPGA/Cx4: fully operational except reset vector area --- verilog/sd2snes_cx4/cx4.v | 212 +- verilog/sd2snes_cx4/ipcore_dir/cx4_mul.v | 3058 ++++++++----------- verilog/sd2snes_cx4/ipcore_dir/cx4_mul.xco | 6 +- verilog/sd2snes_cx4/ipcore_dir/cx4_mul.xise | 4 +- verilog/sd2snes_cx4/main.v | 240 +- verilog/sd2snes_cx4/sd2snes_cx4.xise | 8 +- 6 files changed, 1535 insertions(+), 1993 deletions(-) diff --git a/verilog/sd2snes_cx4/cx4.v b/verilog/sd2snes_cx4/cx4.v index 4eb055b..06d943d 100644 --- a/verilog/sd2snes_cx4/cx4.v +++ b/verilog/sd2snes_cx4/cx4.v @@ -42,28 +42,24 @@ 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'b11001); -wire status_enable = CS & (ADDR[12:5] == 8'b11111010) & (ADDR[4:0] > 8'b11001); +wire mmio_enable = CS & (ADDR[12:5] == 8'b11111010) & (ADDR[4:0] < 5'b10011); +wire status_enable = CS & (ADDR[12:5] == 8'b11111010) & (ADDR[4:0] >= 5'b10011); 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; +reg [7:0] MMIO_DOr; 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 @@ -71,33 +67,37 @@ assign DO = datram_enable ? DATRAM_DO reg [23:0] cx4_mmio_dmasrc; reg [15:0] cx4_mmio_dmalen; reg [23:0] cx4_mmio_dmatgt; -reg cx4_mmio_cachepage; +reg cx4_mmio_cachepage; reg [23:0] cx4_mmio_pgmoff; -reg [1:0] cx4_mmio_r1f4c; +reg [1:0] cx4_mmio_savepage; reg [14:0] cx4_mmio_pgmpage; -reg [7:0] cx4_mmio_pc; -reg [7:0] cx4_mmio_r1f50; -reg cx4_mmio_r1f51; -reg cx4_mmio_r1f52; +reg [7:0] cx4_mmio_pc; +reg [7:0] cx4_mmio_r1f50; +reg cx4_mmio_r1f51; +reg cx4_mmio_r1f52; /* 0x1f53 - 0x1f5f: status register */ assign cx4_active = |cx4_busy; /* 0x1f60 - 0x1f7f: reset vectors */ -reg [7:0] vector [31:0]; +reg [7:0] vector [31:0]; /* 0x1f80 - 0x1faf (0x1fc0 - 0x1fef): general purpose register file SNES: 8 bits / CX4: 24 bits */ -reg [7:0] gpr [47:0]; +reg [7:0] gpr [47:0]; wire [47:0] cpu_mul_result; +reg [14:0] cx4_mmio_pagemem[1:0]; + reg [23:0] const [15:0]; -reg [15:0] cachetag [1:0]; // 15: valid; 14-0: bank number +reg [14:0] cachetag [1:0]; // 14-0: bank number +reg [1:0] cachevalid; + 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; +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; @@ -105,14 +105,16 @@ initial begin cache_cachepage = 1'b0; cpu_cache_cachepage = 1'b0; cpu_cache_done = 1'b0; - cachetag[0] = 16'h0000; - cachetag[1] = 16'h0000; + cachetag[0] = 14'h0000; + cachetag[1] = 14'h0000; + cachevalid = 2'b00; cx4_busy = 3'b000; cx4_mmio_pgmoff = 24'h000000; cx4_mmio_pgmpage = 15'h0000; cx4_mmio_dmasrc = 24'h000000; cx4_mmio_dmalen = 16'h0000; cx4_mmio_dmatgt = 24'h000000; + cx4_mmio_savepage = 2'b00; const[0] = 24'h000000; const[1] = 24'hffffff; const[2] = 24'h00ff00; @@ -144,7 +146,6 @@ 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; @@ -198,6 +199,11 @@ 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 [23:0] cpu_a; +reg fl_n; +reg fl_z; +reg fl_c; + reg cpu_go_en_r; initial cpu_go_en_r = 1'b0; @@ -222,69 +228,58 @@ always @(posedge CLK) begin 5'h09: MMIO_DOr <= cx4_mmio_pgmoff[7:0]; // 1f49 5'h0a: MMIO_DOr <= cx4_mmio_pgmoff[15:8]; // 1f4a 5'h0b: MMIO_DOr <= cx4_mmio_pgmoff[23:16]; // 1f4b - 5'h0c: MMIO_DOr <= {6'b0, cx4_mmio_r1f4c}; // 1f4c + 5'h0c: MMIO_DOr <= {6'b0, cx4_mmio_savepage}; // 1f4c 5'h0d: MMIO_DOr <= cx4_mmio_pgmpage[7:0]; // 1f4d 5'h0e: MMIO_DOr <= {1'b0, cx4_mmio_pgmpage[14:8]}; // 1f4e 5'h0f: MMIO_DOr <= cx4_mmio_pc; // 1f4f 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'h12: MMIO_DOr <= {7'b0, cx4_mmio_r1f52}; // 1f52 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]) - 5'h00: cx4_mmio_dmasrc[7:0] <= DI; // 1f40 - 5'h01: cx4_mmio_dmasrc[15:8] <= DI; // 1f41 - 5'h02: cx4_mmio_dmasrc[23:16] <= DI; // 1f42 - 5'h03: cx4_mmio_dmalen[7:0] <= DI; // 1f43 - 5'h04: cx4_mmio_dmalen[15:8] <= DI; // 1f44 - 5'h05: cx4_mmio_dmatgt[7:0] <= DI; // 1f45 - 5'h06: cx4_mmio_dmatgt[15:8] <= DI; // 1f46 + 5'h00: cx4_mmio_dmasrc[7:0] <= DIr; // 1f40 + 5'h01: cx4_mmio_dmasrc[15:8] <= DIr; // 1f41 + 5'h02: cx4_mmio_dmasrc[23:16] <= DIr; // 1f42 + 5'h03: cx4_mmio_dmalen[7:0] <= DIr; // 1f43 + 5'h04: cx4_mmio_dmalen[15:8] <= DIr; // 1f44 + 5'h05: cx4_mmio_dmatgt[7:0] <= DIr; // 1f45 + 5'h06: cx4_mmio_dmatgt[15:8] <= DIr; // 1f46 5'h07: begin - cx4_mmio_dmatgt[23:16] <= DI; // 1f47 + cx4_mmio_dmatgt[23:16] <= DIr; // 1f47 DMA_TRIG_ENr <= 1'b1; end 5'h08: begin - cx4_mmio_cachepage <= DI[0]; // 1f48 + cx4_mmio_cachepage <= DIr[0]; // 1f48 CACHE_TRIG_ENr <= 1'b1; end - 5'h09: cx4_mmio_pgmoff[7:0] <= DI; // 1f49 - 5'h0a: cx4_mmio_pgmoff[15:8] <= DI; // 1f4a - 5'h0b: cx4_mmio_pgmoff[23:16] <= DI; // 1f4b - 5'h0c: cx4_mmio_r1f4c <= DI[1:0]; // 1f4c - 5'h0d: cx4_mmio_pgmpage[7:0] <= DI; // 1f4d - 5'h0e: cx4_mmio_pgmpage[14:8] <= DI[6:0]; // 1f4e + 5'h09: cx4_mmio_pgmoff[7:0] <= DIr; // 1f49 + 5'h0a: cx4_mmio_pgmoff[15:8] <= DIr; // 1f4a + 5'h0b: cx4_mmio_pgmoff[23:16] <= DIr; // 1f4b + 5'h0c: begin + cx4_mmio_savepage <= DIr[1:0]; + if(DIr[0]) cx4_mmio_pagemem[0] <= cx4_mmio_pgmpage; + if(DIr[1]) cx4_mmio_pagemem[1] <= cx4_mmio_pgmpage; + end + 5'h0d: cx4_mmio_pgmpage[7:0] <= DIr; // 1f4d + 5'h0e: cx4_mmio_pgmpage[14:8] <= DIr[6:0]; // 1f4e 5'h0f: begin - cx4_mmio_pc <= DI; // 1f4f + cx4_mmio_pc <= DIr; // 1f4f + if(cx4_mmio_savepage[0] + && cx4_mmio_pagemem[0] == cx4_mmio_pgmpage) + cx4_mmio_cachepage <= 1'b0; + else if(cx4_mmio_savepage[1] + && cx4_mmio_pagemem[1] == cx4_mmio_pgmpage) + cx4_mmio_cachepage <= 1'b1; cpu_go_en_r <= 1'b1; end - 5'h10: cx4_mmio_r1f50 <= DI & 8'h77; // 1f50 - 5'h11: cx4_mmio_r1f51 <= DI[0]; // 1f51 - 5'h12: cx4_mmio_r1f52 <= DI[0]; // 1f52 + 5'h10: cx4_mmio_r1f50 <= DIr & 8'h77; // 1f50 + 5'h11: cx4_mmio_r1f51 <= DIr[0]; // 1f51 + 5'h12: cx4_mmio_r1f52 <= DIr[0]; // 1f52 endcase end else begin CACHE_TRIG_ENr <= 1'b0; @@ -294,7 +289,7 @@ always @(posedge CLK) begin end always @(posedge CLK) begin - if(VECTOR_WR_EN) vector[ADDR[4:0]] <= DI; + if(VECTOR_WR_EN) vector[ADDR[4:0]] <= DIr; end reg [4:0] CACHE_ST; @@ -333,14 +328,14 @@ always @(posedge CLK) begin case(CACHE_ST) ST_CACHE_IDLE: begin if(CACHE_TRIG_EN - & (~cachetag[cx4_mmio_cachepage][15] - | |(cachetag[cx4_mmio_cachepage][14:0] ^ cx4_mmio_pgmpage))) begin + & (~cachevalid[cx4_mmio_cachepage] + | |(cachetag[cx4_mmio_cachepage] ^ cx4_mmio_pgmpage))) begin CACHE_ST <= ST_CACHE_START; 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 + & (~cachevalid[~cpu_page] + | |(cachetag[~cpu_page] ^ cpu_p))) begin CACHE_ST <= ST_CACHE_START; cache_pgmpage <= cpu_p; cache_cachepage <= ~cpu_page; @@ -370,7 +365,8 @@ always @(posedge CLK) begin cx4_pgmrom_addr <= cx4_pgmrom_addr + 1; if(cache_count == 9'h1ff) begin cx4_busy[BUSY_CACHE] <= 1'b0; - cachetag[cache_cachepage] <= {1'b1,cache_pgmpage}; + cachetag[cache_cachepage] <= cache_pgmpage; + cachevalid[cache_cachepage] <= 1'b1; CACHE_ST <= ST_CACHE_IDLE; end else begin CACHE_BUS_RRQr <= 1'b1; @@ -439,7 +435,6 @@ 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; reg [23:0] cpu_busdata; reg [23:0] cpu_romdata; reg [23:0] cpu_ramdata; @@ -455,9 +450,6 @@ 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; wire [9:0] cx4_datrom_addr = cpu_a[9:0]; wire [23:0] cx4_datrom_do; @@ -499,19 +491,24 @@ reg op_call; reg op_jump; reg condtrue; -/* 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; + else if(op == OP_HLT) cx4_busy[BUSY_CPU] <= 1'b0; end always @(posedge CLK) begin -if(step_enable | cpu_go_en_r) begin + case(op_sa) + 2'b00: cpu_sa <= cpu_a; + 2'b01: cpu_sa <= cpu_a << 1; + 2'b10: cpu_sa <= cpu_a << 8; + 2'b11: cpu_sa <= cpu_a << 16; + endcase +end + +reg jp_docache; +initial jp_docache = 1'b0; + +always @(posedge CLK) begin case(CPU_STATE) ST_CPU_IDLE: begin if(cpu_go_en_r) begin @@ -537,6 +534,10 @@ if(step_enable | cpu_go_en_r) begin 2'b00: condtrue <= fl_c; 2'b01: condtrue <= fl_n; endcase + if(op_p && !jp_docache) begin + jp_docache <= 1'b1; + cpu_cache_en <= 1'b1; + end end OP_SKIP: begin case(cpu_op[9:8]) @@ -562,14 +563,6 @@ if(step_enable | cpu_go_en_r) begin gpr[op_param[3:0]*3]}; default: cpu_idb <= 24'b0; endcase - if(op==OP_ALU || op==OP_CMP) begin - case(op_sa) - 2'b00: cpu_sa <= cpu_a; - 2'b01: cpu_sa <= cpu_a << 1; - 2'b10: cpu_sa <= cpu_a << 8; - 2'b11: cpu_sa <= cpu_a << 16; - endcase - end end OP_ST: begin cpu_idb <= cpu_a; @@ -615,9 +608,12 @@ if(step_enable | cpu_go_en_r) begin end ST_CPU_1: begin CPU_STATE <= ST_CPU_2; + condtrue <= 1'b0; case(op) OP_JP: begin - if(!cx4_busy[BUSY_CACHE]) begin + cpu_cache_en <= 1'b0; + if(!cpu_cache_en && !cx4_busy[BUSY_CACHE]) begin + jp_docache <= 1'b0; if(condtrue) begin if(op_call) begin cpu_page_stack[cpu_sp] <= cpu_page; @@ -659,10 +655,8 @@ if(step_enable | cpu_go_en_r) begin end 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'h08: cpu_romdata <= cpu_idb; 8'h0c: cpu_ramdata <= cpu_idb; 8'h13: cpu_busaddr <= cpu_idb; @@ -707,8 +701,8 @@ if(step_enable | cpu_go_en_r) begin 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'b11001: cpu_alu_res <= ($signed(cpu_a)) >>> cpu_idb; + 5'b11010: {cpu_dummy, cpu_alu_res[23:0]} <= {cpu_a, cpu_a} >> cpu_idb; 5'b11011: cpu_alu_res <= cpu_a << cpu_idb; endcase end @@ -717,12 +711,6 @@ if(step_enable | cpu_go_en_r) begin ST_CPU_3: begin CPU_STATE <= ST_CPU_0; case(op) - 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 @@ -803,12 +791,14 @@ if(step_enable | cpu_go_en_r) begin end endcase end -end reg[2:0] BUSRD_STATE; -parameter ST_BUSRD_IDLE = 2'b01; -parameter ST_BUSRD_WAIT = 2'b10; +parameter ST_BUSRD_IDLE = 3'b001; +parameter ST_BUSRD_WAIT = 3'b010; +parameter ST_BUSRD_END = 3'b100; initial BUSRD_STATE = ST_BUSRD_IDLE; +reg cpu_bus_rq2; +always @(posedge CLK) cpu_bus_rq2 <= cpu_bus_rq; always @(posedge CLK) begin if(CPU_STATE == ST_CPU_2 @@ -818,13 +808,15 @@ always @(posedge CLK) begin else begin case(BUSRD_STATE) ST_BUSRD_IDLE: begin - if(cpu_bus_rq) begin + if(cpu_bus_rq2) begin BUSRD_STATE <= ST_BUSRD_WAIT; end end ST_BUSRD_WAIT: begin - if(BUS_RDY) BUSRD_STATE <= ST_BUSRD_IDLE; + if(BUS_RDY) BUSRD_STATE <= ST_BUSRD_END; else BUSRD_STATE <= ST_BUSRD_WAIT; + end + ST_BUSRD_END: begin if(~cpu_busaddr[22]) cpu_busdata <= BUS_DI; else cpu_busdata <= 8'h00; end @@ -841,7 +833,7 @@ always @(posedge CLK) begin gpr[op_param[3:0]*3+1] <= cpu_idb[15:8]; gpr[op_param[3:0]*3] <= cpu_idb[7:0]; end - else if(GPR_WR_EN) gpr[ADDR[5:0]] <= DI; + else if(GPR_WR_EN) gpr[ADDR[5:0]] <= DIr; end /*************************** @@ -861,7 +853,7 @@ cx4_datram cx4_datram ( .clka(CLK), // input clka .wea(DATRAM_WR_EN), // input [0 : 0] wea .addra(ADDR[11:0]), // input [11 : 0] addra - .dina(DI), // input [7 : 0] dina + .dina(DIr), // input [7 : 0] dina .douta(DATRAM_DO), // output [7 : 0] douta .clkb(CLK), // input clkb .web(cx4_datram_we), // input [0 : 0] web diff --git a/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.v b/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.v index ebb89bc..da8b924 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: Tue Oct 25 00:04:23 2011 +// /___/ /\ Timestamp: Fri Oct 28 10:30:51 2011 // \ \ / \ // \___\/\___\ // @@ -399,54 +399,6 @@ 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 ; @@ -495,15 +447,15 @@ module cx4_mul ( wire \NLW_blk00000005_P<24>_UNCONNECTED ; wire \NLW_blk00000006_P<35>_UNCONNECTED ; GND blk00000001 ( - .G(sig00000012) + .G(sig00000001) ); VCC blk00000002 ( - .P(sig00000013) + .P(sig00000002) ); MULT18X18S blk00000003 ( .C(clk), - .CE(sig00000013), - .R(sig00000012), + .CE(sig00000002), + .R(sig00000001), .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 , @@ -511,1638 +463,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 , sig000000f6, sig000000f5, sig000000f4, -sig000000f3, sig000000ff, sig000000fe, sig000000fd, sig000000fc, sig000000fb, sig000000fa, sig000000f9, sig000000f8, sig000000f7, sig000000f2}) +\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}) ); MULT18X18S blk00000004 ( .C(clk), - .CE(sig00000013), - .R(sig00000012), + .CE(sig00000002), + .R(sig00000001), .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({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]}), + .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_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 , sig000000e9, sig000000e8, sig000000e7, sig000000e6, sig000000e4, sig000000e3, sig000000e2, sig000000e1, -sig000000e0, sig000000df, sig000000de, sig000000dd, sig000000dc, sig000000db, sig000000f1, sig000000f0, sig000000ef, sig000000ee, sig000000ed, -sig000000ec, sig000000eb, sig000000ea, sig000000e5, sig000000da}) +\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}) ); MULT18X18S blk00000005 ( .C(clk), - .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]}), + .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({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 , sig000000d1, sig000000d0, sig000000cf, sig000000ce, sig000000cc, sig000000cb, sig000000ca, sig000000c9, -sig000000c8, sig000000c7, sig000000c6, sig000000c5, sig000000c4, sig000000c3, sig000000d9, sig000000d8, sig000000d7, sig000000d6, sig000000d5, -sig000000d4, sig000000d3, sig000000d2, sig000000cd, sig000000c2}) +\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}) ); MULT18X18S blk00000006 ( .C(clk), - .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}) + .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}) ); XORCY blk00000007 ( - .CI(sig00000076), - .LI(sig00000097), - .O(sig0000018f) + .CI(sig00000065), + .LI(sig00000086), + .O(p[47]) ); LUT2 #( .INIT ( 4'h6 )) blk00000008 ( - .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), + .I0(sig0000014e), + .I1(sig0000015b), .O(sig00000086) ); - XORCY blk00000034 ( + MUXCY blk00000009 ( .CI(sig00000064), - .LI(sig00000085), - .O(sig0000017d) - ); - MUXCY blk00000035 ( - .CI(sig00000064), - .DI(sig00000157), + .DI(sig0000014e), .S(sig00000085), .O(sig00000065) ); LUT2 #( .INIT ( 4'h6 )) - blk00000036 ( - .I0(sig00000132), - .I1(sig00000157), + blk0000000a ( + .I0(sig0000014e), + .I1(sig0000015b), .O(sig00000085) ); - XORCY blk00000037 ( - .CI(sig00000063), - .LI(sig00000084), - .O(sig0000017c) - ); - MUXCY blk00000038 ( - .CI(sig00000063), - .DI(sig00000156), + MUXCY blk0000000b ( + .CI(sig00000062), + .DI(sig0000014e), .S(sig00000084), .O(sig00000064) ); LUT2 #( .INIT ( 4'h6 )) - blk00000039 ( - .I0(sig00000131), - .I1(sig00000156), + blk0000000c ( + .I0(sig0000014e), + .I1(sig0000015b), .O(sig00000084) ); - XORCY blk0000003a ( - .CI(sig00000062), - .LI(sig00000083), - .O(sig0000017b) - ); - MUXCY blk0000003b ( - .CI(sig00000062), - .DI(sig00000155), - .S(sig00000083), - .O(sig00000063) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk0000003c ( - .I0(sig00000130), - .I1(sig00000155), - .O(sig00000083) - ); - XORCY blk0000003d ( + XORCY blk0000000d ( .CI(sig00000061), .LI(sig00000082), - .O(sig0000017a) + .O(p[46]) ); - MUXCY blk0000003e ( + MUXCY blk0000000e ( .CI(sig00000061), - .DI(sig00000154), + .DI(sig0000014e), .S(sig00000082), .O(sig00000062) ); LUT2 #( .INIT ( 4'h6 )) - blk0000003f ( - .I0(sig0000012f), - .I1(sig00000154), + blk0000000f ( + .I0(sig0000014e), + .I1(sig0000015a), .O(sig00000082) ); - XORCY blk00000040 ( + XORCY blk00000010 ( .CI(sig00000060), .LI(sig00000081), - .O(sig00000179) + .O(p[45]) ); - MUXCY blk00000041 ( + MUXCY blk00000011 ( .CI(sig00000060), - .DI(sig00000153), + .DI(sig0000014e), .S(sig00000081), .O(sig00000061) ); LUT2 #( .INIT ( 4'h6 )) - blk00000042 ( - .I0(sig0000012e), - .I1(sig00000153), + blk00000012 ( + .I0(sig0000014e), + .I1(sig00000159), .O(sig00000081) ); - XORCY blk00000043 ( + XORCY blk00000013 ( .CI(sig0000005f), .LI(sig00000080), - .O(sig00000178) + .O(p[44]) ); - MUXCY blk00000044 ( + MUXCY blk00000014 ( .CI(sig0000005f), - .DI(sig00000152), + .DI(sig0000014e), .S(sig00000080), .O(sig00000060) ); LUT2 #( .INIT ( 4'h6 )) - blk00000045 ( - .I0(sig0000012d), - .I1(sig00000152), + blk00000015 ( + .I0(sig0000014e), + .I1(sig00000158), .O(sig00000080) ); - XORCY blk00000046 ( - .CI(sig0000007d), + XORCY blk00000016 ( + .CI(sig0000005e), .LI(sig0000007f), - .O(sig00000177) + .O(p[43]) ); - MUXCY blk00000047 ( - .CI(sig0000007d), - .DI(sig00000151), + MUXCY blk00000017 ( + .CI(sig0000005e), + .DI(sig0000014e), .S(sig0000007f), .O(sig0000005f) ); LUT2 #( .INIT ( 4'h6 )) - blk00000048 ( - .I0(sig0000012c), - .I1(sig00000151), + blk00000018 ( + .I0(sig0000014e), + .I1(sig00000164), .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(sig0000005e), - .LI(sig00000089), - .O(sig00000181) - ); - MUXCY blk00000062 ( - .CI(sig0000005e), - .DI(sig0000015b), - .S(sig00000089), - .O(sig00000069) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000063 ( - .I0(sig0000012b), - .I1(sig0000015b), - .O(sig00000089) - ); - XORCY blk00000064 ( - .CI(sig00000012), + XORCY blk00000019 ( + .CI(sig0000005d), .LI(sig0000007e), - .O(sig00000176) + .O(p[42]) ); - MUXCY blk00000065 ( - .CI(sig00000012), - .DI(sig00000150), + MUXCY blk0000001a ( + .CI(sig0000005d), + .DI(sig0000014e), .S(sig0000007e), .O(sig0000005e) ); LUT2 #( .INIT ( 4'h6 )) - blk00000066 ( - .I0(sig0000012a), - .I1(sig00000150), + blk0000001b ( + .I0(sig0000014e), + .I1(sig00000163), .O(sig0000007e) ); - XORCY blk00000067 ( - .CI(sig00000022), - .LI(sig0000003a), - .O(sig0000015f) + XORCY blk0000001c ( + .CI(sig0000005c), + .LI(sig0000007d), + .O(p[41]) + ); + MUXCY blk0000001d ( + .CI(sig0000005c), + .DI(sig0000014e), + .S(sig0000007d), + .O(sig0000005d) ); LUT2 #( .INIT ( 4'h6 )) - blk00000068 ( - .I0(sig00000111), - .I1(sig00000122), - .O(sig0000003a) + blk0000001e ( + .I0(sig0000014e), + .I1(sig00000162), + .O(sig0000007d) ); - XORCY blk00000069 ( - .CI(sig00000021), - .LI(sig00000039), - .O(sig0000015e) + XORCY blk0000001f ( + .CI(sig0000005b), + .LI(sig0000007c), + .O(p[40]) ); - MUXCY blk0000006a ( - .CI(sig00000021), - .DI(sig00000111), - .S(sig00000039), - .O(sig00000022) + MUXCY blk00000020 ( + .CI(sig0000005b), + .DI(sig0000014e), + .S(sig0000007c), + .O(sig0000005c) ); LUT2 #( .INIT ( 4'h6 )) - blk0000006b ( - .I0(sig00000121), - .I1(sig00000111), - .O(sig00000039) + blk00000021 ( + .I0(sig0000014e), + .I1(sig00000161), + .O(sig0000007c) ); - XORCY blk0000006c ( - .CI(sig00000020), - .LI(sig00000038), - .O(sig0000015d) + XORCY blk00000022 ( + .CI(sig0000005a), + .LI(sig0000007b), + .O(p[39]) ); - MUXCY blk0000006d ( - .CI(sig00000020), - .DI(sig00000111), - .S(sig00000038), - .O(sig00000021) + MUXCY blk00000023 ( + .CI(sig0000005a), + .DI(sig0000014d), + .S(sig0000007b), + .O(sig0000005b) ); LUT2 #( .INIT ( 4'h6 )) - blk0000006e ( - .I0(sig00000120), - .I1(sig00000111), - .O(sig00000038) + blk00000024 ( + .I0(sig0000014d), + .I1(sig00000160), + .O(sig0000007b) ); - XORCY blk0000006f ( - .CI(sig0000001e), - .LI(sig00000037), - .O(sig0000015c) + XORCY blk00000025 ( + .CI(sig00000059), + .LI(sig0000007a), + .O(p[38]) ); - MUXCY blk00000070 ( - .CI(sig0000001e), - .DI(sig00000111), - .S(sig00000037), - .O(sig00000020) + MUXCY blk00000026 ( + .CI(sig00000059), + .DI(sig0000014c), + .S(sig0000007a), + .O(sig0000005a) ); LUT2 #( .INIT ( 4'h6 )) - blk00000071 ( - .I0(sig0000011f), - .I1(sig00000111), - .O(sig00000037) + blk00000027 ( + .I0(sig0000014c), + .I1(sig0000015f), + .O(sig0000007a) ); - XORCY blk00000072 ( - .CI(sig0000001d), - .LI(sig00000035), - .O(sig0000015a) + XORCY blk00000028 ( + .CI(sig00000057), + .LI(sig00000079), + .O(p[37]) ); - MUXCY blk00000073 ( - .CI(sig0000001d), - .DI(sig00000111), - .S(sig00000035), - .O(sig0000001e) + MUXCY blk00000029 ( + .CI(sig00000057), + .DI(sig0000014b), + .S(sig00000079), + .O(sig00000059) ); LUT2 #( .INIT ( 4'h6 )) - blk00000074 ( - .I0(sig0000011d), - .I1(sig00000111), - .O(sig00000035) + blk0000002a ( + .I0(sig0000014b), + .I1(sig0000015e), + .O(sig00000079) ); - XORCY blk00000075 ( - .CI(sig0000001c), - .LI(sig00000034), - .O(sig00000159) + XORCY blk0000002b ( + .CI(sig00000056), + .LI(sig00000077), + .O(p[36]) ); - MUXCY blk00000076 ( - .CI(sig0000001c), - .DI(sig00000111), - .S(sig00000034), - .O(sig0000001d) + MUXCY blk0000002c ( + .CI(sig00000056), + .DI(sig00000149), + .S(sig00000077), + .O(sig00000057) ); LUT2 #( .INIT ( 4'h6 )) - blk00000077 ( - .I0(sig0000011c), - .I1(sig00000111), - .O(sig00000034) + blk0000002d ( + .I0(sig00000149), + .I1(sig0000015d), + .O(sig00000077) ); - XORCY blk00000078 ( - .CI(sig0000001b), - .LI(sig00000033), - .O(sig00000158) + XORCY blk0000002e ( + .CI(sig00000055), + .LI(sig00000076), + .O(p[35]) ); - MUXCY blk00000079 ( - .CI(sig0000001b), - .DI(sig00000111), - .S(sig00000033), - .O(sig0000001c) + MUXCY blk0000002f ( + .CI(sig00000055), + .DI(sig00000148), + .S(sig00000076), + .O(sig00000056) ); LUT2 #( .INIT ( 4'h6 )) - blk0000007a ( - .I0(sig0000011b), - .I1(sig00000111), - .O(sig00000033) + blk00000030 ( + .I0(sig00000148), + .I1(sig0000015c), + .O(sig00000076) ); - XORCY blk0000007b ( - .CI(sig0000001a), - .LI(sig00000032), - .O(sig00000157) + XORCY blk00000031 ( + .CI(sig00000054), + .LI(sig00000075), + .O(p[34]) ); - MUXCY blk0000007c ( - .CI(sig0000001a), - .DI(sig00000110), - .S(sig00000032), - .O(sig0000001b) + MUXCY blk00000032 ( + .CI(sig00000054), + .DI(sig00000147), + .S(sig00000075), + .O(sig00000055) ); LUT2 #( .INIT ( 4'h6 )) - blk0000007d ( - .I0(sig00000110), - .I1(sig0000011a), - .O(sig00000032) + blk00000033 ( + .I0(sig00000147), + .I1(sig00000157), + .O(sig00000075) ); - XORCY blk0000007e ( - .CI(sig00000019), - .LI(sig00000031), - .O(sig00000156) + XORCY blk00000034 ( + .CI(sig00000053), + .LI(sig00000074), + .O(p[33]) ); - MUXCY blk0000007f ( - .CI(sig00000019), - .DI(sig0000010f), - .S(sig00000031), - .O(sig0000001a) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000080 ( - .I0(sig0000010f), - .I1(sig00000119), - .O(sig00000031) - ); - XORCY blk00000081 ( - .CI(sig00000018), - .LI(sig00000030), - .O(sig00000155) - ); - MUXCY blk00000082 ( - .CI(sig00000018), - .DI(sig0000010e), - .S(sig00000030), - .O(sig00000019) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000083 ( - .I0(sig0000010e), - .I1(sig00000118), - .O(sig00000030) - ); - XORCY blk00000084 ( - .CI(sig00000017), - .LI(sig0000002f), - .O(sig00000154) - ); - MUXCY blk00000085 ( - .CI(sig00000017), - .DI(sig0000010d), - .S(sig0000002f), - .O(sig00000018) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000086 ( - .I0(sig0000010d), - .I1(sig00000117), - .O(sig0000002f) - ); - XORCY blk00000087 ( - .CI(sig00000016), - .LI(sig0000002e), - .O(sig00000153) - ); - MUXCY blk00000088 ( - .CI(sig00000016), - .DI(sig0000010c), - .S(sig0000002e), - .O(sig00000017) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk00000089 ( - .I0(sig0000010c), - .I1(sig00000116), - .O(sig0000002e) - ); - XORCY blk0000008a ( - .CI(sig00000015), - .LI(sig0000002d), - .O(sig00000152) - ); - MUXCY blk0000008b ( - .CI(sig00000015), - .DI(sig0000010b), - .S(sig0000002d), - .O(sig00000016) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk0000008c ( - .I0(sig0000010b), - .I1(sig00000115), - .O(sig0000002d) - ); - XORCY blk0000008d ( - .CI(sig0000002a), - .LI(sig0000002c), - .O(sig00000151) - ); - MUXCY blk0000008e ( - .CI(sig0000002a), - .DI(sig0000010a), - .S(sig0000002c), - .O(sig00000015) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk0000008f ( - .I0(sig0000010a), - .I1(sig00000114), - .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(sig00000024), - .LI(sig0000003d), - .O(sig00000162) - ); - MUXCY blk000000a0 ( - .CI(sig00000024), - .DI(sig00000104), - .S(sig0000003d), - .O(sig00000025) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk000000a1 ( - .I0(sig00000104), - .I1(sig00000124), - .O(sig0000003d) - ); - XORCY blk000000a2 ( - .CI(sig00000023), - .LI(sig0000003c), - .O(sig00000161) - ); - MUXCY blk000000a3 ( - .CI(sig00000023), - .DI(sig00000103), - .S(sig0000003c), - .O(sig00000024) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk000000a4 ( - .I0(sig00000103), - .I1(sig00000123), - .O(sig0000003c) - ); - XORCY blk000000a5 ( - .CI(sig0000001f), - .LI(sig0000003b), - .O(sig00000160) - ); - MUXCY blk000000a6 ( - .CI(sig0000001f), - .DI(sig00000102), - .S(sig0000003b), - .O(sig00000023) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk000000a7 ( - .I0(sig00000102), - .I1(sig0000011e), - .O(sig0000003b) - ); - XORCY blk000000a8 ( - .CI(sig00000014), - .LI(sig00000036), - .O(sig0000015b) - ); - MUXCY blk000000a9 ( - .CI(sig00000014), - .DI(sig00000101), - .S(sig00000036), - .O(sig0000001f) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk000000aa ( - .I0(sig00000101), - .I1(sig00000113), - .O(sig00000036) - ); - XORCY blk000000ab ( - .CI(sig00000012), - .LI(sig0000002b), - .O(sig00000150) - ); - MUXCY blk000000ac ( - .CI(sig00000012), - .DI(sig00000100), - .S(sig0000002b), - .O(sig00000014) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk000000ad ( - .I0(sig00000100), - .I1(sig00000112), - .O(sig0000002b) - ); - XORCY blk000000ae ( - .CI(sig00000046), - .LI(sig00000054), - .O(sig0000016c) - ); - LUT2 #( - .INIT ( 4'h6 )) - blk000000af ( - .I0(sig0000013a), - .I1(sig00000147), + MUXCY blk00000035 ( + .CI(sig00000053), + .DI(sig00000146), + .S(sig00000074), .O(sig00000054) ); - XORCY blk000000b0 ( - .CI(sig00000045), - .LI(sig00000053), - .O(sig0000016b) - ); - MUXCY blk000000b1 ( - .CI(sig00000045), - .DI(sig0000013a), - .S(sig00000053), - .O(sig00000046) - ); LUT2 #( .INIT ( 4'h6 )) - blk000000b2 ( + blk00000036 ( .I0(sig00000146), - .I1(sig0000013a), + .I1(sig00000121), + .O(sig00000074) + ); + XORCY blk00000037 ( + .CI(sig00000052), + .LI(sig00000073), + .O(p[32]) + ); + MUXCY blk00000038 ( + .CI(sig00000052), + .DI(sig00000145), + .S(sig00000073), .O(sig00000053) ); - XORCY blk000000b3 ( - .CI(sig00000044), - .LI(sig00000052), - .O(sig0000016a) - ); - MUXCY blk000000b4 ( - .CI(sig00000044), - .DI(sig0000013a), - .S(sig00000052), - .O(sig00000045) - ); LUT2 #( .INIT ( 4'h6 )) - blk000000b5 ( + blk00000039 ( .I0(sig00000145), - .I1(sig0000013a), + .I1(sig00000120), + .O(sig00000073) + ); + XORCY blk0000003a ( + .CI(sig00000051), + .LI(sig00000072), + .O(p[31]) + ); + MUXCY blk0000003b ( + .CI(sig00000051), + .DI(sig00000144), + .S(sig00000072), .O(sig00000052) ); - XORCY blk000000b6 ( - .CI(sig0000004f), - .LI(sig00000051), - .O(sig00000169) + LUT2 #( + .INIT ( 4'h6 )) + blk0000003c ( + .I0(sig00000144), + .I1(sig0000011f), + .O(sig00000072) ); - MUXCY blk000000b7 ( - .CI(sig0000004f), - .DI(sig0000013a), - .S(sig00000051), - .O(sig00000044) + XORCY blk0000003d ( + .CI(sig00000050), + .LI(sig00000071), + .O(p[30]) + ); + MUXCY blk0000003e ( + .CI(sig00000050), + .DI(sig00000143), + .S(sig00000071), + .O(sig00000051) ); LUT2 #( .INIT ( 4'h6 )) - blk000000b8 ( - .I0(sig00000144), - .I1(sig0000013a), - .O(sig00000051) + blk0000003f ( + .I0(sig00000143), + .I1(sig0000011e), + .O(sig00000071) ); - XORCY blk000000b9 ( - .CI(sig0000004e), - .LI(sig0000005d), - .O(sig00000175) + XORCY blk00000040 ( + .CI(sig0000004f), + .LI(sig00000070), + .O(p[29]) ); - MUXCY blk000000ba ( + 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), - .DI(sig0000013a), - .S(sig0000005d), + .LI(sig0000006f), + .O(p[28]) + ); + MUXCY blk00000044 ( + .CI(sig0000004e), + .DI(sig00000141), + .S(sig0000006f), .O(sig0000004f) ); LUT2 #( .INIT ( 4'h6 )) - blk000000bb ( - .I0(sig0000014f), - .I1(sig0000013a), - .O(sig0000005d) + blk00000045 ( + .I0(sig00000141), + .I1(sig0000011c), + .O(sig0000006f) ); - XORCY blk000000bc ( - .CI(sig0000004d), - .LI(sig0000005c), - .O(sig00000174) + XORCY blk00000046 ( + .CI(sig0000006c), + .LI(sig0000006e), + .O(p[27]) ); - MUXCY blk000000bd ( - .CI(sig0000004d), - .DI(sig0000013a), - .S(sig0000005c), + MUXCY blk00000047 ( + .CI(sig0000006c), + .DI(sig00000140), + .S(sig0000006e), .O(sig0000004e) ); LUT2 #( .INIT ( 4'h6 )) - blk000000be ( - .I0(sig0000014e), - .I1(sig0000013a), - .O(sig0000005c) + blk00000048 ( + .I0(sig00000140), + .I1(sig0000011b), + .O(sig0000006e) ); - XORCY blk000000bf ( - .CI(sig0000004c), - .LI(sig0000005b), - .O(sig00000173) + XORCY blk00000049 ( + .CI(sig0000006b), + .LI(sig0000008d), + .O(p[26]) ); - MUXCY blk000000c0 ( - .CI(sig0000004c), - .DI(sig0000013a), - .S(sig0000005b), + 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), + .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), + .O(sig00000083) + ); + XORCY blk00000061 ( + .CI(sig0000004d), + .LI(sig00000078), + .O(p[18]) + ); + MUXCY blk00000062 ( + .CI(sig0000004d), + .DI(sig0000014a), + .S(sig00000078), + .O(sig00000058) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000063 ( + .I0(sig0000014a), + .I1(sig0000011a), + .O(sig00000078) + ); + XORCY blk00000064 ( + .CI(sig00000001), + .LI(sig0000006d), + .O(p[17]) + ); + MUXCY blk00000065 ( + .CI(sig00000001), + .DI(sig0000013f), + .S(sig0000006d), .O(sig0000004d) ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000066 ( + .I0(sig0000013f), + .I1(sig00000119), + .O(sig0000006d) + ); + XORCY blk00000067 ( + .CI(sig00000011), + .LI(sig00000029), + .O(sig0000014e) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000068 ( + .I0(sig00000100), + .I1(sig00000111), + .O(sig00000029) + ); + XORCY blk00000069 ( + .CI(sig00000010), + .LI(sig00000028), + .O(sig0000014d) + ); + MUXCY blk0000006a ( + .CI(sig00000010), + .DI(sig00000100), + .S(sig00000028), + .O(sig00000011) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000006b ( + .I0(sig00000100), + .I1(sig00000110), + .O(sig00000028) + ); + XORCY blk0000006c ( + .CI(sig0000000f), + .LI(sig00000027), + .O(sig0000014c) + ); + MUXCY blk0000006d ( + .CI(sig0000000f), + .DI(sig00000100), + .S(sig00000027), + .O(sig00000010) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000006e ( + .I0(sig00000100), + .I1(sig0000010f), + .O(sig00000027) + ); + XORCY blk0000006f ( + .CI(sig0000000d), + .LI(sig00000026), + .O(sig0000014b) + ); + MUXCY blk00000070 ( + .CI(sig0000000d), + .DI(sig00000100), + .S(sig00000026), + .O(sig0000000f) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000071 ( + .I0(sig00000100), + .I1(sig0000010e), + .O(sig00000026) + ); + XORCY blk00000072 ( + .CI(sig0000000c), + .LI(sig00000024), + .O(sig00000149) + ); + MUXCY blk00000073 ( + .CI(sig0000000c), + .DI(sig00000100), + .S(sig00000024), + .O(sig0000000d) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000074 ( + .I0(sig00000100), + .I1(sig0000010c), + .O(sig00000024) + ); + XORCY blk00000075 ( + .CI(sig0000000b), + .LI(sig00000023), + .O(sig00000148) + ); + MUXCY blk00000076 ( + .CI(sig0000000b), + .DI(sig00000100), + .S(sig00000023), + .O(sig0000000c) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000077 ( + .I0(sig00000100), + .I1(sig0000010b), + .O(sig00000023) + ); + XORCY blk00000078 ( + .CI(sig0000000a), + .LI(sig00000022), + .O(sig00000147) + ); + MUXCY blk00000079 ( + .CI(sig0000000a), + .DI(sig00000100), + .S(sig00000022), + .O(sig0000000b) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000007a ( + .I0(sig00000100), + .I1(sig0000010a), + .O(sig00000022) + ); + XORCY blk0000007b ( + .CI(sig00000009), + .LI(sig00000021), + .O(sig00000146) + ); + MUXCY blk0000007c ( + .CI(sig00000009), + .DI(sig000000ff), + .S(sig00000021), + .O(sig0000000a) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000007d ( + .I0(sig000000ff), + .I1(sig00000109), + .O(sig00000021) + ); + XORCY blk0000007e ( + .CI(sig00000008), + .LI(sig00000020), + .O(sig00000145) + ); + MUXCY blk0000007f ( + .CI(sig00000008), + .DI(sig000000fe), + .S(sig00000020), + .O(sig00000009) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000080 ( + .I0(sig000000fe), + .I1(sig00000108), + .O(sig00000020) + ); + XORCY blk00000081 ( + .CI(sig00000007), + .LI(sig0000001f), + .O(sig00000144) + ); + 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), + .O(sig00000019) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000092 ( + .I0(sig000000f8), + .I1(sig00000118), + .O(sig00000031) + ); + XORCY blk00000093 ( + .CI(sig00000017), + .LI(sig00000030), + .O(sig00000155) + ); + MUXCY blk00000094 ( + .CI(sig00000017), + .DI(sig000000f7), + .S(sig00000030), + .O(sig00000018) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000095 ( + .I0(sig000000f7), + .I1(sig00000117), + .O(sig00000030) + ); + XORCY blk00000096 ( + .CI(sig00000016), + .LI(sig0000002f), + .O(sig00000154) + ); + MUXCY blk00000097 ( + .CI(sig00000016), + .DI(sig000000f6), + .S(sig0000002f), + .O(sig00000017) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk00000098 ( + .I0(sig000000f6), + .I1(sig00000116), + .O(sig0000002f) + ); + XORCY blk00000099 ( + .CI(sig00000015), + .LI(sig0000002e), + .O(sig00000153) + ); + MUXCY blk0000009a ( + .CI(sig00000015), + .DI(sig000000f5), + .S(sig0000002e), + .O(sig00000016) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000009b ( + .I0(sig000000f5), + .I1(sig00000115), + .O(sig0000002e) + ); + XORCY blk0000009c ( + .CI(sig00000014), + .LI(sig0000002d), + .O(sig00000152) + ); + MUXCY blk0000009d ( + .CI(sig00000014), + .DI(sig000000f4), + .S(sig0000002d), + .O(sig00000015) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk0000009e ( + .I0(sig000000f4), + .I1(sig00000114), + .O(sig0000002d) + ); + XORCY blk0000009f ( + .CI(sig00000013), + .LI(sig0000002c), + .O(sig00000151) + ); + MUXCY blk000000a0 ( + .CI(sig00000013), + .DI(sig000000f3), + .S(sig0000002c), + .O(sig00000014) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk000000a1 ( + .I0(sig000000f3), + .I1(sig00000113), + .O(sig0000002c) + ); + XORCY blk000000a2 ( + .CI(sig00000012), + .LI(sig0000002b), + .O(sig00000150) + ); + MUXCY blk000000a3 ( + .CI(sig00000012), + .DI(sig000000f2), + .S(sig0000002b), + .O(sig00000013) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk000000a4 ( + .I0(sig000000f2), + .I1(sig00000112), + .O(sig0000002b) + ); + XORCY blk000000a5 ( + .CI(sig0000000e), + .LI(sig0000002a), + .O(sig0000014f) + ); + MUXCY blk000000a6 ( + .CI(sig0000000e), + .DI(sig000000f1), + .S(sig0000002a), + .O(sig00000012) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk000000a7 ( + .I0(sig000000f1), + .I1(sig0000010d), + .O(sig0000002a) + ); + XORCY blk000000a8 ( + .CI(sig00000003), + .LI(sig00000025), + .O(sig0000014a) + ); + MUXCY blk000000a9 ( + .CI(sig00000003), + .DI(sig000000f0), + .S(sig00000025), + .O(sig0000000e) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk000000aa ( + .I0(sig000000f0), + .I1(sig00000102), + .O(sig00000025) + ); + XORCY blk000000ab ( + .CI(sig00000001), + .LI(sig0000001a), + .O(sig0000013f) + ); + MUXCY blk000000ac ( + .CI(sig00000001), + .DI(sig000000ef), + .S(sig0000001a), + .O(sig00000003) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk000000ad ( + .I0(sig000000ef), + .I1(sig00000101), + .O(sig0000001a) + ); + XORCY blk000000ae ( + .CI(sig00000035), + .LI(sig00000043), + .O(sig0000015b) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk000000af ( + .I0(sig00000129), + .I1(sig00000136), + .O(sig00000043) + ); + XORCY blk000000b0 ( + .CI(sig00000034), + .LI(sig00000042), + .O(sig0000015a) + ); + MUXCY blk000000b1 ( + .CI(sig00000034), + .DI(sig00000129), + .S(sig00000042), + .O(sig00000035) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk000000b2 ( + .I0(sig00000129), + .I1(sig00000135), + .O(sig00000042) + ); + XORCY blk000000b3 ( + .CI(sig00000033), + .LI(sig00000041), + .O(sig00000159) + ); + MUXCY blk000000b4 ( + .CI(sig00000033), + .DI(sig00000129), + .S(sig00000041), + .O(sig00000034) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk000000b5 ( + .I0(sig00000129), + .I1(sig00000134), + .O(sig00000041) + ); + XORCY blk000000b6 ( + .CI(sig0000003e), + .LI(sig00000040), + .O(sig00000158) + ); + MUXCY blk000000b7 ( + .CI(sig0000003e), + .DI(sig00000129), + .S(sig00000040), + .O(sig00000033) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk000000b8 ( + .I0(sig00000129), + .I1(sig00000133), + .O(sig00000040) + ); + XORCY blk000000b9 ( + .CI(sig0000003d), + .LI(sig0000004c), + .O(sig00000164) + ); + MUXCY blk000000ba ( + .CI(sig0000003d), + .DI(sig00000129), + .S(sig0000004c), + .O(sig0000003e) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk000000bb ( + .I0(sig00000129), + .I1(sig0000013e), + .O(sig0000004c) + ); + XORCY blk000000bc ( + .CI(sig0000003c), + .LI(sig0000004b), + .O(sig00000163) + ); + MUXCY blk000000bd ( + .CI(sig0000003c), + .DI(sig00000129), + .S(sig0000004b), + .O(sig0000003d) + ); + LUT2 #( + .INIT ( 4'h6 )) + blk000000be ( + .I0(sig00000129), + .I1(sig0000013d), + .O(sig0000004b) + ); + XORCY blk000000bf ( + .CI(sig0000003b), + .LI(sig0000004a), + .O(sig00000162) + ); + MUXCY blk000000c0 ( + .CI(sig0000003b), + .DI(sig00000129), + .S(sig0000004a), + .O(sig0000003c) + ); LUT2 #( .INIT ( 4'h6 )) blk000000c1 ( - .I0(sig0000014d), - .I1(sig0000013a), - .O(sig0000005b) + .I0(sig00000129), + .I1(sig0000013c), + .O(sig0000004a) ); XORCY blk000000c2 ( - .CI(sig0000004b), - .LI(sig0000005a), - .O(sig00000172) + .CI(sig0000003a), + .LI(sig00000049), + .O(sig00000161) ); MUXCY blk000000c3 ( - .CI(sig0000004b), - .DI(sig0000013a), - .S(sig0000005a), - .O(sig0000004c) + .CI(sig0000003a), + .DI(sig00000129), + .S(sig00000049), + .O(sig0000003b) ); LUT2 #( .INIT ( 4'h6 )) blk000000c4 ( - .I0(sig0000014c), - .I1(sig0000013a), - .O(sig0000005a) + .I0(sig00000129), + .I1(sig0000013b), + .O(sig00000049) ); XORCY blk000000c5 ( - .CI(sig0000004a), - .LI(sig00000059), - .O(sig00000171) + .CI(sig00000039), + .LI(sig00000048), + .O(sig00000160) ); MUXCY blk000000c6 ( - .CI(sig0000004a), - .DI(sig00000139), - .S(sig00000059), - .O(sig0000004b) + .CI(sig00000039), + .DI(sig00000128), + .S(sig00000048), + .O(sig0000003a) ); LUT2 #( .INIT ( 4'h6 )) blk000000c7 ( - .I0(sig00000139), - .I1(sig0000014b), - .O(sig00000059) + .I0(sig00000128), + .I1(sig0000013a), + .O(sig00000048) ); XORCY blk000000c8 ( - .CI(sig00000049), - .LI(sig00000058), - .O(sig00000170) + .CI(sig00000038), + .LI(sig00000047), + .O(sig0000015f) ); MUXCY blk000000c9 ( - .CI(sig00000049), - .DI(sig00000138), - .S(sig00000058), - .O(sig0000004a) + .CI(sig00000038), + .DI(sig00000127), + .S(sig00000047), + .O(sig00000039) ); LUT2 #( .INIT ( 4'h6 )) blk000000ca ( - .I0(sig00000138), - .I1(sig0000014a), - .O(sig00000058) + .I0(sig00000127), + .I1(sig00000139), + .O(sig00000047) ); XORCY blk000000cb ( - .CI(sig00000048), - .LI(sig00000057), - .O(sig0000016f) + .CI(sig00000037), + .LI(sig00000046), + .O(sig0000015e) ); MUXCY blk000000cc ( - .CI(sig00000048), - .DI(sig00000137), - .S(sig00000057), - .O(sig00000049) + .CI(sig00000037), + .DI(sig00000126), + .S(sig00000046), + .O(sig00000038) ); LUT2 #( .INIT ( 4'h6 )) blk000000cd ( - .I0(sig00000137), - .I1(sig00000149), - .O(sig00000057) + .I0(sig00000126), + .I1(sig00000138), + .O(sig00000046) ); XORCY blk000000ce ( - .CI(sig00000047), - .LI(sig00000056), - .O(sig0000016e) + .CI(sig00000036), + .LI(sig00000045), + .O(sig0000015d) ); MUXCY blk000000cf ( - .CI(sig00000047), - .DI(sig00000135), - .S(sig00000056), - .O(sig00000048) + .CI(sig00000036), + .DI(sig00000124), + .S(sig00000045), + .O(sig00000037) ); LUT2 #( .INIT ( 4'h6 )) blk000000d0 ( - .I0(sig00000135), - .I1(sig00000148), - .O(sig00000056) + .I0(sig00000124), + .I1(sig00000137), + .O(sig00000045) ); XORCY blk000000d1 ( - .CI(sig00000043), - .LI(sig00000055), - .O(sig0000016d) + .CI(sig00000032), + .LI(sig00000044), + .O(sig0000015c) ); MUXCY blk000000d2 ( - .CI(sig00000043), - .DI(sig00000134), - .S(sig00000055), - .O(sig00000047) + .CI(sig00000032), + .DI(sig00000123), + .S(sig00000044), + .O(sig00000036) ); LUT2 #( .INIT ( 4'h6 )) blk000000d3 ( - .I0(sig00000134), - .I1(sig00000143), - .O(sig00000055) + .I0(sig00000123), + .I1(sig00000132), + .O(sig00000044) ); XORCY blk000000d4 ( - .CI(sig00000012), - .LI(sig00000050), - .O(sig00000168) + .CI(sig00000001), + .LI(sig0000003f), + .O(sig00000157) ); MUXCY blk000000d5 ( - .CI(sig00000012), - .DI(sig00000133), - .S(sig00000050), - .O(sig00000043) + .CI(sig00000001), + .DI(sig00000122), + .S(sig0000003f), + .O(sig00000032) ); LUT2 #( .INIT ( 4'h6 )) blk000000d6 ( - .I0(sig00000133), - .I1(sig00000142), - .O(sig00000050) + .I0(sig00000122), + .I1(sig00000131), + .O(sig0000003f) ); FD #( .INIT ( 1'b0 )) blk000000d7 ( .C(clk), - .D(sig0000018f), - .Q(p[47]) + .D(sig000000d8), + .Q(sig00000129) ); FD #( .INIT ( 1'b0 )) blk000000d8 ( .C(clk), - .D(sig0000018b), - .Q(p[46]) + .D(sig000000d7), + .Q(sig00000128) ); FD #( .INIT ( 1'b0 )) blk000000d9 ( .C(clk), - .D(sig0000018a), - .Q(p[45]) + .D(sig000000d6), + .Q(sig00000127) ); FD #( .INIT ( 1'b0 )) blk000000da ( .C(clk), - .D(sig00000189), - .Q(p[44]) + .D(sig000000d5), + .Q(sig00000126) ); FD #( .INIT ( 1'b0 )) blk000000db ( .C(clk), - .D(sig00000188), - .Q(p[43]) + .D(sig000000d3), + .Q(sig00000124) ); FD #( .INIT ( 1'b0 )) blk000000dc ( .C(clk), - .D(sig00000187), - .Q(p[42]) + .D(sig000000d2), + .Q(sig00000123) ); FD #( .INIT ( 1'b0 )) blk000000dd ( .C(clk), - .D(sig00000186), - .Q(p[41]) + .D(sig000000d1), + .Q(sig00000122) ); FD #( .INIT ( 1'b0 )) blk000000de ( .C(clk), - .D(sig00000185), - .Q(p[40]) + .D(sig000000d0), + .Q(sig00000121) ); FD #( .INIT ( 1'b0 )) blk000000df ( .C(clk), - .D(sig00000184), - .Q(p[39]) + .D(sig000000cf), + .Q(sig00000120) ); FD #( .INIT ( 1'b0 )) blk000000e0 ( .C(clk), - .D(sig00000183), - .Q(p[38]) + .D(sig000000ce), + .Q(sig0000011f) ); FD #( .INIT ( 1'b0 )) blk000000e1 ( .C(clk), - .D(sig00000182), - .Q(p[37]) + .D(sig000000cd), + .Q(sig0000011e) ); FD #( .INIT ( 1'b0 )) blk000000e2 ( .C(clk), - .D(sig00000180), - .Q(p[36]) + .D(sig000000cc), + .Q(sig0000011d) ); FD #( .INIT ( 1'b0 )) blk000000e3 ( .C(clk), - .D(sig0000017f), - .Q(p[35]) + .D(sig000000cb), + .Q(sig0000011c) ); FD #( .INIT ( 1'b0 )) blk000000e4 ( .C(clk), - .D(sig0000017e), - .Q(p[34]) + .D(sig000000ca), + .Q(sig0000011b) ); FD #( .INIT ( 1'b0 )) blk000000e5 ( .C(clk), - .D(sig0000017d), - .Q(p[33]) + .D(sig000000e0), + .Q(sig00000130) ); FD #( .INIT ( 1'b0 )) blk000000e6 ( .C(clk), - .D(sig0000017c), - .Q(p[32]) + .D(sig000000df), + .Q(sig0000012f) ); FD #( .INIT ( 1'b0 )) blk000000e7 ( .C(clk), - .D(sig0000017b), - .Q(p[31]) + .D(sig000000de), + .Q(sig0000012e) ); FD #( .INIT ( 1'b0 )) blk000000e8 ( .C(clk), - .D(sig0000017a), - .Q(p[30]) + .D(sig000000dd), + .Q(sig0000012d) ); FD #( .INIT ( 1'b0 )) blk000000e9 ( .C(clk), - .D(sig00000179), - .Q(p[29]) + .D(sig000000dc), + .Q(sig0000012c) ); FD #( .INIT ( 1'b0 )) blk000000ea ( .C(clk), - .D(sig00000178), - .Q(p[28]) + .D(sig000000db), + .Q(sig0000012b) ); FD #( .INIT ( 1'b0 )) blk000000eb ( .C(clk), - .D(sig00000177), - .Q(p[27]) + .D(sig000000da), + .Q(sig0000012a) ); FD #( .INIT ( 1'b0 )) blk000000ec ( .C(clk), - .D(sig00000194), - .Q(p[26]) + .D(sig000000d9), + .Q(sig00000125) ); FD #( .INIT ( 1'b0 )) blk000000ed ( .C(clk), - .D(sig00000193), - .Q(p[25]) + .D(sig000000d4), + .Q(sig0000011a) ); FD #( .INIT ( 1'b0 )) blk000000ee ( .C(clk), - .D(sig00000192), - .Q(p[24]) + .D(sig000000c9), + .Q(sig00000119) ); FD #( .INIT ( 1'b0 )) blk000000ef ( .C(clk), - .D(sig00000191), - .Q(p[23]) + .D(sig000000c0), + .Q(sig00000111) ); FD #( .INIT ( 1'b0 )) blk000000f0 ( .C(clk), - .D(sig00000190), - .Q(p[22]) + .D(sig000000bf), + .Q(sig00000110) ); FD #( .INIT ( 1'b0 )) blk000000f1 ( .C(clk), - .D(sig0000018e), - .Q(p[21]) + .D(sig000000be), + .Q(sig0000010f) ); FD #( .INIT ( 1'b0 )) blk000000f2 ( .C(clk), - .D(sig0000018d), - .Q(p[20]) + .D(sig000000bd), + .Q(sig0000010e) ); FD #( .INIT ( 1'b0 )) blk000000f3 ( .C(clk), - .D(sig0000018c), - .Q(p[19]) + .D(sig000000bb), + .Q(sig0000010c) ); FD #( .INIT ( 1'b0 )) blk000000f4 ( .C(clk), - .D(sig00000181), - .Q(p[18]) + .D(sig000000ba), + .Q(sig0000010b) ); FD #( .INIT ( 1'b0 )) blk000000f5 ( .C(clk), - .D(sig00000176), - .Q(p[17]) + .D(sig000000b9), + .Q(sig0000010a) ); FD #( .INIT ( 1'b0 )) blk000000f6 ( .C(clk), - .D(sig000000f6), - .Q(sig00000147) + .D(sig000000b8), + .Q(sig00000109) ); FD #( .INIT ( 1'b0 )) blk000000f7 ( .C(clk), - .D(sig000000f5), - .Q(sig00000146) + .D(sig000000b7), + .Q(sig00000108) ); FD #( .INIT ( 1'b0 )) blk000000f8 ( .C(clk), - .D(sig000000f4), - .Q(sig00000145) + .D(sig000000b6), + .Q(sig00000107) ); FD #( .INIT ( 1'b0 )) blk000000f9 ( .C(clk), - .D(sig000000f3), - .Q(sig00000144) + .D(sig000000b5), + .Q(sig00000106) ); FD #( .INIT ( 1'b0 )) blk000000fa ( .C(clk), - .D(sig000000ff), - .Q(sig0000014f) + .D(sig000000b4), + .Q(sig00000105) ); FD #( .INIT ( 1'b0 )) blk000000fb ( .C(clk), - .D(sig000000fe), - .Q(sig0000014e) + .D(sig000000b3), + .Q(sig00000104) ); FD #( .INIT ( 1'b0 )) blk000000fc ( .C(clk), - .D(sig000000fd), - .Q(sig0000014d) + .D(sig000000b2), + .Q(sig00000103) ); FD #( .INIT ( 1'b0 )) blk000000fd ( .C(clk), - .D(sig000000fc), - .Q(sig0000014c) + .D(sig000000c8), + .Q(sig00000118) ); FD #( .INIT ( 1'b0 )) blk000000fe ( .C(clk), - .D(sig000000fb), - .Q(sig0000014b) + .D(sig000000c7), + .Q(sig00000117) ); FD #( .INIT ( 1'b0 )) blk000000ff ( .C(clk), - .D(sig000000fa), - .Q(sig0000014a) + .D(sig000000c6), + .Q(sig00000116) ); FD #( .INIT ( 1'b0 )) blk00000100 ( .C(clk), - .D(sig000000f9), - .Q(sig00000149) + .D(sig000000c5), + .Q(sig00000115) ); FD #( .INIT ( 1'b0 )) blk00000101 ( .C(clk), - .D(sig000000f8), - .Q(sig00000148) + .D(sig000000c4), + .Q(sig00000114) ); FD #( .INIT ( 1'b0 )) blk00000102 ( .C(clk), - .D(sig000000f7), - .Q(sig00000143) + .D(sig000000c3), + .Q(sig00000113) ); FD #( .INIT ( 1'b0 )) blk00000103 ( .C(clk), - .D(sig000000f2), - .Q(sig00000142) + .D(sig000000c2), + .Q(sig00000112) ); FD #( .INIT ( 1'b0 )) blk00000104 ( .C(clk), - .D(sig000000e9), - .Q(sig0000013a) + .D(sig000000c1), + .Q(sig0000010d) ); FD #( .INIT ( 1'b0 )) blk00000105 ( .C(clk), - .D(sig000000e8), - .Q(sig00000139) + .D(sig000000bc), + .Q(sig00000102) ); FD #( .INIT ( 1'b0 )) blk00000106 ( .C(clk), - .D(sig000000e7), - .Q(sig00000138) + .D(sig000000b1), + .Q(sig00000101) ); FD #( .INIT ( 1'b0 )) blk00000107 ( .C(clk), - .D(sig000000e6), - .Q(sig00000137) + .D(sig000000e5), + .Q(sig00000136) ); FD #( .INIT ( 1'b0 )) @@ -2168,720 +2120,316 @@ sig000000bc, sig000000bb, sig000000b5, sig000000aa, sig0000009f}) 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 )) - blk00000116 ( + blk0000010c ( .C(clk), .D(sig000000ed), .Q(sig0000013d) ); FD #( .INIT ( 1'b0 )) - blk00000117 ( + blk0000010d ( .C(clk), .D(sig000000ec), .Q(sig0000013c) ); FD #( .INIT ( 1'b0 )) - blk00000118 ( + blk0000010e ( .C(clk), .D(sig000000eb), .Q(sig0000013b) ); FD #( .INIT ( 1'b0 )) - blk00000119 ( + blk0000010f ( .C(clk), .D(sig000000ea), - .Q(sig00000136) + .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) ); FD #( .INIT ( 1'b0 )) blk0000011a ( .C(clk), - .D(sig000000e5), - .Q(sig0000012b) + .D(sig000000a3), + .Q(sig000000fb) ); FD #( .INIT ( 1'b0 )) blk0000011b ( .C(clk), - .D(sig000000da), - .Q(sig0000012a) + .D(sig000000a2), + .Q(sig000000fa) ); FD #( .INIT ( 1'b0 )) blk0000011c ( .C(clk), - .D(sig000000d1), - .Q(sig00000122) + .D(sig000000a1), + .Q(sig000000f9) ); FD #( .INIT ( 1'b0 )) blk0000011d ( .C(clk), - .D(sig000000d0), - .Q(sig00000121) + .D(sig000000a0), + .Q(sig000000f8) ); FD #( .INIT ( 1'b0 )) blk0000011e ( .C(clk), - .D(sig000000cf), - .Q(sig00000120) + .D(sig0000009f), + .Q(sig000000f7) ); FD #( .INIT ( 1'b0 )) blk0000011f ( .C(clk), - .D(sig000000ce), - .Q(sig0000011f) + .D(sig0000009e), + .Q(sig000000f6) ); FD #( .INIT ( 1'b0 )) blk00000120 ( .C(clk), - .D(sig000000cc), - .Q(sig0000011d) + .D(sig0000009d), + .Q(sig000000f5) ); FD #( .INIT ( 1'b0 )) blk00000121 ( .C(clk), - .D(sig000000cb), - .Q(sig0000011c) + .D(sig0000009c), + .Q(sig000000f4) ); FD #( .INIT ( 1'b0 )) blk00000122 ( .C(clk), - .D(sig000000ca), - .Q(sig0000011b) + .D(sig0000009b), + .Q(sig000000f3) ); FD #( .INIT ( 1'b0 )) blk00000123 ( .C(clk), - .D(sig000000c9), - .Q(sig0000011a) + .D(sig0000009a), + .Q(sig000000f2) ); FD #( .INIT ( 1'b0 )) blk00000124 ( .C(clk), - .D(sig000000c8), - .Q(sig00000119) + .D(sig00000098), + .Q(sig000000f1) ); FD #( .INIT ( 1'b0 )) blk00000125 ( .C(clk), - .D(sig000000c7), - .Q(sig00000118) + .D(sig00000097), + .Q(sig000000f0) ); FD #( .INIT ( 1'b0 )) blk00000126 ( .C(clk), - .D(sig000000c6), - .Q(sig00000117) + .D(sig00000096), + .Q(sig000000ef) ); FD #( .INIT ( 1'b0 )) blk00000127 ( .C(clk), - .D(sig000000c5), - .Q(sig00000116) + .D(sig00000095), + .Q(p[16]) ); FD #( .INIT ( 1'b0 )) blk00000128 ( .C(clk), - .D(sig000000c4), - .Q(sig00000115) + .D(sig00000094), + .Q(p[15]) ); FD #( .INIT ( 1'b0 )) blk00000129 ( .C(clk), - .D(sig000000c3), - .Q(sig00000114) + .D(sig00000093), + .Q(p[14]) ); FD #( .INIT ( 1'b0 )) blk0000012a ( .C(clk), - .D(sig000000d9), - .Q(sig00000129) + .D(sig00000092), + .Q(p[13]) ); FD #( .INIT ( 1'b0 )) blk0000012b ( .C(clk), - .D(sig000000d8), - .Q(sig00000128) + .D(sig00000091), + .Q(p[12]) ); FD #( .INIT ( 1'b0 )) blk0000012c ( .C(clk), - .D(sig000000d7), - .Q(sig00000127) + .D(sig00000090), + .Q(p[11]) ); FD #( .INIT ( 1'b0 )) blk0000012d ( .C(clk), - .D(sig000000d6), - .Q(sig00000126) + .D(sig0000008f), + .Q(p[10]) ); FD #( .INIT ( 1'b0 )) blk0000012e ( .C(clk), - .D(sig000000d5), - .Q(sig00000125) + .D(sig000000b0), + .Q(p[9]) ); FD #( .INIT ( 1'b0 )) blk0000012f ( .C(clk), - .D(sig000000d4), - .Q(sig00000124) + .D(sig000000af), + .Q(p[8]) ); FD #( .INIT ( 1'b0 )) blk00000130 ( .C(clk), - .D(sig000000d3), - .Q(sig00000123) + .D(sig000000ae), + .Q(p[7]) ); FD #( .INIT ( 1'b0 )) blk00000131 ( .C(clk), - .D(sig000000d2), - .Q(sig0000011e) + .D(sig000000ad), + .Q(p[6]) ); FD #( .INIT ( 1'b0 )) blk00000132 ( .C(clk), - .D(sig000000cd), - .Q(sig00000113) + .D(sig000000ac), + .Q(p[5]) ); FD #( .INIT ( 1'b0 )) blk00000133 ( .C(clk), - .D(sig000000c2), - .Q(sig00000112) + .D(sig000000ab), + .Q(p[4]) ); FD #( .INIT ( 1'b0 )) blk00000134 ( .C(clk), - .D(sig000000ba), - .Q(sig00000111) + .D(sig000000aa), + .Q(p[3]) ); FD #( .INIT ( 1'b0 )) blk00000135 ( .C(clk), - .D(sig000000b9), - .Q(sig00000110) + .D(sig000000a4), + .Q(p[2]) ); FD #( .INIT ( 1'b0 )) blk00000136 ( .C(clk), - .D(sig000000b8), - .Q(sig0000010f) + .D(sig00000099), + .Q(p[1]) ); FD #( .INIT ( 1'b0 )) blk00000137 ( .C(clk), - .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), + .D(sig0000008e), .Q(p[0]) ); diff --git a/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.xco b/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.xco index 2273be6..13cf374 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: Mon Oct 24 22:04:01 2011 +# Date: Fri Oct 28 08:30:26 2011 # ############################################################## # @@ -49,7 +49,7 @@ CSET multtype=Parallel_Multiplier CSET optgoal=Speed CSET outputwidthhigh=47 CSET outputwidthlow=0 -CSET pipestages=3 +CSET pipestages=2 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: fd22ef14 +# CRC: efe4d30e diff --git a/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.xise b/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.xise index 1efcbc5..60829e7 100644 --- a/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.xise +++ b/verilog/sd2snes_cx4/ipcore_dir/cx4_mul.xise @@ -50,8 +50,8 @@ - - + + diff --git a/verilog/sd2snes_cx4/main.v b/verilog/sd2snes_cx4/main.v index 93c69dd..182b861 100644 --- a/verilog/sd2snes_cx4/main.v +++ b/verilog/sd2snes_cx4/main.v @@ -299,7 +299,8 @@ cx4 snes_cx4 ( .BUS_DI(CX4_DINr), .BUS_ADDR(CX4_ADDR), .BUS_RRQ(CX4_RRQ), - .BUS_RDY(CX4_RDY) + .BUS_RDY(CX4_RDY), + .cx4_active(cx4_active) ); parameter MODE_SNES = 1'b0; @@ -359,7 +360,7 @@ always @(posedge CLK2) begin end wire IS_CART = IS_ROM | IS_SAVERAM | IS_WRITABLE; -wire ASSERT_SNES_ADDR = SNES_CPU_CLK & NEED_SNES_ADDRr & IS_CART; +wire ASSERT_SNES_ADDR = SNES_CPU_CLK & NEED_SNES_ADDRr & IS_CART & ~cx4_active; assign ROM_ADDR = (SD_DMA_TO_ROM) ? MCU_ADDR[23:1] : (ASSERT_SNES_ADDR) ? MAPPED_SNES_ADDR[23:1] : ROM_ADDRr[23:1]; assign ROM_ADDR0 = (SD_DMA_TO_ROM) ? MCU_ADDR[0] : (ASSERT_SNES_ADDR) ? MAPPED_SNES_ADDR[0] : ROM_ADDRr[0]; @@ -374,14 +375,14 @@ assign MCU_RDY = RQ_MCU_RDYr; always @(posedge CLK2) begin if(MCU_RRQ) begin MCU_RD_PENDr <= 1'b1; - RQ_MCU_RDYr <= 1'b0; + RQ_MCU_RDYr <= 1'b0; end else if(MCU_WRQ) begin MCU_WR_PENDr <= 1'b1; - RQ_MCU_RDYr <= 1'b0; + RQ_MCU_RDYr <= 1'b0; end else if(STATE & (ST_MCU_RD_END | ST_MCU_WR_END)) begin MCU_RD_PENDr <= 1'b0; - MCU_WR_PENDr <= 1'b0; - RQ_MCU_RDYr <= 1'b1; + MCU_WR_PENDr <= 1'b0; + RQ_MCU_RDYr <= 1'b1; end end @@ -392,143 +393,144 @@ assign CX4_RDY = RQ_CX4_RDYr; always @(posedge CLK2) begin if(CX4_RRQ) begin CX4_RD_PENDr <= 1'b1; - RQ_CX4_RDYr <= 1'b0; - end else if(STATE == ST_CX4_RD_WAIT && ST_MEM_DELAYr == 4'h0) begin + RQ_CX4_RDYr <= 1'b0; + end else if(STATE == ST_CX4_RD_END) begin CX4_RD_PENDr <= 1'b0; - RQ_CX4_RDYr <= 1'b1; + RQ_CX4_RDYr <= 1'b1; end end reg snes_wr_cycle; always @(posedge CLK2) begin - if(SNES_cycle_start & IS_CART) begin + if(SNES_cycle_start & IS_CART & ~cx4_active) begin STATE <= ST_SNES_RD_ADDR; - end else if(SNES_WR_start & IS_CART) begin + end else if(SNES_WR_start & IS_CART & ~cx4_active) begin STATE <= ST_SNES_WR_ADDR; end else begin case(STATE) - ST_IDLE: begin - ROM_ADDRr <= MAPPED_SNES_ADDR; - if(CX4_RRQ | CX4_RD_PENDr) begin - ROM_ADDRr <= CX4_ADDR; - STATE <= ST_CX4_RD_WAIT; - ST_MEM_DELAYr <= ROM_RD_WAIT_CX4; + ST_IDLE: begin + ROM_ADDRr <= MAPPED_SNES_ADDR; + if(CX4_RD_PENDr) begin + STATE <= ST_CX4_RD_WAIT; + ROM_ADDRr <= CX4_ADDR; + ST_MEM_DELAYr <= ROM_RD_WAIT_CX4; + end + else if(~cx4_active) begin + if(MCU_RD_PENDr) STATE <= ST_MCU_RD_ADDR; + else if(MCU_WR_PENDr) STATE <= ST_MCU_WR_ADDR; + else STATE <= ST_IDLE; end - else if(MCU_RD_PENDr) STATE <= ST_MCU_RD_ADDR; - else if(MCU_WR_PENDr) STATE <= ST_MCU_WR_ADDR; else STATE <= ST_IDLE; - end - ST_SNES_RD_ADDR: begin - STATE <= ST_SNES_RD_WAIT; - ST_MEM_DELAYr <= ROM_RD_WAIT; - end - ST_SNES_RD_WAIT: begin - ST_MEM_DELAYr <= ST_MEM_DELAYr - 4'h1; - if(ST_MEM_DELAYr == 4'h0) STATE <= ST_SNES_RD_END; - else STATE <= ST_SNES_RD_WAIT; - if(ROM_ADDR0) SNES_DINr <= ROM_DATA[7:0]; - else SNES_DINr <= ROM_DATA[15:8]; - end - ST_SNES_RD_END: begin - STATE <= ST_IDLE; - if(ROM_ADDR0) SNES_DINr <= ROM_DATA[7:0]; - else SNES_DINr <= ROM_DATA[15:8]; - end + end + ST_SNES_RD_ADDR: begin + STATE <= ST_SNES_RD_WAIT; + ST_MEM_DELAYr <= ROM_RD_WAIT; + end + ST_SNES_RD_WAIT: begin + ST_MEM_DELAYr <= ST_MEM_DELAYr - 4'h1; + if(ST_MEM_DELAYr == 4'h0) STATE <= ST_SNES_RD_END; + else STATE <= ST_SNES_RD_WAIT; + if(ROM_ADDR0) SNES_DINr <= ROM_DATA[7:0]; + else SNES_DINr <= ROM_DATA[15:8]; + end + ST_SNES_RD_END: begin + STATE <= ST_IDLE; + if(ROM_ADDR0) SNES_DINr <= ROM_DATA[7:0]; + else SNES_DINr <= ROM_DATA[15:8]; + end ST_SNES_WR_ADDR: begin ROM_WEr <= (!IS_WRITABLE); snes_wr_cycle <= 1'b1; - STATE <= ST_SNES_WR_WAIT1; - ST_MEM_DELAYr <= ROM_WR_WAIT1; - end - ST_SNES_WR_WAIT1: begin - ST_MEM_DELAYr <= ST_MEM_DELAYr - 4'h1; - if(ST_MEM_DELAYr == 4'h0) STATE <= ST_SNES_WR_DATA; - else STATE <= ST_SNES_WR_WAIT1; - end - ST_SNES_WR_DATA: begin + STATE <= ST_SNES_WR_WAIT1; + ST_MEM_DELAYr <= ROM_WR_WAIT1; + end + ST_SNES_WR_WAIT1: begin + ST_MEM_DELAYr <= ST_MEM_DELAYr - 4'h1; + if(ST_MEM_DELAYr == 4'h0) STATE <= ST_SNES_WR_DATA; + else STATE <= ST_SNES_WR_WAIT1; + end + ST_SNES_WR_DATA: begin ROM_DOUTr <= SNES_DATA; - ST_MEM_DELAYr <= ROM_WR_WAIT2; - STATE <= ST_SNES_WR_WAIT2; - end + ST_MEM_DELAYr <= ROM_WR_WAIT2; + STATE <= ST_SNES_WR_WAIT2; + end ST_SNES_WR_WAIT2: begin - ST_MEM_DELAYr <= ST_MEM_DELAYr - 4'h1; - if(ST_MEM_DELAYr == 4'h0) STATE <= ST_SNES_WR_END; - else STATE <= ST_SNES_WR_WAIT2; - end - ST_SNES_WR_END: begin - STATE <= ST_IDLE; - ROM_WEr <= 1'b1; - snes_wr_cycle <= 1'b0; - end - ST_MCU_RD_ADDR: begin - ROM_ADDRr <= MCU_ADDR; - STATE <= ST_MCU_RD_WAIT; - ST_MEM_DELAYr <= ROM_RD_WAIT_MCU; - end - ST_MCU_RD_WAIT: begin - ST_MEM_DELAYr <= ST_MEM_DELAYr - 4'h1; - if(ST_MEM_DELAYr == 4'h0) begin - STATE <= ST_MCU_RD_WAIT2; - ST_MEM_DELAYr <= 4'h2; + ST_MEM_DELAYr <= ST_MEM_DELAYr - 4'h1; + if(ST_MEM_DELAYr == 4'h0) STATE <= ST_SNES_WR_END; + else STATE <= ST_SNES_WR_WAIT2; end - else STATE <= ST_MCU_RD_WAIT; - if(ROM_ADDR0) MCU_DINr <= ROM_DATA[7:0]; - else MCU_DINr <= ROM_DATA[15:8]; - end - ST_MCU_RD_WAIT2: begin - ST_MEM_DELAYr <= ST_MEM_DELAYr - 4'h1; - if(ST_MEM_DELAYr == 4'h0) begin - STATE <= ST_MCU_RD_END; - end else STATE <= ST_MCU_RD_WAIT2; - end - ST_MCU_RD_END: begin - STATE <= ST_IDLE; - end - ST_MCU_WR_ADDR: begin - ROM_ADDRr <= MCU_ADDR; - STATE <= ST_MCU_WR_WAIT; - ST_MEM_DELAYr <= ROM_WR_WAIT_MCU; - ROM_DOUTr <= MCU_DOUT; - ROM_WEr <= 1'b0; - end - ST_MCU_WR_WAIT: begin - ST_MEM_DELAYr <= ST_MEM_DELAYr - 4'h1; - if(ST_MEM_DELAYr == 4'h0) begin - ROM_WEr <= 1'b1; - STATE <= ST_MCU_WR_WAIT2; - ST_MEM_DELAYr <= 4'h2; + ST_SNES_WR_END: begin + STATE <= ST_IDLE; + ROM_WEr <= 1'b1; + snes_wr_cycle <= 1'b0; end - else STATE <= ST_MCU_WR_WAIT; + ST_MCU_RD_ADDR: begin + ROM_ADDRr <= MCU_ADDR; + STATE <= ST_MCU_RD_WAIT; + ST_MEM_DELAYr <= ROM_RD_WAIT_MCU; + end + ST_MCU_RD_WAIT: begin + ST_MEM_DELAYr <= ST_MEM_DELAYr - 4'h1; + if(ST_MEM_DELAYr == 4'h0) begin + STATE <= ST_MCU_RD_WAIT2; + ST_MEM_DELAYr <= 4'h2; + end + else STATE <= ST_MCU_RD_WAIT; + if(ROM_ADDR0) MCU_DINr <= ROM_DATA[7:0]; + else MCU_DINr <= ROM_DATA[15:8]; end - ST_MCU_WR_WAIT2: begin - ST_MEM_DELAYr <= ST_MEM_DELAYr - 4'h1; - if(ST_MEM_DELAYr == 4'h0) begin - STATE <= ST_MCU_WR_END; - end else STATE <= ST_MCU_WR_WAIT2; - end - ST_MCU_WR_END: begin - STATE <= ST_IDLE; - end - - ST_CX4_RD_ADDR: begin - ROM_ADDRr <= CX4_ADDR; - STATE <= ST_CX4_RD_WAIT; - ST_MEM_DELAYr <= ROM_RD_WAIT_CX4; - end - ST_CX4_RD_WAIT: begin - ST_MEM_DELAYr <= ST_MEM_DELAYr - 4'h1; - if(ST_MEM_DELAYr == 4'h0) begin + ST_MCU_RD_WAIT2: begin + ST_MEM_DELAYr <= ST_MEM_DELAYr - 4'h1; + if(ST_MEM_DELAYr == 4'h0) begin + STATE <= ST_MCU_RD_END; + end else STATE <= ST_MCU_RD_WAIT2; + end + ST_MCU_RD_END: begin STATE <= ST_IDLE; end - else STATE <= ST_CX4_RD_WAIT; - if(ROM_ADDR0) CX4_DINr <= ROM_DATA[7:0]; - else CX4_DINr <= ROM_DATA[15:8]; + ST_MCU_WR_ADDR: begin + ROM_ADDRr <= MCU_ADDR; + STATE <= ST_MCU_WR_WAIT; + ST_MEM_DELAYr <= ROM_WR_WAIT_MCU; + ROM_DOUTr <= MCU_DOUT; + ROM_WEr <= 1'b0; + end + ST_MCU_WR_WAIT: begin + ST_MEM_DELAYr <= ST_MEM_DELAYr - 4'h1; + if(ST_MEM_DELAYr == 4'h0) begin + ROM_WEr <= 1'b1; + STATE <= ST_MCU_WR_WAIT2; + ST_MEM_DELAYr <= 4'h2; + end + else STATE <= ST_MCU_WR_WAIT; end - ST_CX4_RD_END: begin - STATE <= ST_IDLE; - end - endcase + ST_MCU_WR_WAIT2: begin + ST_MEM_DELAYr <= ST_MEM_DELAYr - 4'h1; + if(ST_MEM_DELAYr == 4'h0) begin + STATE <= ST_MCU_WR_END; + end else STATE <= ST_MCU_WR_WAIT2; + end + ST_MCU_WR_END: begin + STATE <= ST_IDLE; + end + + ST_CX4_RD_ADDR: begin + ROM_ADDRr <= CX4_ADDR; + STATE <= ST_CX4_RD_WAIT; + ST_MEM_DELAYr <= ROM_RD_WAIT_CX4; + end + ST_CX4_RD_WAIT: begin + ST_MEM_DELAYr <= ST_MEM_DELAYr - 4'h1; + if(ST_MEM_DELAYr == 4'h0) STATE <= ST_CX4_RD_END; + else STATE <= ST_CX4_RD_WAIT; + if(ROM_ADDR0) CX4_DINr <= ROM_DATA[7:0]; + else CX4_DINr <= ROM_DATA[15:8]; + end + ST_CX4_RD_END: begin + STATE <= ST_IDLE; + end + endcase end end diff --git a/verilog/sd2snes_cx4/sd2snes_cx4.xise b/verilog/sd2snes_cx4/sd2snes_cx4.xise index 82ca3c5..a182ee5 100644 --- a/verilog/sd2snes_cx4/sd2snes_cx4.xise +++ b/verilog/sd2snes_cx4/sd2snes_cx4.xise @@ -238,7 +238,7 @@ - + @@ -320,7 +320,7 @@ - + @@ -366,8 +366,8 @@ - - + +