UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Observer bgiesing
Observer
1,475 Views
Registered: ‎05-09-2017

Virtex-5 LUTRAM as shift register even when -shreg_extract is disabled

Jump to solution

Hello -

 

In ISE 13.2 with SIRF overlay targeting xqr5vfx130-1-cf1752, I have disabled shreg_extract to prevent shift registers from being extracted.  However, in the map report, it still states that my design is using 385 LUTRAMs.  I do not see any RAMs, ROMs, or SRL type primitives being reported, so I can only assume LUTRAM is being used as a shift register (but not actual SRL primitive).  When I refer to the XST synthesis report In the are of the design using LUTRAM as indicated by the map report, all synthesis messages are that flip-flops are being inferred.  There are HDL ADVISOR messages in the synthesis report stating flip-flops are inferred for what looks like a RAM, but I do want flip-flops.  What I don't want is LUTRAM shifters being used.  Am I misunderstanding these messages?

 

Thank you,

Brian

 

 

0 Kudos
1 Solution

Accepted Solutions
Observer bgiesing
Observer
1,881 Views
Registered: ‎05-09-2017

Re: Virtex-5 LUTRAM as shift register even when -shreg_extract is disabled

Jump to solution

Looks like we found it.... don't set -global_opt = Speed in Map Properties.  With that enabled, the LUTRAMs show up even though we have their use disabled.  When -global_opt=OFF, no LUTRAMs appear.

 

Seems as though the tool will make decisions contrary to your direction when you set the -global_opt property.

View solution in original post

0 Kudos
5 Replies
Scholar jmcclusk
Scholar
1,453 Views
Registered: ‎02-24-2014

Re: Virtex-5 LUTRAM as shift register even when -shreg_extract is disabled

Jump to solution

The LUTRAM's may be distributed memory, not shift registers... that's the most common application, actually.

Don't forget to close a thread when possible by accepting a post as a solution.
0 Kudos
Observer bgiesing
Observer
1,447 Views
Registered: ‎05-09-2017

Re: Virtex-5 LUTRAM as shift register even when -shreg_extract is disabled

Jump to solution

Hello -

 

Some further information... after inspection of the routed design in FPGA editor, I do indeed see SLICEM resources being used, and within those SLICEM resources I can see they are configured as SRL16 primitives.  In addition to the global -shreg_extract being disabled, I also added synthesis attributes to the signals, but the LUTRAM is still inferred.

 

Brian

0 Kudos
Scholar jmcclusk
Scholar
1,440 Views
Registered: ‎02-24-2014

Re: Virtex-5 LUTRAM as shift register even when -shreg_extract is disabled

Jump to solution

If the tool is ignoring your attributes and synthesis flags,   you can probably stop the SRL inference by adding an asynchronous reset to the registers comprising the SRL16..     That is known to prevent SRL inference. 

Don't forget to close a thread when possible by accepting a post as a solution.
0 Kudos
Observer bgiesing
Observer
1,435 Views
Registered: ‎05-09-2017

Re: Virtex-5 LUTRAM as shift register even when -shreg_extract is disabled

Jump to solution

Thanks for the response, but that has already been done. Here is the VHDL snippet:

 

 

------------

type tlm_reg_values_array is array(11 downto 0) of std_logic_vector(31 downto 0);

type smp_dly_values_array is array(8 downto 0) of tlm_reg_values_array;
signal smp_dly: smp_dly_values_array;
attribute shreg_extract : string;
attribute shreg_extract of smp_dly : signal is "no";

 

....

 

-- Create the delay lines
smp_dly_regs: process(clk, rst_n)
begin
  if (rst_n = '0') then
    for i in 0 to 8 loop
        for j in 0 to 11 loop
            smp_dly(i)(j) <= (others => '0');
        end loop;
    end loop;
  elsif rising_edge(clk) then
      if (data_addr="11111" and latch_data_d1='1') then
        if pass = X"0" then
            for i in 0 to 3 loop
                smp_dly(0)(i) <= smp_reg(i);
            end loop;

            for i in 1 to 8 loop
                for j in 0 to 3 loop
                    smp_dly(i)(j) <= smp_dly(i-1)(j);
                end loop;
            end loop;
        elsif pass = X"1" then
            for i in 4 to 7 loop
                smp_dly(0)(i) <= smp_reg(i);
            end loop;

            for i in 1 to 8 loop
                for j in 4 to 7 loop
                    smp_dly(i)(j) <= smp_dly(i-1)(j);
                end loop;
            end loop;
        elsif pass = X"2" then
            for i in 8 to 11 loop
                smp_dly(0)(i) <= smp_reg(i);
            end loop;

            for i in 1 to 8 loop
                for j in 8 to 11 loop
                    smp_dly(i)(j) <= smp_dly(i-1)(j);
                end loop;
             end loop;
        end if;
    end if;
  end if;
end process;

----

 

Thank you,

Brian

0 Kudos
Observer bgiesing
Observer
1,882 Views
Registered: ‎05-09-2017

Re: Virtex-5 LUTRAM as shift register even when -shreg_extract is disabled

Jump to solution

Looks like we found it.... don't set -global_opt = Speed in Map Properties.  With that enabled, the LUTRAMs show up even though we have their use disabled.  When -global_opt=OFF, no LUTRAMs appear.

 

Seems as though the tool will make decisions contrary to your direction when you set the -global_opt property.

View solution in original post

0 Kudos