Skip to content

Commit 7c42e1d

Browse files
author
Yasuhiro Nitta
committed
expand size*interval product value to reduce bit length #54
1 parent 8d4fd79 commit 7c42e1d

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

veriloggen/stream/stypes.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2401,15 +2401,15 @@ class _Accumulator(_UnaryOperator):
24012401
def __init__(self, right, size=None, initval=None, interval=None,
24022402
enable=None, reset=None, width=32, signed=True):
24032403

2404-
self.size = _to_constant(size) if size is not None else None
2404+
self.interval = _to_constant(interval) if interval is not None else None
2405+
self.size = (_to_constant(size * interval) if size is not None and interval is not None
2406+
else (_to_constant(size) if size is not None else None))
24052407
self.initval = (_to_constant(initval)
24062408
if initval is not None else _to_constant(0))
24072409

24082410
if not isinstance(self.initval, _Constant):
24092411
raise TypeError("initval must be Constant, not '%s'" %
24102412
str(type(self.initval)))
2411-
2412-
self.interval = interval
24132413

24142414
self.enable = _to_constant(enable)
24152415
if self.enable is not None:
@@ -2444,8 +2444,9 @@ def _implement(self, m, seq, svalid=None, senable=None):
24442444
(self.latency, 1))
24452445

24462446
size_data = self.size.sig_data if self.size is not None else None
2447-
if self.size is not None and self.interval is not None:
2448-
size_data *= self.interval
2447+
interval_data = self.interval.sig_data if self.interval is not None else None
2448+
# if self.size is not None and self.interval is not None:
2449+
# size_data *= self.interval
24492450
initval_data = self.initval.sig_data
24502451

24512452
width = self.bit_length()
@@ -2467,7 +2468,7 @@ def _implement(self, m, seq, svalid=None, senable=None):
24672468

24682469
if self.interval is not None:
24692470
interval_count = m.Reg(self.name('interval_count'), width, initval=0)
2470-
next_interval_count = vtypes.Mux(interval_count >= self.interval - 1, 0, interval_count + 1)
2471+
next_interval_count = vtypes.Mux(interval_count >= interval_data - 1, 0, interval_count + 1)
24712472
interval_enable = (interval_count == 0)
24722473

24732474
self.sig_data = data

0 commit comments

Comments
 (0)