mirror of https://github.com/openXC7/prjxray.git
Add documentation for DRAM segbits.
Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
This commit is contained in:
parent
26b95fb46e
commit
9aed3fef7c
|
|
@ -0,0 +1,168 @@
|
|||
DRAM configuration
|
||||
==================
|
||||
|
||||
The SLICEM site can turn the 4 LUT6s into distributed RAMs. There are a number of modes, each element is either a 64x1 or a 32x2 distributed RAM (DRAM). The individual elements can be combined into either a 128x1 or 256x1 DRAM.
|
||||
|
||||
Modes
|
||||
-----
|
||||
Some modes can be enabled at the single LUT level. The following modes are:
|
||||
|
||||
- 32x2 Single port (32x2S)
|
||||
- 32x2 Dual port (32x2D)
|
||||
- 64x1 Single port (64x1S)
|
||||
- 64x1 Dual port (64x1D)
|
||||
|
||||
Some modes are SLICEM wide:
|
||||
|
||||
- 128x1
|
||||
- 256x1
|
||||
|
||||
Ports
|
||||
-----
|
||||
|
||||
Each LUT element when operating in RAM mode is a DPRAM64.
|
||||
|
||||
+------------+------------+-----------+--------------+
|
||||
| Port name | Direction | Width | Description |
|
||||
+============+============+===========+==============+
|
||||
| WA | IN | 8 | Write address|
|
||||
+------------+------------+-----------+--------------+
|
||||
| A | IN | 6 | Read address |
|
||||
+------------+------------+-----------+--------------+
|
||||
| DI | IN | 2 | Data input |
|
||||
+------------+------------+-----------+--------------+
|
||||
| WE | IN | 1 | Write enable |
|
||||
+------------+------------+-----------+--------------+
|
||||
| CLK | IN | 1 | Clock |
|
||||
+------------+------------+-----------+--------------+
|
||||
| O6 | OUT | 1 | Data output 1|
|
||||
+------------+------------+-----------+--------------+
|
||||
| O5 | OUT | 1 | Data output 2|
|
||||
+------------+------------+-----------+--------------+
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
The configuration for the DRAM is found in the following segbits:
|
||||
|
||||
- ALUT.RAM
|
||||
- ALUT.SMALL
|
||||
- ADI1MUX.AI
|
||||
- BLUT.RAM
|
||||
- BLUT.SMALL
|
||||
- BDI1MUX.BI
|
||||
- CLUT.RAM
|
||||
- CLUT.SMALL
|
||||
- CDI1MUX.CI
|
||||
- DLUT.RAM
|
||||
- DLUT.SMALL
|
||||
- WA7USED
|
||||
- WA8USED
|
||||
|
||||
In order to use DRAM in a SLICEM, the DLUT in the SLICEM must be a RAM (e.g. DLUT.RAM).
|
||||
In addition the DLUT can never be a dual port RAM because the write address lines for the DLUT are also the read address lines.
|
||||
|
||||
Segbits for modes
|
||||
-----------------
|
||||
|
||||
The following table shows the features required for each mode type for each LUT.
|
||||
|
||||
+------+------------+------------+------------+----------+
|
||||
| LUTs | 32x2S | 32x2D | 64x1S | 64x1D |
|
||||
+------+------------+------------+------------+----------+
|
||||
| D | DLUT.RAM | N/A | DLUT.RAM | N/A |
|
||||
| | | | | |
|
||||
| | DLUT.SMALL | | | |
|
||||
+------+------------+------------+------------+----------+
|
||||
| C | CLUT.RAM | CLUT.RAM | CLUT.RAM | CLUT.RAM |
|
||||
| | | | | |
|
||||
| | CLUT.SMALL | CLUT.SMALL | CDI1MUX.CI | |
|
||||
| | | | | |
|
||||
| | CDI1MUX.CI | | | |
|
||||
+------+------------+------------+------------+----------+
|
||||
| B | BLUT.RAM | BLUT.RAM | BLUT.RAM | BLUT.RAM |
|
||||
| | | | | |
|
||||
| | BLUT.SMALL | BLUT.SMALL | BDI1MUX.CI | |
|
||||
| | | | | |
|
||||
| | BDI1MUX.CI | | | |
|
||||
+------+------------+------------+------------+----------+
|
||||
| A | ALUT.RAM | ALUT.RAM | ALUT.RAM | ALUT.RAM |
|
||||
| | | | | |
|
||||
| | ALUT.SMALL | ALUT.SMALL | ADI1MUX.CI | |
|
||||
| | | | | |
|
||||
| | ADI1MUX.CI | | | |
|
||||
+------+------------+------------+------------+----------+
|
||||
|
||||
Ports for modes
|
||||
---------------
|
||||
|
||||
In each mode, how the ports are used vary. The following table show the relationship between the LUT mode and ports.
|
||||
|
||||
+------+-------------------------------------+----------------------------+----------------------------------------+-------------------------------+
|
||||
| LUTs | 32x2S | 32x2D | 64x1S | 64x1D |
|
||||
+------+-------------------------------------+----------------------------+----------------------------------------+-------------------------------+
|
||||
| D | WA[4:0] = A[4:0] = {D5,D4,D3,D2,D1} | N/A | WA[5:0] = A[5:0] = {D6,D5,D4,D3,D2,D1} | N/A |
|
||||
| | | | | |
|
||||
| | DI[1:0] = {DX, DI} | | DI[0] = DI | |
|
||||
+------+-------------------------------------+----------------------------+----------------------------------------+-------------------------------+
|
||||
| C | WA[4:0] = A[4:0] = {C5,C4,C3,C2,C1} | WA[4:0] = {D5,D4,D3,D2,D1} | WA[5:0] = A[5:0] = {C6,C5,C4,C3,C2,C1} | WA[5:0] = {D6,D5,D4,D3,D2,D1} |
|
||||
| | | | | |
|
||||
| | DI[1:0] = {CX, CI} | A[4:0] = {C5,C4,C3,C2,C1} | | A[5:0] = {C6,C5,C4,C3,C2,C1} |
|
||||
| | | | | |
|
||||
| | | DI[1:0] = {CX,DI} | DI[0] = CI | DI[0] = DI |
|
||||
+------+-------------------------------------+----------------------------+----------------------------------------+-------------------------------+
|
||||
| B | WA[4:0] = A[4:0] = {B5,B4,B3,B2,B1} | WA[4:0] = {D5,D4,D3,D2,D1} | WA[5:0] = A[5:0] = {B6,B5,B4,B3,B2,B1} | WA[5:0] = {D6,D5,D4,D3,D2,D1} |
|
||||
| | | | | |
|
||||
| | | A[4:0] = {B5,B4,B3,B2,B1} | | A[5:0] = {B6,B5,B4,B3,B2,B1} |
|
||||
| | DI[1:0] = {BX, BI} | | DI[0] = BI | |
|
||||
| | | DI[1:0] = {BX,DI} | | DI[0] = DI |
|
||||
+------+-------------------------------------+----------------------------+----------------------------------------+-------------------------------+
|
||||
| A | WA[4:0] = A[4:0] = {A5,A4,A3,A2,A1} | WA[4:0] = {D5,D4,D3,D2,D1} | WA[5:0] = A[5:0] = {A6,A5,A4,A3,A2,A1} | WA[5:0] = {D6,D5,D4,D3,D2,D1} |
|
||||
| | | | | |
|
||||
| | DI[1:0] = {AX, AI} | A[4:0] = {A5,A4,A3,A2,A1} | DI[0] = AI | A[5:0] = {A6,A5,A4,A3,A2,A1} |
|
||||
| | | | | |
|
||||
| | | DI[1:0] = {AX,BLUT.DI[0]} | | DI[0] = BLUT.DI[0] |
|
||||
+------+-------------------------------------+----------------------------+----------------------------------------+-------------------------------+
|
||||
|
||||
|
||||
Techlib macros
|
||||
--------------
|
||||
|
||||
The tech library exposes the following aggregate modes, which are accomplished with the following combinations.
|
||||
|
||||
+----------+--------------+--------------+--------------+--------------+
|
||||
| Macro | Option 1 | Option 2 | Option 3 | Option 4 |
|
||||
+----------+--------------+--------------+--------------+--------------+
|
||||
| RAM32M | DLUT = 32x2S | | | |
|
||||
| | | | | |
|
||||
| | CLUT = 32x2D | | | |
|
||||
| | | | | |
|
||||
| | BLUT = 32x2D | | | |
|
||||
| | | | | |
|
||||
| | ALUT = 32x2D | | | |
|
||||
+----------+--------------+--------------+--------------+--------------+
|
||||
| RAM32X1D | DLUT = 32x2S | BLUT = 32x2S | | |
|
||||
| | | | | |
|
||||
| | CLUT = 32x2D | ALUT = 32x2D | | |
|
||||
+----------+--------------+--------------+--------------+--------------+
|
||||
| RAM32X1S | DLUT = 32x1S | CLUT = 32x1S | BLUT = 32x1S | ALUT = 32x1S |
|
||||
+----------+--------------+--------------+--------------+--------------+
|
||||
| RAM32X2S | DLUT = 32x2S | BLUT = 32x2S | | |
|
||||
| | | | | |
|
||||
| | CLUT = 32x2D | ALUT = 32x2D | | |
|
||||
+----------+--------------+--------------+--------------+--------------+
|
||||
| RAM64M | DLUT = 64x1S | | | |
|
||||
| | | | | |
|
||||
| | CLUT = 64x1D | | | |
|
||||
| | | | | |
|
||||
| | BLUT = 64x1D | | | |
|
||||
| | | | | |
|
||||
| | ALUT = 64x1D | | | |
|
||||
+----------+--------------+--------------+--------------+--------------+
|
||||
| RAM64X1D | DLUT = 64x1S | BLUT = 64x1S | | |
|
||||
| | | | | |
|
||||
| | CLUT = 64x1D | ALUT = 64x1D | | |
|
||||
+----------+--------------+--------------+--------------+--------------+
|
||||
| RAM64X1S | DLUT = 64x1S | CLUT = 64x1S | BLUT = 64x1S | ALUT = 64x1S |
|
||||
+----------+--------------+--------------+--------------+--------------+
|
||||
|
||||
Loading…
Reference in New Issue