-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
When simulating a design with all rewind keyword removed (#8), LightningSim throws a RecursionError before which a part of call stack (marked in the error message below) repeats 142 times:
[01:21:57] [INFO] LightningSim: Compiling project...
[01:22:04] [INFO] LightningSim: Running testbench...
[01:22:04] [INFO] LightningSim: Parsing schedule...
[01:22:04] [INFO] LightningSim: Resolving schedule from trace...
Traceback (most recent call last):
<Begin repeated call stack>
File "/hdd/liuweiran/miniconda3/envs/lightningsim/lib/python3.12/site-packages/lightningsim/model/instruction.py", line 120, in <genexpr>
max(process.latency.start for process in dataflow.processes)
^^^^^^^^^^^^^^^^^^^^^
File "/hdd/liuweiran/miniconda3/envs/lightningsim/lib/python3.12/functools.py", line 998, in __get__
val = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "/hdd/liuweiran/miniconda3/envs/lightningsim/lib/python3.12/site-packages/lightningsim/model/instruction.py", line 98, in start
return max(source.latency.end for input in scalar_inputs for source in input.sources) + 1
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/hdd/liuweiran/miniconda3/envs/lightningsim/lib/python3.12/site-packages/lightningsim/model/instruction.py", line 98, in <genexpr>
return max(source.latency.end for input in scalar_inputs for source in input.sources) + 1
^^^^^^^^^^^^^^^^^^
File "/hdd/liuweiran/miniconda3/envs/lightningsim/lib/python3.12/site-packages/lightningsim/model/instruction.py", line 128, in end
return self.start + self.length
^^^^^^^^^^^
File "/hdd/liuweiran/miniconda3/envs/lightningsim/lib/python3.12/functools.py", line 998, in __get__
val = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "/hdd/liuweiran/miniconda3/envs/lightningsim/lib/python3.12/site-packages/lightningsim/model/instruction.py", line 120, in length
max(process.latency.start for process in dataflow.processes)
<End repeated call stack>
<141 repetitions omitted>
File "/hdd/liuweiran/miniconda3/envs/lightningsim/lib/python3.12/site-packages/lightningsim/model/instruction.py", line 120, in <genexpr>
max(process.latency.start for process in dataflow.processes)
^^^^^^^^^^^^^^^^^^^^^
File "/hdd/liuweiran/miniconda3/envs/lightningsim/lib/python3.12/functools.py", line 998, in __get__
val = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "/hdd/liuweiran/miniconda3/envs/lightningsim/lib/python3.12/site-packages/lightningsim/model/instruction.py", line 98, in start
return max(source.latency.end for input in scalar_inputs for source in input.sources) + 1
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/hdd/liuweiran/miniconda3/envs/lightningsim/lib/python3.12/site-packages/lightningsim/model/instruction.py", line 98, in <genexpr>
return max(source.latency.end for input in scalar_inputs for source in input.sources) + 1
^^^^^^^^^^^^^^
File "/hdd/liuweiran/miniconda3/envs/lightningsim/lib/python3.12/site-packages/lightningsim/model/instruction.py", line 45, in latency
return self.parent.instruction_latencies[self]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
File "/hdd/liuweiran/miniconda3/envs/lightningsim/lib/python3.12/site-packages/lightningsim/model/instruction.py", line 66, in __hash__
return hash((self.id, self.parent))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RecursionError: maximum recursion depth exceeded
The design triggering the error is a 4x4 systolic array similar to the one used in #8. Setting a larger max recursion depth does not prevent the error from being thrown.
cc: @chhzh123
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels