-
Notifications
You must be signed in to change notification settings - Fork 108
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adds a tieoff method for module instances with unconnected inputs #811
base: master
Are you sure you want to change the base?
Conversation
Signed-off-by: Chris Lavin <[email protected]>
+ getName() + "/" + port.getName() + " skipping..."); | ||
} | ||
if (pin != null && (pin.getNet() == null || pin.getNet().getSource() == null)) { | ||
boolean useVccInverter = pin.getName().contains("RST"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems like an important condition to document the behaviour of.
The name of this boolean is useVccInverter
but then when it gets passed to connectToStaticNet()
it becomes its connectToVcc
argument which does not seem to reconcile, because it doesn't look like this latter method does any inversion?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've modified the code to clarify and harmonize the usage.
Signed-off-by: Chris Lavin <[email protected]>
Signed-off-by: Chris Lavin <[email protected]>
…into tieoff_modinst_ports
Signed-off-by: Chris Lavin <[email protected]>
+ "] has no source, connecting to " + (connectToVCC ? "VCC" : "GND")); | ||
} | ||
|
||
connectToStaticNet(port.getName(), connectToVCC); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we know if simply connecting the SPI to VCC does what we expect? Does any intra-site routing/SitePIPs need to be set?
EDIT: Perhaps not relevant if we stop inverting.
// Connect logically | ||
EDIFCell parent = getCellInst().getParentCell(); | ||
EDIFNet logicalStaticNet = EDIFTools.getStaticNet(type, parent, getDesign().getNetlist()); | ||
EDIFPortInst portInst = getCellInst().getPortInst(portName); | ||
if (portInst == null) { | ||
logicalStaticNet.createPortInst(portName, getCellInst()); | ||
} else { | ||
portInst.getNet().removePortInst(portInst); | ||
logicalStaticNet.addPortInst(portInst); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When connectToVCC
is true, this would also make the port logically connected to VCC (whereas if you're relying on the inverter, shouldn't it be GND?)
EDIT: Perhaps not relevant if we stop inverting.
} | ||
if (pin != null && (pin.getNet() == null || pin.getNet().getSource() == null)) { | ||
// If a port has a RST inverter, drive it with VCC to get GND | ||
boolean connectToVCC = pin.getName().contains("RST"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually, I'm beginning to think this is a little risky. You are connecting all module (not primitive) inputs containing RST
to VCC which means you can't rely on all fanouts of this RST
port to have inverters. It may even be driving LUTs.
I think it's safer to rely on the RouterHelper.invertPossibleGndPinsToVccPins()
method (called by default during RWRoute.preprocess()
) to make this transformation on a primitive level.
Co-authored-by: eddieh-xlnx <[email protected]> Signed-off-by: Chris Lavin <[email protected]>
No description provided.