1 from nmutil
.singlepipe
import ControlBase
2 from nmutil
.concurrentunit
import ReservationStations
, num_bits
4 from ieee754
.cordic
.sin_cos_pipe_stages
import (
5 CordicStage
, CordicInitialStage
)
6 from ieee754
.cordic
.pipe_data
import (CordicPipeSpec
, CordicData
,
9 class CordicBasePipe(ControlBase
):
10 def __init__(self
, pspec
):
11 ControlBase
.__init
__(self
)
12 self
.init
= CordicInitialStage(pspec
)
13 self
.cordicstages
= []
14 for i
in range(pspec
.iterations
):
15 stage
= CordicStage(pspec
, i
)
16 self
.cordicstages
.append(stage
)
17 self
._eqs
= self
.connect([self
.init
] + self
.cordicstages
)
19 def elaborate(self
, platform
):
20 m
= ControlBase
.elaborate(self
, platform
)
21 m
.submodules
.init
= self
.init
22 for i
, stage
in enumerate(self
.cordicstages
):
23 setattr(m
.submodules
, "stage%d" % i
, stage
)