-
Notifications
You must be signed in to change notification settings - Fork 21
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
Site PIPs with side effects #47
Comments
I remember having a long discussion about this case with @litghost |
It's definitely a nasty case, and working around it with Yosys techmaps (which aiui is how the current SymbiFlow works)? is definitely a reasonable starting point. But long term, it would definitely be nice to be able to support site routing like this in the interchange format; not just because of this specific case but also it feels like a pattern that might crop up in other places, and in general enable more creative use of site resources for route-throughs. |
That seems totally fair - but I think if we end up working on something else in this part of the schema then it's worth revisiting. I think it should be possible to implement using a pseudo-cell approach similar to how pseudo-tile-pips currently work. |
There's a nasty edge case in the Xilinx CLB where flipflops must be put into latch mode to legalise use of both
O[i]
andCO[i]
when one isn't feeding the flipflop (or the next tile in the case ofCO[3]
).Consider the following Verilog which triggers this case:
The result, as placed and routed by Vivado is:
also note:
This is effectively a special site PIP inside the FF used for route through, but it also carries the following side effects that affect the whole site:
CLK
must be connected to ground, by enabling the clock inverterCE
must be connected to Vcc, usingCEUSEDMUX
We need a way in the interchange schema of representing these kind of site pips with complex constraints. PnR should assign a high cost to them so they are only used when absolutely needed (i.e. to legalise carries in this case), as when enabled they render all the FFs in the tile useless (which might also cause some problems with placement validity checking, but that's a nextpnr-specific issue for another day).
The text was updated successfully, but these errors were encountered: