f3c83276ee4e437b92a7f328fa23aaff45fdbd52
[soc.git] / src / soc / fu / logical / pipeline.py
1 from nmutil.singlepipe import ControlBase
2 from nmutil.pipemodbase import PipeModBaseChain
3 from soc.alu.input_stage import ALUInputStage
4 from soc.logical.main_stage import LogicalMainStage
5 from soc.alu.output_stage import ALUOutputStage
6
7 class LogicalStages(PipeModBaseChain):
8 def get_chain(self):
9 inp = ALUInputStage(self.pspec)
10 main = LogicalMainStage(self.pspec)
11 out = ALUOutputStage(self.pspec)
12 return [inp, main, out]
13
14
15 class LogicalBasePipe(ControlBase):
16 def __init__(self, pspec):
17 ControlBase.__init__(self)
18 self.pipe1 = LogicalStages(pspec)
19 self._eqs = self.connect([self.pipe1])
20
21 def elaborate(self, platform):
22 m = ControlBase.elaborate(self, platform)
23 m.submodules.pipe = self.pipe1
24 m.d.comb += self._eqs
25 return m