I am attempting to import a placed design into RapidWright and create a new "cloned" circuit that contains the same placed cells and nets. The imported design has a few placed LUT5-LUT6 pairs. However, when creating and placing the cells, the pins mappings are incompatible. Specifically, I get an exception when trying to connect the physical nets to the cells placed on the LUT5-LUT6 pair (see code below).
While I could just copy over the pin mappings, it would be much nicer, my overall application is a RapidWright code generator that takes a checkpoint and generates RapidWright code to build the circuit. I want to make the generated code seem as human-written as possible, and providing a compatible pin-mapping for a LUT5-LUT6 pair doesn't seem like something an average RapidWright user could do.
It would be nice to be able to have the Net.connect() function remap the pins of the cells in the pair if a conflict occurs. If that is too difficult, I could connect the logical nets first, then call a function to remap all the pins of the LUT5-LUT6 pairs, then create the physical nets from the logical ones.
Here's the checkpoint and the code that throws the error.
I am attempting to import a placed design into RapidWright and create a new "cloned" circuit that contains the same placed cells and nets. The imported design has a few placed LUT5-LUT6 pairs. However, when creating and placing the cells, the pins mappings are incompatible. Specifically, I get an exception when trying to connect the physical nets to the cells placed on the LUT5-LUT6 pair (see code below).
While I could just copy over the pin mappings, it would be much nicer, my overall application is a RapidWright code generator that takes a checkpoint and generates RapidWright code to build the circuit. I want to make the generated code seem as human-written as possible, and providing a compatible pin-mapping for a LUT5-LUT6 pair doesn't seem like something an average RapidWright user could do.
It would be nice to be able to have the
Net.connect()
function remap the pins of the cells in the pair if a conflict occurs. If that is too difficult, I could connect the logical nets first, then call a function to remap all the pins of the LUT5-LUT6 pairs, then create the physical nets from the logical ones.Here's the checkpoint and the code that throws the error.
Checkpoint (unzip for .edf and .dcp): stoplightController.zip
Code: