Skip to content

Commit b16d955

Browse files
authored
Merge pull request #28 from litghost/eos_s3_decomp
Add discussion of the EOS S3 BEL and cell library.
2 parents b901d20 + fd72116 commit b16d955

File tree

4 files changed

+43
-0
lines changed

4 files changed

+43
-0
lines changed

docs/bel_and_site_design.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,3 +213,46 @@ two output BEL pins driving the net connected to the cell port. Having
213213
multiple BEL pins driving one net is not legal, except for the global logic 0
214214
and 1.
215215

216+
217+
### Quicklogic EOS S3 logic cell
218+
219+
The Quicklogic EOS S3 logic cell has an interesting LUT design because there
220+
is not LUT element specifically. Instead, the fabric exposes a 8x3 mux, with
221+
inverters at each of the mux inputs, see figure below:
222+
223+
![Quicklogic EOS S3 logic cell](eos_slice.png)
224+
225+
The way to approach this fabric is to first draw BEL boundaries around the 4x2
226+
mux and 8x3 mux present in the fabric:
227+
228+
![Quicklogic MUX4x2](eos_slice_mux4x2.png)
229+
![Quicklogic MUX8x3](eos_slice_mux8x3.png)
230+
231+
The cell library should have
232+
3 MUX cell types:
233+
- 4-input 1-output 2-select MUX4x2 (maps to MUX4x2 BEL and MUX8x3 BEL)
234+
- 8-input 1-output 3-select MUX8x3 (maps to MUX8x3 BEL)
235+
- A macro cell that is 2x (4-input 1-output 2-select MUX4x2) 2xMUX4x2 (maps to MUX4x2 *and* MUX8x3 BEL)
236+
237+
A fourth most general cell type is possible, which is to add a cell that also
238+
has a cell port that maps to `TBS`, instead of tying `TBS` high as the
239+
2xMUX4x2 cell would do. It is unclear how useful such a cell would be.
240+
However given the BEL boundaries, adding such a cell would be easy after the
241+
fact.
242+
243+
In all of the cells above, all inputs to the muxes have statically
244+
configured inverters.
245+
246+
So the question becomes, how to model LUT cells in this fabric? The LUT cells
247+
should be the regular LUT1, LUT2 and LUT3 cells. The LUT1 and LUT2 can map to
248+
either the MUX4x2 or MUX8x3 BEL. The LUT3 can map to only the MUX8x3 BEL.
249+
The question is only what is the cell port to BEL pin map?
250+
251+
The solution is when mapping a LUT cell, to tie all of the MUX BEL pins to VCC
252+
(or GND, whatever the default is) before the inverter. The place and route
253+
tool can treat the BEL as a regular LUT, and only the bitstream generation
254+
step will need to be aware that the inversion control is being used to
255+
encode the LUT equation.
256+
257+
This configuration allows most (if not all) of the logic to be available
258+
to the place and route tool, without exposing unneeded complexity.

docs/eos_slice.png

46.2 KB
Loading

docs/eos_slice_mux4x2.png

46.7 KB
Loading

docs/eos_slice_mux8x3.png

47.1 KB
Loading

0 commit comments

Comments
 (0)