Finish all routing and placement (_place_androute.cpp:372 is a good place to put a breakpoint)
The following gdb command should print the address of a pb lut6 that is missing a truth table. Note this is incredibly brittle way to replicate this; it may be better to just write some code to search for these cases.
The child of the aforementioned block has type "lut6", but has no child_pb and has no associated truth table. The following code however shows that there is an atom net associated with one of the inputs to the LUT pb (where "pb" is the "lut6" physical block). This demonstrates the block is used, but does not have a truth table.
int p_pin_count = pb->pb_graph_node->input_pins[0][0].pin_count_in_cluster;
p_net = toplevel_pb->pb_route[p_pin_count].atom_net_id;
Context
This issue seems to be not so much a bug but an unstated convention, wherein extra LUTs used as routing are not inserted into the netlist . This affects generation of bitstreams from VTR/VPR as truth tables typically determine the configuration memory for LUTs. Reverse engineering the correct configuration for routing is messy if you do not have a truth table.
Your Environment
VTR revision used: VTR 8.0
Operating System and version: Linux (4.14.13-1-ARCH)
LUT(s) that are inserted into the physical netlist as passthroughs do not have truth tables in the atom netlist, nor do they have children LUTs.
Expected Behaviour
Current Behaviour
Possible Solution
When passthrough LUTs are created generate corresponding truth table entries in the atom netlist.
Steps to Reproduce (for bugs)
run VPR using following command (can use another debugger) testcase_files.zip
Finish all routing and placement (_place_androute.cpp:372 is a good place to put a breakpoint)
The following gdb command should print the address of a pb lut6 that is missing a truth table. Note this is incredibly brittle way to replicate this; it may be better to just write some code to search for these cases.
testcase_files.zip
Context
This issue seems to be not so much a bug but an unstated convention, wherein extra LUTs used as routing are not inserted into the netlist . This affects generation of bitstreams from VTR/VPR as truth tables typically determine the configuration memory for LUTs. Reverse engineering the correct configuration for routing is messy if you do not have a truth table.
Your Environment