PLL Settings

External PLL models are used when a clock path should not be driven directly by the system clock chip. In pyadi-jif, external PLLs are connected through the system object so the clock chip, PLL, converter, and FPGA constraints are solved together.

Inline Converter PLLs

Use add_pll_inline when a PLL sits between the clock chip and a converter reference clock. The clock chip provides the PLL reference, and the PLL output drives the converter.

        flowchart LR
    VCXO[VCXO] --> CLK[Clock chip]
    CLK -->|PLL reference| PLL[External PLL]
    PLL -->|converter ref/device clock| CNV[Converter]
    CLK -->|FPGA ref/device clocks| FPGA[FPGA]
    CLK -->|SYSREF| CNV
    CLK -->|SYSREF| FPGA
    
sys = adijif.system("ad9081", "hmc7044", "xilinx", 100e6)
sys.add_pll_inline("adf4371", sys.clock, sys.converter)

The solved configuration contains a clock_ext_pll_<name> entry for the PLL and the converter configuration identifies the external clock source.

SYSREF PLLs

Use add_pll_sysref when an external PLL provides SYSREF to a converter, an FPGA, or both. This is the topology used with ADF4030 when SYSREF generation is split away from the clock chip that provides device and reference clocks.

        flowchart LR
    VCXO[VCXO] --> CLK[Clock chip]
    CLK -->|converter ref/device clock| CNV[Converter]
    CLK -->|FPGA ref/device clocks| FPGA[FPGA]
    VCXO --> ADF[ADF4030 SYSREF PLL]
    ADF -->|SYSREF| CNV
    ADF -->|SYSREF| FPGA
    
sys.add_pll_sysref("adf4030", 100e6, sys.converter, sys.fpga)

The first argument selects the PLL model. The second argument is the PLL input reference and may be a numeric frequency, a clock object, or another supported clock source expression. The converter and FPGA arguments identify which devices receive the SYSREF output.

ADF4030 Settings

The ADF4030 model currently exposes the reference divider r, feedback divider n, and output divider o. These may be left unconstrained for the solver or narrowed before the system solve.

adf4030 = sys.get_sysref_pll_by_name("adf4030")
adf4030.r = [5, 10]
adf4030.n = range(120, 131)
adf4030.o = [320, 640, 1280]

In a solved configuration, ADF4030 appears as clock_ext_pll_sysref_adf4030. Its output_clocks map contains the SYSREF clock names and their solved rates.

Choosing the Topology

Use a clock chip output directly when the clock chip can generate a suitable SYSREF and reference/device clock plan. Add an inline PLL when the converter sample clock needs a cleaner or higher-frequency source than the clock chip can provide directly. Add a SYSREF PLL when SYSREF timing needs a dedicated source, or when SYSREF must be aligned through ADF4030 BSYNC behavior.