Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
17 years ago

Yet another PUF issue.

Hi all. I asked some PUF related questions on these boards before, and I am still looking for a good way to implement a PUF on the Altera FPGAs using Quartus II.

So far I've tried:

Race based multiplexer PUFs

Race based carry-chain delay PUF

Race based buffer delay PUF

Ring oscillator based PUF

I'm now trying a new type of PUF called a Butterfly PUF (BPUF). An explanation can be found here:

Fig.3: http://www.cosic.esat.kuleuven.be/publications/article-1154.pdf

My problem is that when I try implementing this PUF, Quartus seems to optimize away the latches. I've solved optimization in the past by including LCELLs or using the "synthesis keep" attribute. How can I make sure the latches are kept? The reason I believe they are removed is that Quartus can't locate them in the floorplan viewer.

Here's my code for the latch:

module Clatch(
	D,
	CLK,
	PRE,
	CLR,
	Q
);
input D;
input CLK;
input PRE;
input CLR;
output Q;
reg latch1 /* synthesis keep*/;
assign	Q = latch1;
always@(posedge CLK or negedge PRE or negedge CLR)
begin
if (!PRE)
	begin
	latch1 <= 1;
	end
else
if (!CLR)
	begin
	latch1 <= 0;
	end
else
	begin
	latch1 <= D;
	end
end
endmodule

11 Replies