You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The built-in component metadata can be extended to provide arbitrary information about an interface through user-defined annotations. For example, a memory bus interface could provide the layout of any memory-mapped peripherals accessible through that bus.
96
+
95
97
96
98
Defining annotations
97
99
--------------------
98
100
101
+
Consider a simple control and status register (CSR) bus that provides the memory layout of the accessible registers via an annotation:
An :class:`Annotation` schema must have a ``"$id"`` property, whose value is a URL that serves as its globally unique identifier. The suggested format of this URL is:
106
203
107
-
An ``Annotation`` schema must have a ``"$id"`` property, which holds an URL that serves as its
108
-
unique identifier. The suggested format of this URL is:
* ``<domain>`` is a domain name registered to the person or entity defining the annotation;
114
-
* ``<package>`` is the name of the Python package providing the ``Annotation`` subclass;
115
-
* ``<version>`` is the version of the aforementioned package;
211
+
* ``<package>`` is the name of the Python package providing the :class:`Annotation` subclass;
212
+
* ``<version>`` is the version of that package;
116
213
* ``<path>`` is a non-empty string specific to the annotation.
117
214
215
+
.. note::
216
+
217
+
Annotations used in the Amaranth project packages are published under https://amaranth-lang.org/schema/ according to this URL format, and are covered by the usual compatibility commitment.
218
+
219
+
Other projects that define additional Amaranth annotations are encouraged, but not required, to make their schemas publicly accessible; the only requirement is for the URL to be globally unique.
0 commit comments