From 897a2e3f9c5920587db384235cc80f4cb000107d Mon Sep 17 00:00:00 2001 From: Sebastien Bourdeauducq Date: Sat, 17 Nov 2012 14:15:51 +0100 Subject: [PATCH] actorlib/sim: split TokenExchanger --- migen/actorlib/sim.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/migen/actorlib/sim.py b/migen/actorlib/sim.py index 76e126e1..1d938755 100644 --- a/migen/actorlib/sim.py +++ b/migen/actorlib/sim.py @@ -13,17 +13,17 @@ class Token: # # NB: the possibility to push several tokens at once is important to interact # with actors that only accept a group of tokens when all of them are available. -class SimActor(PureSimulable, Actor): - def __init__(self, generator, *endpoint_descriptions, **misc): +class TokenExchanger(PureSimulable): + def __init__(self, actor, generator): + self.actor = actor self.generator = generator self.active = set() self.done = False - super().__init__(*endpoint_descriptions, **misc) def _process_transactions(self, s): completed = set() for token in self.active: - ep = self.endpoints[token.endpoint] + ep = self.actor.endpoints[token.endpoint] if isinstance(ep, Sink): if s.rd(ep.ack): if s.rd(ep.stb): @@ -67,3 +67,11 @@ class SimActor(PureSimulable, Actor): self._next_transactions() if self.active: self._process_transactions(s) + +class SimActor(Actor): + def __init__(self, generator, *endpoint_descriptions, **misc): + super().__init__(*endpoint_descriptions, **misc) + self.token_exchanger = TokenExchanger(self, generator) + + def get_fragment(self): + return self.token_exchanger.get_fragment() -- 2.30.2