From: Sebastien Bourdeauducq Date: Fri, 16 Nov 2012 18:34:34 +0000 (+0100) Subject: examples: basic Pytholite demo X-Git-Tag: 24jan2021_ls180~2099^2~788 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7c7addbbe88d1fdef909df3003ea4bfb005aeb9e;p=litex.git examples: basic Pytholite demo --- diff --git a/examples/pytholite/basic.py b/examples/pytholite/basic.py new file mode 100644 index 00000000..fa8ba9ba --- /dev/null +++ b/examples/pytholite/basic.py @@ -0,0 +1,43 @@ +from migen.flow.network import * +from migen.actorlib.sim import * +from migen.pytholite.compiler import make_pytholite +from migen.sim.generic import Simulator +from migen.sim.icarus import Runner + +layout = [("r", BV(32))] + +def number_gen(): + for i in range(10): + yield Token("result", {"r": i}) + +class Dumper(SimActor): + def __init__(self): + def dumper_gen(): + while True: + t = Token("result") + yield t + print(t.value["r"]) + super().__init__(dumper_gen(), + ("result", Sink, layout)) + +def run_sim(ng): + g = DataFlowGraph() + d = Dumper() + g.add_connection(ActorNode(ng), ActorNode(d)) + + c = CompositeActor(g) + fragment = c.get_fragment() + sim = Simulator(fragment, Runner()) + sim.run(30) + del sim + +def main(): + print("Simulating Pytholite:") + ng_pytholite = make_pytholite(number_gen, dataflow=[("result", Source, layout)]) + run_sim(ng_pytholite) + + print("Simulating native Python:") + ng_native = SimActor(number_gen(), ("result", Source, layout)) + run_sim(ng_native) + +main()