Asking for a fracturable 4-LUT currently crashes COFFE. We should give a good error message in this case.
COFFE knows how to build 4 LUTs, 5 LUTs and 6 LUTs. But if you specify that you want fracturable LUTs, it builds a LUT one size smaller and then wires those together.
So a fracturable 4-LUT needs to build two 3-LUTs, but the code won't build a 3-LUT and crashes.
We should give an error (add an else clause) in the line above so you get a better crash message (right now we just roll on through to an uninitialized variable).
And then the real check would be to check for inputs that violate this constraint and give a good error message at input parse time.
Should also test LUT sizes > 6 and < 4 and make sure you get a good errors message (K = 8 does give an unsupported parameter error; maybe could be more user-friendly though).
Asking for a fracturable 4-LUT currently crashes COFFE. We should give a good error message in this case. COFFE knows how to build 4 LUTs, 5 LUTs and 6 LUTs. But if you specify that you want fracturable LUTs, it builds a LUT one size smaller and then wires those together. So a fracturable 4-LUT needs to build two 3-LUTs, but the code won't build a 3-LUT and crashes.
See https://github.com/vaughnbetz/COFFE/blob/7dca438212689a3496463185f1b556df0350d944/coffe/fpga.py#L1061 It would be good to put error messages in to check for this.