| # clb-ffconfig Fuzzer | |
| Documents FF configuration. | |
| Note Vivado GUI is misleading in some cases where it shows configuration per FF, but its actually per SLICE | |
| ## Primitive pin map | |
| | Element | CE | CK | D | SR | Q | | |
| |----------|----|----|---|-----|---| | |
| | FDRE | CE | C | D | R | Q | | |
| | FDPE | CE | C | D | PRE | Q | | |
| | FDSE | CE | C | D | S | Q | | |
| | FDCE | CE | C | D | CLR | Q | | |
| | LDPE | GE | G | D | PRE | Q | | |
| | LDCE | GE | G | D | CLR | Q | | |
| ## Primitive bit map | |
| | Prim | FFSYNC | LATCH | ZRST | | |
| |------|--------|-------|------| | |
| |FDPE | | | | | |
| |FDSE | X | | | | |
| |FDRE | X | | X | | |
| |FDCE | | | X | | |
| |LDCE | | X | X | | |
| |LDPE | | X | | | |
| ### FFSYNC | |
| Configures whether a storage element is synchronous or asynchronous. | |
| Scope: entire site (not individual FFs) | |
| | FFSYNC | Reset | Applicable prims | | |
| |--------|--------------|---------------------------| | |
| |0 | Asynchronous | FDPE, FDCE, LDCE, LDPE | | |
| |1 | Synchronous | FDSE, FDRE | | |
| ### LATCH | |
| Configures latch vs FF behavior for the CLB | |
| | LATCH | Description | Primitives | | |
| |-------|-------------|------------| | |
| |0 | All storage elements in the CLB are FF's | FDPE, FDSE, FDRE, FDCE | | |
| |1 | LUT6 storage elements are latches (LDCE or LDPE). LUT5 storage elements cannot be used | LDCE, LDPE | | |
| ### N*FF.ZRST | |
| Configures stored value when reset is asserted | |
| | Prim |ZRST|On reset| | |
| |-----------------------|----|----- | | |
| |FDRE, FDCE, and LDCE | 0 | 1 | | |
| |FDRE, FDCE, and LDCE | 1 | 0 | | |
| |FDPE, FDSE, and LDPE | 0 | 0 | | |
| |FDPE, FDSE, and LDPE | 1 | 1 | | |
| ## N*FF.ZINI | |
| Sets GSR FF or latch value | |
| | LATCH | ZINI | Set to | | |
| |-------|------|--------| | |
| | FF | 0 | 1 | | |
| | FF | 1 | 0 | | |
| | LATCH | 0 | 0 | | |
| | LATCH | 1 | 1 | | |
| ## CEUSEDMUX | |
| Configures ability to drive clock enable (CE) or always enable clock | |
| | CEUSEDMUX | Description | | |
| |-----------|-------------------------| | |
| | 0 | always on (CE=1) | | |
| | 1 | controlled (CE=mywire) | | |
| ## SRUSEDMUX | |
| Configures ability to reset FF after GSR | |
| | SRUSEDMUX | Description | | |
| |-----------|-----------------------| | |
| | 0 | never reset (R=0) | | |
| | 1 | controlled (R=mywire) | | |
| TODO: how used when SR? | |
| ## CLKINV | |
| Configures whether to invert the clock going into a slice. | |
| Scope: entire site (not individual FFs) | |
| | LATCH | CLKINV | Description | | |
| |-------|--------|----------------| | |
| | FF | 0 | normal clock | | |
| | FF | 1 | invert clock | | |
| | LATCH | 0 | invert clock | | |
| | LATCH | 1 | normal clock | | |