blob: 0e4ad39a71fd37ea7afa9df02605f5b1ea05c9a9 [file] [view]
# SGPIOM JSON Tooling
This directory contains AST10x0 SGPIOM configuration tooling that replaces DTS-style wiring with a declarative JSON pipeline.
## What This Builds
The tool consumes board manifests and produces deterministic build artifacts:
- `sgpiom_merged.json`: canonical merged manifest
- `sgpiom_config_generated.rs`: generated Rust config module
- `sgpiom_report.txt`: summary report (optional)
- check/validate stamp outputs for CI gates
Generated Rust symbols include:
- `SGPIOM_CONTROLLER`
- `SGPIOM_BANKS`
- `SGPIOM_SIGNALS`
- `SGPIOM_MANIFEST_HASH`
## CLI
Tool entrypoint:
- `tools/sgpiom/sgpio_json_tool.py`
Subcommands:
- `validate`: schema and semantic checks
- `merge`: deterministic merge of input manifests
- `generate`: emit Rust static config module
- `check`: verify generated output is up to date
- `report`: print human-readable usage summary
## Example Inputs
- `tools/sgpiom/examples/common.json`
- `tools/sgpiom/examples/ast1060_dcscm.json`
- `tools/sgpiom/examples/ast1060_prot_dice.json`
## Local Usage
Validate:
```bash
python3 tools/sgpiom/sgpio_json_tool.py validate \
--input tools/sgpiom/examples/common.json \
--input tools/sgpiom/examples/ast1060_dcscm.json
```
Merge:
```bash
python3 tools/sgpiom/sgpio_json_tool.py merge \
--input tools/sgpiom/examples/common.json \
--input tools/sgpiom/examples/ast1060_dcscm.json \
--output /tmp/sgpiom_merged.json
```
Generate:
```bash
python3 tools/sgpiom/sgpio_json_tool.py generate \
--input tools/sgpiom/examples/common.json \
--input tools/sgpiom/examples/ast1060_dcscm.json \
--output /tmp/sgpiom_config_generated.rs
```
Check:
```bash
python3 tools/sgpiom/sgpio_json_tool.py check \
--input tools/sgpiom/examples/common.json \
--input tools/sgpiom/examples/ast1060_dcscm.json \
--output /tmp/sgpiom_config_generated.rs
```
Report:
```bash
python3 tools/sgpiom/sgpio_json_tool.py report \
--input tools/sgpiom/examples/common.json \
--input tools/sgpiom/examples/ast1060_dcscm.json
```
## Bazel Integration
Bazel tool package:
- `//tools/sgpiom`
Board-level SGPIOM pipeline targets:
- `//target/ast10x0/board:sgpiom_validate`
- `//target/ast10x0/board:sgpiom_merged`
- `//target/ast10x0/board:sgpiom_generate`
- `//target/ast10x0/board:sgpiom_check`
- `//target/ast10x0/board:sgpiom_report`
Board crate consumption target:
- `//target/ast10x0/board:ast10x0_board`
Build all SGPIOM pipeline targets:
```bash
bazelisk build --config=k_ast1060_evb \
//target/ast10x0/board:ast10x0_board \
//target/ast10x0/board:sgpiom_validate \
//target/ast10x0/board:sgpiom_merged \
//target/ast10x0/board:sgpiom_generate \
//target/ast10x0/board:sgpiom_check \
//target/ast10x0/board:sgpiom_report
```
## Notes
- Board crate selects configuration; peripherals crate consumes typed config.
- Keep manifests declarative and deterministic to avoid runtime parser complexity.