RW & RS0 fix

tools update
This commit is contained in:
cxy004 2021-08-18 12:16:28 +08:00
parent 4fa6391bcb
commit 67ccb57eda
12 changed files with 445 additions and 244 deletions

View File

@ -15,7 +15,7 @@ module Controller (
inst[15:11],
5'b11111,
ctrl.RT,
{(~inst[29] & (inst[31] | inst[30]) | inst[29] & ~inst[30]), inst[26]},
{~inst[29] & (inst[31] | inst[30]) | inst[29] & ~inst[30], inst[26]},
ctrl.RD
);
@ -62,13 +62,11 @@ module Controller (
assign ctrl.MCtrl0.HW = ~inst[30] & ~inst[29] & ~inst[28] & ~inst[27] & ~inst[26] & inst[4] & (inst[3] | ~inst[1] & inst[0]);
assign ctrl.MCtrl0.LW = ~inst[30] & ~inst[29] & ~inst[28] & ~inst[27] & ~inst[26] & inst[4] & (inst[3] | inst[1] & inst[0]);
// assign ctrl.MCtrl0.HLS = HLS_t'({~inst[27] & ~inst[26] & (~inst[29] & ~inst[30] & ~inst[28] & inst[4] & inst[3] | inst[29] & inst[30]), ~inst[30] & inst[1], inst[0]});
assign ctrl.MCtrl0.HLS = HLS_t'({~inst[27] & ~inst[26] & (~inst[30] & ~inst[31] & ~inst[29] & ~inst[28] & inst[4] & inst[3] | inst[30] & inst[29]), ~inst[30] & inst[1], inst[0]});
assign ctrl.MCtrl0.C0D = inst[15:11];
// assign ctrl.MCtrl0.C0W = inst[30] & inst[23];
assign ctrl.MCtrl0.C0W = inst[30] & ~inst[29] & inst[23] & ~inst[3];
assign ctrl.MCtrl0.SEL = inst[2:0];
assign ctrl.MCtrl0.RS0 = RS0_t'({ctrl.DP1, inst[30], ~inst[29] & (inst[30] | ~inst[1])});
assign ctrl.MCtrl0.RS0 = RS0_t'({~inst[30] & (inst[29] | inst[26] | ~inst[4]), inst[30], ~inst[29] & (inst[30] | ~inst[1])});
assign ctrl.MCtrl1.MR = inst[31];
assign ctrl.MCtrl1.MWR = inst[29];
@ -78,6 +76,7 @@ module Controller (
assign ctrl.MCtrl1.TLBWI = inst[30] & ~inst[29] & inst[25] & ~inst[3] & inst[1];
assign ctrl.MCtrl1.TLBP = inst[30] & ~inst[4] & inst[3];
assign ctrl.WCtrl.RW = ctrl.RD != 5'b00000 & (~inst[30] & (~inst[29] & (inst[31] | ~inst[28] & (~inst[27] & (~inst[26] & (~inst[3] & (~inst[4] | ~inst[0]) | inst[3] & (inst[5] | ~inst[4] & ~inst[2] & inst[0])) | inst[26] & inst[20]) | inst[27] & inst[26])) | inst[29] & ~inst[31]) | inst[30] & ~inst[25] & ~inst[23]);
assign ctrl.WCtrl.RW = ctrl.RD != 5'b00000 & (~inst[30] & (~inst[29] & (inst[31] | ~inst[28] & (~inst[27] & (~inst[26] & (~inst[3] & (~inst[4] | ~inst[0]) | inst[3] & (inst[5] | ~inst[4] & ~inst[2] & inst[0])) | inst[26] & inst[20]) | inst[27] & inst[26])) | inst[29] & ~inst[31]) | inst[30] & (inst[29] | ~inst[25] & ~inst[23]));
// assign ctrl.WCtrl.RW = ctrl.RD != 5'b00000 & (~inst[30] & (~inst[29] & (inst[31] | ~inst[28] & (~inst[27] & (~inst[26] & (~inst[3] & (~inst[4] | ~inst[0]) | inst[3] & (inst[5] | ~inst[4] & ~inst[2] & inst[0])) | inst[26] & inst[20]) | inst[27] & inst[26])) | inst[29] & ~inst[31]) | inst[30] & ~inst[25] & ~inst[23]);
endmodule

View File

@ -482,28 +482,28 @@ module Datapath (
// Load -> C0
| D.IA.WCtrl.RW & D.IB.RT == D.IA.RD & D.IB.MCtrl0.C0W & ~D.IA.DP0
// Not Arith -> Store
| D.IA.WCtrl.RW & D.IB.RT == D.IA.RD & D.IB.MCtrl1.MWR & ~D.IA.MCtrl0.RS0[2]
| D.IA.WCtrl.RW & D.IB.RT == D.IA.RD & D.IB.MCtrl1.MWR & ~D.IA.DP1
// CP0 Execution Hazards
// Hazards Related to the TLB
| D.IA.MCtrl0.C0W & D.IB.MCtrl1.TLBR & D.IA.MCtrl0.C0D == C0_INDEX
| D.IA.MCtrl0.C0W & D.IB.MCtrl1.TLBWI & D.IA.MCtrl0.C0D == C0_ENTRYHI
| D.IA.MCtrl0.C0W & D.IB.MCtrl1.TLBWI & D.IA.MCtrl0.C0D == C0_ENTRYLO0
| D.IA.MCtrl0.C0W & D.IB.MCtrl1.TLBWI & D.IA.MCtrl0.C0D == C0_ENTRYLO1
| D.IA.MCtrl0.C0W & D.IB.MCtrl1.TLBWI & D.IA.MCtrl0.C0D == C0_INDEX
| D.IA.MCtrl0.C0W & D.IB.MCtrl1.TLBWI & D.IA.MCtrl0.C0D == C0_PAGEMASK
| E.I0.MCtrl.C0W & D.IB.MCtrl1.TLBP & E.I0.MCtrl.C0D == C0_ENTRYHI
| D.IA.MCtrl0.C0W & D.IB.MCtrl1.TLBP & D.IA.MCtrl0.C0D == C0_ENTRYHI
| D.IA.MCtrl0.C0W & D.IB.MCtrl1.MR & D.IA.MCtrl0.C0D == C0_ENTRYHI
| D.IA.MCtrl0.C0W & D.IB.MCtrl1.TLBR & D.IA.MCtrl0.C0D == C0_INDEX
| D.IA.MCtrl0.C0W & D.IB.MCtrl1.TLBWI & D.IA.MCtrl0.C0D == C0_ENTRYHI
| D.IA.MCtrl0.C0W & D.IB.MCtrl1.TLBWI & D.IA.MCtrl0.C0D == C0_ENTRYLO0
| D.IA.MCtrl0.C0W & D.IB.MCtrl1.TLBWI & D.IA.MCtrl0.C0D == C0_ENTRYLO1
| D.IA.MCtrl0.C0W & D.IB.MCtrl1.TLBWI & D.IA.MCtrl0.C0D == C0_INDEX
| D.IA.MCtrl0.C0W & D.IB.MCtrl1.TLBWI & D.IA.MCtrl0.C0D == C0_PAGEMASK
| E.I0.MCtrl.C0W & D.IB.MCtrl1.TLBP & E.I0.MCtrl.C0D == C0_ENTRYHI
| D.IA.MCtrl0.C0W & D.IB.MCtrl1.TLBP & D.IA.MCtrl0.C0D == C0_ENTRYHI
| D.IA.MCtrl0.C0W & D.IB.MCtrl1.MR & D.IA.MCtrl0.C0D == C0_ENTRYHI
// TODO: CACHE
| D.IA.MCtrl1.TLBR & D.IB.MCtrl0.C0W
| D.IA.MCtrl1.TLBP & D.IB.MCtrl0.C0W
| D.IA.MCtrl1.TLBR & D.IB.MCtrl0.RS0 == C0 & D.IB.MCtrl0.C0D == C0_ENTRYHI
| D.IA.MCtrl1.TLBR & D.IB.MCtrl0.RS0 == C0 & D.IB.MCtrl0.C0D == C0_ENTRYLO0
| D.IA.MCtrl1.TLBR & D.IB.MCtrl0.RS0 == C0 & D.IB.MCtrl0.C0D == C0_ENTRYLO1
| D.IA.MCtrl1.TLBR & D.IB.MCtrl0.RS0 == C0 & D.IB.MCtrl0.C0D == C0_PAGEMASK
| D.IA.MCtrl1.TLBP & D.IB.MCtrl0.RS0 == C0 & D.IB.MCtrl0.C0D == C0_INDEX
| D.IA.MCtrl1.TLBR & D.IB.MCtrl0.RW & D.IB.MCtrl0.C0D == C0_ENTRYHI & D.IB.MCtrl0.RS0 == C0
| D.IA.MCtrl1.TLBR & D.IB.MCtrl0.RW & D.IB.MCtrl0.C0D == C0_ENTRYLO0 & D.IB.MCtrl0.RS0 == C0
| D.IA.MCtrl1.TLBR & D.IB.MCtrl0.RW & D.IB.MCtrl0.C0D == C0_ENTRYLO1 & D.IB.MCtrl0.RS0 == C0
| D.IA.MCtrl1.TLBR & D.IB.MCtrl0.RW & D.IB.MCtrl0.C0D == C0_PAGEMASK & D.IB.MCtrl0.RS0 == C0
| D.IA.MCtrl1.TLBP & D.IB.MCtrl0.RW & D.IB.MCtrl0.C0D == C0_INDEX & D.IB.MCtrl0.RS0 == C0
// Hazards Related to Exceptions or Interrupts
| D.IA.MCtrl0.C0W & D.IB.ERET & D.IA.MCtrl0.C0D == C0_EPC
| D.IA.MCtrl0.C0W & D.IB.ERET & D.IA.MCtrl0.C0D == C0_EPC
;
assign D.A = (D.IA.DP0 & D.IA.DP1 | D.IA_ExcValid) ? D.IB.DP0 : D.IA.DP1;

View File

@ -1,69 +0,0 @@
////-------------------------------- RS02 C0W TLBR TLBWI TLBP
32'b00000000000???????????????000000 1 0 0 0 0 // SLL
32'b00000000000???????????????000010 1 0 0 0 0 // SRL
32'b00000000000???????????????000011 1 0 0 0 0 // SRA
32'b000000???????????????00000000100 1 0 0 0 0 // SLLV
32'b000000???????????????00000000110 1 0 0 0 0 // SRLV
32'b000000???????????????00000000111 1 0 0 0 0 // SRAV
32'b000000?????000000000000000001000 1 0 0 0 0 // JR
32'b000000?????00000?????00000001001 1 0 0 0 0 // JALR
32'b000000????????????????????001100 1 0 0 0 0 // SYSCALL
32'b000000????????????????????001101 1 0 0 0 0 // BREAK
32'b0000000000000000?????00000010000 0 0 0 0 0 // MFHI
32'b000000?????000000000000000010001 0 0 0 0 0 // MTHI
32'b0000000000000000?????00000010010 0 0 0 0 0 // MFLO
32'b000000?????000000000000000010011 0 0 0 0 0 // MTLO
32'b000000??????????0000000000011000 0 0 0 0 0 // MULT
32'b000000??????????0000000000011001 0 0 0 0 0 // MULTU
32'b000000??????????0000000000011010 0 0 0 0 0 // DIV
32'b000000??????????0000000000011011 0 0 0 0 0 // DIVU
32'b000000???????????????00000100000 1 0 0 0 0 // ADD
32'b000000???????????????00000100001 1 0 0 0 0 // ADDU
32'b000000???????????????00000100010 1 0 0 0 0 // SUB
32'b000000???????????????00000100011 1 0 0 0 0 // SUBU
32'b000000???????????????00000100100 1 0 0 0 0 // AND
32'b000000???????????????00000100101 1 0 0 0 0 // OR
32'b000000???????????????00000100110 1 0 0 0 0 // XOR
32'b000000???????????????00000100111 1 0 0 0 0 // NOR
32'b000000???????????????00000101010 1 0 0 0 0 // SLT
32'b000000???????????????00000101011 1 0 0 0 0 // SLTU
32'b000001?????00000???????????????? 1 0 0 0 0 // BLTZ
32'b000001?????10000???????????????? 1 0 0 0 0 // BLTZAL
32'b000001?????00001???????????????? 1 0 0 0 0 // BGEZ
32'b000001?????10001???????????????? 1 0 0 0 0 // BGEZAL
32'b000010?????????????????????????? 1 0 0 0 0 // J
32'b000011?????????????????????????? 1 0 0 0 0 // JAL
32'b000100?????????????????????????? 1 0 0 0 0 // BEQ
32'b000101?????????????????????????? 1 0 0 0 0 // BNE
32'b000110?????00000???????????????? 1 0 0 0 0 // BLEZ
32'b000111?????00000???????????????? 1 0 0 0 0 // BGTZ
32'b001000?????????????????????????? 1 0 0 0 0 // ADDI
32'b001001?????????????????????????? 1 0 0 0 0 // ADDIU
32'b001010?????????????????????????? 1 0 0 0 0 // SLTI
32'b001011?????????????????????????? 1 0 0 0 0 // SLTIU
32'b001100?????????????????????????? 1 0 0 0 0 // ANDI
32'b001101?????????????????????????? 1 0 0 0 0 // ORI
32'b001110?????????????????????????? 1 0 0 0 0 // XORI
32'b00111100000????????????????????? 1 0 0 0 0 // LUI
32'b01000000000??????????00000000??? 0 0 0 0 0 // MFC0
32'b01000000100??????????00000000??? 0 1 0 0 0 // MTC0
32'b01000010000000000000000000000001 1 0 1 0 0 // TLBR
32'b01000010000000000000000000000010 1 0 0 1 0 // TLBWI
32'b01000010000000000000000000001000 1 0 0 0 1 // TLBP
32'b01000010000000000000000000011000 1 0 0 0 0 // ERET
32'b011100???????????????00000000010 0 0 0 0 0 // MUL
32'b100000?????????????????????????? 1 0 0 0 0 // LB
32'b100001?????????????????????????? 1 0 0 0 0 // LH
32'b100011?????????????????????????? 1 0 0 0 0 // LW
32'b100100?????????????????????????? 1 0 0 0 0 // LBU
32'b100101?????????????????????????? 1 0 0 0 0 // LHU
32'b101000?????????????????????????? 1 0 0 0 0 // SB
32'b101001?????????????????????????? 1 0 0 0 0 // SH
32'b101011?????????????????????????? 1 0 0 0 0 // SW
32'b101111?????00000???????????????? 1 0 0 0 0 // I-Cache Index Invalid
32'b101111?????01000???????????????? 1 0 0 0 0 // I-Cache Index Store Tag
32'b101111?????10000???????????????? 1 0 0 0 0 // I-Cache Hit Invalid
32'b101111?????00001???????????????? 1 0 0 0 0 // D-Cache Index Writeback Invalid
32'b101111?????01001???????????????? 1 0 0 0 0 // D-Cache Index Store Tag
32'b101111?????10001???????????????? 1 0 0 0 0 // D-Cache Hit Invalid
32'b101111?????10101???????????????? 1 0 0 0 0 // D-Cache Hit Writeback Invalid

View File

@ -1,4 +1,4 @@
with open('global.txt') as f:
with open('mctrl0.txt') as f:
lines = f.readlines()
title = lines[0].split()
items = [x.split() for x in lines[1:]]

View File

@ -1,6 +1,6 @@
table = [
('00000000000???????????????000010', 'SRL'),
('00000000000???????????????000000', 'SLL'),
('00000000000???????????????000010', 'SRL'),
('00000000000???????????????000011', 'SRA'),
('000000???????????????00000000100', 'SLLV'),
('000000???????????????00000000110', 'SRLV'),
@ -60,13 +60,6 @@ table = [
('101000??????????????????????????', 'SB'),
('101001??????????????????????????', 'SH'),
('101011??????????????????????????', 'SW'),
('101111?????00000????????????????', 'I-Cache Index Invalid'),
('101111?????01000????????????????', 'I-Cache Index Store Tag'),
('101111?????10000????????????????', 'I-Cache Hit Invalid'),
('101111?????00001????????????????', 'D-Cache Index Writeback Invalid'),
('101111?????01001????????????????', 'D-Cache Index Store Tag'),
('101111?????10001????????????????', 'D-Cache Hit Invalid'),
('101111?????10101????????????????', 'D-Cache Hit Writeback Invalid'),
]
class Boolean:
@ -87,10 +80,54 @@ class Boolean:
for inst, name in table:
inst = list(Boolean(x) for x in inst[::-1])
print('=====', name, '=====')
# print('C0W =', inst[30] & inst[23])
# print('HLS[2] =', ~inst[27] & ~inst[26] & (~inst[29] & ~inst[30] & ~inst[28] & inst[4] & inst[3] | inst[29] & inst[30]))
# print('RS0[2] =', ~inst[30] & (inst[29] | inst[26] | ~inst[4]))
print('DP0 =', ~inst[31] & (~inst[30] | inst[29] | ~inst[25] | inst[4]))
print('DP1 =', inst[26] | (~inst[30] & (inst[31] | inst[29] | inst[28] | inst[27] | ~inst[4]) | inst[30] & (~inst[29] & inst[25] | inst[3])))
print()
# print('=====', name, '=====')
ctrl = {}
ctrl['BJRJ'] = ~inst[29] & (~inst[31] & (~inst[30] & ~inst[5] & ~inst[4] & inst[3] & ~inst[2] | inst[28] | inst[26]) | inst[27] & ~inst[26])
ctrl['B'] = ~inst[31] & ~inst[29] & (inst[28] | ~inst[27] & inst[26])
ctrl['JR'] = ~inst[31] & ~inst[30] & ~inst[29] & ~inst[28] & ~inst[27] & ~inst[26] & ~inst[5] & ~inst[4] & inst[3] & ~inst[2]
ctrl['J'] = ~inst[31] & ~inst[29] & ~inst[28] & inst[27]
ctrl['SYSCALL'] = ~inst[31] & ~inst[30] & ~inst[29] & ~inst[28] & ~inst[27] & ~inst[26] & inst[3] & inst[2] & ~inst[0]
ctrl['BREAK'] = ~inst[31] & ~inst[30] & ~inst[29] & ~inst[28] & ~inst[27] & ~inst[26] & inst[3] & inst[2] & inst[0]
ctrl['ERET'] = inst[30] & inst[4]
ctrl['OFA'] = ~inst[31] & ~inst[28] & ~inst[27] & ~inst[26] & (~inst[30] & inst[5] & ~inst[3] & ~inst[2] & ~inst[0] | inst[29])
ctrl['ES'] = inst[31] | ~inst[30] & ~inst[28] & ~inst[27] & ~inst[26] & (inst[5] | inst[4] & inst[3] & ~inst[2] | ~inst[3] & inst[2]) | inst[29]
ctrl['ET'] = ~inst[31] & ~inst[27] & ~inst[26] & (~inst[30] & ~inst[29] & ~inst[28] & (inst[5] | (~inst[1] & (~inst[4] & ~inst[3] & ~inst[0] | inst[4] & inst[3]) | inst[1] & (~inst[4] | inst[3]))) | inst[30] & inst[29])
ctrl['DS'] = ~inst[31] & ~inst[29] & (inst[28] | ~inst[27] & (~inst[30] & ~inst[5] & ~inst[4] & inst[3] & ~inst[2] | inst[26]))
ctrl['DT'] = ~inst[31] & ~inst[29] & inst[28] & ~inst[27]
ctrl['DP0'] = ~inst[31] & (~inst[30] | inst[29] | ~inst[25] | inst[4])
ctrl['DP1'] = inst[26] | (~inst[30] & (inst[31] | inst[29] | inst[28] | inst[27] | ~inst[4]) | inst[30] & (~inst[29] & inst[25] | inst[3]))
ctrl['ECtrl_OP_f_sl'] = ~inst[31] & ~inst[29] & ~inst[28] & ~inst[27] & ~inst[26] & ~inst[5] & ~inst[3] & ~inst[1]
ctrl['ECtrl_OP_f_sr'] = ~inst[31] & ~inst[29] & ~inst[28] & ~inst[27] & ~inst[26] & ~inst[5] & inst[1]
ctrl['ECtrl_OP_f_add'] = inst[31] | ~inst[28] & (~inst[26] & ~inst[27] & (inst[29] | ~inst[5] & inst[3] & ~inst[1] | inst[5] & ~inst[3] & ~inst[2]) | inst[26] & (~inst[29] | ~inst[27]))
ctrl['ECtrl_OP_f_and'] = ~inst[31] & (~inst[28] & ~inst[29] & ~inst[27] & ~inst[26] & inst[5] & inst[2] & ~inst[0] & ~inst[1] | inst[28] & ~inst[27] & ~inst[26])
ctrl['ECtrl_OP_f_or'] = ~inst[31] & (~inst[28] & ~inst[29] & ~inst[27] & ~inst[26] & inst[5] & inst[2] & inst[0] | inst[28] & ~inst[27] & inst[26])
ctrl['ECtrl_OP_f_xor'] = ~inst[31] & (~inst[28] & ~inst[29] & ~inst[27] & ~inst[26] & inst[5] & inst[2] & ~inst[0] & inst[1] | inst[28] & inst[27])
ctrl['ECtrl_OP_f_slt'] = ~inst[31] & ~inst[28] & ~inst[26] & (~inst[29] & inst[5] & inst[3] & ~inst[2] & ~inst[0] | inst[27])
ctrl['ECtrl_OP_f_sltu'] = ~inst[31] & ~inst[28] & (~inst[26] & ~inst[29] & ~inst[27] & inst[5] & inst[3] & ~inst[2] & inst[0] | inst[26] & inst[29] & inst[27])
ctrl['ECtrl_OP_alt'] = ~inst[31] & (~inst[26] & (~inst[29] & inst[1] & (inst[5] | inst[0]) | inst[27]) | inst[26] & inst[29] & inst[27])
ctrl['ECtrl_SA'] = (inst[31] | inst[29] | ~inst[26] & (inst[5] | inst[2]), inst[31] | (~inst[28] & (inst[29] | inst[26] | inst[5] | inst[3] | inst[2]) | inst[28] & (~inst[27] | ~inst[26])))
ctrl['ECtrl_SB'] = (inst[31] | inst[29], inst[26] | ~inst[5] & inst[3])
ctrl['imm'] = (inst[28] & inst[27] & inst[26], inst[31] | ~inst[28])
ctrl['MCtrl0_HW'] = ~inst[30] & ~inst[29] & ~inst[28] & ~inst[27] & ~inst[26] & inst[4] & (inst[3] | ~inst[1] & inst[0])
ctrl['MCtrl0_LW'] = ~inst[30] & ~inst[29] & ~inst[28] & ~inst[27] & ~inst[26] & inst[4] & (inst[3] | inst[1] & inst[0])
ctrl['MCtrl0_HLS'] = (~inst[27] & ~inst[26] & (~inst[30] & ~inst[31] & ~inst[29] & ~inst[28] & inst[4] & inst[3] | inst[30] & inst[29]), ~inst[30] & inst[1], inst[0])
ctrl['MCtrl0_C0W'] = inst[30] & ~inst[29] & inst[23] & ~inst[3]
ctrl['MCtrl0_RS0'] = (ctrl['DP1'], inst[30], ~inst[29] & (inst[30] | ~inst[1]))
ctrl['MCtrl1_MR'] = inst[31]
ctrl['MCtrl1_MWR'] = inst[29]
ctrl['MCtrl1_MX'] = ~inst[28]
ctrl['MCtrl1_TLBR'] = inst[30] & ~inst[29] & inst[25] & ~inst[3] & ~inst[1]
ctrl['MCtrl1_TLBWI'] = inst[30] & ~inst[29] & inst[25] & ~inst[3] & inst[1]
ctrl['MCtrl1_TLBP'] = inst[30] & ~inst[4] & inst[3]
ctrl['WCtrl_RW'] = (~inst[30] & (~inst[29] & (inst[31] | ~inst[28] & (~inst[27] & (~inst[26] & (~inst[3] & (~inst[4] | ~inst[0]) | inst[3] & (inst[5] | ~inst[4] & ~inst[2] & inst[0])) | inst[26] & inst[20]) | inst[27] & inst[26])) | inst[29] & ~inst[31]) | inst[30] & ~inst[25] & ~inst[23])
ctrl['RD'] = (~inst[29] & (inst[31] | inst[30]) | inst[29] & ~inst[30], inst[26])
print(ctrl)

62
tools/ectrl.txt Normal file
View File

@ -0,0 +1,62 @@
////-------------------------------- OP ALT SA SA1 SA0 SB SB1 SB0 IMM IMM1 IMM0
32'b00000000000???????????????000000 SL ? SA 0 0 RT 0 0 ? ? ? // SLL
32'b00000000000???????????????000010 SR 0 SA 0 0 RT 0 0 ? ? ? // SRL
32'b00000000000???????????????000011 SR 1 SA 0 0 RT 0 0 ? ? ? // SRA
32'b000000???????????????00000000100 SL ? RS 1 1 RT 0 0 ? ? ? // SLLV
32'b000000???????????????00000000110 SR 0 RS 1 1 RT 0 0 ? ? ? // SRLV
32'b000000???????????????00000000111 SR 1 RS 1 1 RT 0 0 ? ? ? // SRAV
32'b000000?????000000000000000001000 ? ? ? ? ? ? ? ? ? ? ? // JR
32'b000000?????00000?????00000001001 ADD 0 PC 0 1 EIGHT 0 1 ? ? ? // JALR
32'b000000????????????????????001100 ? ? ? ? ? ? ? ? ? ? ? // SYSCALL
32'b000000????????????????????001101 ? ? ? ? ? ? ? ? ? ? ? // BREAK
32'b0000000000000000?????00000010000 ? ? ? ? ? ? ? ? ? ? ? // MFHI
32'b000000?????000000000000000010001 ? ? ? ? ? ? ? ? ? ? ? // MTHI
32'b0000000000000000?????00000010010 ? ? ? ? ? ? ? ? ? ? ? // MFLO
32'b000000?????000000000000000010011 ? ? ? ? ? ? ? ? ? ? ? // MTLO
32'b000000??????????0000000000011000 ? ? ? ? ? ? ? ? ? ? ? // MULT
32'b000000??????????0000000000011001 ? ? ? ? ? ? ? ? ? ? ? // MULTU
32'b000000??????????0000000000011010 ? ? ? ? ? ? ? ? ? ? ? // DIV
32'b000000??????????0000000000011011 ? ? ? ? ? ? ? ? ? ? ? // DIVU
32'b000000???????????????00000100000 ADD 0 RS 1 1 RT 0 0 ? ? ? // ADD
32'b000000???????????????00000100001 ADD 0 RS 1 1 RT 0 0 ? ? ? // ADDU
32'b000000???????????????00000100010 ADD 1 RS 1 1 RT 0 0 ? ? ? // SUB
32'b000000???????????????00000100011 ADD 1 RS 1 1 RT 0 0 ? ? ? // SUBU
32'b000000???????????????00000100100 AND ? RS 1 1 RT 0 0 ? ? ? // AND
32'b000000???????????????00000100101 OR 0 RS 1 1 RT 0 0 ? ? ? // OR
32'b000000???????????????00000100110 XOR ? RS 1 1 RT 0 0 ? ? ? // XOR
32'b000000???????????????00000100111 OR 1 RS 1 1 RT 0 0 ? ? ? // NOR
32'b000000???????????????00000101010 SLT 1 RS 1 1 RT 0 0 ? ? ? // SLT
32'b000000???????????????00000101011 SLTU 1 RS 1 1 RT 0 0 ? ? ? // SLTU
32'b000001?????00000???????????????? ? ? ? ? ? ? ? ? ? ? ? // BLTZ
32'b000001?????10000???????????????? ADD 0 PC 0 1 EIGHT 0 1 ? ? ? // BLTZAL
32'b000001?????00001???????????????? ? ? ? ? ? ? ? ? ? ? ? // BGEZ
32'b000001?????10001???????????????? ADD 0 PC 0 1 EIGHT 0 1 ? ? ? // BGEZAL
32'b000010?????????????????????????? ? ? ? ? ? ? ? ? ? ? ? // J
32'b000011?????????????????????????? ADD 0 PC 0 1 EIGHT 0 1 ? ? ? // JAL
32'b000100?????????????????????????? ? ? ? ? ? ? ? ? ? ? ? // BEQ
32'b000101?????????????????????????? ? ? ? ? ? ? ? ? ? ? ? // BNE
32'b000110?????00000???????????????? ? ? ? ? ? ? ? ? ? ? ? // BLEZ
32'b000111?????00000???????????????? ? ? ? ? ? ? ? ? ? ? ? // BGTZ
32'b001000?????????????????????????? ADD 0 RS 1 1 IMM 1 ? IX 0 1 // ADDI
32'b001001?????????????????????????? ADD 0 RS 1 1 IMM 1 ? IX 0 1 // ADDIU
32'b001010?????????????????????????? SLT 1 RS 1 1 IMM 1 ? IX 0 1 // SLTI
32'b001011?????????????????????????? SLTU 1 RS 1 1 IMM 1 ? IX 0 1 // SLTIU
32'b001100?????????????????????????? AND ? RS 1 1 IMM 1 ? IU 0 0 // ANDI
32'b001101?????????????????????????? OR 0 RS 1 1 IMM 1 ? IU 0 0 // ORI
32'b001110?????????????????????????? XOR ? RS 1 1 IMM 1 ? IU 0 0 // XORI
32'b00111100000????????????????????? XOR ? ZERO 1 0 IMM 1 ? UI 1 0 // LUI
32'b01000000000??????????00000000??? ? ? ? ? ? ? ? ? ? ? ? // MFC0
32'b01000000100??????????00000000??? ? ? ? ? ? ? ? ? ? ? ? // MTC0
32'b01000010000000000000000000000001 ? ? ? ? ? ? ? ? ? ? ? // TLBR
32'b01000010000000000000000000000010 ? ? ? ? ? ? ? ? ? ? ? // TLBWI
32'b01000010000000000000000000001000 ? ? ? ? ? ? ? ? ? ? ? // TLBP
32'b01000010000000000000000000011000 ? ? ? ? ? ? ? ? ? ? ? // ERET
32'b011100???????????????00000000010 ? ? ? ? ? ? ? ? ? ? ? // MUL
32'b100000?????????????????????????? ADD 0 RS 1 1 IMM 1 ? IX 0 1 // LB
32'b100001?????????????????????????? ADD 0 RS 1 1 IMM 1 ? IX 0 1 // LH
32'b100011?????????????????????????? ADD 0 RS 1 1 IMM 1 ? IX 0 1 // LW
32'b100100?????????????????????????? ADD 0 RS 1 1 IMM 1 ? IX 0 1 // LBU
32'b100101?????????????????????????? ADD 0 RS 1 1 IMM 1 ? IX 0 1 // LHU
32'b101000?????????????????????????? ADD 0 RS 1 1 IMM 1 ? IX 0 1 // SB
32'b101001?????????????????????????? ADD 0 RS 1 1 IMM 1 ? IX 0 1 // SH
32'b101011?????????????????????????? ADD 0 RS 1 1 IMM 1 ? IX 0 1 // SW

View File

@ -1,69 +1,62 @@
////-------------------------------- ERET DP0 DP1
32'b00000000000???????????????000000 0 1 1 // SLL
32'b00000000000???????????????000010 0 1 1 // SRL
32'b00000000000???????????????000011 0 1 1 // SRA
32'b000000???????????????00000000100 0 1 1 // SLLV
32'b000000???????????????00000000110 0 1 1 // SRLV
32'b000000???????????????00000000111 0 1 1 // SRAV
32'b000000?????000000000000000001000 0 1 1 // JR
32'b000000?????00000?????00000001001 0 1 1 // JALR
32'b000000????????????????????001100 0 1 1 // SYSCALL
32'b000000????????????????????001101 0 1 1 // BREAK
32'b0000000000000000?????00000010000 0 1 0 // MFHI
32'b000000?????000000000000000010001 0 1 0 // MTHI
32'b0000000000000000?????00000010010 0 1 0 // MFLO
32'b000000?????000000000000000010011 0 1 0 // MTLO
32'b000000??????????0000000000011000 0 1 0 // MULT
32'b000000??????????0000000000011001 0 1 0 // MULTU
32'b000000??????????0000000000011010 0 1 0 // DIV
32'b000000??????????0000000000011011 0 1 0 // DIVU
32'b000000???????????????00000100000 0 1 1 // ADD
32'b000000???????????????00000100001 0 1 1 // ADDU
32'b000000???????????????00000100010 0 1 1 // SUB
32'b000000???????????????00000100011 0 1 1 // SUBU
32'b000000???????????????00000100100 0 1 1 // AND
32'b000000???????????????00000100101 0 1 1 // OR
32'b000000???????????????00000100110 0 1 1 // XOR
32'b000000???????????????00000100111 0 1 1 // NOR
32'b000000???????????????00000101010 0 1 1 // SLT
32'b000000???????????????00000101011 0 1 1 // SLTU
32'b000001?????00000???????????????? 0 1 1 // BLTZ
32'b000001?????10000???????????????? 0 1 1 // BLTZAL
32'b000001?????00001???????????????? 0 1 1 // BGEZ
32'b000001?????10001???????????????? 0 1 1 // BGEZAL
32'b000010?????????????????????????? 0 1 1 // J
32'b000011?????????????????????????? 0 1 1 // JAL
32'b000100?????????????????????????? 0 1 1 // BEQ
32'b000101?????????????????????????? 0 1 1 // BNE
32'b000110?????00000???????????????? 0 1 1 // BLEZ
32'b000111?????00000???????????????? 0 1 1 // BGTZ
32'b001000?????????????????????????? 0 1 1 // ADDI
32'b001001?????????????????????????? 0 1 1 // ADDIU
32'b001010?????????????????????????? 0 1 1 // SLTI
32'b001011?????????????????????????? 0 1 1 // SLTIU
32'b001100?????????????????????????? 0 1 1 // ANDI
32'b001101?????????????????????????? 0 1 1 // ORI
32'b001110?????????????????????????? 0 1 1 // XORI
32'b00111100000????????????????????? 0 1 1 // LUI
32'b01000000000??????????00000000??? 0 1 0 // MFC0
32'b01000000100??????????00000000??? 0 1 0 // MTC0
32'b01000010000000000000000000000001 0 0 1 // TLBR
32'b01000010000000000000000000000010 0 0 1 // TLBWI
32'b01000010000000000000000000001000 0 0 1 // TLBP
32'b01000010000000000000000000011000 1 1 1 // ERET
32'b011100???????????????00000000010 0 1 0 // MUL
32'b100000?????????????????????????? 0 0 1 // LB
32'b100001?????????????????????????? 0 0 1 // LH
32'b100011?????????????????????????? 0 0 1 // LW
32'b100100?????????????????????????? 0 0 1 // LBU
32'b100101?????????????????????????? 0 0 1 // LHU
32'b101000?????????????????????????? 0 0 1 // SB
32'b101001?????????????????????????? 0 0 1 // SH
32'b101011?????????????????????????? 0 0 1 // SW
32'b101111?????00000???????????????? 0 0 1 // I-Cache Index Invalid
32'b101111?????01000???????????????? 0 0 1 // I-Cache Index Store Tag
32'b101111?????10000???????????????? 0 0 1 // I-Cache Hit Invalid
32'b101111?????00001???????????????? 0 0 1 // D-Cache Index Writeback Invalid
32'b101111?????01001???????????????? 0 0 1 // D-Cache Index Store Tag
32'b101111?????10001???????????????? 0 0 1 // D-Cache Hit Invalid
32'b101111?????10101???????????????? 0 0 1 // D-Cache Hit Writeback Invalid
////-------------------------------- SYSCALL BREAK ERET OFA ES ET DS DT DP0 DP1
32'b00000000000???????????????000000 0 0 0 0 0 1 0 0 1 1 // SLL
32'b00000000000???????????????000010 0 0 0 0 0 1 0 0 1 1 // SRL
32'b00000000000???????????????000011 0 0 0 0 0 1 0 0 1 1 // SRA
32'b000000???????????????00000000100 0 0 0 0 1 1 0 0 1 1 // SLLV
32'b000000???????????????00000000110 0 0 0 0 1 1 0 0 1 1 // SRLV
32'b000000???????????????00000000111 0 0 0 0 1 1 0 0 1 1 // SRAV
32'b000000?????000000000000000001000 0 0 0 0 0 0 1 0 1 1 // JR
32'b000000?????00000?????00000001001 0 0 0 0 0 0 1 0 1 1 // JALR
32'b000000????????????????????001100 1 0 0 0 0 0 0 0 1 1 // SYSCALL
32'b000000????????????????????001101 0 1 0 0 0 0 0 0 1 1 // BREAK
32'b0000000000000000?????00000010000 0 0 0 0 0 0 0 0 1 0 // MFHI
32'b000000?????000000000000000010001 0 0 0 0 0 0 0 0 1 0 // MTHI
32'b0000000000000000?????00000010010 0 0 0 0 0 0 0 0 1 0 // MFLO
32'b000000?????000000000000000010011 0 0 0 0 0 0 0 0 1 0 // MTLO
32'b000000??????????0000000000011000 0 0 0 0 1 1 0 0 1 0 // MULT
32'b000000??????????0000000000011001 0 0 0 0 1 1 0 0 1 0 // MULTU
32'b000000??????????0000000000011010 0 0 0 0 1 1 0 0 1 0 // DIV
32'b000000??????????0000000000011011 0 0 0 0 1 1 0 0 1 0 // DIVU
32'b000000???????????????00000100000 0 0 0 1 1 1 0 0 1 1 // ADD
32'b000000???????????????00000100001 0 0 0 0 1 1 0 0 1 1 // ADDU
32'b000000???????????????00000100010 0 0 0 1 1 1 0 0 1 1 // SUB
32'b000000???????????????00000100011 0 0 0 0 1 1 0 0 1 1 // SUBU
32'b000000???????????????00000100100 0 0 0 0 1 1 0 0 1 1 // AND
32'b000000???????????????00000100101 0 0 0 0 1 1 0 0 1 1 // OR
32'b000000???????????????00000100110 0 0 0 0 1 1 0 0 1 1 // XOR
32'b000000???????????????00000100111 0 0 0 0 1 1 0 0 1 1 // NOR
32'b000000???????????????00000101010 0 0 0 0 1 1 0 0 1 1 // SLT
32'b000000???????????????00000101011 0 0 0 0 1 1 0 0 1 1 // SLTU
32'b000001?????00000???????????????? 0 0 0 0 0 0 1 0 1 1 // BLTZ
32'b000001?????10000???????????????? 0 0 0 0 0 0 1 0 1 1 // BLTZAL
32'b000001?????00001???????????????? 0 0 0 0 0 0 1 0 1 1 // BGEZ
32'b000001?????10001???????????????? 0 0 0 0 0 0 1 0 1 1 // BGEZAL
32'b000010?????????????????????????? 0 0 0 0 0 0 0 0 1 1 // J
32'b000011?????????????????????????? 0 0 0 0 0 0 0 0 1 1 // JAL
32'b000100?????????????????????????? 0 0 0 0 0 0 1 1 1 1 // BEQ
32'b000101?????????????????????????? 0 0 0 0 0 0 1 1 1 1 // BNE
32'b000110?????00000???????????????? 0 0 0 0 0 0 1 0 1 1 // BLEZ
32'b000111?????00000???????????????? 0 0 0 0 0 0 1 0 1 1 // BGTZ
32'b001000?????????????????????????? 0 0 0 1 1 0 0 0 1 1 // ADDI
32'b001001?????????????????????????? 0 0 0 0 1 0 0 0 1 1 // ADDIU
32'b001010?????????????????????????? 0 0 0 0 1 0 0 0 1 1 // SLTI
32'b001011?????????????????????????? 0 0 0 0 1 0 0 0 1 1 // SLTIU
32'b001100?????????????????????????? 0 0 0 0 1 0 0 0 1 1 // ANDI
32'b001101?????????????????????????? 0 0 0 0 1 0 0 0 1 1 // ORI
32'b001110?????????????????????????? 0 0 0 0 1 0 0 0 1 1 // XORI
32'b00111100000????????????????????? 0 0 0 0 1 0 0 0 1 1 // LUI
32'b01000000000??????????00000000??? 0 0 0 0 0 0 0 0 1 0 // MFC0
32'b01000000100??????????00000000??? 0 0 0 0 0 0 0 0 1 0 // MTC0
32'b01000010000000000000000000000001 0 0 0 0 0 0 0 0 0 1 // TLBR
32'b01000010000000000000000000000010 0 0 0 0 0 0 0 0 0 1 // TLBWI
32'b01000010000000000000000000001000 0 0 0 0 0 0 0 0 0 1 // TLBP
32'b01000010000000000000000000011000 0 0 1 0 0 0 0 0 1 1 // ERET
32'b011100???????????????00000000010 0 0 0 0 1 1 0 0 1 0 // MUL
32'b100000?????????????????????????? 0 0 0 0 1 0 0 0 0 1 // LB
32'b100001?????????????????????????? 0 0 0 0 1 0 0 0 0 1 // LH
32'b100011?????????????????????????? 0 0 0 0 1 0 0 0 0 1 // LW
32'b100100?????????????????????????? 0 0 0 0 1 0 0 0 0 1 // LBU
32'b100101?????????????????????????? 0 0 0 0 1 0 0 0 0 1 // LHU
32'b101000?????????????????????????? 0 0 0 0 1 0 0 0 0 1 // SB
32'b101001?????????????????????????? 0 0 0 0 1 0 0 0 0 1 // SH
32'b101011?????????????????????????? 0 0 0 0 1 0 0 0 0 1 // SW

62
tools/mctrl0.txt Normal file
View File

@ -0,0 +1,62 @@
////-------------------------------- HW LW HLS HLS2 HLS1 HLS0 C0W RS0 RS02 RS01 RS00
32'b00000000000???????????????000000 0 0 ? 0 ? ? 0 ALU 1 ? ? // SLL
32'b00000000000???????????????000010 0 0 ? 0 ? ? 0 ALU 1 ? ? // SRL
32'b00000000000???????????????000011 0 0 ? 0 ? ? 0 ALU 1 ? ? // SRA
32'b000000???????????????00000000100 0 0 ? 0 ? ? 0 ALU 1 ? ? // SLLV
32'b000000???????????????00000000110 0 0 ? 0 ? ? 0 ALU 1 ? ? // SRLV
32'b000000???????????????00000000111 0 0 ? 0 ? ? 0 ALU 1 ? ? // SRAV
32'b000000?????000000000000000001000 0 0 ? 0 ? ? 0 ? ? ? ? // JR
32'b000000?????00000?????00000001001 0 0 ? 0 ? ? 0 ALU 1 ? ? // JALR
32'b000000????????????????????001100 0 0 ? 0 ? ? 0 ? ? ? ? // SYSCALL
32'b000000????????????????????001101 0 0 ? 0 ? ? 0 ? ? ? ? // BREAK
32'b0000000000000000?????00000010000 0 0 ? 0 ? ? 0 HI 0 0 1 // MFHI
32'b000000?????000000000000000010001 1 0 RS 0 ? ? 0 ? ? ? ? // MTHI
32'b0000000000000000?????00000010010 0 0 ? 0 ? ? 0 LO 0 0 0 // MFLO
32'b000000?????000000000000000010011 0 1 RS 0 ? ? 0 ? ? ? ? // MTLO
32'b000000??????????0000000000011000 1 1 MULT 1 0 0 0 ? ? ? ? // MULT
32'b000000??????????0000000000011001 1 1 MULTU 1 0 1 0 ? ? ? ? // MULTU
32'b000000??????????0000000000011010 1 1 DIV 1 1 0 0 ? ? ? ? // DIV
32'b000000??????????0000000000011011 1 1 DIVU 1 1 1 0 ? ? ? ? // DIVU
32'b000000???????????????00000100000 0 0 ? 0 ? ? 0 ALU 1 ? ? // ADD
32'b000000???????????????00000100001 0 0 ? 0 ? ? 0 ALU 1 ? ? // ADDU
32'b000000???????????????00000100010 0 0 ? 0 ? ? 0 ALU 1 ? ? // SUB
32'b000000???????????????00000100011 0 0 ? 0 ? ? 0 ALU 1 ? ? // SUBU
32'b000000???????????????00000100100 0 0 ? 0 ? ? 0 ALU 1 ? ? // AND
32'b000000???????????????00000100101 0 0 ? 0 ? ? 0 ALU 1 ? ? // OR
32'b000000???????????????00000100110 0 0 ? 0 ? ? 0 ALU 1 ? ? // XOR
32'b000000???????????????00000100111 0 0 ? 0 ? ? 0 ALU 1 ? ? // NOR
32'b000000???????????????00000101010 0 0 ? 0 ? ? 0 ALU 1 ? ? // SLT
32'b000000???????????????00000101011 0 0 ? 0 ? ? 0 ALU 1 ? ? // SLTU
32'b000001?????00000???????????????? 0 0 ? 0 ? ? 0 ? ? ? ? // BLTZ
32'b000001?????10000???????????????? 0 0 ? 0 ? ? 0 ALU 1 ? ? // BLTZAL
32'b000001?????00001???????????????? 0 0 ? 0 ? ? 0 ? ? ? ? // BGEZ
32'b000001?????10001???????????????? 0 0 ? 0 ? ? 0 ALU 1 ? ? // BGEZAL
32'b000010?????????????????????????? 0 0 ? 0 ? ? 0 ? ? ? ? // J
32'b000011?????????????????????????? 0 0 ? 0 ? ? 0 ALU 1 ? ? // JAL
32'b000100?????????????????????????? 0 0 ? 0 ? ? 0 ? ? ? ? // BEQ
32'b000101?????????????????????????? 0 0 ? 0 ? ? 0 ? ? ? ? // BNE
32'b000110?????00000???????????????? 0 0 ? 0 ? ? 0 ? ? ? ? // BLEZ
32'b000111?????00000???????????????? 0 0 ? 0 ? ? 0 ? ? ? ? // BGTZ
32'b001000?????????????????????????? 0 0 ? 0 ? ? 0 ALU 1 ? ? // ADDI
32'b001001?????????????????????????? 0 0 ? 0 ? ? 0 ALU 1 ? ? // ADDIU
32'b001010?????????????????????????? 0 0 ? 0 ? ? 0 ALU 1 ? ? // SLTI
32'b001011?????????????????????????? 0 0 ? 0 ? ? 0 ALU 1 ? ? // SLTIU
32'b001100?????????????????????????? 0 0 ? 0 ? ? 0 ALU 1 ? ? // ANDI
32'b001101?????????????????????????? 0 0 ? 0 ? ? 0 ALU 1 ? ? // ORI
32'b001110?????????????????????????? 0 0 ? 0 ? ? 0 ALU 1 ? ? // XORI
32'b00111100000????????????????????? 0 0 ? 0 ? ? 0 ALU 1 ? ? // LUI
32'b01000000000??????????00000000??? 0 0 ? 0 ? ? 0 C0 0 1 1 // MFC0
32'b01000000100??????????00000000??? 0 0 ? 0 ? ? 1 ? ? ? ? // MTC0
32'b01000010000000000000000000000001 ? ? ? 0 ? ? 0 ? ? ? ? // TLBR
32'b01000010000000000000000000000010 ? ? ? 0 ? ? 0 ? ? ? ? // TLBWI
32'b01000010000000000000000000001000 ? ? ? 0 ? ? 0 ? ? ? ? // TLBP
32'b01000010000000000000000000011000 0 0 ? 0 ? ? 0 ? ? ? ? // ERET
32'b011100???????????????00000000010 0 0 MUL? 1 0 ? 0 MUL 0 1 0 // MUL
32'b100000?????????????????????????? ? ? ? 0 ? ? 0 ? ? ? ? // LB
32'b100001?????????????????????????? ? ? ? 0 ? ? 0 ? ? ? ? // LH
32'b100011?????????????????????????? ? ? ? 0 ? ? 0 ? ? ? ? // LW
32'b100100?????????????????????????? ? ? ? 0 ? ? 0 ? ? ? ? // LBU
32'b100101?????????????????????????? ? ? ? 0 ? ? 0 ? ? ? ? // LHU
32'b101000?????????????????????????? ? ? ? 0 ? ? 0 ? ? ? ? // SB
32'b101001?????????????????????????? ? ? ? 0 ? ? 0 ? ? ? ? // SH
32'b101011?????????????????????????? ? ? ? 0 ? ? 0 ? ? ? ? // SW

62
tools/mctrl1.txt Normal file
View File

@ -0,0 +1,62 @@
////-------------------------------- TLBR TLBWI TLBP MR MWR MX
32'b00000000000???????????????000000 0 0 0 0 ? ? // SLL
32'b00000000000???????????????000010 0 0 0 0 ? ? // SRL
32'b00000000000???????????????000011 0 0 0 0 ? ? // SRA
32'b000000???????????????00000000100 0 0 0 0 ? ? // SLLV
32'b000000???????????????00000000110 0 0 0 0 ? ? // SRLV
32'b000000???????????????00000000111 0 0 0 0 ? ? // SRAV
32'b000000?????000000000000000001000 0 0 0 0 ? ? // JR
32'b000000?????00000?????00000001001 0 0 0 0 ? ? // JALR
32'b000000????????????????????001100 0 0 0 0 ? ? // SYSCALL
32'b000000????????????????????001101 0 0 0 0 ? ? // BREAK
32'b0000000000000000?????00000010000 0 0 0 ? ? ? // MFHI
32'b000000?????000000000000000010001 0 0 0 ? ? ? // MTHI
32'b0000000000000000?????00000010010 0 0 0 ? ? ? // MFLO
32'b000000?????000000000000000010011 0 0 0 ? ? ? // MTLO
32'b000000??????????0000000000011000 0 0 0 ? ? ? // MULT
32'b000000??????????0000000000011001 0 0 0 ? ? ? // MULTU
32'b000000??????????0000000000011010 0 0 0 ? ? ? // DIV
32'b000000??????????0000000000011011 0 0 0 ? ? ? // DIVU
32'b000000???????????????00000100000 0 0 0 0 ? ? // ADD
32'b000000???????????????00000100001 0 0 0 0 ? ? // ADDU
32'b000000???????????????00000100010 0 0 0 0 ? ? // SUB
32'b000000???????????????00000100011 0 0 0 0 ? ? // SUBU
32'b000000???????????????00000100100 0 0 0 0 ? ? // AND
32'b000000???????????????00000100101 0 0 0 0 ? ? // OR
32'b000000???????????????00000100110 0 0 0 0 ? ? // XOR
32'b000000???????????????00000100111 0 0 0 0 ? ? // NOR
32'b000000???????????????00000101010 0 0 0 0 ? ? // SLT
32'b000000???????????????00000101011 0 0 0 0 ? ? // SLTU
32'b000001?????00000???????????????? 0 0 0 0 ? ? // BLTZ
32'b000001?????10000???????????????? 0 0 0 0 ? ? // BLTZAL
32'b000001?????00001???????????????? 0 0 0 0 ? ? // BGEZ
32'b000001?????10001???????????????? 0 0 0 0 ? ? // BGEZAL
32'b000010?????????????????????????? 0 0 0 0 ? ? // J
32'b000011?????????????????????????? 0 0 0 0 ? ? // JAL
32'b000100?????????????????????????? 0 0 0 0 ? ? // BEQ
32'b000101?????????????????????????? 0 0 0 0 ? ? // BNE
32'b000110?????00000???????????????? 0 0 0 0 ? ? // BLEZ
32'b000111?????00000???????????????? 0 0 0 0 ? ? // BGTZ
32'b001000?????????????????????????? 0 0 0 0 ? ? // ADDI
32'b001001?????????????????????????? 0 0 0 0 ? ? // ADDIU
32'b001010?????????????????????????? 0 0 0 0 ? ? // SLTI
32'b001011?????????????????????????? 0 0 0 0 ? ? // SLTIU
32'b001100?????????????????????????? 0 0 0 0 ? ? // ANDI
32'b001101?????????????????????????? 0 0 0 0 ? ? // ORI
32'b001110?????????????????????????? 0 0 0 0 ? ? // XORI
32'b00111100000????????????????????? 0 0 0 0 ? ? // LUI
32'b01000000000??????????00000000??? 0 0 0 ? ? ? // MFC0
32'b01000000100??????????00000000??? 0 0 0 ? ? ? // MTC0
32'b01000010000000000000000000000001 1 0 0 0 ? ? // TLBR
32'b01000010000000000000000000000010 0 1 0 0 ? ? // TLBWI
32'b01000010000000000000000000001000 0 0 1 0 ? ? // TLBP
32'b01000010000000000000000000011000 0 0 0 0 ? ? // ERET
32'b011100???????????????00000000010 0 0 0 ? ? ? // MUL
32'b100000?????????????????????????? 0 0 0 1 0 1 // LB
32'b100001?????????????????????????? 0 0 0 1 0 1 // LH
32'b100011?????????????????????????? 0 0 0 1 0 1 // LW
32'b100100?????????????????????????? 0 0 0 1 0 0 // LBU
32'b100101?????????????????????????? 0 0 0 1 0 0 // LHU
32'b101000?????????????????????????? 0 0 0 1 1 ? // SB
32'b101001?????????????????????????? 0 0 0 1 1 ? // SH
32'b101011?????????????????????????? 0 0 0 1 1 ? // SW

View File

@ -1,69 +0,0 @@
////-------------------------------- HLS2
32'b00000000000???????????????000000 0 // SLL
32'b00000000000???????????????000010 0 // SRL
32'b00000000000???????????????000011 0 // SRA
32'b000000???????????????00000000100 0 // SLLV
32'b000000???????????????00000000110 0 // SRLV
32'b000000???????????????00000000111 0 // SRAV
32'b000000?????000000000000000001000 0 // JR
32'b000000?????00000?????00000001001 0 // JALR
32'b000000????????????????????001100 0 // SYSCALL
32'b000000????????????????????001101 0 // BREAK
32'b0000000000000000?????00000010000 0 // MFHI
32'b000000?????000000000000000010001 0 // MTHI
32'b0000000000000000?????00000010010 0 // MFLO
32'b000000?????000000000000000010011 0 // MTLO
32'b000000??????????0000000000011000 1 // MULT
32'b000000??????????0000000000011001 1 // MULTU
32'b000000??????????0000000000011010 1 // DIV
32'b000000??????????0000000000011011 1 // DIVU
32'b000000???????????????00000100000 0 // ADD
32'b000000???????????????00000100001 0 // ADDU
32'b000000???????????????00000100010 0 // SUB
32'b000000???????????????00000100011 0 // SUBU
32'b000000???????????????00000100100 0 // AND
32'b000000???????????????00000100101 0 // OR
32'b000000???????????????00000100110 0 // XOR
32'b000000???????????????00000100111 0 // NOR
32'b000000???????????????00000101010 0 // SLT
32'b000000???????????????00000101011 0 // SLTU
32'b000001?????00000???????????????? 0 // BLTZ
32'b000001?????10000???????????????? 0 // BLTZAL
32'b000001?????00001???????????????? 0 // BGEZ
32'b000001?????10001???????????????? 0 // BGEZAL
32'b000010?????????????????????????? 0 // J
32'b000011?????????????????????????? 0 // JAL
32'b000100?????????????????????????? 0 // BEQ
32'b000101?????????????????????????? 0 // BNE
32'b000110?????00000???????????????? 0 // BLEZ
32'b000111?????00000???????????????? 0 // BGTZ
32'b001000?????????????????????????? 0 // ADDI
32'b001001?????????????????????????? 0 // ADDIU
32'b001010?????????????????????????? 0 // SLTI
32'b001011?????????????????????????? 0 // SLTIU
32'b001100?????????????????????????? 0 // ANDI
32'b001101?????????????????????????? 0 // ORI
32'b001110?????????????????????????? 0 // XORI
32'b00111100000????????????????????? 0 // LUI
32'b01000000000??????????00000000??? 0 // MFC0
32'b01000000100??????????00000000??? 0 // MTC0
32'b01000010000000000000000000000001 0 // TLBR
32'b01000010000000000000000000000010 0 // TLBWI
32'b01000010000000000000000000001000 0 // TLBP
32'b01000010000000000000000000011000 0 // ERET
32'b011100???????????????00000000010 1 // MUL
32'b100000?????????????????????????? 0 // LB
32'b100001?????????????????????????? 0 // LH
32'b100011?????????????????????????? 0 // LW
32'b100100?????????????????????????? 0 // LBU
32'b100101?????????????????????????? 0 // LHU
32'b101000?????????????????????????? 0 // SB
32'b101001?????????????????????????? 0 // SH
32'b101011?????????????????????????? 0 // SW
32'b101111?????00000???????????????? 0 // I-Cache Index Invalid
32'b101111?????01000???????????????? 0 // I-Cache Index Store Tag
32'b101111?????10000???????????????? 0 // I-Cache Hit Invalid
32'b101111?????00001???????????????? 0 // D-Cache Index Writeback Invalid
32'b101111?????01001???????????????? 0 // D-Cache Index Store Tag
32'b101111?????10001???????????????? 0 // D-Cache Hit Invalid
32'b101111?????10101???????????????? 0 // D-Cache Hit Writeback Invalid

62
tools/pcs.txt Normal file
View File

@ -0,0 +1,62 @@
////-------------------------------- BJRJ B JR J
32'b00000000000???????????????000000 0 0 0 0 // SLL
32'b00000000000???????????????000010 0 0 0 0 // SRL
32'b00000000000???????????????000011 0 0 0 0 // SRA
32'b000000???????????????00000000100 0 0 0 0 // SLLV
32'b000000???????????????00000000110 0 0 0 0 // SRLV
32'b000000???????????????00000000111 0 0 0 0 // SRAV
32'b000000?????000000000000000001000 1 0 1 0 // JR
32'b000000?????00000?????00000001001 1 0 1 0 // JALR
32'b000000????????????????????001100 0 0 0 0 // SYSCALL
32'b000000????????????????????001101 0 0 0 0 // BREAK
32'b0000000000000000?????00000010000 0 0 0 0 // MFHI
32'b000000?????000000000000000010001 0 0 0 0 // MTHI
32'b0000000000000000?????00000010010 0 0 0 0 // MFLO
32'b000000?????000000000000000010011 0 0 0 0 // MTLO
32'b000000??????????0000000000011000 0 0 0 0 // MULT
32'b000000??????????0000000000011001 0 0 0 0 // MULTU
32'b000000??????????0000000000011010 0 0 0 0 // DIV
32'b000000??????????0000000000011011 0 0 0 0 // DIVU
32'b000000???????????????00000100000 0 0 0 0 // ADD
32'b000000???????????????00000100001 0 0 0 0 // ADDU
32'b000000???????????????00000100010 0 0 0 0 // SUB
32'b000000???????????????00000100011 0 0 0 0 // SUBU
32'b000000???????????????00000100100 0 0 0 0 // AND
32'b000000???????????????00000100101 0 0 0 0 // OR
32'b000000???????????????00000100110 0 0 0 0 // XOR
32'b000000???????????????00000100111 0 0 0 0 // NOR
32'b000000???????????????00000101010 0 0 0 0 // SLT
32'b000000???????????????00000101011 0 0 0 0 // SLTU
32'b000001?????00000???????????????? 1 1 0 0 // BLTZ
32'b000001?????10000???????????????? 1 1 0 0 // BLTZAL
32'b000001?????00001???????????????? 1 1 0 0 // BGEZ
32'b000001?????10001???????????????? 1 1 0 0 // BGEZAL
32'b000010?????????????????????????? 1 0 0 1 // J
32'b000011?????????????????????????? 1 0 0 1 // JAL
32'b000100?????????????????????????? 1 1 0 0 // BEQ
32'b000101?????????????????????????? 1 1 0 0 // BNE
32'b000110?????00000???????????????? 1 1 0 0 // BLEZ
32'b000111?????00000???????????????? 1 1 0 0 // BGTZ
32'b001000?????????????????????????? 0 0 0 0 // ADDI
32'b001001?????????????????????????? 0 0 0 0 // ADDIU
32'b001010?????????????????????????? 0 0 0 0 // SLTI
32'b001011?????????????????????????? 0 0 0 0 // SLTIU
32'b001100?????????????????????????? 0 0 0 0 // ANDI
32'b001101?????????????????????????? 0 0 0 0 // ORI
32'b001110?????????????????????????? 0 0 0 0 // XORI
32'b00111100000????????????????????? 0 0 0 0 // LUI
32'b01000000000??????????00000000??? 0 0 0 0 // MFC0
32'b01000000100??????????00000000??? 0 0 0 0 // MTC0
32'b01000010000000000000000000000001 0 0 0 0 // TLBR
32'b01000010000000000000000000000010 0 0 0 0 // TLBWI
32'b01000010000000000000000000001000 0 0 0 0 // TLBP
32'b01000010000000000000000000011000 0 0 0 0 // ERET
32'b011100???????????????00000000010 0 0 0 0 // MUL
32'b100000?????????????????????????? 0 0 0 0 // LB
32'b100001?????????????????????????? 0 0 0 0 // LH
32'b100011?????????????????????????? 0 0 0 0 // LW
32'b100100?????????????????????????? 0 0 0 0 // LBU
32'b100101?????????????????????????? 0 0 0 0 // LHU
32'b101000?????????????????????????? 0 0 0 0 // SB
32'b101001?????????????????????????? 0 0 0 0 // SH
32'b101011?????????????????????????? 0 0 0 0 // SW

62
tools/wctrl.txt Normal file
View File

@ -0,0 +1,62 @@
////-------------------------------- RW RD RD1 RD0
32'b00000000000???????????????000000 1 RD 0 0 // SLL
32'b00000000000???????????????000010 1 RD 0 0 // SRL
32'b00000000000???????????????000011 1 RD 0 0 // SRA
32'b000000???????????????00000000100 1 RD 0 0 // SLLV
32'b000000???????????????00000000110 1 RD 0 0 // SRLV
32'b000000???????????????00000000111 1 RD 0 0 // SRAV
32'b000000?????000000000000000001000 0 ? ? ? // JR
32'b000000?????00000?????00000001001 1 RD 0 0 // JALR
32'b000000????????????????????001100 0 ? ? ? // SYSCALL
32'b000000????????????????????001101 0 ? ? ? // BREAK
32'b0000000000000000?????00000010000 1 RD 0 0 // MFHI
32'b000000?????000000000000000010001 0 ? ? ? // MTHI
32'b0000000000000000?????00000010010 1 RD 0 0 // MFLO
32'b000000?????000000000000000010011 0 ? ? ? // MTLO
32'b000000??????????0000000000011000 0 ? ? ? // MULT
32'b000000??????????0000000000011001 0 ? ? ? // MULTU
32'b000000??????????0000000000011010 0 ? ? ? // DIV
32'b000000??????????0000000000011011 0 ? ? ? // DIVU
32'b000000???????????????00000100000 1 RD 0 0 // ADD
32'b000000???????????????00000100001 1 RD 0 0 // ADDU
32'b000000???????????????00000100010 1 RD 0 0 // SUB
32'b000000???????????????00000100011 1 RD 0 0 // SUBU
32'b000000???????????????00000100100 1 RD 0 0 // AND
32'b000000???????????????00000100101 1 RD 0 0 // OR
32'b000000???????????????00000100110 1 RD 0 0 // XOR
32'b000000???????????????00000100111 1 RD 0 0 // NOR
32'b000000???????????????00000101010 1 RD 0 0 // SLT
32'b000000???????????????00000101011 1 RD 0 0 // SLTU
32'b000001?????00000???????????????? 0 ? ? ? // BLTZ
32'b000001?????10000???????????????? 1 31 0 1 // BLTZAL
32'b000001?????00001???????????????? 0 ? ? ? // BGEZ
32'b000001?????10001???????????????? 1 31 0 1 // BGEZAL
32'b000010?????????????????????????? 0 ? ? ? // J
32'b000011?????????????????????????? 1 31 0 1 // JAL
32'b000100?????????????????????????? 0 ? ? ? // BEQ
32'b000101?????????????????????????? 0 ? ? ? // BNE
32'b000110?????00000???????????????? 0 ? ? ? // BLEZ
32'b000111?????00000???????????????? 0 ? ? ? // BGTZ
32'b001000?????????????????????????? 1 RT 1 ? // ADDI
32'b001001?????????????????????????? 1 RT 1 ? // ADDIU
32'b001010?????????????????????????? 1 RT 1 ? // SLTI
32'b001011?????????????????????????? 1 RT 1 ? // SLTIU
32'b001100?????????????????????????? 1 RT 1 ? // ANDI
32'b001101?????????????????????????? 1 RT 1 ? // ORI
32'b001110?????????????????????????? 1 RT 1 ? // XORI
32'b00111100000????????????????????? 1 RT 1 ? // LUI
32'b01000000000??????????00000000??? 1 RT 1 ? // MFC0
32'b01000000100??????????00000000??? 0 ? ? ? // MTC0
32'b01000010000000000000000000000001 0 ? ? ? // TLBR
32'b01000010000000000000000000000010 0 ? ? ? // TLBWI
32'b01000010000000000000000000001000 0 ? ? ? // TLBP
32'b01000010000000000000000000011000 0 ? ? ? // ERET
32'b011100???????????????00000000010 1 RD 0 0 // MUL
32'b100000?????????????????????????? 1 RT 1 ? // LB
32'b100001?????????????????????????? 1 RT 1 ? // LH
32'b100011?????????????????????????? 1 RT 1 ? // LW
32'b100100?????????????????????????? 1 RT 1 ? // LBU
32'b100101?????????????????????????? 1 RT 1 ? // LHU
32'b101000?????????????????????????? 0 ? ? ? // SB
32'b101001?????????????????????????? 0 ? ? ? // SH
32'b101011?????????????????????????? 0 ? ? ? // SW