YosysHQ / prjtrellis

Documenting the Lattice ECP5 bit-stream format.
Other
396 stars 86 forks source link

LUT6 instantiation support? #240

Open peepo opened 6 months ago

peepo commented 6 months ago

does Trellis/Yosys support LUT6 instantiation for ECP5?

as in: LUT6 #( .INIT(64’h0000000000000000) // Specify LUT Contents ) LUT6_inst ( .O(O), // LUT general output .I0(I0), // LUT input .I1(I1), // LUT input .I2(I2), // LUT input .I3(I3), // LUT input .I4(I4), // LUT input .I5(I5) // LUT input );

or similar?

if not, is there an intention to, in the future?

AFAICT Lattice Diamond does, but am having other issues there...

Apologies as Google has not as yet provided a solution, and as I have not instantiated previously, it might be quite difficult to prove either way??

thanks again

Ravenslofty commented 1 month ago

This repo isn't checked very often; for something like this it would have been better to ask on YosysHQ/yosys.

Anyway, to answer your question: for the ECP5, we consider the maximum LUT size to be a LUT4, so for a LUT6, you would need to construct it out of 4 LUT4s, plus a layer of PFUMX to turn these into LUT5s, then a L6MUX21 to get your final LUT6.