File tree Expand file tree Collapse file tree 4 files changed +20
-4
lines changed Expand file tree Collapse file tree 4 files changed +20
-4
lines changed Original file line number Diff line number Diff line change 1
- from dataclasses import dataclass , KW_ONLY
1
+ from dataclasses import dataclass , KW_ONLY , field
2
2
from typing import Sequence
3
3
from amaranth import *
4
4
@@ -284,7 +284,10 @@ class ALUComponent(FunctionalComponentParams):
284
284
zba_enable : bool = False
285
285
zbb_enable : bool = False
286
286
zicond_enable : bool = False
287
- decoder_manager : AluFn = AluFn (zba_enable = zba_enable , zbb_enable = zbb_enable , zicond_enable = zicond_enable )
287
+ decoder_manager : AluFn = field (init = False )
288
+
289
+ def get_decoder_manager (self ):
290
+ return AluFn (zba_enable = self .zba_enable , zbb_enable = self .zbb_enable , zicond_enable = self .zicond_enable )
288
291
289
292
def get_module (self , gen_params : GenParams ) -> FuncUnit :
290
293
return AluFuncUnit (gen_params , self .decoder_manager )
Original file line number Diff line number Diff line change @@ -161,5 +161,8 @@ def get_module(self, gen_params: GenParams) -> FuncUnit:
161
161
unit = LSUDummy (gen_params , bus_master )
162
162
return unit
163
163
164
+ def get_decoder_manager (self ):
165
+ pass # LSU component currently doesn't have a decoder manager
166
+
164
167
def get_optypes (self ) -> set [OpType ]:
165
168
return {OpType .LOAD , OpType .STORE , OpType .FENCE }
Original file line number Diff line number Diff line change 1
- from dataclasses import dataclass , KW_ONLY
1
+ from dataclasses import dataclass , KW_ONLY , field
2
2
from typing import Sequence
3
3
from amaranth import *
4
4
@@ -114,7 +114,10 @@ def _(arg):
114
114
class ShiftUnitComponent (FunctionalComponentParams ):
115
115
_ : KW_ONLY
116
116
zbb_enable : bool = False
117
- decoder_manager : ShiftUnitFn = ShiftUnitFn (zbb_enable = zbb_enable )
117
+ decoder_manager : ShiftUnitFn = field (init = False )
118
+
119
+ def get_decoder_manager (self ):
120
+ return ShiftUnitFn (zbb_enable = self .zbb_enable )
118
121
119
122
def get_module (self , gen_params : GenParams ) -> FuncUnit :
120
123
return ShiftFuncUnit (gen_params , self .decoder_manager )
Original file line number Diff line number Diff line change @@ -41,10 +41,17 @@ class FunctionalComponentParams(ABC):
41
41
_ : KW_ONLY
42
42
decoder_manager : "DecoderManager" = field (init = False )
43
43
44
+ def __post_init__ (self ):
45
+ if not hasattr (self , "decoder_manager" ):
46
+ object .__setattr__ (self , "decoder_manager" , self .get_decoder_manager ())
47
+
44
48
@abstractmethod
45
49
def get_module (self , gen_params : "GenParams" ) -> FuncUnit :
46
50
raise NotImplementedError ()
47
51
52
+ def get_decoder_manager (self ) -> "DecoderManager" :
53
+ raise NotImplementedError ()
54
+
48
55
def get_optypes (self ) -> set ["OpType" ]:
49
56
return self .decoder_manager .get_op_types ()
50
57
You can’t perform that action at this time.
0 commit comments