from nmigen.cli import rtlil
from soc.decoder.power_enums import (Function, Form, MicrOp,
In1Sel, In2Sel, In3Sel, OutSel,
- SVEXTRA, SVEtype, SVPtype, # Simple-V
+ SVEXTRA, SVEtype, SVPtype, # Simple-V
RC, LdstLen, LDSTMode, CryIn,
single_bit_flags, CRInSel,
CROutSel, get_signal_name,
'sv_in2': SVEXTRA,
'sv_in3': SVEXTRA,
'sv_out': SVEXTRA,
+ 'sv_out2': SVEXTRA,
'sv_cr_in': SVEXTRA,
'sv_cr_out': SVEXTRA,
'ldst_len': LdstLen,
'sv_in2': 'sv_in2',
'sv_in3': 'sv_in3',
'sv_out': 'sv_out',
+ 'sv_out2': 'sv_out2',
'sv_cr_in': 'sv_cr_in',
'sv_cr_out': 'sv_cr_out',
+ 'SV_Etype': 'SV_Etype',
+ 'SV_Ptype': 'SV_Ptype',
'cr_in': 'CR in',
'cr_out': 'CR out',
'ldst_len': 'ldst len',
if field not in power_op_csvmap:
continue
csvname = power_op_csvmap[field]
- print (field, ptype, csvname, row)
+ print(field, ptype, csvname, row)
val = row[csvname]
if csvname == 'upd' and isinstance(val, int): # LDSTMode different
val = ptype(val)
def elaborate(self, platform):
m = PowerDecoder.elaborate(self, platform)
comb = m.d.comb
+ # sigh duplicated in SVP64PowerDecoder
# raw opcode in assumed to be in LE order: byte-reverse it to get BE
raw_le = self.raw_opcode_in
l = []
opint=True, bitsel=(0, 2), suffix=None, subdecoders=[]),
Subdecoder(pattern=62, opcodes=get_csv("minor_62.csv"),
opint=True, bitsel=(0, 2), suffix=None, subdecoders=[]),
+ Subdecoder(pattern=22, opcodes=get_csv("minor_22.csv"),
+ opint=True, bitsel=(1, 5), suffix=None, subdecoders=[]),
]
# top level: extra merged with major