- This is generally beyond the means of LogicLock, i.e. everything is actually pretty close, and putting a fence around it won't make it much tighter.
- In generaly don't do auto/floating LLRs. It's actually fine for what you did, but it's recommended to make them fixed size/locked pretty soon. The fitter does a better job with fix/locked. (Think of floating/auto as giant battleships the fitter moves around. Anytime it moves on, it has tons of logic that it has to clear out to make way, which disrupts everything.
- Can you show the data arrival path? Just curious what it looks like. Note that this is what critical paths look like. There are probably thousands of paths like this, and the fitter won't get them perfect. Also, each level of combinatorial logic generally has a number of fan-ins. Let's say that it's 4 nodes into each level. It's impossible to place all of those into the same LAB, and you end up with all these hops. Basically, if I see a critical path like that I generally don't expect more out of the fitter and look at other things(like the pipelining you did). One thing is to run "report_timing -npaths 200 -setup -to destination_register_name -panel_name "many paths"", where you change the destination_register_name to the destination of the critical path. Often you'll see 50 or more different paths all zigzagging through those labs to reach the final one. When you look at the worst one in that context, it sometimes makes more sense. (DSP designs tend to have less wide combinatorial logic than general designs, so not positive...)