FPGA Central - World's 1st FPGA / CPLD Portal

FPGA Central

World's 1st FPGA Portal

 

Go Back   FPGA Groups > NewsGroup > VHDL

VHDL comp.lang.vhdl newsgroup / Usenet

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 06-06-2007, 05:23 PM
Ahmed Samieh
Guest
 
Posts: n/a
Default Warning: Global clock buffer not inserted on net rtlc1n42

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
  #2 (permalink)  
Old 06-06-2007, 07:32 PM
Ralf Hildebrandt
Guest
 
Posts: n/a
Default Re: Warning: Global clock buffer not inserted on net rtlc1n42

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
  #3 (permalink)  
Old 06-07-2007, 01:42 AM
Ahmed Samieh
Guest
 
Posts: n/a
Default Re: Warning: Global clock buffer not inserted on net rtlc1n42

On Jun 6, 9:32 pm, Ralf Hildebrandt <[email protected]> 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
  #4 (permalink)  
Old 06-07-2007, 06:16 PM
Ralf Hildebrandt
Guest
 
Posts: n/a
Default Re: Warning: Global clock buffer not inserted on net rtlc1n42

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
  #5 (permalink)  
Old 06-08-2007, 01:04 PM
Ahmed Samieh
Guest
 
Posts: n/a
Default Re: Warning: Global clock buffer not inserted on net rtlc1n42

On Jun 7, 8:16 pm, Ralf Hildebrandt <[email protected]> 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

Bookmarks


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 On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Mapping the DCM clock output onto a global buffer Beantown FPGA 7 06-20-2008 12:30 AM
Global Reset using Global Buffer [email protected] FPGA 18 11-30-2007 01:45 PM
virtex II global buffer zora FPGA 1 11-23-2005 05:40 PM
Global buffer feeding non clock pins in VIRTEX II g. giachella FPGA 5 04-15-2005 02:59 AM
Disable Global Buffer Aaron FPGA 1 11-28-2004 08:56 AM


All times are GMT +1. The time now is 12:33 PM.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright 2008 @ FPGA Central. All rights reserved