decode tools
This commit is contained in:
parent
22e469ceec
commit
9ac9b951fa
69
tools/c0.txt
Normal file
69
tools/c0.txt
Normal file
@ -0,0 +1,69 @@
|
||||
////-------------------------------- 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
|
96
tools/decoder.py
Normal file
96
tools/decoder.py
Normal file
@ -0,0 +1,96 @@
|
||||
table = [
|
||||
('00000000000???????????????000010', 'SRL'),
|
||||
('00000000000???????????????000000', 'SLL'),
|
||||
('00000000000???????????????000011', 'SRA'),
|
||||
('000000???????????????00000000100', 'SLLV'),
|
||||
('000000???????????????00000000110', 'SRLV'),
|
||||
('000000???????????????00000000111', 'SRAV'),
|
||||
('000000?????000000000000000001000', 'JR'),
|
||||
('000000?????00000?????00000001001', 'JALR'),
|
||||
('000000????????????????????001100', 'SYSCALL'),
|
||||
('000000????????????????????001101', 'BREAK'),
|
||||
('0000000000000000?????00000010000', 'MFHI'),
|
||||
('000000?????000000000000000010001', 'MTHI'),
|
||||
('0000000000000000?????00000010010', 'MFLO'),
|
||||
('000000?????000000000000000010011', 'MTLO'),
|
||||
('000000??????????0000000000011000', 'MULT'),
|
||||
('000000??????????0000000000011001', 'MULTU'),
|
||||
('000000??????????0000000000011010', 'DIV'),
|
||||
('000000??????????0000000000011011', 'DIVU'),
|
||||
('000000???????????????00000100000', 'ADD'),
|
||||
('000000???????????????00000100001', 'ADDU'),
|
||||
('000000???????????????00000100010', 'SUB'),
|
||||
('000000???????????????00000100011', 'SUBU'),
|
||||
('000000???????????????00000100100', 'AND'),
|
||||
('000000???????????????00000100101', 'OR'),
|
||||
('000000???????????????00000100110', 'XOR'),
|
||||
('000000???????????????00000100111', 'NOR'),
|
||||
('000000???????????????00000101010', 'SLT'),
|
||||
('000000???????????????00000101011', 'SLTU'),
|
||||
('000001?????00000????????????????', 'BLTZ'),
|
||||
('000001?????10000????????????????', 'BLTZAL'),
|
||||
('000001?????00001????????????????', 'BGEZ'),
|
||||
('000001?????10001????????????????', 'BGEZAL'),
|
||||
('000010??????????????????????????', 'J'),
|
||||
('000011??????????????????????????', 'JAL'),
|
||||
('000100??????????????????????????', 'BEQ'),
|
||||
('000101??????????????????????????', 'BNE'),
|
||||
('000110?????00000????????????????', 'BLEZ'),
|
||||
('000111?????00000????????????????', 'BGTZ'),
|
||||
('001000??????????????????????????', 'ADDI'),
|
||||
('001001??????????????????????????', 'ADDIU'),
|
||||
('001010??????????????????????????', 'SLTI'),
|
||||
('001011??????????????????????????', 'SLTIU'),
|
||||
('001100??????????????????????????', 'ANDI'),
|
||||
('001101??????????????????????????', 'ORI'),
|
||||
('001110??????????????????????????', 'XORI'),
|
||||
('00111100000?????????????????????', 'LUI'),
|
||||
('01000000000??????????00000000???', 'MFC0'),
|
||||
('01000000100??????????00000000???', 'MTC0'),
|
||||
('01000010000000000000000000000001', 'TLBR'),
|
||||
('01000010000000000000000000000010', 'TLBWI'),
|
||||
('01000010000000000000000000001000', 'TLBP'),
|
||||
('01000010000000000000000000011000', 'ERET'),
|
||||
('011100???????????????00000000010', 'MUL'),
|
||||
('100000??????????????????????????', 'LB'),
|
||||
('100001??????????????????????????', 'LH'),
|
||||
('100011??????????????????????????', 'LW'),
|
||||
('100100??????????????????????????', 'LBU'),
|
||||
('100101??????????????????????????', 'LHU'),
|
||||
('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:
|
||||
def __init__(self, x):
|
||||
self.x = {'0': -1, '?': 0, '1': 1}.get(x, x)
|
||||
|
||||
def __and__(self, other):
|
||||
return Boolean(min(self.x, other.x))
|
||||
|
||||
def __or__(self, other):
|
||||
return Boolean(max(self.x, other.x))
|
||||
|
||||
def __invert__(self):
|
||||
return Boolean(-self.x)
|
||||
|
||||
def __repr__(self):
|
||||
return {-1: '0', 0: 'x', 1: '1'}[self.x]
|
||||
|
||||
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()
|
69
tools/muldiv.txt
Normal file
69
tools/muldiv.txt
Normal file
@ -0,0 +1,69 @@
|
||||
////-------------------------------- 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
|
@ -1,69 +0,0 @@
|
||||
////-------------------------------- TLBR TLBWI TLBP
|
||||
32'b00000000000???????????????000000 0 0 0 // SLL
|
||||
32'b00000000000???????????????000010 0 0 0 // SRL
|
||||
32'b00000000000???????????????000011 0 0 0 // SRA
|
||||
32'b000000???????????????00000000100 0 0 0 // SLLV
|
||||
32'b000000???????????????00000000110 0 0 0 // SRLV
|
||||
32'b000000???????????????00000000111 0 0 0 // SRAV
|
||||
32'b000000?????000000000000000001000 0 0 0 // JR
|
||||
32'b000000?????00000?????00000001001 0 0 0 // JALR
|
||||
32'b000000????????????????????001100 0 0 0 // SYSCALL
|
||||
32'b000000????????????????????001101 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 // ADD
|
||||
32'b000000???????????????00000100001 0 0 0 // ADDU
|
||||
32'b000000???????????????00000100010 0 0 0 // SUB
|
||||
32'b000000???????????????00000100011 0 0 0 // SUBU
|
||||
32'b000000???????????????00000100100 0 0 0 // AND
|
||||
32'b000000???????????????00000100101 0 0 0 // OR
|
||||
32'b000000???????????????00000100110 0 0 0 // XOR
|
||||
32'b000000???????????????00000100111 0 0 0 // NOR
|
||||
32'b000000???????????????00000101010 0 0 0 // SLT
|
||||
32'b000000???????????????00000101011 0 0 0 // SLTU
|
||||
32'b000001?????00000???????????????? 0 0 0 // BLTZ
|
||||
32'b000001?????10000???????????????? 0 0 0 // BLTZAL
|
||||
32'b000001?????00001???????????????? 0 0 0 // BGEZ
|
||||
32'b000001?????10001???????????????? 0 0 0 // BGEZAL
|
||||
32'b000010?????????????????????????? 0 0 0 // J
|
||||
32'b000011?????????????????????????? 0 0 0 // JAL
|
||||
32'b000100?????????????????????????? 0 0 0 // BEQ
|
||||
32'b000101?????????????????????????? 0 0 0 // BNE
|
||||
32'b000110?????00000???????????????? 0 0 0 // BLEZ
|
||||
32'b000111?????00000???????????????? 0 0 0 // BGTZ
|
||||
32'b001000?????????????????????????? 0 0 0 // ADDI
|
||||
32'b001001?????????????????????????? 0 0 0 // ADDIU
|
||||
32'b001010?????????????????????????? 0 0 0 // SLTI
|
||||
32'b001011?????????????????????????? 0 0 0 // SLTIU
|
||||
32'b001100?????????????????????????? 0 0 0 // ANDI
|
||||
32'b001101?????????????????????????? 0 0 0 // ORI
|
||||
32'b001110?????????????????????????? 0 0 0 // XORI
|
||||
32'b00111100000????????????????????? 0 0 0 // LUI
|
||||
32'b01000000000??????????00000000??? 0 0 0 // MFC0
|
||||
32'b01000000100??????????00000000??? 0 0 0 // MTC0
|
||||
32'b01000010000000000000000000000001 1 0 0 // TLBR
|
||||
32'b01000010000000000000000000000010 0 1 0 // TLBWI
|
||||
32'b01000010000000000000000000001000 0 0 1 // TLBP
|
||||
32'b01000010000000000000000000011000 0 0 0 // ERET
|
||||
32'b011100???????????????00000000010 0 0 0 // MUL
|
||||
32'b100000?????????????????????????? 0 0 0 // LB
|
||||
32'b100001?????????????????????????? 0 0 0 // LH
|
||||
32'b100011?????????????????????????? 0 0 0 // LW
|
||||
32'b100100?????????????????????????? 0 0 0 // LBU
|
||||
32'b100101?????????????????????????? 0 0 0 // LHU
|
||||
32'b101000?????????????????????????? 0 0 0 // SB
|
||||
32'b101001?????????????????????????? 0 0 0 // SH
|
||||
32'b101011?????????????????????????? 0 0 0 // SW
|
||||
32'b101111?????00000???????????????? 0 0 0 // I-Cache Index Invalid
|
||||
32'b101111?????01000???????????????? 0 0 0 // I-Cache Index Store Tag
|
||||
32'b101111?????10000???????????????? 0 0 0 // I-Cache Hit Invalid
|
||||
32'b101111?????00001???????????????? 0 0 0 // D-Cache Index Writeback Invalid
|
||||
32'b101111?????01001???????????????? 0 0 0 // D-Cache Index Store Tag
|
||||
32'b101111?????10001???????????????? 0 0 0 // D-Cache Hit Invalid
|
||||
32'b101111?????10101???????????????? 0 0 0 // D-Cache Hit Writeback Invalid
|
Loading…
Reference in New Issue
Block a user