helia-platforms 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. helia_platforms-0.1.0/LICENSE.md +67 -0
  2. helia_platforms-0.1.0/PKG-INFO +100 -0
  3. helia_platforms-0.1.0/README.md +81 -0
  4. helia_platforms-0.1.0/pyproject.toml +100 -0
  5. helia_platforms-0.1.0/pyproject.toml.orig +72 -0
  6. helia_platforms-0.1.0/src/helia_platforms/__init__.py +45 -0
  7. helia_platforms-0.1.0/src/helia_platforms/_build.py +251 -0
  8. helia_platforms-0.1.0/src/helia_platforms/_check_sources.py +490 -0
  9. helia_platforms-0.1.0/src/helia_platforms/_digest.py +165 -0
  10. helia_platforms-0.1.0/src/helia_platforms/_format.py +530 -0
  11. helia_platforms-0.1.0/src/helia_platforms/_pages.py +395 -0
  12. helia_platforms-0.1.0/src/helia_platforms/_parse.py +139 -0
  13. helia_platforms-0.1.0/src/helia_platforms/_provenance.py +327 -0
  14. helia_platforms-0.1.0/src/helia_platforms/_show.py +639 -0
  15. helia_platforms-0.1.0/src/helia_platforms/_structural.py +314 -0
  16. helia_platforms-0.1.0/src/helia_platforms/_tree.py +601 -0
  17. helia_platforms-0.1.0/src/helia_platforms/_walk.py +82 -0
  18. helia_platforms-0.1.0/src/helia_platforms/catalog.py +1299 -0
  19. helia_platforms-0.1.0/src/helia_platforms/cli.py +269 -0
  20. helia_platforms-0.1.0/src/helia_platforms/data/addons.yaml +96 -0
  21. helia_platforms-0.1.0/src/helia_platforms/data/ip.yaml +95 -0
  22. helia_platforms-0.1.0/src/helia_platforms/data/memory_devices.yaml +162 -0
  23. helia_platforms-0.1.0/src/helia_platforms/data/names.yaml +13 -0
  24. helia_platforms-0.1.0/src/helia_platforms/data/socs/apollo3.yaml +430 -0
  25. helia_platforms-0.1.0/src/helia_platforms/data/socs/apollo330P.yaml +660 -0
  26. helia_platforms-0.1.0/src/helia_platforms/data/socs/apollo3p.yaml +428 -0
  27. helia_platforms-0.1.0/src/helia_platforms/data/socs/apollo4l.yaml +502 -0
  28. helia_platforms-0.1.0/src/helia_platforms/data/socs/apollo4p.yaml +647 -0
  29. helia_platforms-0.1.0/src/helia_platforms/data/socs/apollo510.yaml +449 -0
  30. helia_platforms-0.1.0/src/helia_platforms/data/socs/apollo510L.yaml +648 -0
  31. helia_platforms-0.1.0/src/helia_platforms/data/socs/apollo510b.yaml +482 -0
  32. helia_platforms-0.1.0/src/helia_platforms/data/socs/atomiq110.yaml +673 -0
  33. helia_platforms-0.1.0/src/helia_platforms/data/sources.yaml +129 -0
  34. helia_platforms-0.1.0/src/helia_platforms/data/unverified.yaml +52 -0
  35. helia_platforms-0.1.0/src/helia_platforms/errors.py +53 -0
  36. helia_platforms-0.1.0/src/helia_platforms/export.py +192 -0
  37. helia_platforms-0.1.0/src/helia_platforms/model.py +429 -0
  38. helia_platforms-0.1.0/src/helia_platforms/py.typed +0 -0
  39. helia_platforms-0.1.0/src/helia_platforms/resolve.py +271 -0
  40. helia_platforms-0.1.0/src/helia_platforms/schema/__init__.py +167 -0
  41. helia_platforms-0.1.0/src/helia_platforms/schema/helia-platforms-export-v1.schema.json +5733 -0
  42. helia_platforms-0.1.0/src/helia_platforms/schema/helia-platforms-v1.schema.json +5637 -0
  43. helia_platforms-0.1.0/src/helia_platforms/target.py +477 -0
@@ -0,0 +1,67 @@
1
+ Ambiq Apollo SDK License
2
+
3
+ ========================
4
+
5
+ Copyright (c) 2026, Ambiq
6
+
7
+ All rights reserved.
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy
10
+
11
+ of this software and associated documentation files (the “Software”), to use,
12
+
13
+ copy, modify, and distribute the Software **solely** for incorporation into,
14
+
15
+ and execution on, computing platforms that include an Ambiq-manufactured CPU
16
+
17
+ (including but not limited to the Apollo series). Use, reproduction,
18
+
19
+ modification, or distribution of the Software on any CPU not manufactured by
20
+
21
+ Ambiq is strictly prohibited, subject to the following conditions:
22
+
23
+ 1. Redistributions of source code must retain the above copyright notice,
24
+
25
+ this list of conditions, and the following disclaimer.
26
+
27
+ 2. Redistributions in binary form must reproduce the above copyright notice,
28
+
29
+ this list of conditions, and the following disclaimer in the documentation
30
+
31
+ and/or other materials provided with the distribution.
32
+
33
+ 3. Neither the name “Ambiq” nor the names of its contributors may be used to
34
+
35
+ endorse or promote products derived from this Software without specific
36
+
37
+ prior written permission.
38
+
39
+ 4. **Field-of-Use Restriction.** The Software and any derivative works
40
+
41
+ thereof (in source or binary form) **may only** be executed on a CPU
42
+
43
+ manufactured by Ambiq. Execution on any non-Ambiq CPU, even as part of a
44
+
45
+ multi-CPU system, is expressly forbidden.
46
+
47
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS”
48
+
49
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
50
+
51
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
52
+
53
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
54
+
55
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
56
+
57
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
58
+
59
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
60
+
61
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
62
+
63
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
64
+
65
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
66
+
67
+ POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,100 @@
1
+ Metadata-Version: 2.4
2
+ Name: helia-platforms
3
+ Version: 0.1.0
4
+ Summary: Shared catalog of Ambiq SoC and board facts (cores, memories, clocks, NPU, debug-probe identifiers) consumed by heliaAOT, helia-profiler and helia-estimator.
5
+ License-File: LICENSE.md
6
+ Classifier: Development Status :: 3 - Alpha
7
+ Classifier: Programming Language :: Python :: 3
8
+ Classifier: Programming Language :: Python :: 3 :: Only
9
+ Classifier: Programming Language :: Python :: 3.11
10
+ Classifier: Programming Language :: Python :: 3.12
11
+ Classifier: Programming Language :: Python :: 3.13
12
+ Classifier: Programming Language :: Python :: 3.14
13
+ Classifier: Typing :: Typed
14
+ Requires-Dist: pyyaml>=6.0
15
+ Requires-Dist: typer>=0.16
16
+ Requires-Python: >=3.11
17
+ Project-URL: Repository, https://github.com/AmbiqAI/helia-platforms
18
+ Description-Content-Type: text/markdown
19
+
20
+ # helia-platforms
21
+
22
+ `helia-platforms` is the shared catalog of Ambiq SoC and board facts (cores,
23
+ memories, clocks, NPU, debug-probe identifiers) consumed by heliaAOT,
24
+ helia-profiler and helia-estimator. Every value carries a provenance record:
25
+ the datasheet page, SDK file or measurement it came from, and who checked it.
26
+
27
+ - Import name: `helia_platforms`
28
+ - CLI entry point: `helia-platforms`
29
+
30
+ ## Status
31
+
32
+ Alpha. The built-in data covers apollo3, apollo3p, apollo4l, apollo4p,
33
+ apollo510, apollo510b, apollo510L, apollo330P and atomiq110, with their parts
34
+ and boards; `helia-platforms list` prints what it holds. The file format, the
35
+ Python API and the CLI may change between 0.x releases.
36
+
37
+ Linker windows, the regions an SDK's linker scripts declare, are not in this
38
+ package. It gives the hardware facts they sit within: physical memory regions,
39
+ boot reservations, image slots and the NVM left for an application
40
+ (`Target.usable_nvm()`).
41
+
42
+ ## Install
43
+
44
+ ```sh
45
+ pip install helia-platforms
46
+ ```
47
+
48
+ or, in a uv project, `uv add helia-platforms`. Python 3.11 or later.
49
+
50
+ ## Use
51
+
52
+ From the CLI:
53
+
54
+ ```sh
55
+ helia-platforms list
56
+ helia-platforms show apollo510_evb # every value with its provenance status
57
+ helia-platforms show apollo510_evb --provenance # and the full record under each row
58
+ helia-platforms show my_board --overlay my_board.yaml
59
+ ```
60
+
61
+ From Python:
62
+
63
+ ```python
64
+ from helia_platforms import resolve
65
+
66
+ target = resolve("apollo510_evb")
67
+ target.soc.id # "apollo510"
68
+ target.jlink_device # "AP510NFA-CBR"
69
+ target.cpu_mhz() # 96, at the default operating point
70
+ target.flash_load_address() # 0x410000
71
+ target.placement_ranges() # {"itcm": (0x0, 0x40000), ...}: base and size per region
72
+ ```
73
+
74
+ A private catalog, such as a board of your own, loads over the built-in one
75
+ with `--overlay` on the CLI or `load_overlay` in Python.
76
+
77
+ ## Upgrade notes
78
+
79
+ - apollo510b_evb's `jlink_device` is `AP510BFA-CBR`, the Apollo510B ordering
80
+ number, which SEGGER lists as its own J-Link device. SEGGER added it in J-Link
81
+ V8.94 (2025-12-10), so update an older J-Link, or pass the SDK's default
82
+ `AP510NFA-CBR` yourself.
83
+
84
+ ## Development
85
+
86
+ Requires [uv](https://docs.astral.sh/uv/).
87
+
88
+ ```sh
89
+ uv sync --group dev && uv run pre-commit install && uv run pytest
90
+ ```
91
+
92
+ In the repository:
93
+
94
+ - `docs/rfcs/`: design RFCs (the model and API are RFC 0002)
95
+ - `docs/adr/`: architecture decision records
96
+ - `docs/research/`: source inventories
97
+ - `HANDOFF.md`: current state of in-flight work
98
+
99
+ See `CONTRIBUTING.md` to contribute, and report security issues as described
100
+ in `SECURITY.md`.
@@ -0,0 +1,81 @@
1
+ # helia-platforms
2
+
3
+ `helia-platforms` is the shared catalog of Ambiq SoC and board facts (cores,
4
+ memories, clocks, NPU, debug-probe identifiers) consumed by heliaAOT,
5
+ helia-profiler and helia-estimator. Every value carries a provenance record:
6
+ the datasheet page, SDK file or measurement it came from, and who checked it.
7
+
8
+ - Import name: `helia_platforms`
9
+ - CLI entry point: `helia-platforms`
10
+
11
+ ## Status
12
+
13
+ Alpha. The built-in data covers apollo3, apollo3p, apollo4l, apollo4p,
14
+ apollo510, apollo510b, apollo510L, apollo330P and atomiq110, with their parts
15
+ and boards; `helia-platforms list` prints what it holds. The file format, the
16
+ Python API and the CLI may change between 0.x releases.
17
+
18
+ Linker windows, the regions an SDK's linker scripts declare, are not in this
19
+ package. It gives the hardware facts they sit within: physical memory regions,
20
+ boot reservations, image slots and the NVM left for an application
21
+ (`Target.usable_nvm()`).
22
+
23
+ ## Install
24
+
25
+ ```sh
26
+ pip install helia-platforms
27
+ ```
28
+
29
+ or, in a uv project, `uv add helia-platforms`. Python 3.11 or later.
30
+
31
+ ## Use
32
+
33
+ From the CLI:
34
+
35
+ ```sh
36
+ helia-platforms list
37
+ helia-platforms show apollo510_evb # every value with its provenance status
38
+ helia-platforms show apollo510_evb --provenance # and the full record under each row
39
+ helia-platforms show my_board --overlay my_board.yaml
40
+ ```
41
+
42
+ From Python:
43
+
44
+ ```python
45
+ from helia_platforms import resolve
46
+
47
+ target = resolve("apollo510_evb")
48
+ target.soc.id # "apollo510"
49
+ target.jlink_device # "AP510NFA-CBR"
50
+ target.cpu_mhz() # 96, at the default operating point
51
+ target.flash_load_address() # 0x410000
52
+ target.placement_ranges() # {"itcm": (0x0, 0x40000), ...}: base and size per region
53
+ ```
54
+
55
+ A private catalog, such as a board of your own, loads over the built-in one
56
+ with `--overlay` on the CLI or `load_overlay` in Python.
57
+
58
+ ## Upgrade notes
59
+
60
+ - apollo510b_evb's `jlink_device` is `AP510BFA-CBR`, the Apollo510B ordering
61
+ number, which SEGGER lists as its own J-Link device. SEGGER added it in J-Link
62
+ V8.94 (2025-12-10), so update an older J-Link, or pass the SDK's default
63
+ `AP510NFA-CBR` yourself.
64
+
65
+ ## Development
66
+
67
+ Requires [uv](https://docs.astral.sh/uv/).
68
+
69
+ ```sh
70
+ uv sync --group dev && uv run pre-commit install && uv run pytest
71
+ ```
72
+
73
+ In the repository:
74
+
75
+ - `docs/rfcs/`: design RFCs (the model and API are RFC 0002)
76
+ - `docs/adr/`: architecture decision records
77
+ - `docs/research/`: source inventories
78
+ - `HANDOFF.md`: current state of in-flight work
79
+
80
+ See `CONTRIBUTING.md` to contribute, and report security issues as described
81
+ in `SECURITY.md`.
@@ -0,0 +1,100 @@
1
+ [project]
2
+ name = "helia-platforms"
3
+ version = "0.1.0"
4
+ description = "Shared catalog of Ambiq SoC and board facts (cores, memories, clocks, NPU, debug-probe identifiers) consumed by heliaAOT, helia-profiler and helia-estimator."
5
+ readme = "README.md"
6
+ license-files = ["LICENSE.md"]
7
+ requires-python = ">=3.11"
8
+ dependencies = [
9
+ "pyyaml>=6.0",
10
+ "typer>=0.16",
11
+ ]
12
+ classifiers = [
13
+ "Development Status :: 3 - Alpha",
14
+ "Programming Language :: Python :: 3",
15
+ "Programming Language :: Python :: 3 :: Only",
16
+ "Programming Language :: Python :: 3.11",
17
+ "Programming Language :: Python :: 3.12",
18
+ "Programming Language :: Python :: 3.13",
19
+ "Programming Language :: Python :: 3.14",
20
+ "Typing :: Typed",
21
+ ]
22
+
23
+ [project.scripts]
24
+ helia-platforms = "helia_platforms.cli:main"
25
+
26
+ [project.urls]
27
+ Repository = "https://github.com/AmbiqAI/helia-platforms"
28
+
29
+ [build-system]
30
+ requires = ["uv_build>=0.11.26,<0.12.0"]
31
+ build-backend = "uv_build"
32
+
33
+ [dependency-groups]
34
+ dev = [
35
+ "pytest>=8",
36
+ "pytest-cov>=5",
37
+ "ruff>=0.11",
38
+ "ty",
39
+ "pre-commit>=4",
40
+ "jsonschema>=4.23",
41
+ { include-group = "extract" },
42
+ ]
43
+ extract = ["pcpp>=1.30"]
44
+
45
+ [tool.ruff]
46
+ line-length = 100
47
+ target-version = "py311"
48
+ src = [
49
+ "src",
50
+ "tests",
51
+ "scripts",
52
+ ]
53
+
54
+ [tool.ruff.lint]
55
+ select = [
56
+ "E",
57
+ "F",
58
+ "I",
59
+ "UP",
60
+ "B",
61
+ "SIM",
62
+ "RUF",
63
+ "PL",
64
+ ]
65
+ ignore = [
66
+ "PLR2004",
67
+ "PLR0913",
68
+ ]
69
+
70
+ [tool.ruff.lint.per-file-ignores]
71
+ "tests/**" = [
72
+ "PLR2004",
73
+ "S101",
74
+ ]
75
+
76
+ [tool.ruff.format]
77
+ quote-style = "double"
78
+ exclude = ["docs/**"]
79
+
80
+ [tool.ty.environment]
81
+ python-version = "3.11"
82
+ extra-paths = ["scripts"]
83
+
84
+ [tool.ty.src]
85
+ include = [
86
+ "src",
87
+ "tests",
88
+ "scripts",
89
+ ]
90
+
91
+ [tool.pytest.ini_options]
92
+ testpaths = ["tests"]
93
+ pythonpath = ["scripts"]
94
+ addopts = "-ra -q"
95
+
96
+ [tool.coverage.run]
97
+ source = [
98
+ "helia_platforms",
99
+ "scripts",
100
+ ]
@@ -0,0 +1,72 @@
1
+ [project]
2
+ name = "helia-platforms"
3
+ version = "0.1.0"
4
+ description = "Shared catalog of Ambiq SoC and board facts (cores, memories, clocks, NPU, debug-probe identifiers) consumed by heliaAOT, helia-profiler and helia-estimator."
5
+ readme = "README.md"
6
+ license-files = ["LICENSE.md"]
7
+ requires-python = ">=3.11"
8
+ dependencies = ["pyyaml>=6.0", "typer>=0.16"]
9
+ classifiers = [
10
+ "Development Status :: 3 - Alpha",
11
+ "Programming Language :: Python :: 3",
12
+ "Programming Language :: Python :: 3 :: Only",
13
+ "Programming Language :: Python :: 3.11",
14
+ "Programming Language :: Python :: 3.12",
15
+ "Programming Language :: Python :: 3.13",
16
+ "Programming Language :: Python :: 3.14",
17
+ "Typing :: Typed",
18
+ ]
19
+
20
+ [project.scripts]
21
+ helia-platforms = "helia_platforms.cli:main"
22
+
23
+ [project.urls]
24
+ Repository = "https://github.com/AmbiqAI/helia-platforms"
25
+
26
+ [build-system]
27
+ requires = ["uv_build>=0.11.26,<0.12.0"]
28
+ build-backend = "uv_build"
29
+
30
+ [dependency-groups]
31
+ dev = [
32
+ "pytest>=8",
33
+ "pytest-cov>=5",
34
+ "ruff>=0.11",
35
+ "ty",
36
+ "pre-commit>=4",
37
+ "jsonschema>=4.23",
38
+ { include-group = "extract" },
39
+ ]
40
+ # The snapshot extractor's dependencies (ADR 0006), outside the wheel's runtime ones.
41
+ extract = ["pcpp>=1.30"]
42
+
43
+ [tool.ruff]
44
+ line-length = 100
45
+ target-version = "py311"
46
+ src = ["src", "tests", "scripts"]
47
+
48
+ [tool.ruff.lint]
49
+ select = ["E", "F", "I", "UP", "B", "SIM", "RUF", "PL"]
50
+ ignore = ["PLR2004", "PLR0913"]
51
+
52
+ [tool.ruff.lint.per-file-ignores]
53
+ "tests/**" = ["PLR2004", "S101"]
54
+
55
+ [tool.ruff.format]
56
+ quote-style = "double"
57
+ exclude = ["docs/**"]
58
+
59
+ [tool.ty.environment]
60
+ python-version = "3.11"
61
+ extra-paths = ["scripts"]
62
+
63
+ [tool.ty.src]
64
+ include = ["src", "tests", "scripts"]
65
+
66
+ [tool.pytest.ini_options]
67
+ testpaths = ["tests"]
68
+ pythonpath = ["scripts"]
69
+ addopts = "-ra -q"
70
+
71
+ [tool.coverage.run]
72
+ source = ["helia_platforms", "scripts"]
@@ -0,0 +1,45 @@
1
+ """Shared catalog of Ambiq SoC and board facts."""
2
+
3
+ from importlib.metadata import PackageNotFoundError, version
4
+
5
+ try:
6
+ __version__ = version("helia-platforms")
7
+ except PackageNotFoundError:
8
+ __version__ = "0.1.0"
9
+
10
+ # Imported after __version__, which catalog reads at import.
11
+ from helia_platforms.catalog import (
12
+ Catalog,
13
+ CatalogIdentity,
14
+ SourceIdentity,
15
+ builtin,
16
+ load_overlay,
17
+ )
18
+ from helia_platforms.errors import (
19
+ AmbiguousPlatform,
20
+ FormatError,
21
+ PlatformError,
22
+ PlatformWarning,
23
+ UnknownPlatform,
24
+ )
25
+ from helia_platforms.resolve import resolve, resolve_board, resolve_soc
26
+ from helia_platforms.target import IsaFeatures, Target
27
+
28
+ __all__ = [
29
+ "AmbiguousPlatform",
30
+ "Catalog",
31
+ "CatalogIdentity",
32
+ "FormatError",
33
+ "IsaFeatures",
34
+ "PlatformError",
35
+ "PlatformWarning",
36
+ "SourceIdentity",
37
+ "Target",
38
+ "UnknownPlatform",
39
+ "__version__",
40
+ "builtin",
41
+ "load_overlay",
42
+ "resolve",
43
+ "resolve_board",
44
+ "resolve_soc",
45
+ ]