Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > VHDL > Warning: Global clock buffer not inserted on net rtlc1n42

Reply
Thread Tools

Warning: Global clock buffer not inserted on net rtlc1n42

 
 
Ahmed Samieh
Guest
Posts: n/a
 
      06-06-2007
hi all,

what is the problem with using signal in different processes?
like

for signal en

p1 : process(clk,en,....)
begin
if (rising_edge(clk) and en = '1') then
....
end if;
end process p1;

p2 : process(en, ...)
begin
if rising_edge(en) then
....
end if;
end process p2;

simulation work fine, synthesize produce this warning

Warning: Global clock buffer not inserted on net rtlc1n42

what is this warning? and how to avoide such a warning?

thanx,

Ahmed Samieh

 
Reply With Quote
 
 
 
 
Ralf Hildebrandt
Guest
Posts: n/a
 
      06-06-2007
Ahmed Samieh schrieb:

> what is the problem with using signal in different processes?
> like
>
> for signal en
>
> p1 : process(clk,en,....)
> begin
> if (rising_edge(clk) and en = '1') then
> ....
> end if;
> end process p1;


You probably want

p1 : process(clk)
if rising_edge(clk) then
if (en='1') then
....
end if;
end if;
end process p1;

If you add the en signal to the if clause as you do, this results in a
clock gate. (AFAIK)
If you put it inside the synchronous test, it is just a selector for a
multiplexer in front of some flipflops.


> p2 : process(en, ...)
> begin
> if rising_edge(en) then
> ....
> end if;
> end process p2;


This should be no problem.
(You only need en in the sensitivity list.)


> simulation work fine, synthesize produce this warning
>
> Warning: Global clock buffer not inserted on net rtlc1n42


Some synthesis libraries (some FPGAs) do not support global clock
buffers for signals, that are fed into combinational logic.

Ralf
 
Reply With Quote
 
 
 
 
Ahmed Samieh
Guest
Posts: n/a
 
      06-07-2007
On Jun 6, 9:32 pm, Ralf Hildebrandt <(E-Mail Removed)> wrote:
> Ahmed Samieh schrieb:
>
> > what is the problem with using signal in different processes?
> > like

>
> > for signal en

>
> > p1 : process(clk,en,....)
> > begin
> > if (rising_edge(clk) and en = '1') then
> > ....
> > end if;
> > end process p1;

>
> You probably want
>
> p1 : process(clk)
> if rising_edge(clk) then
> if (en='1') then
> ....
> end if;
> end if;
> end process p1;
>
> If you add the en signal to the if clause as you do, this results in a
> clock gate. (AFAIK)
> If you put it inside the synchronous test, it is just a selector for a
> multiplexer in front of some flipflops.
>
> > p2 : process(en, ...)
> > begin
> > if rising_edge(en) then
> > ....
> > end if;
> > end process p2;

>
> This should be no problem.
> (You only need en in the sensitivity list.)
>
> > simulation work fine, synthesize produce this warning

>
> > Warning: Global clock buffer not inserted on net rtlc1n42

>
> Some synthesis libraries (some FPGAs) do not support global clock
> buffers for signals, that are fed into combinational logic.
>
> Ralf


thanx Ralf,
i changed the FPGA and the warning had gone
but, i the question still, what is the reason of this global clock
buffer ....
while another 2 processes like :

p1 : process(clk,...)
begin
if rising_edge(clk) then
....
end if;
end process p1;
p2 : process(clk,...)
begin
if falling_edge(clk) then
....
end if;
end process p1;

will not resulte the warning of global clock buffer !!

is there any explanation ?

thanx

Ahmed Samieh

 
Reply With Quote
 
Ralf Hildebrandt
Guest
Posts: n/a
 
      06-07-2007
Ahmed Samieh schrieb:


> but, i the question still, what is the reason of this global clock
> buffer ....
> while another 2 processes like :
>
> p1 : process(clk,...)
> begin
> if rising_edge(clk) then
> ....
> end if;
> end process p1;
> p2 : process(clk,...)
> begin
> if falling_edge(clk) then
> ....
> end if;
> end process p1;
>
> will not resulte the warning of global clock buffer !!
>
> is there any explanation ?



A global clock buffer is a special strong driver for a clock. The clock
is routed via special clock wires. It is not fed into the normal logic
wires of the FPGA. This reduces clock skew to a minimum.

You can't just make a hook to this global clock wire and use this global
wherever you want. The global clock is routed to the clk-Input of any
Flipflop (better: to a multiplexer in front of this clk-Input).
Therefore you can use the global clock with every flipflop (rising_edge
/ falling_edge). But it is often (depending on the FPGA) impossible to
use this global clock as an input to combinational logic.

If you use the clock inside combinational logic, the clock can't be
routed via the global net and has to be routed via a normal logic net.
Because this results in a lot of skew the routing tool will output a
warning.

Ralf
 
Reply With Quote
 
Ahmed Samieh
Guest
Posts: n/a
 
      06-08-2007
On Jun 7, 8:16 pm, Ralf Hildebrandt <(E-Mail Removed)> wrote:
>
> A global clock buffer is a special strong driver for a clock. The clock
> is routed via special clock wires. It is not fed into the normal logic
> wires of the FPGA. This reduces clock skew to a minimum.
>
> You can't just make a hook to this global clock wire and use this global
> wherever you want. The global clock is routed to the clk-Input of any
> Flipflop (better: to a multiplexer in front of this clk-Input).
> Therefore you can use the global clock with every flipflop (rising_edge
> / falling_edge). But it is often (depending on the FPGA) impossible to
> use this global clock as an input to combinational logic.
>
> If you use the clock inside combinational logic, the clock can't be
> routed via the global net and has to be routed via a normal logic net.
> Because this results in a lot of skew the routing tool will output a
> warning.
>
> Ralf- Hide quoted text -
>
> - Show quoted text -


thanx Ralf for your help
i found this paper
http://www.ece.gatech.edu/academic/c...loads/lab3.pdf

Ahmed Samieh

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
FWSM/PIX and Dynamic PAT using global IP range vs. global interface vs. global IP Hoffa Cisco 1 10-25-2006 06:50 PM
FWSM/PIX and Dynamic PAT using global IP range vs. global interface vs. global IP Hoffa Cisco 0 10-25-2006 01:04 PM
What is the best way to clock data in on one clock edge and out on another? simon.stockton@baesystems.com VHDL 4 04-26-2006 11:36 PM
can i modify the content in the buffer of response(not response.buffer prep) xingye ASP General 9 04-19-2004 03:49 AM
Are clock and divided clock synchronous? Valentin Tihomirov VHDL 11 10-28-2003 01:18 PM



Advertisments