From: Sebastien Bourdeauducq Date: Thu, 17 Sep 2015 09:24:20 +0000 (+0800) Subject: sim: fix comb evaluation X-Git-Tag: 24jan2021_ls180~2099^2~3^2~76 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2688d66ea1e978f58c44ca0a9df9a2dea92b5c87;p=litex.git sim: fix comb evaluation --- diff --git a/migen/sim.py b/migen/sim.py index cd8d8d12..37882d6a 100644 --- a/migen/sim.py +++ b/migen/sim.py @@ -4,7 +4,7 @@ from collections import defaultdict from migen.fhdl.structure import * from migen.fhdl.structure import _Operator, _Slice, _Assign, _Fragment from migen.fhdl.bitcontainer import flen -from migen.fhdl.tools import list_inputs +from migen.fhdl.tools import list_targets __all__ = ["Simulator"] @@ -152,19 +152,17 @@ class Simulator: self.generators[k] = [v] # TODO: insert_resets + self.fragment.comb[0:0] = [s.eq(s.reset) + for s in list_targets(self.fragment.comb)] + self.time = TimeManager(clocks) self.evaluator = Evaluator() - self.comb_dependent_statements = defaultdict(list) - for statement in self.fragment.comb: - for signal in list_inputs(statement): - self.comb_dependent_statements[signal].append(statement) - def _commit_and_comb_propagate(self): + # TODO: optimize modified = self.evaluator.commit() while modified: - for signal in modified: - self.evaluator.execute(self.comb_dependent_statements[signal]) + self.evaluator.execute(self.fragment.comb) modified = self.evaluator.commit() def _eval_nested_lists(self, x):