@@ -213,3 +213,46 @@ two output BEL pins driving the net connected to the cell port. Having
213
213
multiple BEL pins driving one net is not legal, except for the global logic 0
214
214
and 1.
215
215
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.
0 commit comments