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
Recently I've encountered the assertion failure during clustering: vpr/src/pack/cluster.cpp:1437 try_place_atom_block_rec: Assertion 'parent_pb->mode == pb_graph_node->pb_type->parent_mode->index' failed.
I've spent some time debugging the code and I've roughly narrowed the problem down. For some reason child_pbs together with a selected mode of a pb are not cleared correctly. Those are allocated and set as packer tries to place an atom. Every time a placement fails those should be cleared but in rare cases they are not.
The same assertion gets triggered in some cases for architectures with disabled modes (with disable_packing = "true"). The packer allocates pb and its child_pbs for such modes and bails out later.
Expected Behaviour
Packer should either succeed or fail but without triggering assertions.
Current Behaviour
The assertion 'parent_pb->mode == pb_graph_node->pb_type->parent_mode->index' at ``vpr/src/pack/cluster.cpp:1437 try_place_atom_block_rec` gets triggered.
Possible Solution
Add (or fix?) cleanup code that removes child_pbs created during atom placement if it fails for any reason.
Steps to Reproduce
Use arch.xml and design.blif from the design.tar.gz archive. Run VPR with the following command:
It will trigger the assertion: vpr/src/pack/cluster.cpp:1449 try_place_atom_block_rec: Assertion 'pb->pb_graph_node == pb_graph_node' failed. which is not the same as the one reported in the issue but the underlying problem is likely the same.
@tangxifan It is related to that but not only to. I've been able to trigger the issue even with no disabled modes in the arch. However, the bug is pretty hard to trigger. It showed up in a couple of QuickLogic test designs.
If you run VPR with the architecture and circuit I've attached (design.tar.gz) you will see that it fails during packing a .latch into the io pb_type (there are registered IOs in the arch). This is the "k4_N8" arch from SOFA processed to be used with SymbiFlow.
Uh oh!
There was an error while loading. Please reload this page.
Recently I've encountered the assertion failure during clustering:
vpr/src/pack/cluster.cpp:1437 try_place_atom_block_rec: Assertion 'parent_pb->mode == pb_graph_node->pb_type->parent_mode->index' failed.
I've spent some time debugging the code and I've roughly narrowed the problem down. For some reason
child_pbs
together with a selected mode of apb
are not cleared correctly. Those are allocated and set as packer tries to place an atom. Every time a placement fails those should be cleared but in rare cases they are not.The same assertion gets triggered in some cases for architectures with disabled modes (with
disable_packing = "true"
). The packer allocatespb
and itschild_pbs
for such modes and bails out later.Expected Behaviour
Packer should either succeed or fail but without triggering assertions.
Current Behaviour
The assertion 'parent_pb->mode == pb_graph_node->pb_type->parent_mode->index' at ``vpr/src/pack/cluster.cpp:1437 try_place_atom_block_rec` gets triggered.
Possible Solution
Add (or fix?) cleanup code that removes
child_pbs
created during atom placement if it fails for any reason.Steps to Reproduce
Use
arch.xml
anddesign.blif
from the design.tar.gz archive. Run VPR with the following command:It will trigger the assertion:
vpr/src/pack/cluster.cpp:1449 try_place_atom_block_rec: Assertion 'pb->pb_graph_node == pb_graph_node' failed.
which is not the same as the one reported in the issue but the underlying problem is likely the same.Context
I've been working for supporting a VPR architecture that is used in the OpenFPGA project in SymbiFlow (https://github.com/lnis-uofu/SOFA/blob/master/ARCH/vpr_arch/k4_N8_tileable_reset_softadder_register_scan_chain_nonLR_caravel_io_skywater130nm.xml)
Your Environment
fa683da07
The text was updated successfully, but these errors were encountered: