1 """ Example 5: Making use of PyRTL and Introspection. """
3 from nmigen
import Module
, Signal
4 from nmigen
.cli
import main
, verilog
7 from pipeline
import SimplePipeline
10 class SimplePipelineExample(SimplePipeline
):
11 """ A very simple pipeline to show how registers are inferred. """
13 def __init__(self
, pipe
):
14 SimplePipeline
.__init
__(self
, pipe
)
15 self
._loopback
= Signal(4)
19 self
.n
= ~self
._loopback
26 self
._pipe
.comb
+= localv
.eq(2)
27 self
.n
= self
.n
<< localv
33 self
._pipe
.sync
+= self
._loopback
.eq(self
.n
+ 3)
39 self
.p
= SimplePipelineExample(self
.m
.d
)
41 def get_fragment(self
, platform
=None):
44 if __name__
== "__main__":
45 example
= PipeModule()
50 #print(verilog.convert(example, ports=[
51 # example.p._loopback,