Open acomodi opened 4 years ago
The image below is from a dcp obtained with the yosys-vivado toolchain in FPGA-tool-perf. The highlighted nets are the CLKIN and CLKOUTs nets that go to/from the PLL in the X1Y0 cmt.
The unknown GTP bits are highlighted in the image below, and we are indeed missing those. Given that the routing step passes correctly in VPR, I think that the RR nodes passing through the GTP tile are correctly connected, but we have some missing bits for those pips. The issue though is that we would need to move the whole fuzzer generation to use the 200T device, as now, IIRC, we are using the 100T.
MMCM tile REBUF
PIPs are disabled in 034b now. Enabling them should solve at least some of the missing bits.
@mkurc-ant - What do we need to do to enable the REBUF
PIPs? Why were they disabled?
@mithro I don't know why they are disabled now. A preliminary test I've done shows that the fuzzer solves them successfully. Haven't checked for potential bit conflicts though.
This should solve the unknown MMCM PIPs: https://github.com/SymbiFlow/prjxray/pull/1498
Perfect. The bits to solve now are related to the pips in the GTP_COMMON_MID
tile.
Even though the 50T and 100T have the GTP_COMMON
tiles, their location at the border of the device makes them not interfering with the clock wires.
Instead, for the 200T, the GTP_COMMON_MID
tiles alter the path of the clock wires which would normally get from/to the PLL to/from the BUFHCE tiles.
I am trying to run the fuzzers for the 200T, and see if we can transition to that part in prjxray. This would give us the possibility to write a fuzzer to get the missing bits for those pips (visible in the above screenshot)
I have a finding. So the CMT_TOP_L_UPPER_T
PIPs with missing bits are actually bi-directional pseudo PIPs. For example we have an entry in the db for CMT_TOP_L_UPPER_T.PLL_CLK_FREQ_BB_BUFOUT_NS3.PLL_CLK_FREQ_BB3_NS
but we do not have one for CMT_TOP_L_UPPER_T.PLL_CLK_FREQ_BB3_NS.PLL_CLK_FREQ_BB_BUFOUT_NS3
.
I'm not entirely sure how we model bi-directional PIPs in VPR.
One solution that comes into my mind is to have two entries per bi-dir PPIP for both directions.
While adding designs in fpga-tool-perf for the nexys_video board, the following error showed up.
The problem, as far as I understood, might be related to the fact that the bottom and top rows of the 200T have a non-common structure, with the
GTP_COMMON_MID
tile in the middle of the row.Placing the PLL elsewhere, avoiding the top and bottom rows seems to solve the issue.
A similar issue was filed, and I believe we are hitting the same kind of problem here: https://github.com/SymbiFlow/symbiflow-arch-defs/issues/1489