| # 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. |