Skip to content

Disagreement between Vivado and RapidWright on SitePIP status #1397

Description

@jakobwenzel

Hi there!

I have a (minimized) DCP where Vivado (I tested both 2025.1 and 2026.1 with identical behavior) and RapidWright disagree on the state of a Site PIP. Vivado says it's not used. RapidWright says it's used. Vivado is not quite sure whether its connected Site Pin is used.

Download, including Verilog Source and TCL used to build the Checkpoint

Vivado's UI

Image

The F_O wire and Site Pin are used, FMUX wire and Site Pin are unused. The OUTMUXF Site PIP is unused.

Image

In the Site Pin properties view, the connected Cell Pin is only listed on the FMUX pin.

Vivado TCL

puts "net to site pins: [get_site_pins -of_objects [get_nets o]]"
foreach sp [get_site_pins -of_objects [get_nets o]] { set net [get_nets -quiet -of_objects $sp]; puts "pin $sp to net: $net" }
puts "pip used: [get_property IS_USED [get_site_pips -of_objects [get_sites SLICE_X26Y190] SLICE_X26Y190/OUTMUXF:D6]]"

Output:

net to site pins: SLICE_X86Y190/FMUX SLICE_X86Y190/F_O
pin SLICE_X86Y190/FMUX to net: 
pin SLICE_X86Y190/F_O to net: o
pip used: 0

When querying the net for Site Pins, the FMUX Site Pin is listed. Querying that Site Pin for its net, it's not listed. The OUTMUXF Site PIP is unused.

RapidWright's view

Design d = Design.readCheckpoint(args[0]);
SiteInst siteInst = d.getSiteInstFromSiteName("SLICE_X86Y190");
Cell cell = siteInst.getCell("F6LUT");
Net currPortNet = d.getNet("o");
System.out.println("DesignTools.getAllRoutedSitePinsFromPhysicalPin(cell, currPortNet, physical) = " + DesignTools.getAllRoutedSitePinsFromPhysicalPin(cell, currPortNet, "O6"));
System.out.println("siteInst.getUsedSitePIPs() = " + siteInst.getUsedSitePIPs());
System.out.println("siteInst.getNetToSiteWiresMap().get(currPortNet) = " + siteInst.getNetToSiteWiresMap().get(currPortNet));

Output:

DesignTools.getAllRoutedSitePinsFromPhysicalPin(cell, currPortNet, physical) = [F_O, FMUX]
siteInst.getUsedSitePIPs() = [OUTMUXF.D6->>OUT]
siteInst.getNetToSiteWiresMap().get(currPortNet) = [FMUX, F_O]

Both F_O and FMUX Site Wires are used. The OUTMUXF Site PIP is enabled and connects the two wires.

DesignTools.getAllRoutedSitePinsFromPhysicalPin says that the Site Pin is used (That method just uses Site Wires and Site PIPs to compute used Site Pins).

I hope you can help me find out what is going on here.

Thanks,
Jakob

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions