1 from nmigen
import Module
, Elaboratable
, Signal
4 from enum
import Enum
, unique
12 class InternalOp(Enum
):
27 file_dir
= os
.path
.dirname(os
.path
.realpath(__file__
))
28 with
open(os
.path
.join(file_dir
, name
)) as csvfile
:
29 reader
= csv
.DictReader(csvfile
)
32 major_opcodes
= get_csv("major.csv")
34 class PowerMajorDecoder(Elaboratable
):
36 self
.opcode_in
= Signal(6, reset_less
=True)
38 self
.function_unit
= Signal(Function
, reset_less
=True)
39 self
.internal_op
= Signal(InternalOp
, reset_less
=True)
40 def elaborate(self
, platform
):
44 with m
.Switch(self
.opcode_in
):
45 for row
in major_opcodes
:
46 opcode
= int(row
['opcode'])
48 comb
+= self
.function_unit
.eq(Function
[row
['unit']])
49 comb
+= self
.internal_op
.eq(InternalOp
[row
['internal op']])