Forums

Lattice FPGA timing constraint help

Started by dave94024 11 months ago4 replieslatest reply 11 months ago27 views

I have an application using a Lattice UltraPlus FPGA which is mostly working except for some marginal behavior.  I'm pretty sure it's due to timing constraint issues (at present I have no timing constraints implemented).  I'm new to specifying those and so it's a bit daunting to figure out how to resolve these issues.

a) If anyone can point me to a good resource that shows how to arrive at what constraints are needed in a design that would be great.  The syntax and details of implementing the constraints are readily available it's knowing what constraints to specify that's at issue...

b) If anyone has "significant" experience with doing this and wants to make some extra cash looking over my design and helping me work out the constraints to resolve my issues I'd be happy to pay for the help.

c) If anyone has any other ideas that might help, I'm open to them.

Thanks,

Dave.

[ - ]
Reply by kazApril 6, 2020

Hi,


The main principle of timing constraints are:

1) tell the tool what is your base clock(s) frequency i.e. those clocks that enter from fpga pins rather than any generated internally which are not recommended except through PLL. 

e.g. create_clock -period ....this determines correct constraint for internal paths.

2) tell the tool how the i/o should behave with respect to data transition relative to its clock  e.g. set_input_delay....set_output_delay

3) in some cases you may add further info such as multicycle, false paths...

[ - ]
Reply by dave94024April 6, 2020

Kaz,

That's a great overview, but I think I'm going to have to find someone with specific knowledge working with this tool and perhaps this part to help me get things setup correctly.

If you know anyone that can help please let me know,

Dave.

[ - ]
Reply by kazApril 6, 2020

I am afraid I can't help with specific lattice environment. However I believe Lattice follows .sdc (synopsis design constraints) file.

You can try at least define your clock. Normally I will do it like this:

assuming your clock port at top level is named clk1 of period 20 ns then

create_clock -period 20 -name myclk [get_ports clk1]


save that as a file with extension .sdc and add to your project


[ - ]
Reply by dave94024April 6, 2020

Kaz,

I'm using the onboard oscillator as my timebase there may well be some slop in the timebase part to part.

Dave.