|
1 | 1 | # pyadi-jif: Python interface for the ADI JESD Interface Framework |
2 | 2 |
|
3 | | -This project tries to simplify JESD204 configuration exploration and validation for ADI JESD based converters and clock chips with different FPGA vendors. |
| 3 | +**pyadi-jif** is a Python modeling and configuration tool that simplifies JESD204 interface setup for Analog Devices converters, clock chips, and FPGAs. It can automatically solve for valid clock divider settings and JESD204 link parameters at both the individual component level and across a complete system. |
4 | 4 |
|
5 | 5 | ```{image} _static/logos/PyADI-JIF_logo_w_cropped.png?:// |
6 | 6 | :class: only-dark |
@@ -53,6 +53,63 @@ This project tries to simplify JESD204 configuration exploration and validation |
53 | 53 | :width: 75% |
54 | 54 | ``` |
55 | 55 |
|
| 56 | +## What is pyadi-jif? |
| 57 | + |
| 58 | +JESD204 is a high-speed serial interface standard used to connect data converters (ADCs and DACs) to FPGAs. Configuring a JESD204 system requires coordinating clock frequencies, lane rates, and link parameters across multiple chips simultaneously — a process that is error-prone when done manually. |
| 59 | + |
| 60 | +**pyadi-jif** models the constraints of each component (converter, clock chip, FPGA transceiver) and uses a constraint solver to automatically find valid configurations. It supports both: |
| 61 | + |
| 62 | +- **Component-level** use: configure a single clock chip or verify an existing setup in isolation. |
| 63 | +- **System-level** use: solve for a complete, consistent configuration across converter + clock + FPGA together. |
| 64 | + |
| 65 | +## Key Features |
| 66 | + |
| 67 | +- Automatic constraint solving for JESD204B/C clock and link parameters |
| 68 | +- Models for ADI converters (ADCs, DACs, MxFEs), clock chips (HMC7044, AD9523-1, AD9545), and FPGA transceivers (Xilinx, Intel) |
| 69 | +- Interactive web-based **JIF Tools Explorer** (`jiftools`) for graphical configuration and exploration |
| 70 | +- MCP server for AI assistant integration |
| 71 | +- Clock tree and system block diagram generation |
| 72 | + |
| 73 | +## Quick Start |
| 74 | + |
| 75 | +Install with pip and launch the interactive tools: |
| 76 | + |
| 77 | +```bash |
| 78 | +pip install 'pyadi-jif[cplex,tools,draw]' |
| 79 | +jiftools |
| 80 | +``` |
| 81 | + |
| 82 | +Or use the Python API directly: |
| 83 | + |
| 84 | +```python |
| 85 | +import adijif |
| 86 | + |
| 87 | +# System-level: solve converter + clock + FPGA together |
| 88 | +sys = adijif.system("ad9680", "ad9523_1", "xilinx", vcxo=125e6) |
| 89 | +sys.converter.sample_clock = 1e9 |
| 90 | +sys.converter.decimation = 1 |
| 91 | +sys.converter.L = 4 |
| 92 | +sys.converter.M = 2 |
| 93 | +sys.converter.N = 14 |
| 94 | +sys.converter.Np = 16 |
| 95 | +sys.converter.K = 32 |
| 96 | +sys.converter.F = 1 |
| 97 | +sys.fpga.setup_by_dev_kit_name("zc706") |
| 98 | +config = sys.solve() |
| 99 | +``` |
| 100 | + |
| 101 | +See [Installation](install.md) for full setup instructions, and [Usage Flows](flow.md) for detailed examples. |
| 102 | + |
| 103 | +## Interactive Tools |
| 104 | + |
| 105 | +The **JIF Tools Explorer** (`jiftools`) is a Streamlit web application with three tools: |
| 106 | + |
| 107 | +- **JESD204 Mode Selector** — browse and filter valid JESD204 modes for a given converter and sample rate |
| 108 | +- **Clock Configurator** — configure ADI clock chips to generate required output clocks |
| 109 | +- **System Configurator** — end-to-end configuration of converter + clock chip + FPGA |
| 110 | + |
| 111 | +See the [Quick Start Guide](tools_quickstart.md) and [full tools documentation](tools.md). |
| 112 | + |
56 | 113 | ```{toctree} |
57 | 114 | :maxdepth: 1 |
58 | 115 | :caption: Contents: |
|
0 commit comments