Skip to content

Reference

AD9081 high speed MxFE clocking model.

ad9081 (ad9081_core)

AD9081 combined transmit and receive model.

__init__(self, model=None, solver=None) special

Initialize AD9081 clocking model for TX and RX.

This is a common class used to handle TX and RX constraints together.

Parameters:

Name Type Description Default
model GEKKO,CpoModel

Solver model

None
solver str

Solver name (gekko or CPLEX)

None

get_required_clock_names(self)

Get list of strings of names of requested clocks.

This list of names is for the clocks defined by get_required_clocks

Returns:

Type Description
List[str]

List of strings of clock names in order

get_required_clocks(self)

Generate list required clocks.

For AD9081 this will contain [converter clock, sysref requirement SOS]

Returns:

Type Description
List

List of solver variables, equations, and constants

Exceptions:

Type Description
Exception

If direct clocking is used. Not yet implemented

validate_config(self)

Validate device configurations including JESD and clocks of both ADC and DAC.

This check only is for static configuration that does not include variables which are solved.

ad9081_core (converter)

AD9081 high speed MxFE model.

This model supports both direct clock configurations and on-board generation

Clocking: AD9081 can internally generate or leverage external clocks. The high speed clock within the system is referred to as the DAC clock and the ADC clock will be a divided down version of the clock: adc_clock == dac_clock / L, where L = 1,2,3,4

For internal generation, the DAC clock is generated through an integer PLL through the following relation: dac_clock == ((m_vco * n_vco) / R * ref_clock) / D

For external clocks, the clock must be provided at the DAC clock rate

Once we have the DAC clock the data rates can be directly evaluated into each JESD framer:

rx_baseband_sample_rate = (dac_clock / L) / datapath_decimation tx_baseband_sample_rate = dac_clock / datapath_interpolation

get_config(self, solution=None)

Extract configurations from solver results.

Collect internal converter configuration and output clock definitions leading to connected devices (clock chips, FPGAs)

Parameters:

Name Type Description Default
solution CpoSolveResult

CPlex solution. Only needed for CPlex solver

None

Returns:

Type Description
Dict

Dictionary of clocking rates and dividers for configuration

get_required_clock_names(self)

Get list of strings of names of requested clocks.

This list of names is for the clocks defined by get_required_clocks

Returns:

Type Description
List[str]

List of strings of clock names in order

get_required_clocks(self)

Generate list required clocks.

For AD9081 this will contain [converter clock, sysref requirement SOS]

Returns:

Type Description
List

List of solver variables, equations, and constants

ad9081_rx (adc, ad9081_core)

AD9081 Receive model.

decimation: int property writable

Decimation factor. This is the product of the coarse and fine decimation.

__init__(self, model=None, solver=None) special

Initialize AD9081 clocking model for RX.

This is a common class used to handle RX constraints together.

Parameters:

Name Type Description Default
model GEKKO,CpoModel

Solver model

None
solver str

Solver name (gekko or CPLEX)

None

ad9081_tx (dac, ad9081_core)

AD9081 Transmit model.

interpolation: int property writable

Interpolation factor.

This is the product of the coarse and fine interpolation.

Returns:

Type Description
int

Interpolation factor

__init__(self, model=None, solver=None) special

Initialize AD9081 clocking model for TX.

This is a common class used to handle TX constraints together.

Parameters:

Name Type Description Default
model GEKKO,CpoModel

Solver model

None
solver str

Solver name (gekko or CPLEX)

None

ad9082 (ad9081)

AD9081 combined transmit and receive model.

get_required_clock_names(self)

Get list of strings of names of requested clocks.

This list of names is for the clocks defined by get_required_clocks

Returns:

Type Description
List[str]

List of strings of clock names in order

ad9082_rx (ad9081_rx)

AD9082 MxFE RX Clocking Model.

ad9082_tx (ad9081_tx)

AD9082 MxFE TX Clocking Model.

AD9680 high speed ADC clocking model.

ad9680 (ad9680_bf)

AD9680 high speed ADC model.

This model supports direct clock configurations

Clocking: AD9680 has directly clocked ADC that have optional input dividers. The sample rate can be determined as follows:

baseband_sample_rate = (input_clock / input_clock_divider) / datapath_decimation

input_clock_max

Clocking AD9680 has directly clocked ADCs that have optional input dividers. The sample rate can be determined as follows:

baseband_sample_rate = (input_clock / input_clock_divider) / datapath_decimation

__init__(self, *args: Any, **kwargs: Any) -> None special

Initialize AD9680 class.

Objects will default to mode 0x88 with 1e9 sample_clock.

Parameters:

Name Type Description Default
*args Any

Pass through arguments

()
**kwargs Any

Pass through keyword arguments

{}

get_config(self, solution: CpoSolveResult = None) -> Dict

Extract configurations from solver results.

Collect internal converter configuration and output clock definitions leading to connected devices (clock chips, FPGAs)

Parameters:

Name Type Description Default
solution CpoSolveResult

CPlex solution. Only needed for CPlex solver

None

Returns:

Type Description
Dict

Dictionary of clocking rates and dividers for configuration

get_required_clock_names(self) -> List[str]

Get list of strings of names of requested clocks.

This list of names is for the clocks defined by get_required_clocks

Returns:

Type Description
List[str]

List of strings of clock names in order

get_required_clocks(self) -> List

Generate list required clocks.

For AD9680 this will contain [converter clock, sysref requirement SOS]

Returns:

Type Description
List

List of solver variables, equations, and constants

AD9144 high speed DAC clocking model.

ad9144 (ad9144_bf)

AD9144 high speed DAC model.

This model supports both direct clock configurations and on-board generation

Clocking: AD9144 has directly clocked DAC that have optional input dividers. The sample rate can be determined as follows:

baseband_sample_rate = (input_clock / input_clock_divider) / datapath_decimation

get_config(self, solution=None)

Extract configurations from solver results.

Collect internal converter configuration and output clock definitions leading to connected devices (clock chips, FPGAs)

Parameters:

Name Type Description Default
solution CpoSolveResult

CPlex solution. Only needed for CPlex solver

None

Returns:

Type Description
Dict

Dictionary of clocking rates and dividers for configuration

get_required_clock_names(self)

Get list of strings of names of requested clocks.

This list of names is for the clocks defined by get_required_clocks

Returns:

Type Description
List[str]

List of strings of clock names in order

get_required_clocks(self)

Generate list required clocks.

For AD9144 this will contain [converter clock, sysref requirement SOS]

Returns:

Type Description
List

List of dictionaries of solver components

ADRV9009 transceiver clocking model.

adrv9009 (core, adrv9009_core, gekko_translation)

ADRV9009 combined transmit and receive model.

__init__(self, model=None, solver=None) special

Initialize ADRV9009 clocking model for TX and RX.

This is a common class used to handle TX and RX constraints together.

Parameters:

Name Type Description Default
model GEKKO,CpoModel

Solver model

None
solver str

Solver name (gekko or CPLEX)

None

get_required_clocks(self)

Generate list of required clocks.

For ADRV9009 this will contain: [device clock requirement SOS, sysref requirement SOS]

Returns:

Type Description
list[dict]

List of dictionaries of solver variables, equations, and constants

Exceptions:

Type Description
Exception

Invalid relation of rates between RX and TX

AssertionError

Gekko called

adrv9009_clock_common (adrv9009_core, adrv9009_bf)

ADRV9009 class managing common singleton (Rx,Tx) methods.

get_config(self, solution=None)

Extract configurations from solver results.

Collect internal converter configuration and output clock definitions leading to connected devices (clock chips, FPGAs)

Parameters:

Name Type Description Default
solution CpoSolveResult

CPlex solution. Only needed for CPlex solver

None

Returns:

Type Description
Dict

Dictionary of clocking rates and dividers for configuration

get_required_clock_names(self)

Get list of strings of names of requested clocks.

This list of names is for the clocks defined by get_required_clocks

Returns:

Type Description
List[str]

List of strings of clock names mapped by get_required_clocks

get_required_clocks(self)

Generate list of required clocks.

For ADRV9009 this will contain: [device clock requirement SOS, sysref requirement SOS]

Returns:

Type Description
list[dict]

List of dictionaries of solver variables, equations, and constants

adrv9009_core

ADRV9009 transceiver clocking model.

This model manage the JESD configuration and input clock constraints. External LO constraints are not modeled.

Clocking: ADRV9009 uses onboard PLLs to generate the JESD clocks

Lane Rate = I/Q Sample Rate * M * Np * (10 / 8) / L
Lane Rate = sample_clock * M * Np * (10 / 8) / L

adrv9009_rx (adc, adrv9009_clock_common, adrv9009_core)

ADRV9009 Receive model.

adrv9009_tx (dac, adrv9009_clock_common, adrv9009_core)

ADRV9009 Transmit model.