Size: a a a

FPGA technical questions

2019 April 22

A

Amit in FPGA technical questions
Hello everyone , this is my block digram , my final implemented design gives me setup violation for 16 end points from fifo to cic compiler,how to debug this.
источник

AS

Alexey Shashkov in FPGA technical questions
have you tried adding a register between FIFO and the first CIC?
источник

AS

Alexey Shashkov in FPGA technical questions
or as I see, it is a clock domain crossing logic (CDC)?
источник

AS

Alexey Shashkov in FPGA technical questions
is that FIFO asynchronous?
источник

A

Amit in FPGA technical questions
Yes fifo is asynchronous. I don't know how to build cdc logic
источник

AS

Alexey Shashkov in FPGA technical questions
well first of all you need to learn about the concept of cross-domain logic and how to pass data through different clock domains
источник

AS

Alexey Shashkov in FPGA technical questions
This is a good paper for this:
источник

AS

Alexey Shashkov in FPGA technical questions
источник

A

Amit in FPGA technical questions
Yes ,i tried two flip flop logic for slow clock domain to fast clock domain data transfer.. but is giving me same no of failing end points.
источник

A

Amit in FPGA technical questions
I tried two then three flipflop logic but result is same.
источник

AS

Alexey Shashkov in FPGA technical questions
failing endpoints is another topic
источник

AS

Alexey Shashkov in FPGA technical questions
I am not sure that your design is correct there in the first place
источник

AS

Alexey Shashkov in FPGA technical questions
but if and when it is correct
источник

A

Amit in FPGA technical questions
Ok
источник

AS

Alexey Shashkov in FPGA technical questions
Then in the tools like Vivado it is often needed to write additional constraints for CDC crossings, like in async FIFOs
источник

AS

Alexey Shashkov in FPGA technical questions
something like this:
источник

AS

Alexey Shashkov in FPGA technical questions
set_false_path \
   -from [get_clocks psync_i] \
   -to [get_clocks -of_objects [get_pins msys_i/clk_wiz_1/inst/mmcm_adv_inst/CLKOUT0]]

set_false_path \
   -from [get_clocks -of_objects [get_pins msys_i/clk_wiz_1/inst/mmcm_adv_inst/CLKOUT0]] \
   -to [get_clocks psync_i]
источник

A

Amit in FPGA technical questions
Okay.. i will try this
источник

A

Amit in FPGA technical questions
Thanks for the help
источник

AS

Alexey Shashkov in FPGA technical questions
these constraints are not your solution by the way, but a hint for you what to do
источник