ID 683068
Date 9/24/2018
Public

## 2.3.7.4.3. Accounting for a Phase Shift (-phase)

In the following example, the design contains a PLL that performs a phase-shift on a clock whose domain exchanges data with domains that do not experience the phase shift. This occurs when the destination clock phase-shifts forward, and the source clock does not shift. The default setup relationship becomes that phase-shift, thus shifting the window when data is valid.

For example, the following code phase-shifts one output of a PLL forward by a small amount, in this case 0.2 ns.

### Cross Domain Phase-Shift

create_generated_clock -source pll|inclk[0] -name pll|clk[0] pll|clk[0]
create_generated_clock -source pll|inclk[0] -name pll|clk[1] -phase 30 pll|clk[1]

The default setup relationship for this phase-shift is 0.2 ns, shown in Figure A, creating a scenario where the hold relationship is negative, which makes achieving timing closure nearly impossible.

Figure 60. Phase-Shifted Setup and Hold

The following constraint allows the data to transfer to the following edge:

set_multicycle_path -setup -from [get_clocks clk_a] -to [get_clocks clk_b] 2

The hold relationship derives from the setup relationship, making a multicycle hold constraint unnecessary.