Skip to content

Commit e1072c8

Browse files
committed
memorize in visitor
1 parent 502f94b commit e1072c8

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

veriloggen/dataflow/scheduler.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,6 @@ def schedule(self, nodes):
2020
class ASAPScheduler(_Scheduler):
2121
""" Determine the scheduled cycle and insert delay variables to fill the gap """
2222

23-
def __init__(self):
24-
self.visited_node = {}
25-
26-
def visit(self, node):
27-
if node in self.visited_node:
28-
return self.visited_node[node]
29-
30-
ret = _Scheduler.visit(self, node)
31-
self.visited_node[node] = ret
32-
return ret
33-
3423
def schedule(self, nodes):
3524
for node in sorted(nodes, key=lambda x:x.object_id):
3625
self.visit(node)

veriloggen/dataflow/visitor.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,21 @@
55

66
#-------------------------------------------------------------------------------
77
class _Visitor(object):
8+
def __init__(self):
9+
self.visited_node = {}
10+
811
def generic_visit(self, node):
912
raise TypeError("Type '%s' is not supported." % str(type(node)))
1013

1114
def visit(self, node):
15+
if node in self.visited_node:
16+
return self.visited_node[node]
17+
18+
ret = self._visit(node)
19+
self.visited_node[node] = ret
20+
return ret
21+
22+
def _visit(self, node):
1223
if isinstance(node, dtypes._Accumulator):
1324
return self.visit__Accumulator(node)
1425

0 commit comments

Comments
 (0)