mirror of
https://github.com/enjoy-digital/litex.git
synced 2025-01-04 09:52:26 -05:00
flow/perftools: refactor to use hooks
This commit is contained in:
parent
6cf38bfcba
commit
518501c493
1 changed files with 14 additions and 32 deletions
|
@ -1,10 +1,8 @@
|
|||
from migen.fhdl.structure import *
|
||||
from migen.flow.actor import *
|
||||
from migen.sim.generic import PureSimulable
|
||||
from migen.flow.hooks import *
|
||||
|
||||
class EndpointReporter(PureSimulable):
|
||||
class EndpointReporter(EndpointHook):
|
||||
def __init__(self, endpoint):
|
||||
self.endpoint = endpoint
|
||||
super().__init__(endpoint)
|
||||
self.reset()
|
||||
|
||||
def reset(self):
|
||||
|
@ -30,34 +28,18 @@ class EndpointReporter(PureSimulable):
|
|||
else:
|
||||
return "N/A"
|
||||
|
||||
def do_simulation(self, s):
|
||||
if s.rd(self.endpoint.stb):
|
||||
if s.rd(self.endpoint.ack):
|
||||
def on_ack(self):
|
||||
self.ack += 1
|
||||
else:
|
||||
|
||||
def on_nack(self):
|
||||
self.nack += 1
|
||||
else:
|
||||
|
||||
def on_inactive(self):
|
||||
self.inactive += 1
|
||||
|
||||
class DFGReporter:
|
||||
class DFGReporter(DFGHook):
|
||||
def __init__(self, dfg):
|
||||
assert(not dfg.is_abstract())
|
||||
self.nodepair_to_ep = dict()
|
||||
for u, v, data in dfg.edges_iter(data=True):
|
||||
if (u, v) in self.nodepair_to_ep:
|
||||
ep_to_reporter = self.nodepair_to_ep[(u, v)]
|
||||
else:
|
||||
ep_to_reporter = dict()
|
||||
self.nodepair_to_ep[(u, v)] = ep_to_reporter
|
||||
ep = data["source"]
|
||||
ep_to_reporter[ep] = EndpointReporter(u.actor.endpoints[ep])
|
||||
|
||||
def get_fragment(self):
|
||||
frag = Fragment()
|
||||
for v1 in self.nodepair_to_ep.values():
|
||||
for v2 in v1.values():
|
||||
frag += v2.get_fragment()
|
||||
return frag
|
||||
super().__init__(dfg, lambda u, ep, v: EndpointReporter(u.actor.endpoints[ep]))
|
||||
|
||||
def get_edge_labels(self):
|
||||
d = dict()
|
||||
|
|
Loading…
Reference in a new issue