You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
mczyz-antmicro opened this issue
Dec 20, 2023
· 1 comment
Labels
bugSomething isn't working or is incorrectdslxDSLX (domain specific language) implementation / front-endramRelated to RAM interfacestestingTest-infrastructure related
Observed unexpected behavior whilst developing new module and tests:
test_proc or proc (procA) can affect execution of another test_proc (procB)
order of spawn expressions in test_proc affects operation
I am not sure if these are related to each other, but I was unable to reproduce the issue on a smaller test case. Faulty code is on branch bug-procs-order, rebased on commit 609a7ab
I executed the tests with a prepared rule:
bazel run //xls/modules/axi4/dma:test_fifo
Previously, I had opened an issue related to order of statements #1191, which may be related.
This issue is a blocker for #1208 .
My design
There are:
2 test_proc, which interact with top-level entity FIFO
FIFO spawns FIFORAM, and 2 processes to manage input and output: Reader, Writer
Process named fifo_synth is a wrapper to set parametrics to constant values and use it to generate verilog
Side-effect on another test_proc
Issue:
If only test_fifo is present in the file, it ends successfully, so I assume the test is OK.
Then I added a second test test_double_fifo_gpf, which cause the the original proc test_fifo to never end and as a result be killed by the runner (internal error: DEADLINE_EXCEEDED: Exceeded limit of 100000 proc ticks before terminating)
The same exact thing happens if test_fifo is present and fifo_synth is uncommented.
In test_double_fifo_gpf I spawn 2 FIFOs to test a more complicated scenario and it turns out that the order of spawn expressions has effect on the execution.
This is almost what I expected whilst developing. There are writes to first FIFO and I expect that later data will go through the GPF and into the 2nd FIFO. Thanks to the trace_channels option, I can confirm that a valid request is sent to RAM and my processes hang on awaiting a response from RAM.
proppy
added
bug
Something isn't working or is incorrect
dslx
DSLX (domain specific language) implementation / front-end
testing
Test-infrastructure related
ram
Related to RAM interfaces
labels
Aug 19, 2024
bugSomething isn't working or is incorrectdslxDSLX (domain specific language) implementation / front-endramRelated to RAM interfacestestingTest-infrastructure related
Introduction
Observed unexpected behavior whilst developing new module and tests:
test_proc
orproc
(procA) can affect execution of anothertest_proc
(procB)spawn
expressions intest_proc
affects operationI am not sure if these are related to each other, but I was unable to reproduce the issue on a smaller test case. Faulty code is on branch bug-procs-order, rebased on commit 609a7ab
I executed the tests with a prepared rule:
Previously, I had opened an issue related to order of statements #1191, which may be related.
This issue is a blocker for #1208 .
My design
There are:
test_proc
, which interact with top-level entity FIFOFIFORAM
, and 2 processes to manage input and output:Reader
,Writer
fifo_synth
is a wrapper to set parametrics to constant values and use it to generate verilogSide-effect on another
test_proc
Issue:
test_fifo
is present in the file, it ends successfully, so I assume the test is OK.test_double_fifo_gpf
, which cause the the original proctest_fifo
to never end and as a result be killed by the runner (internal error: DEADLINE_EXCEEDED: Exceeded limit of 100000 proc ticks before terminating)test_fifo
is present andfifo_synth
is uncommented.Link to code
Order of
spawn
expressionsIn
test_double_fifo_gpf
I spawn 2 FIFOs to test a more complicated scenario and it turns out that the order ofspawn
expressions has effect on the execution.Link to code
Order #1
I trace the state of 2 RAMs in 2 FIFOs
1st FIFO:
2nd FIFO:
This is almost what I expected whilst developing. There are writes to first FIFO and I expect that later data will go through the GPF and into the 2nd FIFO. Thanks to the
trace_channels
option, I can confirm that a valid request is sent to RAM and my processes hang on awaiting a response from RAM.Why would either 1 or 2 RAMs hang indefinitely?
Order #2 (reverse of #1)
I trace the state of 2 RAMs in 2 FIFOs
1st FIFO:
2nd FIFO:
Both are always empty, not even the first write occurs anymore.
Can you please help me with understanding/debugging why this occurs?
The text was updated successfully, but these errors were encountered: