Skip to content

Commit ec484b7

Browse files
committed
doc: update API docs for component hierarchy, context split, and board registry
- model.rst: Document typed component classes (ClockComponent, AdcComponent, etc.), all 32 factories, context submodule structure, JESD validation mixin. Add automodule directives for each component and context submodule. - boards.rst: Remove deleted boards (adrv9009_pcbz, adrv9009_zu11eg), add board registry docs (get_board, list_boards), add FMComms and RPi sections.
1 parent 2d39d32 commit ec484b7

2 files changed

Lines changed: 176 additions & 24 deletions

File tree

doc/source/api/boards.rst

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,25 @@ pyadi-jif solver configuration. The model can be inspected and modified before
1111
rendering to DTS via :class:`~adidt.model.renderer.BoardModelRenderer`.
1212
See :doc:`model` for the full API.
1313

14+
Board Registry
15+
--------------
16+
17+
Use ``get_board()`` to create board instances by name, or ``list_boards()``
18+
to see all available boards:
19+
20+
.. code-block:: python
21+
22+
from adidt.boards import get_board, list_boards
23+
24+
print(list_boards())
25+
# ['ad9081_fmc', 'ad9082_fmc', ..., 'rpi']
26+
27+
board = get_board("daq2", platform="zcu102")
28+
29+
Variant boards (AD9082, AD9083, ADRV9008, ADRV9025, ADRV937x) are
30+
dynamically generated from their parent class with overridden
31+
``PLATFORM_CONFIGS``.
32+
1433
.. automodule:: adidt.boards
1534
:members:
1635
:undoc-members:
@@ -19,6 +38,10 @@ See :doc:`model` for the full API.
1938
Board Layout Base
2039
-----------------
2140

41+
All board classes inherit from ``layout``, which provides shared
42+
``__init__``, kernel path resolution, FPGA config validation, and DTS
43+
rendering methods.
44+
2245
.. automodule:: adidt.boards.layout
2346
:members:
2447
:undoc-members:
@@ -59,18 +82,10 @@ ADRV9009 FMC
5982
:undoc-members:
6083
:show-inheritance:
6184

62-
ADRV9009 PCB-Z
63-
~~~~~~~~~~~~~~
64-
65-
.. automodule:: adidt.boards.adrv9009_pcbz
66-
:members:
67-
:undoc-members:
68-
:show-inheritance:
69-
70-
ADRV9009 ZU11EG
71-
~~~~~~~~~~~~~~~
85+
FMComms (AD9361/AD9363)
86+
~~~~~~~~~~~~~~~~~~~~~~~
7287

73-
.. automodule:: adidt.boards.adrv9009_zu11eg
88+
.. automodule:: adidt.boards.fmcomms_fmc
7489
:members:
7590
:undoc-members:
7691
:show-inheritance:
@@ -90,3 +105,11 @@ ADRV9364 Z7020
90105
:members:
91106
:undoc-members:
92107
:show-inheritance:
108+
109+
Raspberry Pi
110+
~~~~~~~~~~~~
111+
112+
.. automodule:: adidt.boards.rpi
113+
:members:
114+
:undoc-members:
115+
:show-inheritance:

doc/source/api/model.rst

Lines changed: 142 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -109,21 +109,66 @@ pre-configured ``ComponentModel`` — no template filenames needed:
109109
],
110110
)
111111
112-
Available factories (``from adidt.model import components``):
112+
Typed component classes
113+
~~~~~~~~~~~~~~~~~~~~~~~
113114

114-
- **Simple SPI:** ``components.adis16495`` — ADIS16495/16497 IMU
115-
- **Clock chips:** ``components.hmc7044``, ``components.ad9523_1``,
116-
``components.ad9528``
117-
- **ADCs / DACs:** ``components.ad9680``, ``components.ad9144``,
118-
``components.ad9152``, ``components.ad9172``
119-
- **Transceivers:** ``components.ad9081``, ``components.ad9084``
115+
Components are organized into typed base classes per device category.
116+
Each provides factory classmethods and inherits from ``ComponentModel``:
117+
118+
.. code-block:: python
119+
120+
from adidt.model.components import ClockComponent, AdcComponent, TransceiverComponent
121+
122+
clock = ClockComponent.hmc7044(spi_bus="spi1", cs=0, vcxo_hz=122_880_000, ...)
123+
adc = AdcComponent.ad9680(spi_bus="spi1", cs=1, clks_str="<&clk 0>", ...)
124+
trx = TransceiverComponent.adrv9009(spi_bus="spi0", cs=1, ...)
125+
126+
Available base classes and their factories:
127+
128+
- **ClockComponent** — ``hmc7044``, ``ad9523_1``, ``ad9528``, ``ad9545``,
129+
``adf4382``, ``ltc6952``, ``ltc6953``, ``adf4371``, ``adf4377``,
130+
``adf4350``, ``adf4030``
131+
- **AdcComponent** — ``ad9680``, ``ad9088``, ``ad9467``, ``ad7768``,
132+
``adaq8092``
133+
- **DacComponent** — ``ad9144``, ``ad9152``, ``ad9172``, ``ad9739a``,
134+
``ad916x``
135+
- **TransceiverComponent** — ``ad9081``, ``ad9082``, ``ad9083``,
136+
``ad9084``, ``adrv9009``
137+
- **SensorComponent** — ``adis16495``, ``adxl345``, ``ad7124``
138+
- **RfFrontendComponent** — ``admv1013``, ``admv1014``, ``adrf6780``,
139+
``adar1000``
140+
141+
All base classes also provide a ``from_config(part, template, *, config)``
142+
classmethod for template-only devices without a dedicated factory.
143+
144+
Standalone factory functions (backward compatible)
145+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
146+
147+
The original standalone functions remain available for backward
148+
compatibility:
149+
150+
.. code-block:: python
151+
152+
from adidt.model import components
153+
154+
model = BoardModel(
155+
name="my_board",
156+
platform="rpi5",
157+
components=[
158+
components.adis16495(spi_bus="spi0", cs=0, interrupt_gpio=25),
159+
],
160+
)
161+
162+
Available: ``hmc7044``, ``ad9523_1``, ``ad9528``, ``ad9680``, ``ad9144``,
163+
``ad9152``, ``ad9172``, ``ad9081``, ``ad9084``, ``adis16495``, ``adxl345``,
164+
``ad7124``.
120165

121166
Context builders
122167
~~~~~~~~~~~~~~~~
123168

124-
Lower-level functions that produce template context dicts. Use these
125-
when you need full control over every field, or when no factory exists
126-
for your device:
169+
Lower-level functions that produce template context dicts. Organized by
170+
device category in submodules but importable from the top-level
171+
``adidt.model.contexts`` package:
127172

128173
.. code-block:: python
129174
@@ -137,6 +182,30 @@ for your device:
137182
)
138183
# ctx is ready to pass to ad9523_1.tmpl
139184
185+
Context submodules:
186+
187+
- ``adidt.model.contexts.clocks`` — HMC7044, AD9523-1, AD9528, AD9545,
188+
LTC6952, LTC6953, ADF4371, ADF4377, ADF4350, ADF4030, ADF4382
189+
- ``adidt.model.contexts.converters`` — AD9680, AD9144, AD9152, AD9172,
190+
AD9088, AD9467, AD7768, ADAQ8092, AD9739A, AD916x
191+
- ``adidt.model.contexts.transceivers`` — AD9081, AD9082, AD9083, AD9084,
192+
ADRV9009
193+
- ``adidt.model.contexts.sensors`` — ADIS16495, ADXL345, AD7124
194+
- ``adidt.model.contexts.rf_frontends`` — ADMV1013, ADMV1014, ADRF6780,
195+
ADAR1000
196+
- ``adidt.model.contexts.fpga`` — ADXCVR, JESD204 overlay, TPL core,
197+
plus ``fmt_hz`` and ``coerce_board_int`` utilities
198+
199+
JESD validation mixin
200+
~~~~~~~~~~~~~~~~~~~~~
201+
202+
``AdcComponent``, ``DacComponent``, and ``TransceiverComponent`` include
203+
the ``JesdDeviceMixin`` which provides:
204+
205+
- ``validate_jesd_params(params, direction)`` — validates JESD framing
206+
parameters (F, K, M, L, Np, S are positive integers)
207+
- ``map_jesd_subclass(name)`` — maps ``"jesd204b"`` to ``1``, etc.
208+
140209
API Reference
141210
-------------
142211

@@ -157,6 +226,44 @@ Renderer
157226
:undoc-members:
158227
:show-inheritance:
159228

229+
Component Classes
230+
~~~~~~~~~~~~~~~~~
231+
232+
.. automodule:: adidt.model.components
233+
:members:
234+
:undoc-members:
235+
:show-inheritance:
236+
237+
.. automodule:: adidt.model.components.base
238+
:members:
239+
:undoc-members:
240+
:show-inheritance:
241+
242+
.. automodule:: adidt.model.components.clocks
243+
:members:
244+
:undoc-members:
245+
:show-inheritance:
246+
247+
.. automodule:: adidt.model.components.converters
248+
:members:
249+
:undoc-members:
250+
:show-inheritance:
251+
252+
.. automodule:: adidt.model.components.transceivers
253+
:members:
254+
:undoc-members:
255+
:show-inheritance:
256+
257+
.. automodule:: adidt.model.components.sensors
258+
:members:
259+
:undoc-members:
260+
:show-inheritance:
261+
262+
.. automodule:: adidt.model.components.rf_frontends
263+
:members:
264+
:undoc-members:
265+
:show-inheritance:
266+
160267
Context Builder Functions
161268
~~~~~~~~~~~~~~~~~~~~~~~~~
162269

@@ -165,10 +272,32 @@ Context Builder Functions
165272
:undoc-members:
166273
:show-inheritance:
167274

168-
Component Factories
169-
~~~~~~~~~~~~~~~~~~~
275+
.. automodule:: adidt.model.contexts.clocks
276+
:members:
277+
:undoc-members:
278+
:show-inheritance:
279+
280+
.. automodule:: adidt.model.contexts.converters
281+
:members:
282+
:undoc-members:
283+
:show-inheritance:
170284

171-
.. automodule:: adidt.model.components
285+
.. automodule:: adidt.model.contexts.transceivers
286+
:members:
287+
:undoc-members:
288+
:show-inheritance:
289+
290+
.. automodule:: adidt.model.contexts.sensors
291+
:members:
292+
:undoc-members:
293+
:show-inheritance:
294+
295+
.. automodule:: adidt.model.contexts.rf_frontends
296+
:members:
297+
:undoc-members:
298+
:show-inheritance:
299+
300+
.. automodule:: adidt.model.contexts.fpga
172301
:members:
173302
:undoc-members:
174303
:show-inheritance:

0 commit comments

Comments
 (0)