chipsalliance / fpga-interchange-schema

https://fpga-interchange-schema.readthedocs.io/
Apache License 2.0
51 stars 20 forks source link

Choice of bel pins for a cell pin #55

Open gatecat opened 3 years ago

gatecat commented 3 years ago

Consider a Xilinx CARRY8. The DI[i] cell pins (i≠4) can map either to an 'aX' bel pin or a DIi bel pin:

Screenshot from 2021-05-18 11-43-59 (set_property LOCK_PINS {DI[1]:DI1} [get_cells carry_i])

Screenshot from 2021-05-18 11-44-32

(set_property LOCK_PINS {DI[1]:BX} [get_cells carry_i])

Currently, although multiple bel pins can map to a single cell pin, there is no way to specify that the site router is free to choose any of them (except for LUTs which are implicitly assumed to be permutable based on the LUT bel info). If one cell pin maps to multiple bel pins at the moment, all of them will be routed (as is needed for BRAM, for example).

I see three ways of solving this:

gatecat commented 3 years ago

A similar situation exists with the CASC bel pin of Versal LUTs that can be used as a LUT input in some cases, which might create some interesting interactions with the current implicitly permutable LUTs...

Screenshot from 2021-05-18 12-23-23

set_property LOCK_PINS {I0:CASC} [get_cells lut_i]