whoops changed name of ALUInputData to LogicalInputData
[soc.git] / src / soc / decoder / power_decoder.py
index 4136470d3329599e3b21a84eeebb28eb681020cc..32cea4d12b9a9d3ee91c77633e5e3fcbe67c0919 100644 (file)
@@ -86,7 +86,6 @@ from soc.decoder.power_enums import (Function, Form, InternalOp,
                          In1Sel, In2Sel, In3Sel, OutSel, RC, LdstLen,
                          CryIn, get_csv, single_bit_flags,
                          get_signal_name, default_values)
-from collections import namedtuple
 from soc.decoder.power_fields import DecodeFields
 from soc.decoder.power_fieldsn import SigDecode, SignalBitRange
 
@@ -106,6 +105,12 @@ Subdecoder = namedtuple("Subdecoder",
 
 class PowerOp:
     """PowerOp: spec for execution.  op type (ADD etc.) reg specs etc.
+
+    this is an internal data structure, set up by reading CSV files
+    (which uses _eq to initialise each instance, not eq)
+
+    the "public" API (as far as actual usage as a useful decoder is concerned)
+    is Decode2ToExecute1Type
     """
 
     def __init__(self):
@@ -126,6 +131,9 @@ class PowerOp:
     def _eq(self, row=None):
         if row is None:
             row = default_values
+        # TODO: this conversion process from a dict to an object
+        # should really be done using e.g. namedtuple and then
+        # call eq not _eq
         res = [self.function_unit.eq(Function[row['unit']]),
                self.form.eq(Form[row['form']]),
                self.internal_op.eq(InternalOp[row['internal op']]),
@@ -352,7 +360,7 @@ def create_pdecode():
     pminor = [
         m19,
         Subdecoder(pattern=30, opcodes=get_csv("minor_30.csv"),
-                   opint=True, bitsel=(1, 6), suffix=None, subdecoders=[]),
+                   opint=True, bitsel=(1, 5), suffix=None, subdecoders=[]),
         Subdecoder(pattern=31, opcodes=get_csv("minor_31.csv"),
                    opint=True, bitsel=(1, 11), suffix=0b00101, subdecoders=[]),
         Subdecoder(pattern=58, opcodes=get_csv("minor_58.csv"),