Article Details

ID: 6529
Case Type: faq
Category: Implementation
Related To: Constraint-Pref Editor
Family: All FPGA

Search Answer Database

Search Text Image

All FPGA: Why does PLL outputs' constraints does not propagate from ldc/fdc/sdc to Synthesis using both SynplifyPro & LSE?

Description:
Lattice Diamond software does not use any pre-synthesis constraint file (SDC/LDC/FDC).



Solution:
There is a workaround to compensate for the limitation.

Once the user has created any pre-synthesis constraint file, synthesize the design (for LSE) or synthesis + translate (for Synplify Pro). After that, the tool will generate an LPF file based on the SDC/LDC/FDC.

Since Diamond supported only LPF, the user has to copy the content of the generated LPF from the pre-synthesis constraint to the active LPF file.

The generated LPF file is located in the <project_name>/<implementation> folder.


Sample LDC constraint:

create_clock -period 20.000000 -name clk50 [ get_ports { CLK_IN_50MHz } ]

create_clock -period 20.000000 -name clk48 [ get_ports { CLK_IN_48MHz } ]

create_generated_clock -multiply_by 1 -source [ get_ports { CLK_IN_48MHz } ] -master_clock [ get_clocks { clk48 } ] -name intclk48 [ get_nets { Clock_48MHz } ]

create_generated_clock -divide_by 2 -source [ get_ports { CLK_IN_50MHz } ] -master_clock [ get_clocks { clk50 } ] -name intclk25 [ get_nets { Clock_25MHz } ]

create_generated_clock -multiply_by 2 -source [ get_ports { CLK_IN_50MHz } ] -master_clock [ get_clocks { clk50 } ] -name intclk100 [ get_nets { Clock_100MHz_90Deg } ]

create_generated_clock -multiply_by 1 -source [ get_ports { CLK_IN_50MHz } ] -master_clock [ get_clocks { clk50 } ] -name intclk50 [ get_nets { PHY_CLK } ]

Generated LPF based from LDC:

PERIOD PORT "CLK_IN_50MHz" 20.000 ns HIGH 10.000 ns ; 

PERIOD PORT "CLK_IN_48MHz" 20.000 ns HIGH 10.000 ns ; 

PERIOD NET "Clock_48MHz" 20.000 ns HIGH 10.000 ns ; 

PERIOD NET "MII_CH2_RxCLK_c" 40.000 ns HIGH 20.000 ns ; 

PERIOD NET "ClockResetGen/Clock_100MHz_90Deg" 10.000 ns HIGH 5.000 ns ; 

PERIOD PORT "PHY_CLK" 20.000 ns HIGH 10.000 ns ; 

CLKSKEWDIFF CLKPORT "CLK_IN_50MHz" CLKPORT "CLK_IN_48MHz" 0.000 ns ; 

CLKSKEWDIFF CLKPORT "CLK_IN_50MHz" CLKPORT "PHY_CLK" 0.000 ns ; 

CLKSKEWDIFF CLKPORT "CLK_IN_48MHz" CLKPORT "PHY_CLK" 0.000 ns ;