cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
ethant
Visitor
Visitor
8,149 Views
Registered: ‎01-27-2015

RLOC ignored when LUT optimized

Jump to solution

Hi,

 

After struggling to find out why my RLOC is being ignored, i think i stumbled on a bug. In Vivado 2014.4 the following code works as intented and the LUTs are stacked vertically on top of each other.

 

    LUT_gen : for i in 0 to 7 generate
        attribute RLOC : string;
        attribute RLOC of LUT_inst : label is "X0Y" & INTEGER'image(i);
    begin
        LUT_inst : LUT2
        generic map (
            INIT => X"E"
        )
        port map (
            O => D_OUT(i),
            I0 => D_IN(i),
            I1 => OP,
        );
    end generate;

 

However, the following code uses LUT3 primitives which the tools correctly optimizes into LUT2 primitives due to the unused 3rd input. but the tools do not respect the RLOC and the LUTs are placed "randomly".

    LUT_gen : for i in 0 to 7 generate
        attribute RLOC : string;
        attribute RLOC of LUT_inst : label is "X0Y" & INTEGER'image(i);
    begin
        LUT_inst : LUT3
        generic map (
            INIT => X"E"
        )
        port map (
            O => D_OUT(i),
            I0 => D_IN(i),
            I1 => OP,
            I2 => '0'
        );
    end generate;

 Now this code just shows the problem, but the code that I use is much more complicated and I cannot know when the tools decide to optimize my LUTs so most of my RLOC is not being respected which is causing problems. How can i fix this?

0 Kudos
1 Solution

Accepted Solutions
bwade
Scholar
Scholar
14,269 Views
Registered: ‎07-01-2008

I happen to have filed CR 798591 for this bug and it will be fixed in 2015.1 which is scheduled for release in April. Meanwhile you can put a dont_touch property on the LUT to prevent the optimization.

 

Bret

View solution in original post

2 Replies
bwade
Scholar
Scholar
14,270 Views
Registered: ‎07-01-2008

I happen to have filed CR 798591 for this bug and it will be fixed in 2015.1 which is scheduled for release in April. Meanwhile you can put a dont_touch property on the LUT to prevent the optimization.

 

Bret

View solution in original post

ethant
Visitor
Visitor
8,123 Views
Registered: ‎01-27-2015
Thanks for the answer.
DONT_TOUCH attribute solved the problem!
0 Kudos