R
ratep2001
I have the following problem: I want to implement large delay
(50-100ns) on some signals in my VHDL code and fit them into a CPLD
and for that purpose I use chained buffers. However, I found tha
although I use the attributes for preservation of nodes/signal
("syn_keep" for Synplify and "opt" for the optimizer), I canno
preserve more than one single buffer.
For example, in the code below I want to fit 7 buffers between th
input and the output signal. However, I don't get 7 chained buffers i
my pre-fit equations, but just a single buffer buf7 on my input signal
So I end up with just a few nanoseconds of delay, which is far fro
sufficient.
Is there any elegant way to create more than one buffer, and preserv
it from collapsing? I can use either Synplify - Synplicity or Leonard
Spectrum - Menthor Graphics.
Best regards,
Petar
--------------------------------------
Example VHDL code
library ieee;
use ieee.std_logic_1164.all;
entity delay_block is
port
(
in_signal: IN STD_LOGIC;
out_signal: OUT STD_LOGIC
);
end;
architecture delay_block_arch of delay_block is
signal buf1, buf2, buf3, buf4, buf5, buf6, buf7: STD_LOGIC;
attribute syn_keep: integer;
attribute syn_keep of buf1, buf2, buf3, buf4, buf5, buf6, buf7: signa
is 1;
attribute OPT: string;
attribute OPT of buf1, buf2, buf3, buf4, buf5, buf6, buf7: signal i
"KEEP";
begin
buf1 <= in_signal;
buf2 <= buf1;
buf3 <= buf2;
buf4 <= buf3;
buf5 <= buf4;
buf6 <= buf5;
buf7 <= buf6;
out_signal <= buf7;
end delay_block_arch
(50-100ns) on some signals in my VHDL code and fit them into a CPLD
and for that purpose I use chained buffers. However, I found tha
although I use the attributes for preservation of nodes/signal
("syn_keep" for Synplify and "opt" for the optimizer), I canno
preserve more than one single buffer.
For example, in the code below I want to fit 7 buffers between th
input and the output signal. However, I don't get 7 chained buffers i
my pre-fit equations, but just a single buffer buf7 on my input signal
So I end up with just a few nanoseconds of delay, which is far fro
sufficient.
Is there any elegant way to create more than one buffer, and preserv
it from collapsing? I can use either Synplify - Synplicity or Leonard
Spectrum - Menthor Graphics.
Best regards,
Petar
--------------------------------------
Example VHDL code
library ieee;
use ieee.std_logic_1164.all;
entity delay_block is
port
(
in_signal: IN STD_LOGIC;
out_signal: OUT STD_LOGIC
);
end;
architecture delay_block_arch of delay_block is
signal buf1, buf2, buf3, buf4, buf5, buf6, buf7: STD_LOGIC;
attribute syn_keep: integer;
attribute syn_keep of buf1, buf2, buf3, buf4, buf5, buf6, buf7: signa
is 1;
attribute OPT: string;
attribute OPT of buf1, buf2, buf3, buf4, buf5, buf6, buf7: signal i
"KEEP";
begin
buf1 <= in_signal;
buf2 <= buf1;
buf3 <= buf2;
buf4 <= buf3;
buf5 <= buf4;
buf6 <= buf5;
buf7 <= buf6;
out_signal <= buf7;
end delay_block_arch