1 from nmigen
import (Module
, Signal
, Cat
, Const
, Mux
, Repl
, signed
,
3 from nmutil
.pipemodbase
import PipeModBase
4 from soc
.alu
.pipe_data
import ALUInitialData
7 class ALUInputStage(PipeModBase
):
8 def __init__(self
, pspec
):
9 super().__init
__(pspec
, "input")
12 return ALUInitialData(self
.pspec
)
15 return ALUInitialData(self
.pspec
)
17 def elaborate(self
, platform
):
21 comb
+= self
.o
.op
.eq(self
.i
.op
)
23 a
= Signal
.like(self
.i
.a
)
25 with m
.If(self
.i
.op
.invert_a
):
26 comb
+= a
.eq(~self
.i
.a
)
28 comb
+= a
.eq(self
.i
.a
)
30 comb
+= self
.o
.a
.eq(a
)
32 comb
+= self
.o
.b
.eq(self
.i
.b
)