Skip to content

Commit f3bad11

Browse files
committed
Merge branch 'feature_stream_no_fsm_inc' into develop
2 parents 9d0af96 + edb88ce commit f3bad11

File tree

1 file changed

+69
-41
lines changed

1 file changed

+69
-41
lines changed

veriloggen/thread/stream.py

Lines changed: 69 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -694,7 +694,10 @@ def write_fifo(self, name, data, when=None):
694694

695695
def set_source(self, fsm, name, ram, offset, size, stride=1, port=0):
696696
""" intrinsic method to assign RAM property to a source stream """
697+
self._set_source(fsm, name, ram, offset, size, stride, port)
698+
fsm.goto_next()
697699

700+
def _set_source(self, fsm, name, ram, offset, size, stride=1, port=0):
698701
if not self.stream_synthesized:
699702
self._implement_stream()
700703

@@ -727,11 +730,12 @@ def set_source(self, fsm, name, ram, offset, size, stride=1, port=0):
727730
self._setup_source_ram(ram, var, port, set_cond)
728731
self._synthesize_set_source(var, name)
729732

730-
fsm.goto_next()
731-
732733
def set_source_pattern(self, fsm, name, ram, offset, pattern, port=0):
733734
""" intrinsic method to assign RAM property to a source stream """
735+
self._set_source_pattern(fsm, name, ram, offset, pattern, port)
736+
fsm.goto_next()
734737

738+
def _set_source_pattern(self, fsm, name, ram, offset, pattern, port=0):
735739
if not self.stream_synthesized:
736740
self._implement_stream()
737741

@@ -791,20 +795,24 @@ def set_source_pattern(self, fsm, name, ram, offset, pattern, port=0):
791795
self._setup_source_ram(ram, var, port, set_cond)
792796
self._synthesize_set_source_pattern(var, name)
793797

794-
fsm.goto_next()
795-
796798
def set_source_multidim(self, fsm, name, ram, offset, shape, order=None, port=0):
797799
""" intrinsic method to assign RAM property to a source stream """
800+
self._set_source_multidim(fsm, name, ram, offset, shape, order, port)
801+
fsm.goto_next()
798802

803+
def _set_source_multidim(self, fsm, name, ram, offset, shape, order=None, port=0):
799804
if order is None:
800805
order = list(reversed(range(len(shape))))
801806

802807
pattern = self._to_pattern(shape, order)
803-
return self.set_source_pattern(fsm, name, ram, offset, pattern, port)
808+
self._set_source_pattern(fsm, name, ram, offset, pattern, port)
804809

805810
def set_source_multipattern(self, fsm, name, ram, offsets, patterns, port=0):
806811
""" intrinsic method to assign multiple patterns to a RAM """
812+
self._set_source_multipattern(fsm, name, ram, offsets, patterns, port)
813+
fsm.goto_next()
807814

815+
def _set_source_multipattern(self, fsm, name, ram, offsets, patterns, port=0):
808816
if not self.stream_synthesized:
809817
self._implement_stream()
810818

@@ -892,10 +900,12 @@ def set_source_multipattern(self, fsm, name, ram, offsets, patterns, port=0):
892900
self._setup_source_ram(ram, var, port, set_cond)
893901
self._synthesize_set_source_multipattern(var, name)
894902

895-
fsm.goto_next()
896-
897903
def set_source_generator(self, fsm, name, ram, func, initvals, args=(), port=0):
904+
""" intrinsic method to assign address generator function to a source stream """
905+
self._set_source_generator(fsm, name, ram, func, initvals, args, port)
906+
fsm.goto_next()
898907

908+
def _set_source_generator(self, fsm, name, ram, func, initvals, args=(), port=0):
899909
if not isinstance(initvals, (tuple, list)):
900910
raise TypeError('initvals be 1 tuple or list.')
901911

@@ -930,11 +940,12 @@ def set_source_generator(self, fsm, name, ram, func, initvals, args=(), port=0):
930940
self._setup_source_ram(ram, var, port, set_cond)
931941
self._synthesize_set_source_generator(var, name, func, initvals, args)
932942

933-
fsm.goto_next()
934-
935943
def set_source_fifo(self, fsm, name, fifo, size):
936944
""" intrinsic method to assign FIFO property to a source stream """
945+
self._set_source_fifo(fsm, name, fifo, size)
946+
fsm.goto_next()
937947

948+
def _set_source_fifo(self, fsm, name, fifo, size):
938949
if not self.stream_synthesized:
939950
self._implement_stream()
940951

@@ -964,10 +975,11 @@ def set_source_fifo(self, fsm, name, fifo, size):
964975
self._setup_source_fifo(fifo, var, set_cond)
965976
self._synthesize_set_source_fifo(var, name)
966977

967-
fsm.goto_next()
968-
969978
def set_source_empty(self, fsm, name, value=0):
979+
self._set_source_empty(fsm, name, value)
980+
fsm.goto_next()
970981

982+
def _set_source_empty(self, fsm, name, value=0):
971983
if not self.stream_synthesized:
972984
self._implement_stream()
973985

@@ -1011,11 +1023,12 @@ def set_source_empty(self, fsm, name, value=0):
10111023

10121024
var.has_source_empty = True
10131025

1014-
fsm.goto_next()
1015-
10161026
def set_sink(self, fsm, name, ram, offset, size, stride=1, port=0):
10171027
""" intrinsic method to assign RAM property to a sink stream """
1028+
self._set_sink(fsm, name, ram, offset, size, stride, port)
1029+
fsm.If(self.oready).goto_next()
10181030

1031+
def _set_sink(self, fsm, name, ram, offset, size, stride=1, port=0):
10191032
if not self.stream_synthesized:
10201033
self._implement_stream()
10211034

@@ -1052,11 +1065,12 @@ def set_sink(self, fsm, name, ram, offset, size, stride=1, port=0):
10521065
self._setup_sink_ram(ram, var, port, set_cond)
10531066
self._synthesize_set_sink(var, name)
10541067

1055-
fsm.If(self.oready).goto_next()
1056-
10571068
def set_sink_pattern(self, fsm, name, ram, offset, pattern, port=0):
10581069
""" intrinsic method to assign RAM property to a sink stream """
1070+
self._set_sink_pattern(fsm, name, ram, offset, pattern, port)
1071+
fsm.If(self.oready).goto_next()
10591072

1073+
def _set_sink_pattern(self, fsm, name, ram, offset, pattern, port=0):
10601074
if not self.stream_synthesized:
10611075
self._implement_stream()
10621076

@@ -1122,20 +1136,24 @@ def set_sink_pattern(self, fsm, name, ram, offset, pattern, port=0):
11221136
self._setup_sink_ram(ram, var, port, set_cond)
11231137
self._synthesize_set_sink_pattern(var, name)
11241138

1125-
fsm.If(self.oready).goto_next()
1126-
11271139
def set_sink_multidim(self, fsm, name, ram, offset, shape, order=None, port=0):
11281140
""" intrinsic method to assign RAM property to a sink stream """
1141+
self._set_sink_multidim(fsm, name, ram, offset, shape, order, port)
1142+
fsm.If(self.oready).goto_next()
11291143

1144+
def _set_sink_multidim(self, fsm, name, ram, offset, shape, order=None, port=0):
11301145
if order is None:
11311146
order = list(reversed(range(len(shape))))
11321147

11331148
pattern = self._to_pattern(shape, order)
1134-
return self.set_sink_pattern(fsm, name, ram, offset, pattern, port)
1149+
self._set_sink_pattern(fsm, name, ram, offset, pattern, port)
11351150

11361151
def set_sink_multipattern(self, fsm, name, ram, offsets, patterns, port=0):
11371152
""" intrinsic method to assign multiple patterns to a RAM """
1153+
self._set_sink_multipattern(fsm, name, ram, offsets, patterns, port)
1154+
fsm.If(self.oready).goto_next()
11381155

1156+
def _set_sink_multipattern(self, fsm, name, ram, offsets, patterns, port=0):
11391157
if not self.stream_synthesized:
11401158
self._implement_stream()
11411159

@@ -1231,10 +1249,12 @@ def set_sink_multipattern(self, fsm, name, ram, offsets, patterns, port=0):
12311249
self._setup_sink_ram(ram, var, port, set_cond)
12321250
self._synthesize_set_sink_multipattern(var, name)
12331251

1234-
fsm.If(self.oready).goto_next()
1235-
12361252
def set_sink_generator(self, fsm, name, ram, func, initvals, args=(), port=0):
1253+
""" intrinsic method to assign address generator function to a sink stream """
1254+
self._set_sink_generator(fsm, name, ram, func, initvals, args, port)
1255+
fsm.If(self.oready).goto_next()
12371256

1257+
def _set_sink_generator(self, fsm, name, ram, func, initvals, args=(), port=0):
12381258
if not self.stream_synthesized:
12391259
self._implement_stream()
12401260

@@ -1271,11 +1291,12 @@ def set_sink_generator(self, fsm, name, ram, func, initvals, args=(), port=0):
12711291
self._setup_sink_ram(ram, var, port, set_cond)
12721292
self._synthesize_set_sink_generator(var, name, func, initvals, args)
12731293

1274-
fsm.If(self.oready).goto_next()
1275-
12761294
def set_sink_fifo(self, fsm, name, fifo, size):
12771295
""" intrinsic method to assign FIFO property to a sink stream """
1296+
self._set_sink_fifo(fsm, name, fifo, size)
1297+
fsm.If(self.oready).goto_next()
12781298

1299+
def _set_sink_fifo(self, fsm, name, fifo, size):
12791300
if not self.stream_synthesized:
12801301
self._implement_stream()
12811302

@@ -1307,11 +1328,12 @@ def set_sink_fifo(self, fsm, name, fifo, size):
13071328
self._setup_sink_fifo(fifo, var, set_cond)
13081329
self._synthesize_set_sink_fifo(var, name)
13091330

1310-
fsm.If(self.oready).goto_next()
1311-
13121331
def set_sink_immediate(self, fsm, name, size):
13131332
""" intrinsic method to set a sink stream as an immediate variable """
1333+
self._set_sink_immediate(fsm, name, size)
1334+
fsm.If(self.oready).goto_next()
13141335

1336+
def _set_sink_immediate(self, fsm, name, size):
13151337
if not self.stream_synthesized:
13161338
self._implement_stream()
13171339

@@ -1348,11 +1370,12 @@ def set_sink_immediate(self, fsm, name, size):
13481370

13491371
self._synthesize_set_sink_immediate(var, name)
13501372

1351-
fsm.If(self.oready).goto_next()
1352-
13531373
def set_sink_empty(self, fsm, name):
13541374
""" intrinsic method to assign RAM property to a sink stream """
1375+
self._set_sink_empty(fsm, name)
1376+
fsm.If(self.oready).goto_next()
13551377

1378+
def _set_sink_empty(self, fsm, name):
13561379
if not self.stream_synthesized:
13571380
self._implement_stream()
13581381

@@ -1380,11 +1403,12 @@ def set_sink_empty(self, fsm, name):
13801403
ram_sel(0) # '0' is reserved for empty
13811404
)
13821405

1383-
fsm.If(self.oready).goto_next()
1384-
13851406
def set_parameter(self, fsm, name, value, raw=False):
13861407
""" intrinsic method to assign parameter value to a parameter stream """
1408+
self._set_parameter(fsm, name, value, raw)
1409+
fsm.goto_next()
13871410

1411+
def _set_parameter(self, fsm, name, value, raw=False):
13881412
if not self.stream_synthesized:
13891413
self._implement_stream()
13901414

@@ -1417,11 +1441,12 @@ def set_parameter(self, fsm, name, value, raw=False):
14171441
var.write(var.next_parameter_data, self.source_start)
14181442
var.has_parameter_data = True
14191443

1420-
fsm.goto_next()
1421-
14221444
def set_read_RAM(self, fsm, name, ram, port=0):
14231445
""" intrinsic method to assign RAM property to a read_RAM interface """
1446+
self._set_read_RAM(fsm, name, ram, port)
1447+
fsm.goto_next()
14241448

1449+
def _set_read_RAM(self, fsm, name, ram, port=0):
14251450
if not self.stream_synthesized:
14261451
self._implement_stream()
14271452

@@ -1446,11 +1471,12 @@ def set_read_RAM(self, fsm, name, ram, port=0):
14461471
port = vtypes.to_int(port)
14471472
self._setup_read_ram(ram, var, port, set_cond)
14481473

1449-
fsm.goto_next()
1450-
14511474
def set_write_RAM(self, fsm, name, ram, port=0):
14521475
""" intrinsic method to assign RAM property to a write_RAM interface """
1476+
self._set_write_RAM(fsm, name, ram, port)
1477+
fsm.goto_next()
14531478

1479+
def _set_write_RAM(self, fsm, name, ram, port=0):
14541480
if not self.stream_synthesized:
14551481
self._implement_stream()
14561482

@@ -1475,10 +1501,11 @@ def set_write_RAM(self, fsm, name, ram, port=0):
14751501
port = vtypes.to_int(port)
14761502
self._setup_write_ram(ram, var, port, set_cond)
14771503

1478-
fsm.goto_next()
1479-
14801504
def set_read_modify_write_RAM(self, fsm, name, ram, read_ports=None, write_port=None):
1505+
self._set_read_modify_write_RAM(fsm, name, ram, read_ports, write_port)
1506+
fsm.goto_next()
14811507

1508+
def _set_read_modify_write_RAM(self, fsm, name, ram, read_ports=None, write_port=None):
14821509
if not self.stream_synthesized:
14831510
self._implement_stream()
14841511

@@ -1508,15 +1535,17 @@ def set_read_modify_write_RAM(self, fsm, name, ram, read_ports=None, write_port=
15081535

15091536
for i, (read_ram, read_port) in enumerate(zip(read_rams, read_ports)):
15101537
read_name = read_ram
1511-
self.set_read_RAM(fsm, read_name, ram, port=read_port)
1512-
fsm._set_index(fsm.current - 1)
1538+
self._set_read_RAM(fsm, read_name, ram, port=read_port)
15131539

15141540
write_name = write_ram
1515-
self.set_write_RAM(fsm, write_name, ram, port=write_port)
1541+
self._set_write_RAM(fsm, write_name, ram, port=write_port)
15161542

15171543
def set_read_fifo(self, fsm, name, fifo):
15181544
""" intrinsic method to assign FIFO property to a read_fifo interface """
1545+
self._set_read_fifo(fsm, name, fifo)
1546+
fsm.goto_next()
15191547

1548+
def _set_read_fifo(self, fsm, name, fifo):
15201549
if not self.stream_synthesized:
15211550
self._implement_stream()
15221551

@@ -1540,11 +1569,12 @@ def set_read_fifo(self, fsm, name, fifo):
15401569

15411570
self._setup_read_fifo(fifo, var, set_cond)
15421571

1543-
fsm.goto_next()
1544-
15451572
def set_write_fifo(self, fsm, name, fifo):
15461573
""" intrinsic method to assign FIFO property to a write_fifo interface """
1574+
self._set_write_fifo(fsm, name, fifo)
1575+
fsm.goto_next()
15471576

1577+
def _set_write_fifo(self, fsm, name, fifo):
15481578
if not self.stream_synthesized:
15491579
self._implement_stream()
15501580

@@ -1568,8 +1598,6 @@ def set_write_fifo(self, fsm, name, fifo):
15681598

15691599
self._setup_write_fifo(fifo, var, set_cond)
15701600

1571-
fsm.goto_next()
1572-
15731601
def read_sink(self, fsm, name):
15741602
""" intrinsic method to read the last output of a sink stream """
15751603

0 commit comments

Comments
 (0)