URL
https://opencores.org/ocsvn/raptor64/raptor64/trunk
Subversion Repositories raptor64
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 20 to Rev 21
- ↔ Reverse comparison
Rev 20 → Rev 21
/raptor64/trunk/rtl/verilog/Raptor64mc.v
315,6 → 315,7
`define BAND 5'd12 |
`define BOR 5'd13 |
`define BNR 5'd14 |
`define LOOP 5'd15 |
`define BLTR 5'd16 |
`define BGER 5'd17 |
`define BLER 5'd18 |
1260,6 → 1261,11
`BFCHG: begin for (n = 0; n < 64; n = n + 1) xData[n] = masko[n] ? ~b[n] : b[n]; xData[64] = 1'b0; end |
default: xData = 65'd0; |
endcase |
`BTRR: |
case(xIR[4:0]) |
`LOOP: xData = b - 64'd1; |
default: xData = 65'd0; |
endcase |
`SETLO: xData = imm; |
`SETHI: xData = {imm[63:32],a[31:0]}; |
`ADDI: xData = a + imm; |
2693,7 → 2699,11
`SETHI: xRt <= {dAXC,dRa}; |
`RR: xRt <= {dAXC,dIR[24:20]}; |
`BTRI: xRt <= 9'd0; |
`BTRR: xRt <= 9'd0; |
`BTRR: |
case(dIR[4:0]) |
`LOOP: xRt <= {dAXC,dRb}; |
default: xRt <= 9'd0; |
endcase |
`TRAPcc: xRt <= 9'd0; |
`TRAPcci: xRt <= 9'd0; |
`JMP: xRt <= 9'd00; |
2849,7 → 2859,7
end |
`BTRR: |
case(insn[4:0]) |
`BEQ,`BNE,`BLT,`BLE,`BGT,`BGE,`BLTU,`BLEU,`BGTU,`BGEU,`BAND,`BOR,`BNR: |
`BEQ,`BNE,`BLT,`BLE,`BGT,`BGE,`BLTU,`BLEU,`BGTU,`BGEU,`BAND,`BOR,`BNR,`LOOP,`BRA: |
if (predict_taken) begin |
$display("Taking predicted branch: %h",{pc_axc[63:4] + {{42{insn[24]}},insn[24:7]},insn[6:5],2'b00}); |
dbranch_taken <= 1'b1; |
2917,7 → 2927,7
`BTRR: |
case(xIR[4:0]) |
// BEQ r1,r2,label |
`BEQ,`BNE,`BLT,`BLE,`BGT,`BGE,`BLTU,`BLEU,`BGTU,`BGEU,`BAND,`BOR,`BNR: |
`BEQ,`BNE,`BLT,`BLE,`BGT,`BGE,`BLTU,`BLEU,`BGTU,`BGEU,`BAND,`BOR,`BNR,`BRA,`BRN,`LOOP: |
if (takb & !xbranch_taken) begin |
$display("Taking branch %h",xpc[63:4] + {{42{xIR[24]}},xIR[24:7]}); |
pc[xAXC][63:4] <= xpc[63:4] + {{42{xIR[24]}},xIR[24:7]}; |
/raptor64/trunk/rtl/verilog/insn_dumpsc.v
53,6 → 53,8
`BLEU: $display("BLEU r%d,r%d,%h.%h)",insn[34:30],insn[29:25],{{44{insn[24]}},insn[24:7]},insn[6:5]); |
`BGTU: $display("BGTU r%d,r%d,%h.%h)",insn[34:30],insn[29:25],{{44{insn[24]}},insn[24:7]},insn[6:5]); |
`BGEU: $display("BGEU r%d,r%d,%h.%h)",insn[34:30],insn[29:25],{{44{insn[24]}},insn[24:7]},insn[6:5]); |
`BRA: $display("BRA %h.%h)",{{44{insn[24]}},insn[24:7]},insn[6:5]); |
`LOOP: $display("LOOP r%d,%h.%h)",insn[29:25],{{44{insn[24]}},insn[24:7]},insn[6:5]); |
default: ; |
endcase |
`SETLO: $display("SETLO r%d,#%h", insn[36:32],{{32{insn[31]}},insn[31:0]}); |
/raptor64/trunk/rtl/verilog/Raptor64_tb.v
16,9 → 16,15
reg [7:0] cnt; |
wire wr_empty = 1'b1; |
wire wr_full; |
reg [63:0] iromout; |
reg [63:0] romout; |
wire stk_ack; |
wire scr_ack; |
wire [63:0] stk_dato; |
wire [63:0] scr_dato; |
wire [15:0] tc_dato; |
wire tc_ack; |
|
assign sys_ack = sys_stb; |
assign sys_ack = sys_stb|stk_ack|scr_ack|tc_ack; |
|
initial begin |
clk = 1; |
26,93 → 32,525
nmi = 0; |
#100 rst = 1; |
#100 rst = 0; |
#1300 nmi = 1; |
#800 nmi = 1; |
#100 nmi = 0; |
end |
|
always #10 clk = ~clk; // 50 MHz |
|
rtfTextController tc1 |
( |
.rst_i(rst), |
.clk_i(clk), |
.cyc_i(sys_cyc), |
.stb_i(sys_stb), |
.ack_o(tc_ack), |
.we_i(sys_we), |
.sel_i(sys_sel[1:0]|sys_sel[3:2]|sys_sel[5:4]|sys_sel[7:6]), |
.adr_i(sys_adr), |
.dat_i(sys_dbo[15:0]), |
.dat_o(tc_dato), |
.lp(), |
.curpos(), |
.vclk(), |
.eol(), |
.eof(), |
.blank(), |
.border(), |
.rgbIn(), |
.rgbOut() |
); |
|
scratchmem u_sc |
( |
.clk_i(clk), |
.cyc_i(sys_cyc), |
.stb_i(sys_stb), |
.ack_o(scr_ack), |
.we_i(sys_we), |
.sel_i(sys_sel), |
.adr_i(sys_adr), |
.dat_i(sys_dbo), |
.dat_o(scr_dato) |
); |
|
stkmem u_stk |
( |
.clk_i(clk), |
.cyc_i(sys_cyc), |
.stb_i(sys_stb), |
.ack_o(stk_ack), |
.we_i(sys_we), |
.adr_i(sys_adr), |
.dat_i(sys_dbo), |
.dat_o(stk_dato) |
); |
|
reg [63:0] keybdout; |
always @(sys_adr) |
if (sys_adr==64'hFFFF_FFFF_FFDC_0000) begin |
$display ("keyboard=FF"); |
keybdout <= 64'hFFFF_FFFF_FFFF_FFFF; |
end |
else |
keybdout <= 64'd0; |
|
always @(sys_adr) |
case(sys_adr)// | 64'hFFFF_FFFF_FFFF_0000) |
64'hFFFFFFFFFFFFF000: iromout <= 64'h00001CA1FFD00000; |
64'hFFFFFFFFFFFFF008: iromout <= 64'h0A30000002028800; |
64'hFFFFFFFFFFFFF010: iromout <= 64'h0000099046000000; |
64'hFFFFFFFFFFFFF018: iromout <= 64'h038840000010A108; |
64'hFFFFFFFFFFFFF020: iromout <= 64'h002AA2F881FFFF89; |
64'hFFFFFFFFFFFFF028: iromout <= 64'h2F8400001A902008; |
64'hFFFFFFFFFFFFF030: iromout <= 64'h0022A4A176543210; |
64'hFFFFFFFFFFFFF038: iromout <= 64'h008400009A902100; |
64'hFFFFFFFFFFFFF040: iromout <= 64'h0024A4A1FEDCBA98; |
64'hFFFFFFFFFFFFF048: iromout <= 64'h00840000A2902100; |
64'hFFFFFFFFFFFFF050: iromout <= 64'h004FF6F800000028; |
64'hFFFFFFFFFFFFF058: iromout <= 64'h0580400042B16008; |
64'hFFFFFFFFFFFFF060: iromout <= 64'hFFFFFC1044500018; |
64'hFFFFFFFFFFFFF068: iromout <= 64'h05803D00000FFFFF; |
64'hFFFFFFFFFFFFF070: iromout <= 64'h0000505804000032; |
64'hFFFFFFFFFFFFF078: iromout <= 64'h1884400000016018; |
64'hFFFFFFFFFFFFF080: iromout <= 64'h0000042842000002; |
64'hFFFFFFFFFFFFF088: iromout <= 64'h2F8C1FFFFC90C318; |
64'hFFFFFFFFFFFFF090: iromout <= 64'h000000C7FFFFFC2C; |
64'hFFFFFFFFFFFFF098: iromout <= 64'h37800000000DE000; |
64'hFFFFFFFFFFFFF0B0: iromout <= 64'h700003FFFFFFFFFF; |
64'hFFFFFFFFFFFFF0B8: iromout <= 64'h100440000001600F; |
64'hFFFFFFFFFFFFF0C0: iromout <= 64'h000006F881FFFFC1; |
64'hFFFFFFFFFFFFF0C8: iromout <= 64'h0D83E00000040100; |
64'hFFFFFFFFFFFFF0D0: iromout <= 64'hAAAB541000800009; |
64'hFFFFFFFFFFFFF0D8: iromout <= 64'h05802AA5555F5554; |
64'hFFFFFFFFFFFFF0E0: iromout <= 64'h0000019A02000000; |
64'hFFFFFFFFFFFFF0E8: iromout <= 64'h0104430000646810; |
64'hFFFFFFFFFFFFF0F0: iromout <= 64'h000022F8C00000A9; |
64'hFFFFFFFFFFFFF0F8: iromout <= 64'h042060000000A840; |
64'hFFFFFFFFFFFFF100: iromout <= 64'h800026F8C1FFFF00; |
64'hFFFFFFFFFFFFF108: iromout <= 64'h0100080000904802; |
64'hFFFFFFFFFFFFF110: iromout <= 64'hA955551A04000000; |
64'hFFFFFFFFFFFFF118: iromout <= 64'h2F8C00001091021A; |
64'hFFFFFFFFFFFFF120: iromout <= 64'h0000002210000008; |
64'hFFFFFFFFFFFFF128: iromout <= 64'h2F8C1FFFF801081C; |
64'hFFFFFFFFFFFFF130: iromout <= 64'h000026FA14000329; |
64'hFFFFFFFFFFFFF138: iromout <= 64'h3AAAAD5552A04002; |
64'hFFFFFFFFFFFFF140: iromout <= 64'h000000580355AAAA; |
64'hFFFFFFFFFFFFF148: iromout <= 64'h11A0400000066808; |
64'hFFFFFFFFFFFFF150: iromout <= 64'h0003241044300006; |
64'hFFFFFFFFFFFFF158: iromout <= 64'h02210000008BE300; |
64'hFFFFFFFFFFFFF160: iromout <= 64'hFFFC804207000000; |
64'hFFFFFFFFFFFFF168: iromout <= 64'h01200B00009BE307; |
64'hFFFFFFFFFFFFF170: iromout <= 64'h0000001000800009; |
64'hFFFFFFFFFFFFF178: iromout <= 64'h0408755AAAA46810; |
64'hFFFFFFFFFFFFF180: iromout <= 64'h000022F8C00000A9; |
64'hFFFFFFFFFFFFF188: iromout <= 64'h0420700000008840; |
64'hFFFFFFFFFFFFF190: iromout <= 64'h000222F8C1FFFF20; |
64'hFFFFFFFFFFFFF198: iromout <= 64'h01216800014BE858; |
64'hFFFFFFFFFFFFF1A0: iromout <= 64'h000052FA14000048; |
64'hFFFFFFFFFFFFF1A8: iromout <= 64'h1981000040004852; |
64'hFFFFFFFFFFFFF1B0: iromout <= 64'h000080D83E000000; |
64'hFFFFFFFFFFFFF1B8: iromout <= 64'h19803FF000000000; |
64'hFFFFFFFFFFFFF1C0: iromout <= 64'h0000D19805FF0008; |
64'hFFFFFFFFFFFFF1C8: iromout <= 64'h2F84000002902008; |
64'hFFFFFFFFFFFFF1D0: iromout <= 64'h0010A00802000228; |
64'hFFFFFFFFFFFFF1D8: iromout <= 64'h008800005A902010; |
64'hFFFFFFFFFFFFF1E0: iromout <= 64'h40000C1884680001; |
64'hFFFFFFFFFFFFF1E8: iromout <= 64'h1184400000004110; |
64'hFFFFFFFFFFFFF1F0: iromout <= 64'h0000200880000529; |
64'hFFFFFFFFFFFFF1F8: iromout <= 64'h008800005A946110; |
64'hFFFFFFFFFFFFF200: iromout <= 64'h0000D40800000034; |
64'hFFFFFFFFFFFFF208: iromout <= 64'h11803FF000002000; |
64'hFFFFFFFFFFFFF210: iromout <= 64'h0000811805FF0008; |
64'hFFFFFFFFFFFFF218: iromout <= 64'h3780000000000000; |
64'hFFFFFFFFFFFFFFB0: iromout <= 64'h000000CFFFFFFC6E; |
64'hFFFFFFFFFFFFFFB8: iromout <= 64'h37800000000DE000; |
64'hFFFFFFFFFFFFFFC0: iromout <= 64'h000000CFFFFFFC6E; |
64'hFFFFFFFFFFFFFFC8: iromout <= 64'h37800000000DE000; |
64'hFFFFFFFFFFFFFFD0: iromout <= 64'h0000037800000000; |
64'hFFFFFFFFFFFFFFD8: iromout <= 64'h37800000000DE000; |
64'hFFFFFFFFFFFFFFE0: iromout <= 64'h000000CFFFFFFC6D; |
64'hFFFFFFFFFFFFFFE8: iromout <= 64'h37800000000DE000; |
64'hFFFFFFFFFFFFFFF0: iromout <= 64'h000000CFFFFFFC00; |
64'hFFFFFFFFFFFFFFF8: iromout <= 64'h0000000000000000; |
|
64'hFFFFFFFFFFFFF000: romout <= 64'h000030000000000A; |
64'hFFFFFFFFFFFFF008: romout <= 64'h0BEFFFFEFF800000; |
64'hFFFFFFFFFFFFF010: romout <= 64'h001050A3000000CE; |
64'hFFFFFFFFFFFFF018: romout <= 64'h1080600041462018; |
64'hFFFFFFFFFFFFF020: romout <= 64'h001058A300000020; |
64'hFFFFFFFFFFFFF028: romout <= 64'h1080400041662018; |
64'hFFFFFFFFFFFFF030: romout <= 64'h000036F886000048; |
64'hFFFFFFFFFFFFF038: romout <= 64'h1080600041400000; |
64'hFFFFFFFFFFFFF040: romout <= 64'h001060C7FFFFFCC6; |
64'hFFFFFFFFFFFFF048: romout <= 64'h1880000041A62000; |
64'hFFFFFFFFFFFFF050: romout <= 64'h001070A100000001; |
64'hFFFFFFFFFFFFF058: romout <= 64'h0A1FFFFF0E060008; |
64'hFFFFFFFFFFFFF060: romout <= 64'h002AA0C7FFFFFDC1; |
64'hFFFFFFFFFFFFF068: romout <= 64'h2F84000018902008; |
64'hFFFFFFFFFFFFF070: romout <= 64'h0022A4A176543210; |
64'hFFFFFFFFFFFFF078: romout <= 64'h008400009A902100; |
64'hFFFFFFFFFFFFF080: romout <= 64'h0024A4A1FEDCBA98; |
64'hFFFFFFFFFFFFF088: romout <= 64'h00840000A2902100; |
64'hFFFFFFFFFFFFF090: romout <= 64'h000028CFFFFFFE6A; |
64'hFFFFFFFFFFFFF098: romout <= 64'h03FBC000018BE000; |
64'hFFFFFFFFFFFFF0A0: romout <= 64'hFFC3427F40000003; |
64'hFFFFFFFFFFFFF0A8: romout <= 64'h1008200000028BFF; |
64'hFFFFFFFFFFFFF0B0: romout <= 64'hFFF132F8400000A8; |
64'hFFFFFFFFFFFFF0B8: romout <= 64'h0288400000131FFF; |
64'hFFFFFFFFFFFFF0C0: romout <= 64'h00000EF801FFFF4A; |
64'hFFFFFFFFFFFFF0C8: romout <= 64'h0DFBFE000039DD00; |
64'hFFFFFFFFFFFFF0D0: romout <= 64'h6F57206F6C6C6548; |
64'hFFFFFFFFFFFFF0E0: romout <= 64'h3436726F74706152; |
64'hFFFFFFFFFFFFF0E8: romout <= 64'h206D657473797320; |
64'hFFFFFFFFFFFFF0F0: romout <= 64'h676E697472617473; |
64'hFFFFFFFFFFFFF0F8: romout <= 64'h000000002E2E2E2E; |
64'hFFFFFFFFFFFFF100: romout <= 64'h0000003FBC000008; |
64'hFFFFFFFFFFFFF108: romout <= 64'h0A1FFDC0A0067E18; |
64'hFFFFFFFFFFFFF110: romout <= 64'h0000060046000001; |
64'hFFFFFFFFFFFFF118: romout <= 64'h2F8C000000814318; |
64'hFFFFFFFFFFFFF120: romout <= 64'h0000011F86000000; |
64'hFFFFFFFFFFFFF128: romout <= 64'h0DFBFE0000180108; |
64'hFFFFFFFFFFFFF130: romout <= 64'h0000203FBC000010; |
64'hFFFFFFFFFFFFF138: romout <= 64'h19F8600000067E10; |
64'hFFFFFFFFFFFFF140: romout <= 64'h000004A3FFDC0A00; |
64'hFFFFFFFFFFFFF148: romout <= 64'h0508400004080310; |
64'hFFFFFFFFFFFFF150: romout <= 64'h000002F881FFFFA8; |
64'hFFFFFFFFFFFFF158: romout <= 64'h11F8600000090308; |
64'hFFFFFFFFFFFFF160: romout <= 64'h8000091F84000008; |
64'hFFFFFFFFFFFFF168: romout <= 64'h03FBC00001837EFF; |
64'hFFFFFFFFFFFFF170: romout <= 64'h0011427F00000007; |
64'hFFFFFFFFFFFFF178: romout <= 64'h0504200000F42008; |
64'hFFFFFFFFFFFFF180: romout <= 64'h700000A300000440; |
64'hFFFFFFFFFFFFF188: romout <= 64'h18801DC000242017; |
64'hFFFFFFFFFFFFF190: romout <= 64'h000005A8C2200030; |
64'hFFFFFFFFFFFFF198: romout <= 64'h0504200000F08108; |
64'hFFFFFFFFFFFFF1A0: romout <= 64'h0011498802000450; |
64'hFFFFFFFFFFFFF1A8: romout <= 64'h2F84400010942010; |
64'hFFFFFFFFFFFFF1B0: romout <= 64'h00003C2084000001; |
64'hFFFFFFFFFFFFF1B8: romout <= 64'h1880400045214210; |
64'hFFFFFFFFFFFFF1C0: romout <= 64'h0000627700000007; |
64'hFFFFFFFFFFFFF1C8: romout <= 64'h000000000200BEF0; |
64'hFFFFFFFFFFFFF1D0: romout <= 64'h000001800200041C; |
64'hFFFFFFFFFFFFF1D8: romout <= 64'h03FBC000010360F8; |
64'hFFFFFFFFFFFFF1E0: romout <= 64'h7000027F40000002; |
64'hFFFFFFFFFFFFF1E8: romout <= 64'h2008200000028BFF; |
64'hFFFFFFFFFFFFF1F0: romout <= 64'h00000AF841FFFFC1; |
64'hFFFFFFFFFFFFF1F8: romout <= 64'h050420000FF80200; |
64'hFFFFFFFFFFFFF200: romout <= 64'h0002A1000400041C; |
64'hFFFFFFFFFFFFF208: romout <= 64'h2C04548000DBE200; |
64'hFFFFFFFFFFFFF210: romout <= 64'h000008C7FFFFFD2D; |
64'hFFFFFFFFFFFFF218: romout <= 64'h0DFBFE000029DD00; |
64'hFFFFFFFFFFFFF220: romout <= 64'h00000C3FBC000010; |
64'hFFFFFFFFFFFFF228: romout <= 64'h118020004009FC00; |
64'hFFFFFFFFFFFFF230: romout <= 64'h0010002042000001; |
64'hFFFFFFFFFFFFF238: romout <= 64'h0A2FFD0000066008; |
64'hFFFFFFFFFFFFF240: romout <= 64'h0000050882000066; |
64'hFFFFFFFFFFFFF248: romout <= 64'h1888200006608108; |
64'hFFFFFFFFFFFFF250: romout <= 64'h0010010801FF0000; |
64'hFFFFFFFFFFFFF258: romout <= 64'h0504200007F46008; |
64'hFFFFFFFFFFFFF260: romout <= 64'hFFF27AC840080040; |
64'hFFFFFFFFFFFFF268: romout <= 64'h2770000000331FFF; |
64'hFFFFFFFFFFFFF270: romout <= 64'h0000802FBC000010; |
64'hFFFFFFFFFFFFF278: romout <= 64'h03FBC00002000000; |
64'hFFFFFFFFFFFFF280: romout <= 64'hFFF4727F40000007; |
64'hFFFFFFFFFFFFF288: romout <= 64'h0204201000031FFF; |
64'hFFFFFFFFFFFFF290: romout <= 64'h8000110844000000; |
64'hFFFFFFFFFFFFF298: romout <= 64'h1884400000006210; |
64'hFFFFFFFFFFFFF2A0: romout <= 64'h0003211804000408; |
64'hFFFFFFFFFFFFF2A8: romout <= 64'h10806000414BE110; |
64'hFFFFFFFFFFFFF2B0: romout <= 64'h0010218886000000; |
64'hFFFFFFFFFFFFF2B8: romout <= 64'h2774000000766008; |
64'hFFFFFFFFFFFFF2C0: romout <= 64'h004FF4DFBFE00004; |
64'hFFFFFFFFFFFFF2C8: romout <= 64'h0580400042B16008; |
64'hFFFFFFFFFFFFF2D0: romout <= 64'hFFFFFC1044500018; |
64'hFFFFFFFFFFFFF2D8: romout <= 64'h05803D00000FFFFF; |
64'hFFFFFFFFFFFFF2E0: romout <= 64'h0000505804000032; |
64'hFFFFFFFFFFFFF2E8: romout <= 64'h1884400000016018; |
64'hFFFFFFFFFFFFF2F0: romout <= 64'h0000042842000002; |
64'hFFFFFFFFFFFFF2F8: romout <= 64'h2F8C1FFFFC90C318; |
64'hFFFFFFFFFFFFF300: romout <= 64'h000000C7FFFFFFFE; |
64'hFFFFFFFFFFFFF308: romout <= 64'h37800000000DE000; |
64'hFFFFFFFFFFFFF310: romout <= 64'h0000037800000000; |
64'hFFFFFFFFFFFFF318: romout <= 64'h03FBC000028DE000; |
64'hFFFFFFFFFFFFF320: romout <= 64'h6800027F4000000F; |
64'hFFFFFFFFFFFFF328: romout <= 64'h108C200000028FFF; |
64'hFFFFFFFFFFFFF330: romout <= 64'h80006108C4000002; |
64'hFFFFFFFFFFFFF338: romout <= 64'h0100440000904110; |
64'hFFFFFFFFFFFFF340: romout <= 64'hFFF430A100000020; |
64'hFFFFFFFFFFFFF348: romout <= 64'h0A3FFD0000031FFF; |
64'hFFFFFFFFFFFFF350: romout <= 64'h00000988C2000000; |
64'hFFFFFFFFFFFFF358: romout <= 64'h2F80400000F08318; |
64'hFFFFFFFFFFFFF360: romout <= 64'h0010501008200009; |
64'hFFFFFFFFFFFFF368: romout <= 64'h0A3FFD1000042008; |
64'hFFFFFFFFFFFFF370: romout <= 64'h00000988C2000000; |
64'hFFFFFFFFFFFFF378: romout <= 64'h2F80400000F08318; |
64'hFFFFFFFFFFFFF380: romout <= 64'h800016774000000F; |
64'hFFFFFFFFFFFFF388: romout <= 64'h03FBC00002837EFF; |
64'hFFFFFFFFFFFFF390: romout <= 64'h6800027F4000000F; |
64'hFFFFFFFFFFFFF398: romout <= 64'h108C200000028FFF; |
64'hFFFFFFFFFFFFF3A0: romout <= 64'h80006108C4000002; |
64'hFFFFFFFFFFFFF3A8: romout <= 64'h0108220000504110; |
64'hFFFFFFFFFFFFF3B0: romout <= 64'h000084A3FFD00000; |
64'hFFFFFFFFFFFFF3B8: romout <= 64'h188C80000006A309; |
64'hFFFFFFFFFFFFF3C0: romout <= 64'hFFFEBC28C6000002; |
64'hFFFFFFFFFFFFF3C8: romout <= 64'h0A3FFDA0000BE017; |
64'hFFFFFFFFFFFFF3D0: romout <= 64'h00000508C2000002; |
64'hFFFFFFFFFFFFF3D8: romout <= 64'h0C7FFFFFCFA0E108; |
64'hFFFFFFFFFFFFF3E0: romout <= 64'h800016774000000F; |
64'hFFFFFFFFFFFFF3E8: romout <= 64'h03FBC00001837EFF; |
64'hFFFFFFFFFFFFF3F0: romout <= 64'h6800027F00000007; |
64'hFFFFFFFFFFFFF3F8: romout <= 64'h108C400000028FFF; |
64'hFFFFFFFFFFFFF400: romout <= 64'h2000001082300018; |
64'hFFFFFFFFFFFFF408: romout <= 64'h028C7D0000006318; |
64'hFFFFFFFFFFFFF410: romout <= 64'h000000A100000020; |
64'hFFFFFFFFFFFFF418: romout <= 64'h028C600000262308; |
64'hFFFFFFFFFFFFF420: romout <= 64'h00001EF805FFFFAF; |
64'hFFFFFFFFFFFFF428: romout <= 64'h0DFBFE000039DC00; |
64'hFFFFFFFFFFFFF430: romout <= 64'h80010450420000FF; |
64'hFFFFFFFFFFFFF438: romout <= 64'h2B04020005AA8100; |
64'hFFFFFFFFFFFFF440: romout <= 64'h400186B84010007A; |
64'hFFFFFFFFFFFFF448: romout <= 64'h03042000060A8100; |
64'hFFFFFFFFFFFFF450: romout <= 64'h0000005842000100; |
64'hFFFFFFFFFFFFF458: romout <= 64'h050420000FF360F8; |
64'hFFFFFFFFFFFFF460: romout <= 64'h0000F2B84008001A; |
64'hFFFFFFFFFFFFF468: romout <= 64'h0D83E0000000A108; |
64'hFFFFFFFFFFFFF470: romout <= 64'h0001FD0802000418; |
64'hFFFFFFFFFFFFF478: romout <= 64'h0A3FFDA000014108; |
64'hFFFFFFFFFFFFF480: romout <= 64'h80006108C4000000; |
64'hFFFFFFFFFFFFF488: romout <= 64'h1080200041A04208; |
64'hFFFFFFFFFFFFF490: romout <= 64'h80000C504200007F; |
64'hFFFFFFFFFFFFF498: romout <= 64'h0188408000004208; |
64'hFFFFFFFFFFFFF4A0: romout <= 64'h40000188C4000016; |
64'hFFFFFFFFFFFFF4A8: romout <= 64'h010041000090A217; |
64'hFFFFFFFFFFFFF4B0: romout <= 64'h500034D83E000000; |
64'hFFFFFFFFFFFFF4B8: romout <= 64'h1880000041AB2100; |
64'hFFFFFFFFFFFFF4C0: romout <= 64'hD00244D83E000000; |
64'hFFFFFFFFFFFFF4C8: romout <= 64'h03FBC000008B2100; |
64'hFFFFFFFFFFFFF4D0: romout <= 64'h0010699F84000000; |
64'hFFFFFFFFFFFFF4D8: romout <= 64'h2C08018003842010; |
64'hFFFFFFFFFFFFF4E0: romout <= 64'h0010682884000001; |
64'hFFFFFFFFFFFFF4E8: romout <= 64'h11F8400000062010; |
64'hFFFFFFFFFFFFF4F0: romout <= 64'hC00240DFBFE00001; |
64'hFFFFFFFFFFFFF4F8: romout <= 64'h03FBC000008B2100; |
64'hFFFFFFFFFFFFF500: romout <= 64'h0010619F84000000; |
64'hFFFFFFFFFFFFF508: romout <= 64'h2C0BFE8000042010; |
64'hFFFFFFFFFFFFF510: romout <= 64'h0010603884000001; |
64'hFFFFFFFFFFFFF518: romout <= 64'h2F801FFFECA62010; |
64'hFFFFFFFFFFFFF520: romout <= 64'h000022C840280093; |
64'hFFFFFFFFFFFFF528: romout <= 64'h19F840000000FEF0; |
64'hFFFFFFFFFFFFF530: romout <= 64'hE00001080400041A; |
64'hFFFFFFFFFFFFF538: romout <= 64'h03884000001B02FE; |
64'hFFFFFFFFFFFFF540: romout <= 64'hFFF529880400041A; |
64'hFFFFFFFFFFFFF548: romout <= 64'h2C840340092BE007; |
64'hFFFFFFFFFFFFF550: romout <= 64'h0000003FBC000008; |
64'hFFFFFFFFFFFFF558: romout <= 64'h1080400041867E10; |
64'hFFFFFFFFFFFFF560: romout <= 64'h000006C0BF88001E; |
64'hFFFFFFFFFFFFF568: romout <= 64'h188040004180A210; |
64'hFFFFFFFFFFFFF570: romout <= 64'hD00252F801FFFBCA; |
64'hFFFFFFFFFFFFF578: romout <= 64'h03FBC000008B2100; |
64'hFFFFFFFFFFFFF580: romout <= 64'h0010699F84000000; |
64'hFFFFFFFFFFFFF588: romout <= 64'h2F8800000C842010; |
64'hFFFFFFFFFFFFF590: romout <= 64'hFFEB29880000041A; |
64'hFFFFFFFFFFFFF598: romout <= 64'h18800000418BE007; |
64'hFFFFFFFFFFFFF5A0: romout <= 64'h0000C2F801FFFA4A; |
64'hFFFFFFFFFFFFF5A8: romout <= 64'h27F4000001F0FEF0; |
64'hFFFFFFFFFFFFF5B0: romout <= 64'hFFF472C840180099; |
64'hFFFFFFFFFFFFF5B8: romout <= 64'h0100230000931FFF; |
64'hFFFFFFFFFFFFF5C0: romout <= 64'h0006A9080200041A; |
64'hFFFFFFFFFFFFF5C8: romout <= 64'h2C840680008BE000; |
64'hFFFFFFFFFFFFF5D0: romout <= 64'h0012A1080400041A; |
64'hFFFFFFFFFFFFF5D8: romout <= 64'h03884000001BE200; |
64'hFFFFFFFFFFFFF5E0: romout <= 64'hFFF471880400041A; |
64'hFFFFFFFFFFFFF5E8: romout <= 64'h0100230000931FFF; |
64'hFFFFFFFFFFFFF5F0: romout <= 64'h000009080200041A; |
64'hFFFFFFFFFFFFF5F8: romout <= 64'h188C400000042310; |
64'hFFFFFFFFFFFFF600: romout <= 64'h00000428C6000002; |
64'hFFFFFFFFFFFFF608: romout <= 64'h0A4FFDA00000A108; |
64'hFFFFFFFFFFFFF610: romout <= 64'hFFFC92090A000000; |
64'hFFFFFFFFFFFFF618: romout <= 64'h0A200000020BE12F; |
64'hFFFFFFFFFFFFF620: romout <= 64'h0008A988C5FFFFFE; |
64'hFFFFFFFFFFFFF628: romout <= 64'h2C04040000ABE000; |
64'hFFFFFFFFFFFFF630: romout <= 64'hFFF4701002400009; |
64'hFFFFFFFFFFFFF638: romout <= 64'h0100230000931FFF; |
64'hFFFFFFFFFFFFF640: romout <= 64'hFFF4301008100009; |
64'hFFFFFFFFFFFFF648: romout <= 64'h188C200000031FFF; |
64'hFFFFFFFFFFFFF650: romout <= 64'h00007CC7FFFFFD9C; |
64'hFFFFFFFFFFFFF658: romout <= 64'h0DFBFE000069DD00; |
64'hFFFFFFFFFFFFF660: romout <= 64'h00007CC7FFFFFDAC; |
64'hFFFFFFFFFFFFF668: romout <= 64'h0DFBFE000069DD00; |
64'hFFFFFFFFFFFFF670: romout <= 64'h00001C3FBC000020; |
64'hFFFFFFFFFFFFF678: romout <= 64'h0A3FFDA00009FD00; |
64'hFFFFFFFFFFFFF680: romout <= 64'h00000608C2000016; |
64'hFFFFFFFFFFFFF688: romout <= 64'h248C20000160A108; |
64'hFFFFFFFFFFFFF690: romout <= 64'h000005080200041A; |
64'hFFFFFFFFFFFFF698: romout <= 64'h1880200041A0A108; |
64'hFFFFFFFFFFFFF6A0: romout <= 64'h000B1A08C4000000; |
64'hFFFFFFFFFFFFF6A8: romout <= 64'h1880000041ABE110; |
64'hFFFFFFFFFFFFF6B0: romout <= 64'h0000050802000418; |
64'hFFFFFFFFFFFFF6B8: romout <= 64'h188020004180A108; |
64'hFFFFFFFFFFFFF6C0: romout <= 64'h000008A3FFDA0000; |
64'hFFFFFFFFFFFFF6C8: romout <= 64'h2F8440001C682310; |
64'hFFFFFFFFFFFFF6D0: romout <= 64'h0010603884000001; |
64'hFFFFFFFFFFFFF6D8: romout <= 64'h108C400000062010; |
64'hFFFFFFFFFFFFF6E0: romout <= 64'h0000581884080000; |
64'hFFFFFFFFFFFFF6E8: romout <= 64'h0104410000542308; |
64'hFFFFFFFFFFFFF6F0: romout <= 64'hFFF38988C2000016; |
64'hFFFFFFFFFFFFF6F8: romout <= 64'h2774000000731FFF; |
64'hFFFFFFFFFFFFF700: romout <= 64'h000060DFBFE00004; |
64'hFFFFFFFFFFFFF708: romout <= 64'h27F400000030DEF0; |
64'hFFFFFFFFFFFFF710: romout <= 64'h0002A12844000000; |
64'hFFFFFFFFFFFFF718: romout <= 64'h0C7FFFFFD2DBE200; |
64'hFFFFFFFFFFFFF720: romout <= 64'h00000EF801FFFF8A; |
64'hFFFFFFFFFFFFF728: romout <= 64'h0DFBFE000039DD00; |
64'hFFFFFFFFFFFFF730: romout <= 64'h0000003FBC000008; |
64'hFFFFFFFFFFFFF738: romout <= 64'h0C7FFFFFDC167EF8; |
64'hFFFFFFFFFFFFF740: romout <= 64'h0000211FBE000000; |
64'hFFFFFFFFFFFFF748: romout <= 64'h037BC0000100BEF0; |
64'hFFFFFFFFFFFFF750: romout <= 64'h0000219F82000000; |
64'hFFFFFFFFFFFFF758: romout <= 64'h0A10000000D67EF8; |
64'hFFFFFFFFFFFFF760: romout <= 64'h000028C7FFFFFD2D; |
64'hFFFFFFFFFFFFF768: romout <= 64'h0C7FFFFFD2D28400; |
64'hFFFFFFFFFFFFF770: romout <= 64'h0000211F82000000; |
64'hFFFFFFFFFFFFF778: romout <= 64'h0DFBFE0000247EF8; |
64'hFFFFFFFFFFFFF780: romout <= 64'h00002037BC000010; |
64'hFFFFFFFFFFFFF788: romout <= 64'h19F8200000067EF8; |
64'hFFFFFFFFFFFFF790: romout <= 64'h0000C0504200000F; |
64'hFFFFFFFFFFFFF798: romout <= 64'h2B04014003908108; |
64'hFFFFFFFFFFFFF7A0: romout <= 64'hFFF4B42042000007; |
64'hFFFFFFFFFFFFF7A8: romout <= 64'h11F8200000031FFF; |
64'hFFFFFFFFFFFFF7B0: romout <= 64'h8000091FBE000008; |
64'hFFFFFFFFFFFFF7B8: romout <= 64'h03FBC00001037EFF; |
64'hFFFFFFFFFFFFF7C0: romout <= 64'h8000127F40000001; |
64'hFFFFFFFFFFFFF7C8: romout <= 64'h0C7FFFFFDE006108; |
64'hFFFFFFFFFFFFF7D0: romout <= 64'hFFF7801842200002; |
64'hFFFFFFFFFFFFF7D8: romout <= 64'h2774000000131FFF; |
64'hFFFFFFFFFFFFF7E0: romout <= 64'h000060DFBFE00002; |
64'hFFFFFFFFFFFFF7E8: romout <= 64'h27F400000050FEF0; |
64'hFFFFFFFFFFFFF7F0: romout <= 64'h000008A300000007; |
64'hFFFFFFFFFFFFF7F8: romout <= 64'h0C7FFFFFDEE06109; |
64'hFFFFFFFFFFFFF800: romout <= 64'h000016F806003FCF; |
64'hFFFFFFFFFFFFF808: romout <= 64'h0DFBFE000039DD00; |
64'hFFFFFFFFFFFFF810: romout <= 64'hFFF4B4A10000003A; |
64'hFFFFFFFFFFFFF818: romout <= 64'h0108010000931FFF; |
64'hFFFFFFFFFFFFF820: romout <= 64'h00001CC7FFFFFDF9; |
64'hFFFFFFFFFFFFF828: romout <= 64'h0A10000002028C00; |
64'hFFFFFFFFFFFFF830: romout <= 64'h000000C7FFFFFD2D; |
64'hFFFFFFFFFFFFF838: romout <= 64'h0C7FFFFFDEE40208; |
64'hFFFFFFFFFFFFF840: romout <= 64'hFFFD3C2884000001; |
64'hFFFFFFFFFFFFF848: romout <= 64'h0CFFFFFFDD2BE01F; |
64'hFFFFFFFFFFFFF850: romout <= 64'h0003F03FBC000030; |
64'hFFFFFFFFFFFFF858: romout <= 64'h0A20000000A9FC00; |
64'hFFFFFFFFFFFFF860: romout <= 64'hC00070A800000013; |
64'hFFFFFFFFFFFFF868: romout <= 64'h018C7E0000004110; |
64'hFFFFFFFFFFFFF870: romout <= 64'h800004194FE00000; |
64'hFFFFFFFFFFFFF878: romout <= 64'h0110E40000906420; |
64'hFFFFFFFFFFFFF880: romout <= 64'h400024194A200001; |
64'hFFFFFFFFFFFFF888: romout <= 64'h0704200000004519; |
64'hFFFFFFFFFFFFF890: romout <= 64'h000006F811FFFEAF; |
64'hFFFFFFFFFFFFF898: romout <= 64'h0194C80000006426; |
64'hFFFFFFFFFFFFF8A0: romout <= 64'h000004110C400009; |
64'hFFFFFFFFFFFFF8A8: romout <= 64'h010081000090652E; |
64'hFFFFFFFFFFFFF8B0: romout <= 64'h0003F0100A200009; |
64'hFFFFFFFFFFFFF8B8: romout <= 64'h0DFBFE000069DC00; |
64'hFFFFFFFFFFFFF8C0: romout <= 64'h0002703FBC000020; |
64'hFFFFFFFFFFFFF8C8: romout <= 64'h0A80000000F9FC00; |
64'hFFFFFFFFFFFFF8D0: romout <= 64'h0000C0504400000F; |
64'hFFFFFFFFFFFFF8D8: romout <= 64'h01885C0000016210; |
64'hFFFFFFFFFFFFF8E0: romout <= 64'h0000001908400001; |
64'hFFFFFFFFFFFFF8E8: romout <= 64'h0110A4000090632F; |
64'hFFFFFFFFFFFFF8F0: romout <= 64'hC0002418C6400001; |
64'hFFFFFFFFFFFFF8F8: romout <= 64'h0184220000104310; |
64'hFFFFFFFFFFFFF900: romout <= 64'h400026F811FFFE8F; |
64'hFFFFFFFFFFFFF908: romout <= 64'h0100620000904020; |
64'hFFFFFFFFFFFFF910: romout <= 64'h800012770000009C; |
64'hFFFFFFFFFFFFF918: romout <= 64'h03FBC00003837EFF; |
64'hFFFFFFFFFFFFF920: romout <= 64'hC000267F400007C4; |
64'hFFFFFFFFFFFFF928: romout <= 64'h0C7FFFFFE1404012; |
64'hFFFFFFFFFFFFF930: romout <= 64'hFFF8C01004A00009; |
64'hFFFFFFFFFFFFF938: romout <= 64'h0A90000000131FFF; |
64'hFFFFFFFFFFFFF940: romout <= 64'h600000A800000007; |
64'hFFFFFFFFFFFFF948: romout <= 64'h029CE00000006938; |
64'hFFFFFFFFFFFFF950: romout <= 64'h0003FC29CE000004; |
64'hFFFFFFFFFFFFF958: romout <= 64'h1A9D630003014118; |
64'hFFFFFFFFFFFFF960: romout <= 64'hFFFCBC1842400001; |
64'hFFFFFFFFFFFFF968: romout <= 64'h01004100009BE047; |
64'hFFFFFFFFFFFFF970: romout <= 64'h400026F813FFFE8F; |
64'hFFFFFFFFFFFFF978: romout <= 64'h0C7FFFFFE3004050; |
64'hFFFFFFFFFFFFF980: romout <= 64'h0003FCA800000003; |
64'hFFFFFFFFFFFFF988: romout <= 64'h1AA1630003014118; |
64'hFFFFFFFFFFFFF990: romout <= 64'hFFFEBC1842400001; |
64'hFFFFFFFFFFFFF998: romout <= 64'h182C0000014BE047; |
64'hFFFFFFFFFFFFF9A0: romout <= 64'h80001E77400007C4; |
64'hFFFFFFFFFFFFF9A8: romout <= 64'h0C7FFFFFDD237EFF; |
64'hFFFFFFFFFFFFF9B0: romout <= 64'hFFF4B4A100000024; |
64'hFFFFFFFFFFFFF9B8: romout <= 64'h0C7FFFFFC7631FFF; |
64'hFFFFFFFFFFFFF9C0: romout <= 64'hFFF4B6C04010000D; |
64'hFFFFFFFFFFFFF9C8: romout <= 64'h2F801FFFFCA31FFF; |
64'hFFFFFFFFFFFFF9D0: romout <= 64'hFFF471880000041A; |
64'hFFFFFFFFFFFFF9D8: romout <= 64'h0104030000931FFF; |
64'hFFFFFFFFFFFFF9E0: romout <= 64'h00000908C2000000; |
64'hFFFFFFFFFFFFF9E8: romout <= 64'h0C7FFFFFD160A318; |
64'hFFFFFFFFFFFFF9F0: romout <= 64'h000002C840140024; |
64'hFFFFFFFFFFFFF9F8: romout <= 64'h028C600000242308; |
64'hFFFFFFFFFFFFFA00: romout <= 64'hC000E8C7FFFFFD16; |
64'hFFFFFFFFFFFFFA08: romout <= 64'h2C041800044B0104; |
64'hFFFFFFFFFFFFFA10: romout <= 64'h50012AC075F00042; |
64'hFFFFFFFFFFFFFA18: romout <= 64'h2C045E8004CB0105; |
64'hFFFFFFFFFFFFFA20: romout <= 64'h40010EC04044003F; |
64'hFFFFFFFFFFFFFA28: romout <= 64'h2F801FFFC4AB0100; |
64'hFFFFFFFFFFFFFA30: romout <= 64'h00000908C2000000; |
64'hFFFFFFFFFFFFFA38: romout <= 64'h0C7FFFFFD160A318; |
64'hFFFFFFFFFFFFFA40: romout <= 64'h000002C87F68004C; |
64'hFFFFFFFFFFFFFA48: romout <= 64'h028C600000242308; |
64'hFFFFFFFFFFFFFA50: romout <= 64'h60014CC7FFFFFD16; |
64'hFFFFFFFFFFFFFA58: romout <= 64'h0C7FFFFFCC6B21FD; |
64'hFFFFFFFFFFFFFA60: romout <= 64'hFFE9C2F801FFFA4A; |
64'hFFFFFFFFFFFFFA68: romout <= 64'h0C7FFFFFDC1287FF; |
64'hFFFFFFFFFFFFFA70: romout <= 64'h70736944203D203F; |
64'hFFFFFFFFFFFFFA78: romout <= 64'h706C65682079616C; |
64'hFFFFFFFFFFFFFA80: romout <= 64'h203D20534C430A0D; |
64'hFFFFFFFFFFFFFA88: romout <= 64'h6373207261656C63; |
64'hFFFFFFFFFFFFFA90: romout <= 64'h203A0A0D6E656572; |
64'hFFFFFFFFFFFFFA98: romout <= 64'h6D2074696445203D; |
64'hFFFFFFFFFFFFFAA0: romout <= 64'h79622079726F6D65; |
64'hFFFFFFFFFFFFFAA8: romout <= 64'h3D204C0A0D736574; |
64'hFFFFFFFFFFFFFAB0: romout <= 64'h31532064616F4C20; |
64'hFFFFFFFFFFFFFAB8: romout <= 64'h0A0D656C69662039; |
64'hFFFFFFFFFFFFFAC0: romout <= 64'h706D7544203D2044; |
64'hFFFFFFFFFFFFFAC8: romout <= 64'h0D79726F6D656D20; |
64'hFFFFFFFFFFFFFAD0: romout <= 64'h617473203D20420A; |
64'hFFFFFFFFFFFFFAD8: romout <= 64'h20796E6974207472; |
64'hFFFFFFFFFFFFFAE0: romout <= 64'h4A0A0D6369736162; |
64'hFFFFFFFFFFFFFAE8: romout <= 64'h20706D754A203D20; |
64'hFFFFFFFFFFFFFAF0: romout <= 64'h0D65646F63206F74; |
64'hFFFFFFFFFFFFFAF8: romout <= 64'h000000000000000A; |
64'hFFFFFFFFFFFFFB00: romout <= 64'h0000003FBC000008; |
64'hFFFFFFFFFFFFFB08: romout <= 64'h108C200000067EF8; |
64'hFFFFFFFFFFFFFB10: romout <= 64'hFFF45828C6000002; |
64'hFFFFFFFFFFFFFB18: romout <= 64'h2C07FF0002031FFF; |
64'hFFFFFFFFFFFFFB20: romout <= 64'h00000038C6000002; |
64'hFFFFFFFFFFFFFB28: romout <= 64'h0DFBFE0000147EF8; |
64'hFFFFFFFFFFFFFB30: romout <= 64'hFFFBC4C7FFFFFEC0; |
64'hFFFFFFFFFFFFFB38: romout <= 64'h0104050000931FFF; |
64'hFFFFFFFFFFFFFB40: romout <= 64'hFFFB00A400000007; |
64'hFFFFFFFFFFFFFB48: romout <= 64'h0C7FFFFFEF131FFF; |
64'hFFFFFFFFFFFFFB50: romout <= 64'h0000058142000000; |
64'hFFFFFFFFFFFFFB58: romout <= 64'h2F809FFFFAF0A528; |
64'hFFFFFFFFFFFFFB60: romout <= 64'hFFFB02F801FFF24A; |
64'hFFFFFFFFFFFFFB68: romout <= 64'h0C7FFFFFEF131FFF; |
64'hFFFFFFFFFFFFFB70: romout <= 64'h0000001040300009; |
64'hFFFFFFFFFFFFFB78: romout <= 64'h2F801FFF1CA343F8; |
64'hFFFFFFFFFFFFFB80: romout <= 64'hFFFBC4C7FFFFFEC0; |
64'hFFFFFFFFFFFFFB88: romout <= 64'h0104020000931FFF; |
64'hFFFFFFFFFFFFFB90: romout <= 64'hFFF810C7FFFFFDD2; |
64'hFFFFFFFFFFFFFB98: romout <= 64'h0C7FFFFFE0431FFF; |
64'hFFFFFFFFFFFFFBA0: romout <= 64'hFFF810C7FFFFFE04; |
64'hFFFFFFFFFFFFFBA8: romout <= 64'h0C7FFFFFE0431FFF; |
64'hFFFFFFFFFFFFFBB0: romout <= 64'hFFF810C7FFFFFE04; |
64'hFFFFFFFFFFFFFBB8: romout <= 64'h0C7FFFFFE0431FFF; |
64'hFFFFFFFFFFFFFBC0: romout <= 64'h000062F801FFEF4A; |
64'hFFFFFFFFFFFFFBC8: romout <= 64'h27F4000000A0FEF0; |
64'hFFFFFFFFFFFFFBD0: romout <= 64'h00003CA200000000; |
64'hFFFFFFFFFFFFFBD8: romout <= 64'h108C200000029000; |
64'hFFFFFFFFFFFFFBE0: romout <= 64'hFFF45828C6000002; |
64'hFFFFFFFFFFFFFBE8: romout <= 64'h0C7FFFFFF0631FFF; |
64'hFFFFFFFFFFFFFBF0: romout <= 64'h800002C0401BFFFF; |
64'hFFFFFFFFFFFFFBF8: romout <= 64'h0504200000F06210; |
64'hFFFFFFFFFFFFFC00: romout <= 64'hFFFB3C1082200009; |
64'hFFFFFFFFFFFFFC08: romout <= 64'h01080100009BE027; |
64'hFFFFFFFFFFFFFC10: romout <= 64'h80000E774000000A; |
64'hFFFFFFFFFFFFFC18: romout <= 64'h2A04054003037EFF; |
64'hFFFFFFFFFFFFFC20: romout <= 64'h0000C2B840100039; |
64'hFFFFFFFFFFFFFC28: romout <= 64'h0D83E0000000E108; |
64'hFFFFFFFFFFFFFC30: romout <= 64'h60011AA040340041; |
64'hFFFFFFFFFFFFFC38: romout <= 64'h03842000041AE100; |
64'hFFFFFFFFFFFFFC40: romout <= 64'h000000284200000A; |
64'hFFFFFFFFFFFFFC48: romout <= 64'h2A040240061360F8; |
64'hFFFFFFFFFFFFFC50: romout <= 64'h000186B840140066; |
64'hFFFFFFFFFFFFFC58: romout <= 64'h0284200000A0E108; |
64'hFFFFFFFFFFFFFC60: romout <= 64'hFFFFFCD83E000000; |
64'hFFFFFFFFFFFFFC68: romout <= 64'h0D83E000000287FF; |
64'hFFFFFFFFFFFFFC70: romout <= 64'hAAAB541000800009; |
64'hFFFFFFFFFFFFFC78: romout <= 64'h05802AA5555F5554; |
64'hFFFFFFFFFFFFFC80: romout <= 64'h0000019A02000000; |
64'hFFFFFFFFFFFFFC88: romout <= 64'h0104430000646810; |
64'hFFFFFFFFFFFFFC90: romout <= 64'h000022F8C00000A9; |
64'hFFFFFFFFFFFFFC98: romout <= 64'h042060000000A840; |
64'hFFFFFFFFFFFFFCA0: romout <= 64'h800026F8C1FFFF00; |
64'hFFFFFFFFFFFFFCA8: romout <= 64'h0100080000904802; |
64'hFFFFFFFFFFFFFCB0: romout <= 64'hA955551A04000000; |
64'hFFFFFFFFFFFFFCB8: romout <= 64'h2F8C00001091021A; |
64'hFFFFFFFFFFFFFCC0: romout <= 64'h0000002210000008; |
64'hFFFFFFFFFFFFFCC8: romout <= 64'h2F8C1FFFF801081C; |
64'hFFFFFFFFFFFFFCD0: romout <= 64'h000026FA14000329; |
64'hFFFFFFFFFFFFFCD8: romout <= 64'h3AAAAD5552A04002; |
64'hFFFFFFFFFFFFFCE0: romout <= 64'h000000580355AAAA; |
64'hFFFFFFFFFFFFFCE8: romout <= 64'h11A0400000066808; |
64'hFFFFFFFFFFFFFCF0: romout <= 64'h0003241044300006; |
64'hFFFFFFFFFFFFFCF8: romout <= 64'h02210000008BE300; |
64'hFFFFFFFFFFFFFD00: romout <= 64'hFFFC804207000000; |
64'hFFFFFFFFFFFFFD08: romout <= 64'h01200B00009BE307; |
64'hFFFFFFFFFFFFFD10: romout <= 64'h0000001000800009; |
64'hFFFFFFFFFFFFFD18: romout <= 64'h0408755AAAA46810; |
64'hFFFFFFFFFFFFFD20: romout <= 64'h000022F8C00000A9; |
64'hFFFFFFFFFFFFFD28: romout <= 64'h0420700000008840; |
64'hFFFFFFFFFFFFFD30: romout <= 64'h000222F8C1FFFF20; |
64'hFFFFFFFFFFFFFD38: romout <= 64'h01216800014BE858; |
64'hFFFFFFFFFFFFFD40: romout <= 64'h000052FA14000048; |
64'hFFFFFFFFFFFFFD48: romout <= 64'h1981000040004852; |
64'hFFFFFFFFFFFFFD50: romout <= 64'h000080D83E000000; |
64'hFFFFFFFFFFFFFD58: romout <= 64'h0000000002000000; |
64'hFFFFFFFFFFFFFD60: romout <= 64'hFC00219803FF0000; |
64'hFFFFFFFFFFFFFD68: romout <= 64'h0080200003466017; |
64'hFFFFFFFFFFFFFD70: romout <= 64'h0008A2F841FFFFC9; |
64'hFFFFFFFFFFFFFD78: romout <= 64'h0080400042802008; |
64'hFFFFFFFFFFFFFD80: romout <= 64'hA0000408800005A9; |
64'hFFFFFFFFFFFFFD88: romout <= 64'h0104410000306211; |
64'hFFFFFFFFFFFFFD90: romout <= 64'h8000211844000000; |
64'hFFFFFFFFFFFFFD98: romout <= 64'h00880000528FFFF8; |
64'hFFFFFFFFFFFFFDA0: romout <= 64'h8000211844000008; |
64'hFFFFFFFFFFFFFDA8: romout <= 64'h008800005A8FFFF8; |
64'hFFFFFFFFFFFFFDB0: romout <= 64'h0000D40800000034; |
64'hFFFFFFFFFFFFFDB8: romout <= 64'h11803FF000002000; |
64'hFFFFFFFFFFFFFDC0: romout <= 64'h0000811805FF0008; |
64'hFFFFFFFFFFFFFDC8: romout <= 64'h3780000000000000; |
64'hFFFFFFFFFFFFFFB0: romout <= 64'h000000CFFFFFFF58; |
64'hFFFFFFFFFFFFFFB8: romout <= 64'h37800000000DE000; |
64'hFFFFFFFFFFFFFFC0: romout <= 64'h000000CFFFFFFF58; |
64'hFFFFFFFFFFFFFFC8: romout <= 64'h37800000000DE000; |
64'hFFFFFFFFFFFFFFD0: romout <= 64'h000000CFFFFFFF55; |
64'hFFFFFFFFFFFFFFD8: romout <= 64'h37800000000DE000; |
64'hFFFFFFFFFFFFFFE0: romout <= 64'h000000CFFFFFFF56; |
64'hFFFFFFFFFFFFFFE8: romout <= 64'h37800000000DE000; |
64'hFFFFFFFFFFFFFFF0: romout <= 64'h000000CFFFFFFC00; |
64'hFFFFFFFFFFFFFFF8: romout <= 64'h37800000000DE000; |
default: romout <= 64'd0; |
endcase |
assign sys_dbi = iromout; |
assign sys_dbi = romout|keybdout|stk_dato|scr_dato| {4{tc_dato}}; |
|
|
Raptor64sc u1 |
/raptor64/trunk/rtl/verilog/Raptor64sc.v
21,7 → 21,8
// |
// ============================================================================ |
// |
//`define RAS_PREDICTION 1 |
`define ADDRESS_RESERVATION 1 |
`define RAS_PREDICTION 1 |
//`define BTB 1 |
//`define TLB 1 |
//`define BRANCH_PREDICTION_SIMPLE 1 |
76,6 → 77,8
`define IRQ 7'd1 |
`define ICACHE_ON 7'd10 |
`define ICACHE_OFF 7'd11 |
`define DCACHE_ON 7'd12 |
`define DCACHE_OFF 7'd13 |
`define FIP 7'd20 |
`define IRET 7'd32 |
`define ERET 7'd33 |
91,6 → 94,7
`define NOT 7'd5 |
`define NEG 7'd6 |
`define ABS 7'd7 |
`define MOV 7'd9 |
`define SWAP 7'd13 |
`define CTLZ 7'd16 |
`define CTLO 7'd17 |
124,11 → 128,14
`define CauseCode 6'd24 |
`define TBA 6'd25 |
`define NON_ICACHE_SEG 6'd26 |
`define FPCR 6'd32 |
`define IPC 6'd33 |
`define OMG 7'd50 |
`define CMG 7'd51 |
`define OMGI 7'd52 |
`define CMGI 7'd53 |
`define EXEC 7'd58 |
`define MYST 7'd59 |
`define RR 7'd2 |
`define ADD 7'd2 |
`define ADDU 7'd3 |
188,7 → 195,6
`define BFSET 7'd9 |
`define BFCLR 7'd10 |
`define BFCHG 7'd11 |
|
`define ADDI 7'd4 |
`define ADDUI 7'd5 |
`define SUBI 7'd6 |
281,6 → 287,9
`define OUTH 7'd74 |
`define OUTW 7'd75 |
|
`define LM 7'd78 |
`define SM 7'd79 |
|
`define BLTI 7'd80 |
`define BGEI 7'd81 |
`define BLEI 7'd82 |
291,8 → 300,6
`define BGTUI 7'd87 |
`define BEQI 7'd88 |
`define BNEI 7'd89 |
`define BRAI 7'd90 |
`define BRNI 7'd91 |
|
`define BTRI 7'd94 |
`define BLTRI 5'd0 |
325,6 → 332,7
`define BAND 5'd12 |
`define BOR 5'd13 |
`define BNR 5'd14 |
`define LOOP 5'd15 |
`define BLTR 5'd16 |
`define BGER 5'd17 |
`define BLER 5'd18 |
417,8 → 425,11
|
reg resetA; |
reg im,bu_im; // interrupt mask |
reg im1; // temporary interrupt mask for LM/SM |
reg [1:0] rm; // fp rounding mode |
reg [41:0] dIR; |
reg [41:0] ndIR; |
wire [6:0] dOpcode = dIR[41:35]; |
reg [41:0] xIR; |
reg [63:0] pc; |
reg [63:0] ErrorEPC,EPC,IPC; |
440,9 → 451,9
reg [1:0] dhwxtype,xhwxtype,m1hwxtype,m2hwxtype,whwxtype; |
reg [3:0] AXC,dAXC,xAXC; |
reg dtinit; |
reg dcache_on; |
reg [63:32] nonICacheSeg; |
|
//reg wr_icache; |
reg dccyc; |
wire [63:0] cdat; |
reg [63:0] wr_addr; |
602,24 → 613,16
// 8kB |
// |
//----------------------------------------------------------------------------- |
//reg lfdir; |
wire lfdir = ((dOpcode==`LM || dOpcode==`SM) && dIR[31:0]!=32'd0) && ndIR[31:0]!=32'd0; |
wire ldnop = ((dOpcode==`LM || dOpcode==`SM) && (dIR[31:0]==32'd0 || ndIR[31:0]==32'd0)); |
reg icaccess; |
//wire nonICachedArea; |
|
//Raptor64_icache_ram_x32 u1 |
//( |
// .clk(clk), |
// .wr(icaccess & ack_i), |
// .adr_i(adr_o[12:0]), |
// .dat_i(dat_i), |
// .pc(pc), |
// .insn(insn) |
//); |
reg ICacheOn; |
wire ibufrdy; |
reg [63:0] tmpbuf; |
wire [127:0] insnbundle; |
reg [127:0] insnbuf; |
reg [63:4] ibuftag; |
reg [127:0] insnbuf0,insnbuf1; |
reg [63:4] ibuftag0,ibuftag1; |
wire isICached = ppc[63:32]!=nonICacheSeg; |
wire ICacheAct = ICacheOn & isICached; |
|
630,21 → 633,27
.addra(adr_o[12:3]), // input [9 : 0] addra |
.dina(dat_i), // input [63 : 0] dina |
.clkb(~clk), // input clkb |
.addrb(pc[12:4]), // input [9 : 0] addrb |
.doutb(insnbundle) // output [63 : 0] doutb |
.addrb(pc[12:4]), // input [8 : 0] addrb |
.doutb(insnbundle) // output [127 : 0] doutb |
); |
|
always @(pc or insnbundle or ICacheAct or insnbuf) |
always @(ppc or insnbundle or ICacheAct or insnbuf0 or insnbuf1 or ndIR or lfdir or ldnop) |
begin |
case({ICacheAct,pc[3:2]}) |
3'd0: insn <= insnbuf[ 41: 0]; |
3'd1: insn <= insnbuf[ 83:42]; |
3'd2: insn <= insnbuf[125:84]; |
3'd3: insn <= 42'h37800000000; |
3'd4: insn <= insnbundle[ 41: 0]; |
3'd5: insn <= insnbundle[ 83:42]; |
3'd6: insn <= insnbundle[125:84]; |
3'd7: insn <= 42'h37800000000; // NOP instruction |
casex({ldnop,lfdir,ICacheAct,ibuftag1==ppc[63:4],pc[3:2]}) |
6'b1xxxxx: insn <= 42'h37800000000; |
6'b01xxxx: insn <= ndIR; |
6'b001x00: insn <= insnbundle[ 41: 0]; |
6'b001x01: insn <= insnbundle[ 83:42]; |
6'b001x10: insn <= insnbundle[125:84]; |
6'b001x11: insn <= 42'h37800000000; // NOP instruction |
6'b000000: insn <= insnbuf0[ 41: 0]; |
6'b000001: insn <= insnbuf0[ 83:42]; |
6'b000010: insn <= insnbuf0[125:84]; |
6'b000011: insn <= 42'h37800000000; |
6'b000100: insn <= insnbuf1[ 41: 0]; |
6'b000101: insn <= insnbuf1[ 83:42]; |
6'b000110: insn <= insnbuf1[125:84]; |
6'b000111: insn <= 42'h37800000000; |
endcase |
end |
|
662,7 → 671,7
wire [64:13] tgout; |
assign tgout = {tvalid[pc[12:6]],tmem[pc[12:6]]}; |
assign ihit = (tgout=={1'b1,ppc[63:13]}); |
assign ibufrdy = ibuftag==ppc[63:4]; |
assign ibufrdy = ibuftag0==ppc[63:4] || ibuftag1==ppc[63:4]; |
|
//----------------------------------------------------------------------------- |
// Data Cache |
677,18 → 686,7
reg [31:0] ddat; |
reg wr_dcache; |
|
// cache RAM 16Kb |
/*Raptor64_dcache_ram u10 |
( |
.clk(clk), |
.wr(dcaccess ? wr_dcache : wrhit ? (dram_bus ? wr_en: we_o): 1'b0), |
.sel(dcaccess ? 4'b1111 : wrhit ? ~wr_mask : 4'b0000), |
.wadr(dcaccess ? dadr_o[13:2] : wr_addr[13:2]), |
.i(dcaccess ? ddat : wr_data), |
.radr(pea[13:3]), |
.o(cdat) |
); |
*/ |
// cache RAM 32Kb |
Raptor64_dcache_ram u10 |
( |
.clka(clk), // input clka |
698,7 → 696,7
.dina(dcaccess ? dat_i : dat_o), // input [63 : 0] dina |
|
.clkb(~clk), // input clkb |
.addrb(adr_o[14:3]), // input [11 : 0] addrb |
.addrb(pea[14:3]), // input [11 : 0] addrb |
.doutb(cdat) // output [63 : 0] doutb |
); |
|
715,23 → 713,6
.addrb({1'b0,pea[14:6]}), // input [9 : 0] addrb |
.doutb(dtgout) // output [48 : 0] doutb |
); |
// tag ram |
//syncRam512x64_1rw1r u11 |
//( |
// .wrst(1'b0), |
// .wclk(clk), |
// .wce(adr_o[4:2]==3'b111), |
// .we(ack_i), |
// .wadr(adr_o[14:5]), |
// .i({14'h3FFF,dadr_o[63:14]}), |
// .wo(), |
// |
// .rrst(1'b0), |
// .rclk(~clk), |
// .rce(1'b1), |
// .radr(pea[13:5]), |
// .ro({dtign,dtgout}) |
//); |
|
assign dhit = (dtgout=={1'b1,pea[63:15]}); |
|
739,7 → 720,7
//----------------------------------------------------------------------------- |
|
reg [64:0] xData; |
wire xisCacheElement = xData[63:52] != 12'hFFD && xData[63:52]!=12'hFFF; |
wire xisCacheElement = (xData[63:52] != 12'hFFD && xData[63:52]!=12'hFFF) && dcache_on; |
reg m1IsCacheElement; |
|
reg nopI; |
748,7 → 729,6
wire [6:0] xFunc = xIR[6:0]; |
wire [6:0] iOpcode = insn[41:35]; |
wire [6:0] xOpcode = xIR[41:35]; |
wire [6:0] dOpcode = dIR[41:35]; |
reg [6:0] m1Opcode,m2Opcode; |
reg [6:0] m1Func,m2Func; |
reg [63:0] m1Data,m2Data,wData,tData; |
932,13 → 912,26
end |
endfunction |
|
function [5:0] popcnt36; |
input [35:0] a; |
begin |
popcnt36 = popcnt6(a[5:0]) + |
popcnt6(a[11:6]) + |
popcnt6(a[17:12]) + |
popcnt6(a[23:18]) + |
popcnt6(a[29:24]) + |
popcnt6(a[35:30]); |
end |
endfunction |
|
wire [63:0] jmp_tgt = dOpcode[6:4]==`IMM ? {dIR[26:0],insn[34:0],2'b00} : {pc[63:37],insn[34:0],2'b00}; |
|
//----------------------------------------------------------------------------- |
// Stack for return address predictor |
//----------------------------------------------------------------------------- |
`ifdef RAS_PREDICTION |
reg [63:0] ras [63:0]; // return address stack, return predictions |
reg [5:0] ras_sp; |
reg [5:0] ras_sp; // stack pointer |
`endif |
`ifdef BTB |
reg [63:0] btb [63:0]; // branch target buffer |
979,7 → 972,7
wire [1:0] bht_ibits = branch_history_table[bht_ra2]; |
wire predict_taken = bht_ibits==2'd0 || bht_ibits==2'd1; |
|
wire isxBranchI = (xOpcode==`BRAI || xOpcode==`BRNI || xOpcode==`BEQI || xOpcode==`BNEI || |
wire isxBranchI = (xOpcode==`BEQI || xOpcode==`BNEI || |
xOpcode==`BLTI || xOpcode==`BLEI || xOpcode==`BGTI || xOpcode==`BGEI || |
xOpcode==`BLTUI || xOpcode==`BLEUI || xOpcode==`BGTUI || xOpcode==`BGEUI) |
; |
1044,6 → 1037,7
`BOR: takb = !aeqz || !beqz; |
`BAND: takb = !aeqz && !beqz; |
`BNR: takb = !rsf; |
`LOOP: takb = !beqz; |
`BEQR: takb = eq; |
`BNER: takb = !eq; |
`BLTR: takb = lt; |
1056,8 → 1050,6
`BGEUR: takb = !ltu; |
default: takb = 1'b0; |
endcase |
`BRAI: takb = 1'b1; |
`BRNI: takb = 1'b0; |
`BEQI: takb = eqi; |
`BNEI: takb = !eqi; |
`BLTI: takb = lti; |
1157,8 → 1149,9
shfto or masko or bcdaddo or bcdsubo or fpLooOut or fpZLOut |
`ifdef TLB |
or Wired or Index or Random or TLBPhysPage0 or TLBPhysPage1 or TLBVirtPage or TLBASID or |
PageTableAddr or BadVAddr or ASID or TLBPageMask |
PageTableAddr or BadVAddr or ASID or TLBPageMask |
`endif |
or ASID or EPC or mutex_gate or IPC or CauseCode or TBA or xAXC or nonICacheSeg or rm |
) |
casex(xOpcode) |
`R: |
1167,6 → 1160,7
`NOT: xData = ~|a; |
`NEG: xData = -a; |
`ABS: xData = a[63] ? -a : a; |
`MOV: xData = a; |
`SQRT: xData = sqrt_out; |
`SWAP: xData = {a[31:0],a[63:32]}; |
|
1214,10 → 1208,12
`ASID: xData = ASID; |
`Tick: xData = tick; |
`EPC: xData = EPC; |
`IPC: xData = IPC; |
`CauseCode: xData = CauseCode; |
`TBA: xData = TBA; |
`AXC: xData = xAXC; |
`NON_ICACHE_SEG: xData = nonICacheSeg; |
`FPCR: xData = {rm,30'd0}; |
default: xData = 65'd0; |
endcase |
`OMG: xData = mutex_gate[a[5:0]]; |
1291,6 → 1287,11
`BFCHG: begin for (n = 0; n < 64; n = n + 1) xData[n] = masko[n] ? ~b[n] : b[n]; xData[64] = 1'b0; end |
default: xData = 65'd0; |
endcase |
`BTRR: |
case(xIR[4:0]) |
`LOOP: xData = b - 64'd1; |
default: xData = 64'd0; |
endcase |
`SETLO: xData = {{32{xIR[31]}},xIR[31:0]}; |
`SETHI: xData = {xIR[31:0],a[31:0]}; |
`ADDI: xData = a + imm; |
1320,19 → 1321,19
xData = a + imm; |
`OUTB,`OUTC,`OUTH,`OUTW: |
xData = a + imm; |
`LW,`LH,`LC,`LB,`LHU,`LCU,`LBU,`LWR: |
`LW,`LH,`LC,`LB,`LHU,`LCU,`LBU,`LWR,`LF,`LFD: |
xData = a + imm; |
`SW,`SH,`SC,`SB,`SWC: |
`SW,`SH,`SC,`SB,`SWC,`SF,`SFD: |
xData = a + imm; |
`MEMNDX: |
xData = a + b + imm; |
`BEQ,`BNE,`BLT,`BLE,`BGT,`BGE,`BLTU,`BLEU,`BGTU,`BGEU,`BOR,`BAND: |
xData = 64'd0; |
`SM: xData = a + {popcnt36(xIR[31:0]),3'b000}; |
`LM: xData = a + {popcnt36(xIR[31:0]),3'b000}; |
`TRAPcc: xData = fnIncPC(xpc); |
`TRAPcci: xData = fnIncPC(xpc); |
`CALL: xData = fnIncPC(xpc); |
`JAL: xData = xpc + {xIR[29:25],2'b00}; |
`RET: xData = a + {imm,2'b00}; |
`RET: xData = a + imm; |
`FPLOO: xData = fpLooOut; |
`FPZL: xData = fpZLOut; |
default: xData = 65'd0; |
1357,11 → 1358,12
wire xIsLoad = |
xOpcode==`LW || xOpcode==`LH || xOpcode==`LB || xOpcode==`LWR || |
xOpcode==`LHU || xOpcode==`LBU || |
xOpcode==`LC || xOpcode==`LCU || |
xOpcode==`INW || xOpcode==`INB || xOpcode==`INH || xOpcode==`INCH |
xOpcode==`LC || xOpcode==`LCU || xOpcode==`LM || |
xOpcode==`LF || xOpcode==`LFD |
; |
wire xIsStore = |
xOpcode==`SW || xOpcode==`SH || xOpcode==`SB || xOpcode==`SC || xOpcode==`SWC || |
xOpcode==`SW || xOpcode==`SH || xOpcode==`SB || xOpcode==`SC || xOpcode==`SWC || xOpcode==`SM || |
xOpcode==`SF || xOpcode==`SFD || |
xOpcode==`OUTW || xOpcode==`OUTH || xOpcode==`OUTB || xOpcode==`OUTC |
; |
wire xIsSWC = xOpcode==`SWC; |
1377,15 → 1379,17
// ; |
wire m1IsLoad = |
m1Opcode==`LW || m1Opcode==`LH || m1Opcode==`LB || m1Opcode==`LC || m1Opcode==`LWR || |
m1Opcode==`LHU || m1Opcode==`LBU || m1Opcode==`LCU |
m1Opcode==`LHU || m1Opcode==`LBU || m1Opcode==`LCU || m1Opcode==`LM || |
m1Opcode==`LF || m1Opcode==`LFD |
; |
wire m1IsIn = |
m1Opcode==`INW || m1Opcode==`INH || m1Opcode==`INCH || m1Opcode==`INB |
; |
wire m2IsInW = m2Opcode==`INW; |
wire m1IsStore = |
m1Opcode==`SW || m1Opcode==`SH || m1Opcode==`SB || m1Opcode==`SC || m1Opcode==`SWC |
; |
wire m1IsStore = m1Opcode==`SW || m1Opcode==`SH || m1Opcode==`SB || m1Opcode==`SC || m1Opcode==`SWC || m1Opcode==`SM || |
m1Opcode==`SF || m1Opcode==`SFD; |
wire m2IsStore = m2Opcode==`SW || m2Opcode==`SWC || m2Opcode==`SH || m2Opcode==`SC || m2Opcode==`SB || m2Opcode==`SM || |
m2Opcode==`SF || m2Opcode==`SFD; |
wire xIsIO = |
xIsIn || |
xOpcode==`OUTW || xOpcode==`OUTH || xOpcode==`OUTC || xOpcode==`OUTB |
1396,10 → 1400,9
; |
wire m2IsLoad = |
m2Opcode==`LW || m2Opcode==`LH || m2Opcode==`LB || m2Opcode==`LC || m2Opcode==`LWR || |
m2Opcode==`LHU || m2Opcode==`LBU || m2Opcode==`LCU |
m2Opcode==`LHU || m2Opcode==`LBU || m2Opcode==`LCU || m2Opcode==`LM || |
m2Opcode==`LF || m2Opcode==`LFD |
; |
wire m2IsStore = |
m2Opcode==`SW || m2Opcode==`SWC || m2Opcode==`SH || m2Opcode==`SC || m2Opcode==`SB; |
|
wire xIsFPLoo = xOpcode==`FPLOO; |
|
1414,7 → 1417,9
(((m2IsLoad) && ((m2Rt==dRa)||(m2Rt==dRb)||(m2Rt==dRt)))) |
; |
wire StallX = xneedBus & (m1needBus|m2needBus|icaccess|dcaccess); |
wire StallM1 = m1needBus & (m2needBus|icaccess|dcaccess); |
wire StallM1 = (m1needBus & (m2needBus|icaccess|dcaccess)) || |
( m1IsLoad & m1IsCacheElement & m2IsStore) // wait for a preceding store to complete |
; |
wire StallM2 = icaccess|dcaccess; |
|
wire advanceT = !resetA; |
1443,7 → 1448,7
m2Opcode==`NOPI // and the pipeline is free of memory-ops |
; |
// Since IMM is "sticky" we have to check for it. |
wire triggerICacheLoad = (ICacheAct ? !ihit : !ibufrdy) && !triggerDCacheLoad && // There is a miss |
wire triggerICacheLoad1 = ICacheAct && !ihit && !triggerDCacheLoad && // There is a miss |
!(icaccess | dcaccess) && // caches are not active |
(dOpcode==`NOPI || dOpcode[6:4]==`IMM) && // and the pipeline is flushed |
(xOpcode==`NOPI || xOpcode[6:4]==`IMM) && |
1450,6 → 1455,11
m1Opcode==`NOPI && |
m2Opcode==`NOPI |
; |
wire triggerICacheLoad2 = (!ICacheAct && !ibufrdy) && !triggerDCacheLoad && // There is a miss |
!(icaccess | dcaccess) // caches are not active |
; |
wire triggerICacheLoad = triggerICacheLoad1 | triggerICacheLoad2; |
|
wire EXexception_pending = ovr_error || dbz_error || priv_violation || xOpcode==`TRAPcci || xOpcode==`TRAPcc; |
`ifdef TLB |
wire M1exception_pending = advanceM1 & (m1IsLoad|m1IsStore) & DTLBMiss; |
1458,11 → 1468,79
`endif |
wire exception_pending = EXexception_pending | M1exception_pending; |
|
wire xWillLoadStore = (xIsLoad||xIsStore) & advanceX; |
wire stallCacheLoad = xWillLoadStore; |
|
reg prev_nmi,nmi_edge; |
|
always @(dOpcode or dIR) |
begin |
ndIR <= dIR; |
if ((dOpcode==`LM || dOpcode==`SM) && dIR[31:0]!=32'd0) begin |
$display("LM/SM %h",dIR[31:0]); |
if (dIR[0]) |
ndIR[0] <= 1'b0; |
else if (dIR[1]) |
ndIR[1] <= 1'b0; |
else if (dIR[2]) |
ndIR[2] <= 1'b0; |
else if (dIR[3]) |
ndIR[3] <= 1'b0; |
else if (dIR[4]) |
ndIR[4] <= 1'b0; |
else if (dIR[5]) |
ndIR[5] <= 1'b0; |
else if (dIR[6]) |
ndIR[6] <= 1'b0; |
else if (dIR[7]) |
ndIR[7] <= 1'b0; |
else if (dIR[8]) |
ndIR[8] <= 1'b0; |
else if (dIR[9]) |
ndIR[9] <= 1'b0; |
else if (dIR[10]) |
ndIR[10] <= 1'b0; |
else if (dIR[11]) |
ndIR[11] <= 1'b0; |
else if (dIR[12]) |
ndIR[12] <= 1'b0; |
else if (dIR[13]) |
ndIR[13] <= 1'b0; |
else if (dIR[14]) |
ndIR[14] <= 1'b0; |
else if (dIR[15]) |
ndIR[15] <= 1'b0; |
else if (dIR[16]) |
ndIR[16] <= 1'b0; |
else if (dIR[17]) |
ndIR[17] <= 1'b0; |
else if (dIR[18]) |
ndIR[18] <= 1'b0; |
else if (dIR[19]) |
ndIR[19] <= 1'b0; |
else if (dIR[20]) |
ndIR[20] <= 1'b0; |
else if (dIR[21]) |
ndIR[21] <= 1'b0; |
else if (dIR[22]) |
ndIR[22] <= 1'b0; |
else if (dIR[23]) |
ndIR[23] <= 1'b0; |
else if (dIR[24]) |
ndIR[24] <= 1'b0; |
else if (dIR[25]) |
ndIR[25] <= 1'b0; |
else if (dIR[26]) |
ndIR[26] <= 1'b0; |
else if (dIR[27]) |
ndIR[27] <= 1'b0; |
else if (dIR[28]) |
ndIR[28] <= 1'b0; |
else if (dIR[29]) |
ndIR[29] <= 1'b0; |
else if (dIR[30]) |
ndIR[30] <= 1'b0; |
else |
ndIR[31] <= 1'b0; |
end |
end |
|
//--------------------------------------------------------- |
// Register file. |
1500,7 → 1578,20
|
reg m1clkoff,m2clkoff,m3clkoff,m4clkoff,wclkoff; |
reg dFip,xFip,m1Fip,m2Fip,m3Fip,m4Fip,wFip; |
reg cyc1; |
|
reg [63:0] nxt_c; |
always @(dRc or xData or m1Data or m2Data or wData or tData or rfoc) |
casex(dRc) |
9'bxxxx00000: nxt_c <= 64'd0; |
xRt: nxt_c <= xData; |
m1Rt: nxt_c <= m1Data; |
m2Rt: nxt_c <= m2Data; |
wRt: nxt_c <= wData; |
tRt: nxt_c <= tData; |
default: nxt_c <= rfoc; |
endcase |
|
always @(posedge clk) |
if (rst_i) begin |
bte_o <= 2'b00; |
1573,13 → 1664,17
`ifndef BRANCH_PREDICTION_SIMPLE |
gbl_branch_hist <= 3'b000; |
`endif |
dcache_on <= 1'b0; |
ICacheOn <= 1'b0; |
ibuftag <= 64'h0; |
ibuftag0 <= 64'h0; |
ibuftag1 <= 64'h0; |
m1IsCacheElement <= 1'b0; |
dtinit <= 1'b1; |
`ifdef RAS_PREDICTION |
ras_sp <= 6'd63; |
`endif |
im <= 1'b1; |
im1 <= 1'b1; |
end |
else begin |
|
1610,11 → 1705,13
nmi_edge <= 1'b1; |
|
|
`ifdef ADDRESS_RESERVATION |
// A store by any device in the system to a reserved address blcok |
// clears the reservation. |
|
if (sys_adv && sys_adr[63:5]==resv_address) |
resv_address <= 59'd0; |
`endif |
|
//--------------------------------------------------------- |
// TRAILER: |
1686,7 → 1783,7
m2extype <= `EX_NON; |
if (m2extype==`EX_NON) begin |
case(m2Opcode) |
`SH,`SC,`SB,`SW,`SWC: |
`SH,`SC,`SB,`SW,`SWC,`SM,`SF,`SFD: |
begin |
cyc_o <= 1'b0; |
stb_o <= 1'b0; |
1693,7 → 1790,7
we_o <= 1'b0; |
sel_o <= 4'h0; |
end |
`LH: |
`LH,`LF: |
begin |
cyc_o <= 1'b0; |
stb_o <= 1'b0; |
1700,7 → 1797,7
sel_o <= 8'h00; |
wData <= sel_o[7] ? {{32{dat_i[63]}},dat_i[63:32]}:{{32{dat_i[31]}},dat_i[31: 0]}; |
end |
`LW,`LWR: |
`LW,`LWR,`LM,`LFD: |
begin |
cyc_o <= 1'b0; |
stb_o <= 1'b0; |
1942,7 → 2039,7
m2Opcode <= `NOPI; |
end |
|
`LW: |
`LW,`LM,`LFD: |
if (!m1IsCacheElement) begin |
cyc_o <= 1'b1; |
stb_o <= 1'b1; |
1954,7 → 2051,7
m2Opcode <= `NOPI; |
m2Data <= cdat; |
end |
|
`ifdef ADDRESS_RESERVATION |
`LWR: |
if (!m1IsCacheElement) begin |
rsv_o <= 1'b1; |
1971,8 → 2068,8
rsv_o <= 1'b1; |
resv_address <= pea[63:5]; |
end |
|
`LH: |
`endif |
`LH,`LF: |
if (!m1IsCacheElement) begin |
cyc_o <= 1'b1; |
stb_o <= 1'b1; |
2018,6 → 2115,7
m2Addr <= {pea[63:1],1'b0}; |
end |
else if (dhit) begin |
$display("dhit=1, cdat=%h",cdat); |
m2Opcode <= `NOPI; |
case(pea[2:1]) |
2'd0: m2Data <= {{48{cdat[15]}},cdat[15:0]}; |
2113,8 → 2211,9
endcase |
end |
|
`SW: |
`SW,`SM,`SFD: |
begin |
$display("SW/SM"); |
m2Addr <= {pea[63:3],3'b000}; |
wrhit <= dhit; |
`ifdef TLB |
2121,8 → 2220,10
if (!m1UnmappedDataArea & !q[3]) |
ITLBD[{q[2:0],pea[15:13]}] <= 1'b1; |
`endif |
`ifdef ADDRESS_RESERVATION |
if (resv_address==pea[63:5]) |
resv_address <= 59'd0; |
`endif |
cyc_o <= 1'b1; |
stb_o <= 1'b1; |
we_o <= 1'b1; |
2131,7 → 2232,7
dat_o <= m1Data; |
end |
|
`SH: |
`SH,`SF: |
begin |
wrhit <= dhit; |
m2Addr <= {pea[63:2],2'b00}; |
2139,8 → 2240,10
if (!m1UnmappedDataArea & !q[3]) |
ITLBD[{q[2:0],pea[15:13]}] <= 1'b1; |
`endif |
`ifdef ADDRESS_RESERVATION |
if (resv_address==pea[63:5]) |
resv_address <= 59'd0; |
`endif |
cyc_o <= 1'b1; |
stb_o <= 1'b1; |
we_o <= 1'b1; |
2158,8 → 2261,10
if (!m1UnmappedDataArea & !q[3]) |
ITLBD[{q[2:0],pea[15:13]}] <= 1'b1; |
`endif |
`ifdef ADDRESS_RESERVATION |
if (resv_address==pea[63:5]) |
resv_address <= 59'd0; |
`endif |
cyc_o <= 1'b1; |
stb_o <= 1'b1; |
we_o <= 1'b1; |
2177,8 → 2282,10
begin |
wrhit <= dhit; |
m2Addr <= {pea[63:2],2'b00}; |
`ifdef ADDRESS_RESERVATION |
if (resv_address==pea[63:5]) |
resv_address <= 59'd0; |
`endif |
`ifdef TLB |
if (!m1UnmappedDataArea & !q[3]) |
ITLBD[{q[2:0],pea[15:13]}] <= 1'b1; |
2200,6 → 2307,7
dat_o <= {8{m1Data[7:0]}}; |
end |
|
`ifdef ADDRESS_RESERVATION |
`SWC: |
begin |
rsf <= 1'b0; |
2222,6 → 2330,7
else |
m2Opcode <= `NOPI; |
end |
`endif |
endcase |
end |
end |
2265,6 → 2374,8
`WAIT: m1clkoff <= 1'b1; |
`ICACHE_ON: ICacheOn <= 1'b1; |
`ICACHE_OFF: ICacheOn <= 1'b0; |
`DCACHE_ON: dcache_on <= 1'b1; |
`DCACHE_OFF: dcache_on <= 1'b0; |
`ifdef TLB |
`TLBP: ea <= TLBVirtPage; |
`TLBR,`TLBWI: |
2303,6 → 2414,8
`TBA: TBA <= {a[63:12],12'h000}; |
`AXC: AXC <= a[3:0]; |
`NON_ICACHE_SEG: nonICacheSeg <= a[63:32]; |
`FPCR: rm <= a[31:30]; |
`IPC: IPC <= a; |
default: ; |
endcase |
`OMG: mutex_gate[a[5:0]] <= 1'b1; |
2404,7 → 2517,8
adr_o <= xData; |
dat_o <= {8{b[7:0]}}; |
end |
`LB,`LBU,`LC,`LCU,`LH,`LHU,`LW,`LWR,`SW,`SH,`SC,`SB,`SWC: |
`LB,`LBU,`LC,`LCU,`LH,`LHU,`LW,`LWR,`LF,`LFD,`LM, |
`SW,`SH,`SC,`SB,`SWC,`SF,`SFD,`SM: |
begin |
m1Data <= b; |
ea <= xData; |
2439,13 → 2553,16
xhwxtype <= dhwxtype; |
xFip <= dFip; |
xextype <= dextype; |
xIR <= dIR; |
if (dOpcode==`R && dFunc==`MYST) |
xIR <= nxt_c; |
else |
xIR <= dIR; |
xpc <= dpc; |
xpcv <= dpcv; |
xbranch_taken <= dbranch_taken; |
dbranch_taken <= 1'b0; |
dextype <= `EX_NON; |
if (dOpcode[6:4]!=`IMM) // IMM is "sticky" |
if (dOpcode[6:4]!=`IMM && dOpcode!=`LM && dOpcode!=`SM) // IMM is "sticky" |
dIR <= `NOP_INSN; |
dRa <= 9'd0; |
dRb <= 9'd0; |
2474,23 → 2591,24
`RORI: b <= {58'd0,~dIR[24:19]+6'd1}; |
default: b <= {58'd0,dIR[24:19]}; |
endcase |
casex(dRc) |
9'bxxxx00000: c <= 64'd0; |
xRt: c <= xData; |
m1Rt: c <= m1Data; |
m2Rt: c <= m2Data; |
wRt: c <= wData; |
tRt: c <= tData; |
default: c <= rfoc; |
endcase |
c <= nxt_c; |
|
// Set the target register |
casex(dOpcode) |
`R: |
case(dFunc) |
`MYST: xRt <= {dAXC,dIR[19:15]}; |
default: xRt <= {dAXC,dIR[29:25]}; |
endcase |
`SETLO: xRt <= {dAXC,dIR[36:32]}; |
`SETHI: xRt <= {dAXC,dIR[36:32]}; |
`RR: xRt <= {dAXC,dIR[24:20]}; |
`BTRI: xRt <= 9'd0; |
`BTRR: xRt <= 9'd0; |
`BTRR: |
case(dIR[4:0]) |
`LOOP: xRt <= {AXC,dIR[29:25]}; |
default: xRt <= 9'd0; |
endcase |
`TRAPcc: xRt <= 9'd0; |
`TRAPcci: xRt <= 9'd0; |
`JMP: xRt <= 9'd00; |
2498,15 → 2616,54
`RET: xRt <= {dAXC,dIR[24:20]}; |
`MEMNDX: |
case(dFunc) |
`SW,`SH,`SC,`SB,`OUTW,`OUTH,`OUTC,`OUTB: |
`SW,`SH,`SC,`SB,`SF,`SFD, |
`OUTW,`OUTH,`OUTC,`OUTB: |
xRt <= 9'd0; |
default: xRt <= {dAXC,dIR[24:20]}; |
endcase |
`SW,`SH,`SC,`SB,`OUTW,`OUTH,`OUTC,`OUTB: |
`SW,`SH,`SC,`SB,`SF,`SFD, // but not SWC! |
`OUTW,`OUTH,`OUTC,`OUTB: |
xRt <= 9'd0; |
`NOPI: xRt <= 9'd0; |
`BEQI,`BNEI,`BLTI,`BLEI,`BGTI,`BGEI,`BLTUI,`BLEUI,`BGTUI,`BGEUI: |
xRt <= 9'd0; |
`SM: xRt <= 9'd0; |
`LM: |
casex(dIR[30:0]) |
31'bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1: xRt <= {AXC,5'd1}; |
31'bxxxxxxxxxxxxxxxxxxxxxxxxxxxxx10: xRt <= {AXC,5'd2}; |
31'bxxxxxxxxxxxxxxxxxxxxxxxxxxxx100: xRt <= {AXC,5'd3}; |
31'bxxxxxxxxxxxxxxxxxxxxxxxxxxx1000: xRt <= {AXC,5'd4}; |
31'bxxxxxxxxxxxxxxxxxxxxxxxxxx10000: xRt <= {AXC,5'd5}; |
31'bxxxxxxxxxxxxxxxxxxxxxxxxx100000: xRt <= {AXC,5'd6}; |
31'bxxxxxxxxxxxxxxxxxxxxxxxx1000000: xRt <= {AXC,5'd7}; |
31'bxxxxxxxxxxxxxxxxxxxxxxx10000000: xRt <= {AXC,5'd8}; |
31'bxxxxxxxxxxxxxxxxxxxxxx100000000: xRt <= {AXC,5'd9}; |
31'bxxxxxxxxxxxxxxxxxxxxx1000000000: xRt <= {AXC,5'd10}; |
31'bxxxxxxxxxxxxxxxxxxxx10000000000: xRt <= {AXC,5'd11}; |
31'bxxxxxxxxxxxxxxxxxxx100000000000: xRt <= {AXC,5'd12}; |
31'bxxxxxxxxxxxxxxxxxx1000000000000: xRt <= {AXC,5'd13}; |
31'bxxxxxxxxxxxxxxxxx10000000000000: xRt <= {AXC,5'd14}; |
31'bxxxxxxxxxxxxxxxx100000000000000: xRt <= {AXC,5'd15}; |
31'bxxxxxxxxxxxxxxx1000000000000000: xRt <= {AXC,5'd16}; |
31'bxxxxxxxxxxxxxx10000000000000000: xRt <= {AXC,5'd17}; |
31'bxxxxxxxxxxxxx100000000000000000: xRt <= {AXC,5'd18}; |
31'bxxxxxxxxxxxx1000000000000000000: xRt <= {AXC,5'd19}; |
31'bxxxxxxxxxxx10000000000000000000: xRt <= {AXC,5'd20}; |
31'bxxxxxxxxxx100000000000000000000: xRt <= {AXC,5'd21}; |
31'bxxxxxxxxx1000000000000000000000: xRt <= {AXC,5'd22}; |
31'bxxxxxxxx10000000000000000000000: xRt <= {AXC,5'd23}; |
31'bxxxxxxx100000000000000000000000: xRt <= {AXC,5'd24}; |
31'bxxxxxx1000000000000000000000000: xRt <= {AXC,5'd25}; |
31'bxxxxx10000000000000000000000000: xRt <= {AXC,5'd26}; |
31'bxxxx100000000000000000000000000: xRt <= {AXC,5'd27}; |
31'bxxx1000000000000000000000000000: xRt <= {AXC,5'd28}; |
31'bxx10000000000000000000000000000: xRt <= {AXC,5'd29}; |
31'bx100000000000000000000000000000: xRt <= {AXC,5'd30}; |
31'b1000000000000000000000000000000: xRt <= {AXC,5'd31}; |
default: xRt <= 9'h000; |
endcase |
|
default: xRt <= {dAXC,dIR[29:25]}; |
endcase |
if (dOpcode[6:4]==`IMM) |
2524,7 → 2681,7
`ANDI: imm <= {39'h7FFFFFFFFF,dIR[24:0]}; |
`ORI: imm <= {39'h0000000000,dIR[24:0]}; |
`XORI: imm <= {39'h0000000000,dIR[24:0]}; |
`RET: imm <= {44'h00000000000,dIR[19:0]}; |
`RET: imm <= {41'h00000000,dIR[19:0],3'b000}; |
`MEMNDX: imm <= {{51{dIR[19]}},dIR[19:7]}; |
default: imm <= {{39{dIR[24]}},dIR[24:0]}; |
endcase |
2536,7 → 2693,9
`CLI: im <= 1'b0; |
endcase |
endcase |
|
|
if ((dOpcode==`SM || dOpcode==`LM) && dIR[31:0]!=32'd0) |
dIR <= ndIR; |
end |
|
//--------------------------------------------------------- |
2549,7 → 2708,7
if (advanceI) begin |
dAXC <= AXC; |
dextype <= `EX_NON; |
if (nmi_edge & !StatusHWI) begin |
if (nmi_edge & !StatusHWI & !im1) begin |
$display("*****************"); |
$display("NMI edge detected"); |
$display("*****************"); |
2559,7 → 2718,7
dIR <= `NOP_INSN; |
dextype <= `EX_NMI; |
end |
else if (irq_i & !im & !StatusHWI) begin |
else if (irq_i & !im & !StatusHWI & !im1) begin |
im <= 1'b1; |
StatusHWI <= 1'b1; |
dhwxtype <= 2'b10; |
2576,7 → 2735,16
dIR <= `NOP_INSN; |
`endif |
else begin |
dIR <= insn; |
if ((iOpcode==`SM || iOpcode==`LM) && insn[31:0]!=32'd0) |
im1 <= 1'b1; |
else |
im1 <= 1'b0; |
if ((iOpcode==`SM || iOpcode==`LM) && insn[31:0]==32'd0) begin |
dIR <= `NOP_INSN; |
pc <= fnIncPC(pc); |
end |
else |
dIR <= insn; |
`include "insn_dumpsc.v" |
end |
nopI <= 1'b0; |
2584,13 → 2752,51
dpc <= pc; |
dpcv <= 1'b1; |
end |
dRb <= {AXC,insn[29:25]}; |
dRc <= {AXC,insn[24:20]}; |
casex(iOpcode) |
`SETLO: dRa <= {AXC,insn[36:32]}; |
`SETHI: dRa <= {AXC,insn[36:32]}; |
`SM,`LM: |
begin |
dRa <= {AXC,1'b1,insn[34:31]}; |
casex(insn[30:0]) |
31'bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1: dRb <= {AXC,5'd1}; |
31'bxxxxxxxxxxxxxxxxxxxxxxxxxxxxx10: dRb <= {AXC,5'd2}; |
31'bxxxxxxxxxxxxxxxxxxxxxxxxxxxx100: dRb <= {AXC,5'd3}; |
31'bxxxxxxxxxxxxxxxxxxxxxxxxxxx1000: dRb <= {AXC,5'd4}; |
31'bxxxxxxxxxxxxxxxxxxxxxxxxxx10000: dRb <= {AXC,5'd5}; |
31'bxxxxxxxxxxxxxxxxxxxxxxxxx100000: dRb <= {AXC,5'd6}; |
31'bxxxxxxxxxxxxxxxxxxxxxxxx1000000: dRb <= {AXC,5'd7}; |
31'bxxxxxxxxxxxxxxxxxxxxxxx10000000: dRb <= {AXC,5'd8}; |
31'bxxxxxxxxxxxxxxxxxxxxxx100000000: dRb <= {AXC,5'd9}; |
31'bxxxxxxxxxxxxxxxxxxxxx1000000000: dRb <= {AXC,5'd10}; |
31'bxxxxxxxxxxxxxxxxxxxx10000000000: dRb <= {AXC,5'd11}; |
31'bxxxxxxxxxxxxxxxxxxx100000000000: dRb <= {AXC,5'd12}; |
31'bxxxxxxxxxxxxxxxxxx1000000000000: dRb <= {AXC,5'd13}; |
31'bxxxxxxxxxxxxxxxxx10000000000000: dRb <= {AXC,5'd14}; |
31'bxxxxxxxxxxxxxxxx100000000000000: dRb <= {AXC,5'd15}; |
31'bxxxxxxxxxxxxxxx1000000000000000: dRb <= {AXC,5'd16}; |
31'bxxxxxxxxxxxxxx10000000000000000: dRb <= {AXC,5'd17}; |
31'bxxxxxxxxxxxxx100000000000000000: dRb <= {AXC,5'd18}; |
31'bxxxxxxxxxxxx1000000000000000000: dRb <= {AXC,5'd19}; |
31'bxxxxxxxxxxx10000000000000000000: dRb <= {AXC,5'd20}; |
31'bxxxxxxxxxx100000000000000000000: dRb <= {AXC,5'd21}; |
31'bxxxxxxxxx1000000000000000000000: dRb <= {AXC,5'd22}; |
31'bxxxxxxxx10000000000000000000000: dRb <= {AXC,5'd23}; |
31'bxxxxxxx100000000000000000000000: dRb <= {AXC,5'd24}; |
31'bxxxxxx1000000000000000000000000: dRb <= {AXC,5'd25}; |
31'bxxxxx10000000000000000000000000: dRb <= {AXC,5'd26}; |
31'bxxxx100000000000000000000000000: dRb <= {AXC,5'd27}; |
31'bxxx1000000000000000000000000000: dRb <= {AXC,5'd28}; |
31'bxx10000000000000000000000000000: dRb <= {AXC,5'd29}; |
31'bx100000000000000000000000000000: dRb <= {AXC,5'd30}; |
31'b1000000000000000000000000000000: dRb <= {AXC,5'd31}; |
default: dRb <= {AXC,5'd0}; |
endcase |
end |
default: dRa <= {AXC,insn[34:30]}; |
endcase |
dRb <= {AXC,insn[29:25]}; |
dRc <= {AXC,insn[24:20]}; |
`ifdef TLB |
if (ITLBMiss) begin |
$display("TLB miss on instruction fetch."); |
2604,7 → 2810,11
`endif |
begin |
dbranch_taken <= 1'b0; |
pc <= fnIncPC(pc); |
if ((iOpcode==`LM || iOpcode==`SM) && insn[31:0]!=32'd0) |
; |
else begin |
pc <= fnIncPC(pc); |
end |
case(iOpcode) |
`MISC: |
case(iFunc) |
2639,7 → 2849,7
end |
`BTRR: |
case(insn[4:0]) |
`BEQ,`BNE,`BLT,`BLE,`BGT,`BGE,`BLTU,`BLEU,`BGTU,`BGEU,`BAND,`BOR,`BNR: |
`BEQ,`BNE,`BLT,`BLE,`BGT,`BGE,`BLTU,`BLEU,`BGTU,`BGEU,`BAND,`BOR,`BRA,`BNR,`BRN,`LOOP: |
if (predict_taken) begin |
// $display("Taking predicted branch: %h",{pc[63:4] + {{42{insn[24]}},insn[24:7]},insn[6:5],2'b00}); |
dbranch_taken <= 1'b1; |
2708,6 → 2918,9
`EXEC: |
begin |
pc <= fnIncPC(xpc); |
dRa <= b[34:30]; |
dRb <= b[29:25]; |
dRc <= b[24:20]; |
dIR <= b; |
xIR <= `NOP_INSN; |
xRt <= 9'd0; |
2719,7 → 2932,7
`BTRR: |
case(xIR[4:0]) |
// BEQ r1,r2,label |
`BEQ,`BNE,`BLT,`BLE,`BGT,`BGE,`BLTU,`BLEU,`BGTU,`BGEU,`BAND,`BOR,`BNR: |
`BEQ,`BNE,`BLT,`BLE,`BGT,`BGE,`BLTU,`BLEU,`BGTU,`BGEU,`BAND,`BOR,`BNR,`LOOP,`BRA,`BRN: |
if (!takb & xbranch_taken) begin |
$display("Taking mispredicted branch %h",fnIncPC(xpc)); |
pc <= fnIncPC(xpc); |
3072,12 → 3285,18
tmpbuf <= dat_i; |
end |
else begin |
insnbuf <= {dat_i,tmpbuf}; |
if (tick[0]) begin |
insnbuf0 <= {dat_i,tmpbuf}; |
ibuftag0 <= adr_o[63:4]; |
end |
else begin |
insnbuf1 <= {dat_i,tmpbuf}; |
ibuftag1 <= adr_o[63:4]; |
end |
cti_o <= 3'b000; // back to non-burst mode |
cyc_o <= 1'b0; |
stb_o <= 1'b0; |
icaccess <= 1'b0; |
ibuftag <= adr_o[63:4]; |
cstate <= IDLE; |
end |
end |
/raptor64/trunk/doc/Opcode Chart.docx
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream