[rtems-central commit] spec: Specify register block specification
Sebastian Huber
sebh at rtems.org
Wed Sep 15 06:02:35 UTC 2021
Module: rtems-central
Branch: master
Commit: 249cfa1eda4d00631da1c2aa00f875e5710398c0
Changeset: http://git.rtems.org/rtems-central/commit/?id=249cfa1eda4d00631da1c2aa00f875e5710398c0
Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
Date: Fri Sep 10 14:14:35 2021 +0200
spec: Specify register block specification
---
.../interface-register-bits-directive-list.yml | 16 +++++++
spec/spec/interface-register-bits-directive.yml | 26 ++++++++++
spec/spec/interface-register-bits-list.yml | 16 +++++++
spec/spec/interface-register-bits-variant-list.yml | 16 +++++++
spec/spec/interface-register-bits-variant.yml | 27 +++++++++++
spec/spec/interface-register-bits.yml | 42 +++++++++++++++++
.../spec/interface-register-block-include-role.yml | 28 +++++++++++
.../interface-register-block-member-directive.yml | 32 +++++++++++++
spec/spec/interface-register-block-member-list.yml | 16 +++++++
...nterface-register-block-member-variant-list.yml | 16 +++++++
.../interface-register-block-member-variant.yml | 28 +++++++++++
spec/spec/interface-register-block-member.yml | 26 ++++++++++
spec/spec/interface-register-block-type.yml | 19 ++++++++
spec/spec/interface-register-block.yml | 55 ++++++++++++++++++++--
spec/spec/interface-register-list.yml | 16 +++++++
spec/spec/interface-register-name.yml | 27 +++++++++++
spec/spec/interface-register.yml | 39 +++++++++++++++
17 files changed, 441 insertions(+), 4 deletions(-)
diff --git a/spec/spec/interface-register-bits-directive-list.yml b/spec/spec/interface-register-bits-directive-list.yml
new file mode 100644
index 0000000..1571e3f
--- /dev/null
+++ b/spec/spec/interface-register-bits-directive-list.yml
@@ -0,0 +1,16 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ list:
+ description: null
+ spec-type: interface-register-bits-directive
+spec-name: Register Bits Definition Directive List
+spec-type: interface-register-bits-directive-list
+type: spec
diff --git a/spec/spec/interface-register-bits-directive.yml b/spec/spec/interface-register-bits-directive.yml
new file mode 100644
index 0000000..62abe9f
--- /dev/null
+++ b/spec/spec/interface-register-bits-directive.yml
@@ -0,0 +1,26 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ default:
+ description: |
+ The default definition will be used if no variant-specific definition
+ is enabled.
+ spec-type: interface-register-bits-list
+ variants:
+ description: null
+ spec-type: interface-register-bits-variant-list
+ description: |
+ This set of attributes specifies a register bits directive.
+ mandatory-attributes: all
+spec-name: Register Bits Definition Directive
+spec-type: interface-register-bits-directive
+type: spec
diff --git a/spec/spec/interface-register-bits-list.yml b/spec/spec/interface-register-bits-list.yml
new file mode 100644
index 0000000..d057e4e
--- /dev/null
+++ b/spec/spec/interface-register-bits-list.yml
@@ -0,0 +1,16 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ list:
+ description: null
+ spec-type: interface-register-bits
+spec-name: Register Bits Definition List
+spec-type: interface-register-bits-list
+type: spec
diff --git a/spec/spec/interface-register-bits-variant-list.yml b/spec/spec/interface-register-bits-variant-list.yml
new file mode 100644
index 0000000..778d35b
--- /dev/null
+++ b/spec/spec/interface-register-bits-variant-list.yml
@@ -0,0 +1,16 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ list:
+ description: null
+ spec-type: interface-register-bits-variant
+spec-name: Register Bits Definition Variant List
+spec-type: interface-register-bits-variant-list
+type: spec
diff --git a/spec/spec/interface-register-bits-variant.yml b/spec/spec/interface-register-bits-variant.yml
new file mode 100644
index 0000000..0fa9d69
--- /dev/null
+++ b/spec/spec/interface-register-bits-variant.yml
@@ -0,0 +1,27 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ definition:
+ description: |
+ The definition will be used if the expression defined by the
+ ``enabled-by`` attribute evaluates to true. In generated header
+ files, the expression is evaluated by the C preprocessor.
+ spec-type: interface-register-bits-list
+ enabled-by:
+ description: null
+ spec-type: interface-enabled-by
+ description: |
+ This set of attributes specifies a register bits variant.
+ mandatory-attributes: all
+spec-name: Register Bits Definition Variant
+spec-type: interface-register-bits-variant
+type: spec
diff --git a/spec/spec/interface-register-bits.yml b/spec/spec/interface-register-bits.yml
new file mode 100644
index 0000000..e428aa8
--- /dev/null
+++ b/spec/spec/interface-register-bits.yml
@@ -0,0 +1,42 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ none: null
+ dict:
+ attributes:
+ access:
+ description: |
+ It shall be the list of access attributes.
+ spec-type: list-str
+ brief:
+ description: null
+ spec-type: interface-brief
+ description:
+ description: null
+ spec-type: interface-description
+ name:
+ description: |
+ It shall be the name of the register bit field.
+ spec-type: str
+ start:
+ description: |
+ It shall be the start bit of the bit field. Bit ``0`` is the
+ least-significant bit.
+ spec-type: int
+ width:
+ description: |
+ It shall be the width in bits of the bit field.
+ spec-type: int
+ description: |
+ This set of attributes specifies register bits.
+ mandatory-attributes: all
+spec-name: Register Bits Definition
+spec-type: interface-register-bits
+type: spec
diff --git a/spec/spec/interface-register-block-include-role.yml b/spec/spec/interface-register-block-include-role.yml
new file mode 100644
index 0000000..3a37f62
--- /dev/null
+++ b/spec/spec/interface-register-block-include-role.yml
@@ -0,0 +1,28 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+- role: spec-refinement
+ spec-key: role
+ spec-value: register-block-include
+ uid: link
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ name:
+ description: |
+ It shall be the unique name to identify the included register block
+ within the item.
+ spec-type: str
+ description: |
+ It defines the register block include role of links. Links of this role
+ are used to build register blocks using other register blocks.
+ mandatory-attributes: all
+spec-name: Register Block Include Role
+spec-type: interface-register-block-include-role
+type: spec
diff --git a/spec/spec/interface-register-block-member-directive.yml b/spec/spec/interface-register-block-member-directive.yml
new file mode 100644
index 0000000..faa3072
--- /dev/null
+++ b/spec/spec/interface-register-block-member-directive.yml
@@ -0,0 +1,32 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ default:
+ description: |
+ The default definition will be used if no variant-specific definition
+ is enabled.
+ spec-type: interface-register-block-member
+ offset:
+ description: |
+ It shall be the offset in bytes from the register block begin to the
+ register member.
+ spec-type: int
+ variants:
+ description: null
+ spec-type: interface-register-block-member-variant-list
+ description: |
+ This set of attributes specifies a register block member definition
+ directive.
+ mandatory-attributes: all
+spec-name: Register Block Member Definition Directive
+spec-type: interface-register-block-member-directive
+type: spec
diff --git a/spec/spec/interface-register-block-member-list.yml b/spec/spec/interface-register-block-member-list.yml
new file mode 100644
index 0000000..5abda83
--- /dev/null
+++ b/spec/spec/interface-register-block-member-list.yml
@@ -0,0 +1,16 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ list:
+ description: null
+ spec-type: interface-register-block-member-directive
+spec-name: Register Block Member Definition Directive List
+spec-type: interface-register-block-member-directive-list
+type: spec
diff --git a/spec/spec/interface-register-block-member-variant-list.yml b/spec/spec/interface-register-block-member-variant-list.yml
new file mode 100644
index 0000000..71cc54b
--- /dev/null
+++ b/spec/spec/interface-register-block-member-variant-list.yml
@@ -0,0 +1,16 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ list:
+ description: null
+ spec-type: interface-register-block-member-variant
+spec-name: Register Block Member Definition Variant List
+spec-type: interface-register-block-member-variant-list
+type: spec
diff --git a/spec/spec/interface-register-block-member-variant.yml b/spec/spec/interface-register-block-member-variant.yml
new file mode 100644
index 0000000..ff03372
--- /dev/null
+++ b/spec/spec/interface-register-block-member-variant.yml
@@ -0,0 +1,28 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ definition:
+ description: |
+ The definition will be used if the expression defined by the
+ ``enabled-by`` attribute evaluates to true. In generated header
+ files, the expression is evaluated by the C preprocessor.
+ spec-type: interface-register-block-member
+ enabled-by:
+ description: null
+ spec-type: interface-enabled-by
+ description: |
+ This set of attributes specifies a register block member definition
+ variant.
+ mandatory-attributes: all
+spec-name: Register Block Member Definition Variant
+spec-type: interface-register-block-member-variant
+type: spec
diff --git a/spec/spec/interface-register-block-member.yml b/spec/spec/interface-register-block-member.yml
new file mode 100644
index 0000000..d56730d
--- /dev/null
+++ b/spec/spec/interface-register-block-member.yml
@@ -0,0 +1,26 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ none: null
+ dict:
+ attributes:
+ count:
+ description: |
+ It shall be the count of registers of the register block member.
+ spec-type: int
+ name:
+ description: null
+ spec-type: interface-register-name
+ description: |
+ This set of attributes specifies a register block member definition.
+ mandatory-attributes: all
+spec-name: Register Block Member Definition
+spec-type: interface-register-block-member
+type: spec
diff --git a/spec/spec/interface-register-block-type.yml b/spec/spec/interface-register-block-type.yml
new file mode 100644
index 0000000..22185dd
--- /dev/null
+++ b/spec/spec/interface-register-block-type.yml
@@ -0,0 +1,19 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ str:
+ assert:
+ in:
+ - memory
+ description: |
+ It specifies the register block type.
+spec-name: Register Block Type
+spec-type: interface-register-block-type
+type: spec
diff --git a/spec/spec/interface-register-block.yml b/spec/spec/interface-register-block.yml
index 23f3ef4..c0f04a1 100644
--- a/spec/spec/interface-register-block.yml
+++ b/spec/spec/interface-register-block.yml
@@ -1,6 +1,6 @@
SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
copyrights:
-- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
enabled-by: true
links:
- role: spec-member
@@ -13,14 +13,61 @@ spec-description: null
spec-example: null
spec-info:
dict:
- attributes: {}
+ attributes:
+ brief:
+ description: null
+ spec-type: interface-brief
+ definition:
+ description: null
+ spec-type: interface-register-block-member-directive-list
+ description:
+ description: null
+ spec-type: interface-description
+ identifier:
+ description: null
+ spec-type: interface-group-identifier
+ name:
+ description: |
+ It shall be the name of the register block.
+ spec-type: str
+ notes:
+ description: null
+ spec-type: interface-notes
+ registers:
+ description: null
+ spec-type: interface-register-list
+ register-block-group:
+ description: |
+ It shall be the name of the interface group defined for the register
+ block. For the group identifier see the ``identifier`` attribute.
+ spec-type: str
+ register-block-size:
+ description: |
+ It shall be the size in bytes of the register block.
+ spec-type: int
+ register-block-type:
+ description: null
+ spec-type: interface-register-block-type
+ register-prefix:
+ description: |
+ If the value is present, then it will be used to prefix register bit
+ field names, otherwise the value of the ``name`` attribute will be
+ used.
+ spec-type: optional-str
description: |
- This set of attributes defines a register block.
+ This set of attributes specifies a register block. A register block may
+ be used to specify the memory-mapped interface to the hardware. Register
+ blocks consist of register block members specified by the ``definition``
+ attribute. Register block members are either instances of registers
+ specified by the ``registers`` attribute or instances of other register
+ blocks specified by links with the
+ ${interface-register-block-include-role:/spec-name}. Registers consists
+ of bit fields (see ${interface-register-bits:/spec-name}.
generic-attributes:
description: null
key-spec-type: name
value-spec-type: any
mandatory-attributes: all
-spec-name: Interface Register Block Item Type
+spec-name: Register Block Item Type
spec-type: interface-register-block
type: spec
diff --git a/spec/spec/interface-register-list.yml b/spec/spec/interface-register-list.yml
new file mode 100644
index 0000000..aa3ae8d
--- /dev/null
+++ b/spec/spec/interface-register-list.yml
@@ -0,0 +1,16 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ list:
+ description: null
+ spec-type: interface-register
+spec-name: Register List
+spec-type: interface-register-list
+type: spec
diff --git a/spec/spec/interface-register-name.yml b/spec/spec/interface-register-name.yml
new file mode 100644
index 0000000..cf38f2f
--- /dev/null
+++ b/spec/spec/interface-register-name.yml
@@ -0,0 +1,27 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ str:
+ assert:
+ re: ^[a-zA-Z_][a-zA-Z0-9_]*(:[a-zA-Z_][a-zA-Z0-9_]*)?$
+ description: |
+ The name consists either of an identifier, or an identifier and an alias.
+ The identifier and alias are separated by a colon (``:``). The
+ identifier shall match with the name of a register definition of the item
+ (see ${interface-register:/spec-name}) or the name of a register block
+ include of the item
+ (see ${interface-register-block-include-role:/spec-name}). If no alias
+ is specified, then the identifier is used for the register block member
+ name, otherwise the alias is used. If the register block member names
+ are not unique within the item, then a postfix number is appended to the
+ names. The number starts with zero for each set of names.
+spec-name: Register Name
+spec-type: interface-register-name
+type: spec
diff --git a/spec/spec/interface-register.yml b/spec/spec/interface-register.yml
new file mode 100644
index 0000000..c02ba16
--- /dev/null
+++ b/spec/spec/interface-register.yml
@@ -0,0 +1,39 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ bits:
+ description: null
+ spec-type: interface-register-bits-directive-list
+ brief:
+ description: null
+ spec-type: interface-brief
+ description:
+ description: null
+ spec-type: interface-description
+ name:
+ description: |
+ It shall be the unique name to identify the register definition.
+ spec-type: str
+ width:
+ description: |
+ It shall be the width of the register in bits.
+ spec-type: int
+ description: |
+ This set of attributes specifies a register.
+ generic-attributes:
+ description: null
+ key-spec-type: name
+ value-spec-type: any
+ mandatory-attributes: all
+spec-name: Register Definition
+spec-type: interface-register
+type: spec
More information about the vc
mailing list