Assignment Rules
Follow these rules when creating assignments.
General Rules
- You can only constrain logic in the core (use the Interface Designer for I/O constraints).
- You can only constrain primitive cells. If two primitives cells can be packed together, you can assign them to the same location. The sub-block index must be unique for each primitive cell in a location. For example, if you assign four EFX_DSP12 primitives to the same tile, they must each have a different sub-block.
- The software does not pack manually assigned cells with unassigned cells.
For example, if you place a EFX_DSP12 into a DSP tile at sub-block 0 and do
not assign any other sub-blocks, the software will not pack any other DSP
logic into that tile, leaving sub-blocks 1, 2, and 3 empty. Similarly, only
assigning flipflops (which use sub-block 2) uses more overall resources
because sub-block 0 is left empty.Important: Because assigned and unassigned cells are not packed together, make sure to "fill up" the tile with logic. Otherwise you can end up using more tiles than needed.
Flipflops
- An EFX_FF can be packed alone or with its driver cell (EFX_LUT4, EFX_SRL8, EFX_ADD, or EFX_COMB4).
- An EFX_FF can only be packed with an EFX_SRL8 if they share CE and CLK inputs and if the EFX_FF does not have an inverted input.
- An EFX_FF cannot be packed if it has an inverted input connected to a multi-fanout net.
RAM, Multiplier, and DSP
- EFX_MULT, EFX_DSP48, and all RAM primitives cannot share a tile with any other cells.
- Two EFX_DSP24 primitives or up to four EFX_DSP12 primitives not
connected by
CASCIN/CASCOUTsignals can be packed together and share a location.
Chains
EFX_DSP48, EFX_DSP24, EFX_DSP12, EFX_ADD, and EFX_SRL8 can form chains. If one cell in the chain is assigned a location, every other cell in the chain must also be assigned a location, in the correct order.