- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I'm using LVDS receiver (LVDS_RX) to process ADC serial output data stream. LVDS_RX provides one output parallel clock, rx_coreclock, which is used for asyncronous FIFO's write clock. The FIFO's read side uses system clock.
When above logic is implemented, the system clock domain's reset signal is used on rx_coreclock domain. After full compilation, I get Setup and Recovery timing violation report.
Setup Timing Violation Report:
Recovery Timing Violation Report:
After I found that the reset was used in two different clock domain, I synchronized this reset signal from system clock domain to rx_coreclock domain. I thought this should resolve above two violations. However, only Setup timing violation was resolved.
Resolved Setup Timing:
The Recovery Timing violation still there.
Report Timing from TimeQuest for the Recovery:
As above image, the Recovery timing violation's From Node coming from system clock domain's reset signal. And "To Node" comes from re_coreclock domain's reset re-synchronized module's two inner nodes. Below is the re-synchronized module codes:
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity reset_async_2_sync is
port (
clkin : in std_logic;
async_rst : in std_logic;
sync_rst : out std_logic
);
end reset_async_2_sync;
architecture rtl of reset_async_2_sync is
signal Sync_rst1,Sync_rst2: std_logic;
begin
process(clkin,async_rst)
begin
if async_rst='0' then--Async reset is ��0�� assert
Sync_rst1 <= '0';
Sync_rst2 <= '0';
elsif clkin'event and clkin='1' then
Sync_rst1 <= '1';
Sync_rst2 <= Sync_rst1;
end if;
end process;
sync_rst <= Sync_rst2;
end ;
So my question is how to resolve this recovery timing violation. Can i use set_false_path command to deal with it?
Thanks
Best Regard
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Is this a Clock Domain Crossing? As you mentioned there are two different clock domain.
You may check out this on how to properly constrain CDC.
https://learning.intel.com/developer/learn/courses/211/clock-domain-crossing-considerations
Regards,
Richard Tan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Tan,
It should be of false paths.
BTW, I can't open the course from your above link.
I tried to apply false path constrain in my project. According to above recovery timing violation report from TimeQuest, both lauch and latch clock are different clock. They are:
Launch Clock:
system_clock_gen_|system_pll_|iopll_0|clk
Latch Clock:
SEP_QuadBLKs_Top_|u_AD9633D_SDataProc|LVDS_RX_8Ch6B_inst|lvds_0|core|arch_inst|internal_pll.pll_inst|altera_lvds_core20_iopll|outclk[2]
So I thought to add following clock group constain to my project:
set_clock_groups -asynchronous -group {system_clock_gen_|system_pll_|iopll_0|clk} -group {SEP_QuadBLKs_Top_|u_AD9633D_SDataProc|LVDS_RX_8Ch6B_inst|lvds_0|core|arch_inst|internal_pll.pll_inst|altera_lvds_core20_iopll|outclk[2]}
However, after compilation, QPP23.4 gave me following warning info:
Ignored filter at my.sdc(21): SEP_QuadBLKs_Top_|u_AD9633D_SDataProc|LVDS_RX_8Ch6B_inst|lvds_0|core|arch_inst|internal_pll.pll_inst|altera_lvds_core20_iopll|outclk[2] could not be matched with a clock
Assignment set_clock_groups is accepted but has some problems at my.sdc(21): Argument -group with value SEP_QuadBLKs_Top_|u_AD9633D_SDataProc|LVDS_RX_8Ch6B_inst|lvds_0|core|arch_inst|internal_pll.pll_inst|altera_lvds_core20_iopll|outclk[2] could not match any element of the following types: ( clk )
Above warining infos tell me that Quaruts ignored above clock group constrain. Even above info gives the reason why it ignores the constrain. But I still don't know why? Quartus can't identify the LVDS PLL output clock as clock?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Try search for "Clock Domain Crossing Considerations"
https://learning.intel.com/developer/learn
Or you can look at youtube video instead:
https://www.youtube.com/watch?v=BNiXxmQlCCs
Regards,
Richard Tan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
May I know do you need further help regarding this case?
Regards,
Richard Tan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
No, I have resolved this issue.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm pleased to know that your question has been addressed.
Now, I will transitioning this thread to community support. If you have any further questions or concerns, please don't hesitate to reach out. Please login to ‘https://supporttickets.intel.com’, view details of the desire request, and post a feed/response within the next 15 days to allow me to continue to support you. After 15 days, this thread will be transitioned to community support.
The community users will be able to help you on your follow-up questions.
Thank you and have a great day!
Best Regards,
Richard Tan

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page