-
Notifications
You must be signed in to change notification settings - Fork 121
Description
Hi, I am trying to learn how to route selected pins that are unrouted in the design using RapidWright.
To make a mock example, I synthesized the DMA PCIe example design and intentionally ripped the ports of "xdma_app_i" instance.
I stored the .dcp and .edn (EDIF export file) from Vivado and read those files in RapidWright.
However, when I open the design and search through the netlist, the nets that were ripped in Vivado are not there.
I can verify this by opening up the "net_list.txt" file I created.

Below is the Java code I am using to do that:
import com.xilinx.rapidwright.design.*;
import com.xilinx.rapidwright.design.SitePinInst;
import com.xilinx.rapidwright.edif.EDIFCell;
import com.xilinx.rapidwright.edif.EDIFCellInst;
import com.xilinx.rapidwright.edif.EDIFNet;
import com.xilinx.rapidwright.edif.EDIFPortInst;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Collection;
public class RoutingTest {
public static void main(String[] args) {
String dcpPath = "/home/hansok/Projects/RW_practice/project_2/";
Design design = Design.readCheckpoint(dcpPath + "today_test.dcp", dcpPath + "today_test.edn");
System.out.println("Design loaded: " + design.getName());
EDIFCell top_cell = design.getNetlist().getTopCell();
EDIFCellInst cell_app = top_cell.getCellInst("xdma_app_i");
// Store text to a file.
String outputPath = "/home/hansok/Projects/RW_practice/project_2/net_list.txt";
String filePath = dcpPath + "nets.txt";
try (FileWriter writer = new FileWriter(outputPath)) {
for (Net net : design.getNets()) {
if (net.getName().startsWith("xdma_app_i")) {
continue;
} else if (net.getName().startsWith("xdma_1_ex_i")) {
continue;
} else {
writer.write(net.getName() + "\n");
}
}
System.out.println("Net list written to: " + outputPath);
} catch (IOException e) {
System.err.println("Failed to write net list: " + e.getMessage());
}
for (Net n : design.getNets()) {
if (n.getName().startsWith("m_axi")) {
for (SitePinInst pin : n.getPins()) {
if (!pin.isRouted() && !pin.isOutPin()) {
System.out.println("Net " + n.getName() + " has unrouted pin: " + pin.getName() + " in tile: " + pin.getTile().getName());
}
}
}
}
}
}
If I reopen the design in Vivado, those nets are still there, and I can highlight them with the Tcl command,
highlight_objects -color red [get_nets * -filter {ROUTE_STATUS == UNROUTED}].
and I can see the highlighted nets as shown in the screenshot below.

Should I create a fake routing to some register for those ripped nets and store the .dcp file again to make those unrouted nets visible in RapidWright?
Please let me know the correct way to achieve this.
Thank you.
Best,
Han-sok