clb: clean up README files

Signed-off-by: John McMaster <johndmcmaster@gmail.com>
This commit is contained in:
John McMaster 2019-01-11 18:52:42 +01:00
parent f4f2a79cf9
commit 5f8c46a795
10 changed files with 122 additions and 191 deletions

View File

@ -0,0 +1,7 @@
# clb-lutinit Fuzzer
## NLUT.INIT
Sites: CLBL[LM]_[LR].SLICE[LM]_X[01] (all CLB)
Sets the LUT6 INIT property

View File

@ -1,4 +1,6 @@
# FFConfig Fuzzer
# 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
@ -28,7 +30,7 @@ Note Vivado GUI is misleading in some cases where it shows configuration per FF,
### FFSYNC
Sites: CLBL[LM]_[LR].SLICE[LM]_X[01] (all CLB)
Configures whether a storage element is synchronous or asynchronous.
Scope: entire site (not individual FFs)
@ -40,9 +42,7 @@ Scope: entire site (not individual FFs)
### LATCH
Sites: CLBL[LM]_[LR].SLICE[LM]_X[01] (all CLB)
Controls latch vs FF behavior for the CLB
Configures latch vs FF behavior for the CLB
| LATCH | Description | Primitives |
|-------|-------------|------------|
@ -50,11 +50,9 @@ Controls latch vs FF behavior for the CLB
|1 | LUT6 storage elements are latches (LDCE or LDPE). LUT5 storage elements cannot be used | LDCE, LDPE |
### [ABCD]*FF.ZRST
### N*FF.ZRST
Sites: CLBL[LM]_[LR].SLICE[LM]_X[01] (all CLB)
Configured stored value when reset is asserted
Configures stored value when reset is asserted
| Prim |ZRST|On reset|
|-----------------------|----|----- |
@ -64,12 +62,10 @@ Configured stored value when reset is asserted
|FDPE, FDSE, and LDPE | 1 | 1 |
## [ABCD]*FF.ZINI
## N*FF.ZINI
Sets GSR FF or latch value
Sites: CLBL[LM]_[LR].SLICE[LM]_X[01] (all CLB)
| LATCH | ZINI | Set to |
|-------|------|--------|
| FF | 0 | 1 |
@ -80,9 +76,7 @@ Sites: CLBL[LM]_[LR].SLICE[LM]_X[01] (all CLB)
## CEUSEDMUX
Sites: CLBL[LM]_[LR].SLICE[LM]_X[01] (all CLB)
Configure ability to drive clock enable (CE) or always enable clock
Configures ability to drive clock enable (CE) or always enable clock
| CEUSEDMUX | Description |
|-----------|-------------------------|
@ -92,9 +86,7 @@ Configure ability to drive clock enable (CE) or always enable clock
## SRUSEDMUX
Sites: CLBL[LM]_[LR].SLICE[LM]_X[01] (all CLB)
Configure ability to reset FF after GSR
Configures ability to reset FF after GSR
| SRUSEDMUX | Description |
|-----------|-----------------------|
@ -105,12 +97,10 @@ TODO: how used when SR?
## CLKINV
Sites: CLBL[LM]_[LR].SLICE[LM]_X[01] (all CLB)
Configures whether to invert the clock going into a slice.
Scope: entire site (not individual FFs)
Whether to invert the clock going into a slice.
| LATCH | CLKINV | Description |
|-------|--------|----------------|
| FF | 0 | normal clock |

View File

@ -1,18 +1,11 @@
# CLBn5FFMUX Fuzzer
# clb-n5ffmux Fuzzer
## Purpose
Document A5FFMUX family of CLB muxes
## N5FFMUX
## Algorithm
5FFMUX
Inputs can come from either the LUT6_2 NO5 output or the CLB NX input
To perturb the CLB the smallest, want LUT6 always instantiated
However, some routing congestion that would require putting FFs in bypass
(which turns out is actually okay, but didn't realize that at the time)
Decided instead ot instantiate LUT8, but not use the output
Turns out this is okay and won't optimize things away
So then, the 5FF D input is switched between the O5 output and an external CLB input
The A5FFMUX family of CLB muxes feed the D input of A5FF family of FFs
## Outcome
Bits are one hot encoded per mux position
| N5FFMUX | N5FFMUX.D |
|--------|-----------------|
| IN_A | N5LUT.O5 |
| IN_B | NX |

View File

@ -1,8 +1,11 @@
# CLBnCY0 Fuzzer
# clb-ncy0 Fuzzer
## Purpose
Document ACY0 family of CLB muxes
## CARRY4.NCY0
## Algorithm
The ACY0 family of CLB muxes feeds the CARRY4.DI0 family
| NCY0 | CARRY4.DIN |
|--------|------------------|
| 0 | NX |
| 1 | O5 |
## Outcome

View File

@ -1,23 +1,23 @@
# FFSRCEMUX Fuzzer
# clb-ffsrcemux Fuzzer
## Purpose
Document CEUSEDMUX, SRUSEDMUX muxes
## CEUSEDMUX
## Algorithm
Configures whether clock enable (CE) is used or clock always on
## Results
### CEUSEDMUX: whether clock enable (CE) is used or clock always on
0: always on
1: controlled
CLB.SLICE_X0.CEUSEDMUX 00_39
CLB.SLICE_X1.CEUSEDMUX <0 candidates>
| CEUSEDMUX | CE |
|------------|------------------|
| 0 | Always on |
| 1 | Controlled |
### SRUSEDMUX: whether FF can be reset or simply uses D value
(How used when SR?)
0: never reset
1: controlled
CLB.SLICE_X0.SRUSEDMUX 00_35
CLB.SLICE_X1.SRUSEDMUX <0 candidates>
### SRUSEDMUX
Configures whether FF can be reset or simply uses D value
| SRUSEDMUX | Resettable? |
|------------|------------------|
| 0 | No |
| 1 | Controlled |
XXX: How used when SR?

View File

@ -1,41 +1,8 @@
# CLBnFFMUX Fuzzer
# clb-nffmux Fuzzer
## NFFMUX
Configures the AFFMUX family of CLB muxes which feed the D input of the AFF series of FFs.
Availible selections varies by A/B/C/D, see db for details.
## Purpose
Document nFFMUX family of CLB muxes
## Algorithm
## Outcome
```
CLB.SLICE_X0.AFFMUX.B0 30_00
CLB.SLICE_X0.AFFMUX.B1 30_01
CLB.SLICE_X0.AFFMUX.B2 30_02
CLB.SLICE_X0.AFFMUX.B3 30_03
CLB.SLICE_X0.BFFMUX.B0 30_27
CLB.SLICE_X0.BFFMUX.B1 30_26
CLB.SLICE_X0.BFFMUX.B2 30_25
CLB.SLICE_X0.BFFMUX.B3 30_24
CLB.SLICE_X0.CFFMUX.B0 30_35
CLB.SLICE_X0.CFFMUX.B1 30_36
CLB.SLICE_X0.CFFMUX.B2 30_37
CLB.SLICE_X0.CFFMUX.B3 30_38
CLB.SLICE_X0.DFFMUX.B0 30_62
CLB.SLICE_X0.DFFMUX.B1 30_61
CLB.SLICE_X0.DFFMUX.B2 30_60
CLB.SLICE_X0.DFFMUX.B3 30_59
CLB.SLICE_X1.AFFMUX.B0 31_00
CLB.SLICE_X1.AFFMUX.B1 31_01
CLB.SLICE_X1.AFFMUX.B2 31_02
CLB.SLICE_X1.AFFMUX.B3 30_04
CLB.SLICE_X1.BFFMUX.B0 31_25
CLB.SLICE_X1.BFFMUX.B1 31_27
CLB.SLICE_X1.BFFMUX.B2 31_26
CLB.SLICE_X1.BFFMUX.B3 31_24
CLB.SLICE_X1.CFFMUX.B0 31_35
CLB.SLICE_X1.CFFMUX.B1 31_38
CLB.SLICE_X1.CFFMUX.B2 31_37
CLB.SLICE_X1.CFFMUX.B3 31_36
CLB.SLICE_X1.DFFMUX.B0 30_58
CLB.SLICE_X1.DFFMUX.B1 31_61
CLB.SLICE_X1.DFFMUX.B2 31_62
CLB.SLICE_X1.DFFMUX.B3 31_60
```

View File

@ -1,52 +1,8 @@
# CLBnOUTMUX Fuzzer
# clb-noutmux Fuzzer
## [A-D]FFMUX
Configures the AOUTMUX family of CLB muxes which feed the AMUX family of CLB outputs
Availible selections varies by A/B/C/D, see db for details.
## Purpose
Document nOUTMUX family of CLB muxes
## Algorithm
## Outcome
```
CLB.SLICE_X0.AOUTMUX.B0 30_11
CLB.SLICE_X0.AOUTMUX.B1 30_08
CLB.SLICE_X0.AOUTMUX.B2 30_06
CLB.SLICE_X0.AOUTMUX.B3 30_07
CLB.SLICE_X0.BOUTMUX.B0 30_20
CLB.SLICE_X0.BOUTMUX.B1 30_21
CLB.SLICE_X0.BOUTMUX.B2 30_22
CLB.SLICE_X0.BOUTMUX.B3 30_23
CLB.SLICE_X0.COUTMUX.B0 30_45
CLB.SLICE_X0.COUTMUX.B1 30_44
CLB.SLICE_X0.COUTMUX.B2 30_40
CLB.SLICE_X0.COUTMUX.B3 30_43
CLB.SLICE_X0.DOUTMUX.B0 30_56
CLB.SLICE_X0.DOUTMUX.B1 30_51
CLB.SLICE_X0.DOUTMUX.B2 30_52
CLB.SLICE_X0.DOUTMUX.B3 30_57
CLB.SLICE_X1.AOUTMUX.B0 31_09
CLB.SLICE_X1.AOUTMUX.B1 31_07
CLB.SLICE_X1.AOUTMUX.B2 31_10
CLB.SLICE_X1.AOUTMUX.B3 30_05
CLB.SLICE_X1.BOUTMUX.B0 31_20
CLB.SLICE_X1.BOUTMUX.B1 30_28
CLB.SLICE_X1.BOUTMUX.B2 31_21
CLB.SLICE_X1.BOUTMUX.B3 30_29
CLB.SLICE_X1.COUTMUX.B0 31_43
CLB.SLICE_X1.COUTMUX.B1 30_42
CLB.SLICE_X1.COUTMUX.B2 31_40
CLB.SLICE_X1.COUTMUX.B3 30_41
CLB.SLICE_X1.DOUTMUX.B0 31_56
CLB.SLICE_X1.DOUTMUX.B1 30_53
CLB.SLICE_X1.DOUTMUX.B2 31_57
CLB.SLICE_X1.DOUTMUX.B3 31_53
```
From manual O6 testing
```
30_11 X0 AOUTMUX O6
30_20 X0 BOUTMUX O6
30_45 X0 COUTMUX O6
30_56 X0 DOUTMUX O6
31_09 X1 AOUTMUX O6
31_20 X1 BOUTMUX O6
31_43 X1 COUTMUX O6
31_56 X1 DOUTMUX O6
```

View File

@ -1,19 +1,13 @@
# CLBPRECYINIT Fuzzer
# clb-precyinit Fuzzer
## Purpose
Document PRECYINIT mux
## PRECYINIT
## Algorithm
Configures the PRECYINIT mux which provides CARRY4's first carry chain input
## Outcome
| PRECYINIT | Value |
|------------|---------------------------------|
| C0 | Logic 0 |
| C1 | Logic 1 |
| AX | AX CLB input |
| CIN | Carry in from adjacent CLB COUT |
```
CLB.SLICE_X0.PRECYINIT.0 <0 candidates>
CLB.SLICE_X0.PRECYINIT.1 00_12
CLB.SLICE_X0.PRECYINIT.AX 30_14
CLB.SLICE_X0.PRECYINIT.CIN 30_13
CLB.SLICE_X1.PRECYINIT.0 <0 candidates>
CLB.SLICE_X1.PRECYINIT.1 01_11
CLB.SLICE_X1.PRECYINIT.AX 31_13
CLB.SLICE_X1.PRECYINIT.CIN 31_12
```

View File

@ -1,29 +1,50 @@
# CLBRAM Fuzzer
# clb-ram Fuzzer
## Purpose
Solves SLICEM specific bits:
- Shift register LUT (SRL)
- Memory size
- RAM vs LUT
- Related muxes
| Primitive | RAM | SMALL | SRL |
|------------|-----|-------|-----|
| LUT6 | | | |
| SRL16E | | X | X |
| SRLC32E | | | X |
| RAM32X1S | X | X | |
| RAM64X1S | X | | |
| RAM32M | X | X | |
| RAM32X1D | X | X | |
| RAM64M | X | | |
| RAM64X1D | X | | |
| RAM128X1D | X | | |
| RAM256X1S | X | | |
| RAM128X1S | X | | |
## NLUT.RAM
Set to make a RAM* family primitive, otherwise is a SRL or LUT function generator.
## NLUT.SMALL
Seems to be set on smaller primitives.
## NLUT.SRL
Whether to make a shift register LUT (SRL). Set when using SRL16E or SRLC32E
## WA7USED
Set to 1 to propagate CLB's CX input to WA7
## WA8USED
Set to 1 to propagate CLB's BX input to WA8
## WEMUX.CE
| WEMUX.CE | CLB RAM write enable |
|-----------|----------------------|
| 0 | CLB WE input |
| 1 | CLB CE input |
## Algorithm
## Outcome
```
CLB.SLICE_X0.ALUT.RAM 31_16
CLB.SLICE_X0.ALUT.SMALL 00_04
CLB.SLICE_X0.ALUT.SRL 30_16
CLB.SLICE_X0.BLUT.RAM 31_17
CLB.SLICE_X0.BLUT.SMALL 00_24
CLB.SLICE_X0.BLUT.SRL 30_17
CLB.SLICE_X0.CLUT.RAM 31_46
CLB.SLICE_X0.CLUT.SMALL 00_28
CLB.SLICE_X0.CLUT.SRL 30_46
CLB.SLICE_X0.DLUT.RAM 31_47
CLB.SLICE_X0.DLUT.SMALL 01_59
CLB.SLICE_X0.DLUT.SRL 30_47
CLB.SLICE_X0.WA7USED 00_40
CLB.SLICE_X0.WA8USED 01_27
CLB.SLICE_X0.WEMUX.CE 01_23
```

View File

@ -1,4 +1,4 @@
# NDI1MUX Fuzzer
# clb-ndi1mux Fuzzer
See minitest for DI notes