Altera_Forum
Honored Contributor
10 years agoHow to enforce the used DATA input of a LUT?
Hi,
I am implementing a Physically Uncloneable Function with Ring-Oscillators (RO) on Cyclone IV FPGAs. Each RO consists of 16 LCELLs, placed in the 16 LEs (i.e. LUTs) of another LAB. Withset_location_assignment LCCOMB_X..._Y..._N... -to ... commands in my qsf file, I am able to customize which LUTs are used for which LCELLs. However, I am not able to customize which LUT input (DATAA, DATAB, DATAC or DATAD) is used for each LUT. The quartus compiler seems to have its own reasons for this, leading to different routing within the different ROs. I was hoping the "Look-Up Table Buffer Primitives" would give me controll over this:
module lut_function (a,b,c,d,o);
input a,b,c,d;
output o;
wire aw,bw,cw,dw,o;
lut_input lut_in1 (a, aw) ;
lut_input lut_in2 (b, bw) ;
lut_input lut_in3 (c, cw) ;
lut_input lut_in4 (d, dw) ;
lut_output lut_o (aw || bw || cw || dw, o) ;
endmodule
But apparently this does not enforce that input a is really routed through DATAA of the LUT and so forth. The compiler seems to mix it up at will. So my question is, if there is a way to actually enforce which LUT data input is used? Thanks and best regards!