FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.

DDR3 ip controller

Honored Contributor II



I am working on DDR3 uniphy IP controller. I have generated IP controller and added Timing parameters asper the datasheet and generated it. I opened the example design as my top module and did pin assignment, run the tcl. I am doing the time quest analysis. I am getting setup time violation in 10 paths inside the example design. can any please suggest me how to remove these set up violations. 

Here i am attaching the setup violations paths and report. 


Thanks & Regards,
0 Kudos
2 Replies
Honored Contributor II

Did you also run all the timing constraint files? The IP comes with a few SDC files that often have the wrong paths. This makes some of the synchronizers not get picked up by TimeQuest and because of that some paths wind up killing the synthesis. Often fake paths. 


What I did was to first create a task in the SDC file to mark the reset synchronizers: 

proc rstsync {path} { 

puts "Searching for Reset Synchronizer with path $path" 

set_false_path -to  


[get_pins -nowarn -compatibility_mode -nocase $path|a*]  

[get_pins -nowarn -compatibility_mode -nocase $path|clrn]  


# Then I found the reset synchronizers and labeled them: 

rstsync {*|alt_rst_sync_uq1|altera_reset_synchronizer_int_chain*} 

rstsync {*|ureset_*|reset_reg[*]} 


# Then each time it complained I looked at the RTL that it complained and saw it was usually a two flop synchronizer that had no false path. So i added a false path for each one: 

set_false_path -to [get_pins -compatibility_mode {mem_ip_inst|mem_ip_inst|p0|umemphy|uread_datapath|read_buffering[*]*read_enable_r|*}] 

set_false_path -to [get_pins -compatibility_mode {mem_ip_inst|mem_ip_inst|p0|umemphy|uread_datapath|read_buffering[*]*read_valid_r|*}] 



The names will change from IP to IP. These were the ones I used.
Honored Contributor II



This issue i have solved by reducing the memory clock speed to below 300MHz. Before entering Memory parameters we should check the maximum memory speed grade of our FPGA using altera memory spec estimator. 


Thanks & regards, 

C. Ashok reddy