Skip to content

Commit 6199203

Browse files
committed
Updated Scheduler, Visitor, and GraphGenerator for _Accumulator and Counter
1 parent f93a8c7 commit 6199203

File tree

3 files changed

+25
-4
lines changed

3 files changed

+25
-4
lines changed

veriloggen/stream/graph.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,10 @@ def visit__Accumulator(self, node):
212212
peripheries=peripheries)
213213

214214
right = self.visit(node.right)
215+
if node.size is not None:
216+
size = self.visit(node.size)
217+
if node.interval is not None:
218+
interval = self.visit(node.interval)
215219
initval = self.visit(node.initval)
216220
if node.dependency is not None:
217221
dependency = self.visit(node.dependency)
@@ -220,6 +224,10 @@ def visit__Accumulator(self, node):
220224
if node.reset is not None:
221225
reset = self.visit(node.reset)
222226
self.graph.add_edge(right, node, label='data')
227+
if node.size is not None:
228+
self.graph.add_edge(size, node, label='size')
229+
if node.interval is not None:
230+
self.graph.add_edge(interval, node, label='interval')
223231
self.graph.add_edge(initval, node, label='initval')
224232
if node.dependency is not None:
225233
self.graph.add_edge(dependency, node, label='dependency')

veriloggen/stream/scheduler.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,13 +121,20 @@ def visit__Accumulator(self, node):
121121
if node._has_start_stage():
122122
return node._get_end_stage()
123123
right = self.visit(node.right)
124+
size = self.visit(node.size) if node.size is not None else None
125+
interval = (self.visit(node.interval)
126+
if node.interval is not None else None)
124127
initval = self.visit(node.initval)
125128
dependency = (self.visit(node.dependency)
126129
if node.dependency is not None else None)
127130
enable = self.visit(node.enable) if node.enable is not None else None
128131
reset = self.visit(node.reset) if node.reset is not None else None
129-
mine = self.max_stage(right, initval, dependency, enable, reset)
132+
mine = self.max_stage(right, size, interval, initval, dependency, enable, reset)
130133
node.right = self.fill_gap(node.right, mine)
134+
if node.size is not None:
135+
node.size = self.fill_gap(node.size, mine)
136+
if node.interval is not None:
137+
node.interval = self.fill_gap(node.interval, mine)
131138
node.initval = self.fill_gap(node.initval, mine)
132139
if node.enable is not None:
133140
node.enable = self.fill_gap(node.enable, mine)

veriloggen/stream/visitor.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,13 +125,15 @@ def visit__SpecialOperator(self, node):
125125
def visit__Accumulator(self, node):
126126
right = self.visit(node.right)
127127
size = self.visit(node.size) if node.size is not None else set()
128+
interval = (self.visit(node.interval)
129+
if node.interval is not None else set())
128130
initval = (self.visit(node.initval)
129131
if node.initval is not None else set())
130132
dependency = (self.visit(node.dependency)
131133
if node.dependency is not None else set())
132134
enable = self.visit(node.enable) if node.enable is not None else set()
133135
reset = self.visit(node.reset) if node.reset is not None else set()
134-
return right | size | initval | dependency | enable | reset
136+
return right | size | interval | initval | dependency | enable | reset
135137

136138
def visit_Substream(self, node):
137139
return self.visit__SpecialOperator(node)
@@ -195,6 +197,8 @@ def visit__SpecialOperator(self, node):
195197
def visit__Accumulator(self, node):
196198
right = self.visit(node.right)
197199
size = self.visit(node.size) if node.size is not None else set()
200+
interval = (self.visit(node.interval)
201+
if node.interval is not None else set())
198202
initval = (self.visit(node.initval)
199203
if node.initval is not None else set())
200204
dependency = (self.visit(node.dependency)
@@ -203,7 +207,7 @@ def visit__Accumulator(self, node):
203207
#reset = self.visit(node.reset) if node.reset is not None else set()
204208
reset = set()
205209
mine = set([node]) if node._has_output() else set()
206-
return right | size | initval | dependency | enable | reset | mine
210+
return right | size | interval | initval | dependency | enable | reset | mine
207211

208212
def visit_Substream(self, node):
209213
return self.visit__SpecialOperator(node)
@@ -276,14 +280,16 @@ def visit__SpecialOperator(self, node):
276280
def visit__Accumulator(self, node):
277281
right = self.visit(node.right)
278282
size = self.visit(node.size) if node.size is not None else set()
283+
interval = (self.visit(node.interval)
284+
if node.interval is not None else set())
279285
initval = (self.visit(node.initval)
280286
if node.initval is not None else set())
281287
dependency = (self.visit(node.dependency)
282288
if node.dependency is not None else set())
283289
enable = self.visit(node.enable) if node.enable is not None else set()
284290
reset = self.visit(node.reset) if node.reset is not None else set()
285291
mine = set([node])
286-
return right | size | initval | dependency | enable | reset | mine
292+
return right | size | interval | initval | dependency | enable | reset | mine
287293

288294
def visit_Substream(self, node):
289295
return self.visit__SpecialOperator(node)

0 commit comments

Comments
 (0)