davr
Newbie level 4
Hi,
I'm building a project which has two main clock domains inside it (100MHz and 65MHz), and there are several places where signals will cross back and forth. I use this method of passing the signals between domains:
However, when I specify a global timing constraint (65MHz for my one clock, 100MHz for my other clock) I get lots of errors for the paths that cross between, eg dataA->buffer->dataB would complain.
I found I can tell it to ignore (false-path) all signals that cross from one clock domain to the other, but I'm not sure if this is the best approach. Does anyone have any suggestions? Thanks.
I'm building a project which has two main clock domains inside it (100MHz and 65MHz), and there are several places where signals will cross back and forth. I use this method of passing the signals between domains:
Code:
dataA : IN std_logic;
clockA : IN std_logic;
dataB : OUT std_logic;
clockB : IN std_logic;
-- ...
signal buffer : std_logic;
-- ...
process(clockB):
begin
if(rising_edge(clockB)) then
dataB <= buffer;
buffer <= dataA;
end if;
end process
However, when I specify a global timing constraint (65MHz for my one clock, 100MHz for my other clock) I get lots of errors for the paths that cross between, eg dataA->buffer->dataB would complain.
I found I can tell it to ignore (false-path) all signals that cross from one clock domain to the other, but I'm not sure if this is the best approach. Does anyone have any suggestions? Thanks.