5bab55377a88731383d406844cefd151d7d38f7d
1 from nmigen
import Module
, Elaboratable
, Signal
4 from enum
import Enum
, unique
14 class InternalOp(Enum
):
30 file_dir
= os
.path
.dirname(os
.path
.realpath(__file__
))
31 with
open(os
.path
.join(file_dir
, name
)) as csvfile
:
32 reader
= csv
.DictReader(csvfile
)
36 major_opcodes
= get_csv("major.csv")
39 class PowerMajorDecoder(Elaboratable
):
41 self
.opcode_in
= Signal(6, reset_less
=True)
43 self
.function_unit
= Signal(Function
, reset_less
=True)
44 self
.internal_op
= Signal(InternalOp
, reset_less
=True)
46 def elaborate(self
, platform
):
50 with m
.Switch(self
.opcode_in
):
51 for row
in major_opcodes
:
52 opcode
= int(row
['opcode'])
54 comb
+= self
.function_unit
.eq(Function
[row
['unit']])
55 comb
+= self
.internal_op
.eq(InternalOp
[row
['internal op']])
59 return [self
.opcode_in
,