From 65a26877ef8f13feb7626b355afb86c31e73e5d2 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Sat, 19 Aug 2023 23:39:21 +0200 Subject: [PATCH 1/2] Added IP-XACT 1.0 schema files. --- ipxact-1.0/README.md | 3 + ipxact-1.0/autoConfigure.xsd | 254 +++++++++++ ipxact-1.0/busDefinition.xsd | 207 +++++++++ ipxact-1.0/busInterface.xsd | 373 ++++++++++++++++ ipxact-1.0/commonStructures.xsd | 89 ++++ ipxact-1.0/component.xsd | 161 +++++++ ipxact-1.0/configurable.xsd | 72 +++ ipxact-1.0/configurator.xsd | 38 ++ ipxact-1.0/design.xsd | 41 ++ ipxact-1.0/file.xsd | 490 +++++++++++++++++++++ ipxact-1.0/fileType.xsd | 66 +++ ipxact-1.0/generator.xsd | 235 ++++++++++ ipxact-1.0/identifier.xsd | 86 ++++ ipxact-1.0/index.xsd | 71 +++ ipxact-1.0/looseGeneratorChanges.xsd | 170 +++++++ ipxact-1.0/looseGeneratorInvocation.xsd | 107 +++++ ipxact-1.0/memoryMap.xsd | 559 ++++++++++++++++++++++++ ipxact-1.0/model.xsd | 106 +++++ ipxact-1.0/pmd.xsd | 108 +++++ ipxact-1.0/signal.xsd | 100 +++++ ipxact-1.0/signalDrivers.xsd | 190 ++++++++ ipxact-1.0/simpleTypes.xsd | 44 ++ ipxact-1.0/subInstances.xsd | 141 ++++++ 23 files changed, 3711 insertions(+) create mode 100644 ipxact-1.0/README.md create mode 100644 ipxact-1.0/autoConfigure.xsd create mode 100644 ipxact-1.0/busDefinition.xsd create mode 100644 ipxact-1.0/busInterface.xsd create mode 100644 ipxact-1.0/commonStructures.xsd create mode 100644 ipxact-1.0/component.xsd create mode 100644 ipxact-1.0/configurable.xsd create mode 100644 ipxact-1.0/configurator.xsd create mode 100644 ipxact-1.0/design.xsd create mode 100644 ipxact-1.0/file.xsd create mode 100644 ipxact-1.0/fileType.xsd create mode 100644 ipxact-1.0/generator.xsd create mode 100644 ipxact-1.0/identifier.xsd create mode 100644 ipxact-1.0/index.xsd create mode 100644 ipxact-1.0/looseGeneratorChanges.xsd create mode 100644 ipxact-1.0/looseGeneratorInvocation.xsd create mode 100644 ipxact-1.0/memoryMap.xsd create mode 100644 ipxact-1.0/model.xsd create mode 100644 ipxact-1.0/pmd.xsd create mode 100644 ipxact-1.0/signal.xsd create mode 100644 ipxact-1.0/signalDrivers.xsd create mode 100644 ipxact-1.0/simpleTypes.xsd create mode 100644 ipxact-1.0/subInstances.xsd diff --git a/ipxact-1.0/README.md b/ipxact-1.0/README.md new file mode 100644 index 0000000..b7bf77a --- /dev/null +++ b/ipxact-1.0/README.md @@ -0,0 +1,3 @@ +© Copyright Accellera Systems Initiative. All rights reserved. + +Source: http://www.accellera.org/XMLSchema/SPIRIT/1.0/ diff --git a/ipxact-1.0/autoConfigure.xsd b/ipxact-1.0/autoConfigure.xsd new file mode 100644 index 0000000..f5a830f --- /dev/null +++ b/ipxact-1.0/autoConfigure.xsd @@ -0,0 +1,254 @@ + + + + + + + This is a hint to the user interface on how to obtain the value for user defined properties. Float means a floating point number is expected. Long means an integer is expected. Bool means a boolean (true, false) is expected and choice means the user must pick from a list of possible values. A choiceRef attribute is required for choice formats. String means any text is acceptable. + + + + + + + + + + + + This is a hint to the user interface about the data format to require for user resolved properties. + + + + + Provides a string used to prompt the user for user-resolved property values. + + + + + For user-resolved properties with numeric values, this indicates the minimum value allowed. + + + + + For user-resolved properties with numeric values, this indicates the maximum value allowed. + + + + + This type is used to indicate how the minimum and maximum attributes values should be interpreted. For purposes of this attribute, an int is 4 bytes and a long is 8 bytes. + + + + + + + + + + + + Indicates the data type of the range attributes (minimum and maximum). For reasons of backward compatibility, this attribute is assumed to have the value 'double' if not present. + + + + + For components with auto-generated configuration forms, the user-resolved properties with order attibutes will be presented in ascending order. + + + + + For user defined properties with a "choice" format, refers the choice element enumarating the values to choose from. + + + + + For user resolved properties with a "choice" format, this indicates whether the choices should be presented as radio buttons or as a combo box. + + + + + + Display choice as radio buttons (default). + + + + + Display choice as combo box. + + + + + + + + For user resolved properties with a "choice" format and a radio button presentation style, this indicates whether the buttons should be aligned horizontally or vertically. + + + + + + Display radio buttons vertically + + + + + Display radio buttons horizontally (default) + + + + + + + + Tags configurable properties so that they may be auto-configured by different ui generators. Can also be applied to top-level uiIcons to designate which auto-configured forms they will be added to. + +This is a white-space delimited list of groups so a property may be configured by more than one configurator. + + + + + Use this attribute group on boolean elements for which the schema supplies a default prompt attribute. + + + + This is a hint to the user interface about the data format to require for user resolved properties. + +The bool.att attribute group sets the default format to "bool". + + + + + + + Use this attribute group on boolean elements. + + + + + + + Use this attribute group on long integer elements for which the schema supplies a default prompt attribute. + + + + This is a hint to the user interface about the data format to require for user resolved properties. + +The long.att attribute group sets the default format to "long". + + + + + + + Use this attribute group on long integer elements. + + + + + + + Synonym for autoConfig. + + + + + + For internal use only. + + + + + For user-resolved properties with numeric values, this indicates the minimum value allowed. + + + + + For user-resolved properties with numeric values, this indicates the maximum value allowed. + + + + + + For components with auto-generated configuration forms, the user-resolved properties with order attibutes will be presented in ascending order. + + + + + For user resolved properties with a "choice" format, this refers to a uiChoice element in the ui section of the component file. + + + + + + + + + Use this attribute group to allow all attributes associated with autoconfigurability. + + + + + + + + Choices used by user defined properties of spirit:formatType ="choice" + + + + + + Non-empty set of legal values for a user defined property of type spirit:formatType="choice" . + + + + + + Choice key, available for reference by the spirit:choiceRef attribute of user defined properties of type spirit:formatType="choice". + + + + + A possible value of spirit:choice + + + + + + + When specified, displayed in place of the spirit:enumeration value + + + + + Text that may be displayed if the user requests help about the meaning of an element + + + + + + + + + + + + + diff --git a/ipxact-1.0/busDefinition.xsd b/ipxact-1.0/busDefinition.xsd new file mode 100644 index 0000000..0c16b00 --- /dev/null +++ b/ipxact-1.0/busDefinition.xsd @@ -0,0 +1,207 @@ + + + + + + + + + + + + + The strength of the signal. "strong" (default) or "weak" + + + + + + + + + + + + + Width and direction of a bus interface signal + + + + + Number of bits required to represent this signal. Absence of this element indicates unconstrained number of bits, i.e. the component will define th enumber of bits in this signal. + + + + + If this element is present, the direction of this signal is restricted to the specified value. The direction is relative to the non-mirrored interface. + + + + + + + + + + + + + + + + + + + + + + + Defines the signals and high-level function of a bus. + + + + + + + When present this element indicates that a master interface may be directly connected to a slave interface (under certain conditions) for busses of this type. + + + + + Optional name of bus type that this bus definition is compatible with. This bus definition may change the definitions of signals in the existing bus definition and add new signals, the signals in the original bus are not deleted but may be marked illegal to disallow their use. + + + + + Indicates the maximum number of masters this bus supports. Default value of zero means unbounded. + + + + + Indicates the maximum number of slaves this bus supports. Default value of zero means unbounded. + + + + + This is a list of logical signals defined by the bus. + + + + + + + + + The assigned name of this signal in bus specifications. + + + + + + If this element is present, the signal contains address information. + + + + + If this element is present, the signal contains data information. + + + + + If this element is present, the signal contains clock information. + + + + + Is this element is present, the signal contains reset information. + + + + + + + Defines constraints for this signal when present in a system bus interface with a matching group name. + + + + + + Used to group system signals into different groups within a common bus. + + + + + + + + + Defines constraints for this signal when present in a master bus interface. + + + + + + + + Defines constraints for this signal when present in a slave bus interface. + + + + + + + + Default value for the signal when used as an input and it ends up being unconnected. Ignored for signals that require a singleShot or clock type driver. This value may be overridden by a defaultValue on a component pin. + + + + + + + + The value of a signal. 1 or 0 for single bit signals, unsigned numeric otherwise. + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ipxact-1.0/busInterface.xsd b/ipxact-1.0/busInterface.xsd new file mode 100644 index 0000000..5abb515 --- /dev/null +++ b/ipxact-1.0/busInterface.xsd @@ -0,0 +1,373 @@ + + + + + + + + + + + + + + + + + Describes one of the bus interfaces supported by this component. + + + + + A list of bus interfaces supported by this component. + + + + + + + + + + + + Uniquely names this bus interface. + + + + + The bus type of this interface. Refers to a bus description using vendor, library and name attributes. + + + + + + If this element is present, the bus interface can serve as a master. This element encapsulates additional information related to its role as master. + + + + + + If this master connects to an addressable bus, this element references the address space it maps to. It has an addressSpaceRef attribute which is an addrSpaceID key ref. + + + + + + + If master's mapping to the physical address space is not zero based, baseAddress and bitOffset elements may be used to indicate the offsets. + + + + + + + + + + + + + + If this element is present, the bus interface can serve as a slave. + + + + + + + If this element is present, it indicates that the bus interface provides a bridge to another master bus interface on the same component. It has a masterRef attribute which contains the name of the other bus interface. It also has an opaque attribute to indicate that the bus bridge is opaque. + +Any slave interface can bridge to multiple master interfaces, and multiple slave interfaces can bridge to the same master interface. + + + + + The name of the master bus interface to which this interface bridges. + + + + + + + + + + + + + + + + + + + If this element is present, the bus interface is a system interface, neither master nor slave, with a specific function on the bus. + + + + + + + + + + If this element is present, the bus interface represents a mirrored slave interface. All directional constraints on signals are reversed relative to the specification in the bus definition. + + + + + + Represents a set of remap base addresses. + + + + + + Base of an address block. The state attribute indicates the name of the remap state for which this address is valid. + + + + + + + + + + + + + + The address range of mirrored slave. + + + + + + + + + + + + + + + + + + If this element is present, the bus interface represents a mirrored master interface. All directional constraints on signals are reversed relative to the specification in the bus definition. + + + + + + If this element is present, the bus interface represents a mirrored system interface. All directional constraints on signals are reversed relative to the specification in the bus definition. + + + + + + + + + + If this element is present, this interface represents an interface being exported from a sub-component. The type of interface (master, slave, ...) should be obtained from the sub-component interface. + + + + + + Indicates name of the sub-component containing the interface being exported. + + + + + Indicates the name of the sub-component bus interface being exported. + + + + + + + + + Directs how a bus interface is connected when the component is added to a design already containing a bus owner. + +Default behavior is "explicit". + + + + + + A bus instance is automatically chosen and the connection is made. Component addition fails if a suitable bus is not available. + + + + + Connection of this bus interface is not made until the user explicitly requests connection. + + + + + + + + Maps component signals to bus signals. + + + + + + Maps a component's signal to a signal in a bus description. The text content of this element identifies a signal on this component bu its signal name. The busSignal attribute names the corresponding signal in the bus definition. + +The optional attributes left and right can be used to select a bit-slice of a signal vector to map to the bus interface. + + + + + + + + + + + + + + + + + Master or slave index of this bus interface's connection on a bus. Only used on indexed buses. + + + + + + + + + + + + + Indicates whether bit steering should be used to map this interface onto a bus of different data width. + +Values are "on", "off" or "default". + + + + + + + + + + + + Configuration generators for bus interfaces. + + + + + + + + + Indicates which system interface is being mirrored. Name must match a group name present on one or more signals in the corresonding bus definition. + + + + + Lists all channel connections between mirror interfaces of this component. + + + + + + Defines a set of mirrored interfaces of this component that are connected to one another. + + + + + + Overrides the maxMasters value in the bus definition if this number is more restrictive. + + + + + Overrides the maxSlaves value in the bus definition if this number is more restrictive. + + + + + Contains the name of one of the bus interfaces that is part of this channel. + + + + + + + + + + + + + + + Contains a list of remap state names and associated signal values + + + + + + Contains a list of signals and values which tell the decoder to enter this remap state. The name attribute identifies the name of the state + + + + + + Contains the name and value of a signal on the component, the value indicates the logic value which this signal must take to effect the remapping. The id attribute stores the name of the signal which takes that value. + + + + + + + This attribute identifies a signal on the component which affects the component's memory layout + + + + + + + + + + Stores the name of the state + + + + + + + + diff --git a/ipxact-1.0/commonStructures.xsd b/ipxact-1.0/commonStructures.xsd new file mode 100644 index 0000000..d429d5a --- /dev/null +++ b/ipxact-1.0/commonStructures.xsd @@ -0,0 +1,89 @@ + + + + + + + Used wherever a name value pair is appropriate. The name is given by the attribute while the value is the element content. + +Supports configurability attributes and a cross reference XPath expression. + + + + + + The name in a name-value pair. + + + + + + + + + + Name value pair with data type information. + + + + + + The data type of the argumen as pertains to the language. Example: "int", "double", "char *". + + + + + + + + A container for any data that is specific to this instance of the design object. The contents are not interpreted or validated by the Design Environment. This element will be saved with the design and restored when the design is loaded. It is indended to be used by generators to store and retrieve instance specific data. + + + + + A name value pair. The name is in given by the name attribute. The value is in the text content of the element. This element supports all configurability attributes. It also supports a cross reference attribute which allows it to be associated with other elements in the document through an XPath expression. + + + + + A group of parameters. + + + + + + + + + + + Container for vendor specific extensions. + + + + + + Accepts any element(s) the content provider wants to put here, including elements from the SPIRIT namespace. + + + + + + diff --git a/ipxact-1.0/component.xsd b/ipxact-1.0/component.xsd new file mode 100644 index 0000000..5c0bd6b --- /dev/null +++ b/ipxact-1.0/component.xsd @@ -0,0 +1,161 @@ + + + + + + + + + + + + + Component-specific extension to componentType + + + + + + + + + + + + + + Generator list is tools-specific. + + + + + + + + cpu's in the component + + + + + + Describes a processor in this component. + + + + + + The name of the cpu instance relative to the platform core. + + + + + Indicates which address space maps into this cpu. + + + + + Data specific to the cpu. + + + + + + + + + + + + + + + + This is the root element for all non platform-core components. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ipxact-1.0/configurable.xsd b/ipxact-1.0/configurable.xsd new file mode 100644 index 0000000..8bb1e94 --- /dev/null +++ b/ipxact-1.0/configurable.xsd @@ -0,0 +1,72 @@ + + + + + + Determines how a property is resolved. Immediate means the value is included in the XML document and cannot be changed by the user. User means the value must be obtained from the user. Optional means the user is given the opportunity to supply a value, but can leave the entry blank. Dependent means the value depends on the value of other properties. A dependency expression must be supplied in the dependency attribute. Generated means the value will be provided by a generator. + + + + + Property value is included in the XML file. It cannot be configured. + + + + + Property content can be modified thorugh confiugration. Modofications will be saved with the design. + + + + + Property value is expressed as an XPath expression which may refer to other properties. The expression must appear in the dendency attribute. + + + + + Generators may modify this property. Modifications do not get saved with the design. + + + + + + + Determines how a property value is resolved. + + + + + ID attribute for uniquely identifying an element within its document. + + + + + Required on properties with a resolve = "dependent" attribute. This is an XPath expression supplying the resultant value in terms of other properties in the component file. + + + + + Base set of attributes for an element to be configurable. + + + + + + + diff --git a/ipxact-1.0/configurator.xsd b/ipxact-1.0/configurator.xsd new file mode 100644 index 0000000..7ff82a4 --- /dev/null +++ b/ipxact-1.0/configurator.xsd @@ -0,0 +1,38 @@ + + + + + + + + Set of configurators on a configurable object. The contents of this container element are undefined for version 1.0 of the SPIRIT schema. It is expected that the contents will be defined when the tight generator interface is available. In this release only 'default' configurators are supported. + + + + + + Accepts any element(s) the content provider wants to put here, including elements from the SPIRIT namespace. + + + + + + + diff --git a/ipxact-1.0/design.xsd b/ipxact-1.0/design.xsd new file mode 100644 index 0000000..b1ba77e --- /dev/null +++ b/ipxact-1.0/design.xsd @@ -0,0 +1,41 @@ + + + + + + + + Root element for a platform design. + + + + + + + + + + + + + + + + diff --git a/ipxact-1.0/file.xsd b/ipxact-1.0/file.xsd new file mode 100644 index 0000000..fa6ae00 --- /dev/null +++ b/ipxact-1.0/file.xsd @@ -0,0 +1,490 @@ + + + + + + + + + SPIRIT reference to a file or directory. + + + + + + Path to the file or directory. + + + + + + + + + + + + + Logical name for this file or directory e.g. VHDL library name. + + + + + + + + + + + + Defines exported names that can be accessed externally, e.g. exported function names from a C source file. + + + + + Command and flags used to build derived files from the sourceName files. If this element is present, the command and/or flags used to to build the file will override or augment any default builders at a higher level. + + + + + + Command used to build this file. + + + + + + + + + + + + Flags given to the build command when building this file. If the optional attribute "append" is "true", this string will be appended to any existing flags, otherwise these flags will replace any existing default flags. + + + + + + + + + + + + + If true, the value of the sibling element "flags" should replace any default flags specified at a more global level. If this is true and the sibling element "flags" is empty or missing, this has the effect of clearing any default flags. + + + + + + + + + + + + Pathname to the file that is derived (built) from the source file. + + + + + + + + + + + + + + + + Specifies define symbols that are used in the source file. The spirit:name attribute gives the name to be defined and the text content of the element holds the value. This element supports full configurability. + + + + + Relates the current file to a certain executable image type in the design. + + + + + + + + + + + This element specifies a list of unique pathnames to files and directories. It may also include build instructions for the files. If compilation order is important, e.g. for VHDL files, the files have to be provided in compilation order. + + + + + Specifies an executable software image to be loaded into a processors address space. The format of the image is not specified. It could, for example, be an ELF loadfile, or it could be raw binary or ascii hex data for loading directly into a memory model instance. + + + + + + Name of the executable image file. + + + + + + + + + + + + Additional information about the load module, e.g. stack base addresses, table addresses, etc. + + + + + Default commands and flags for software language tools needed to build the executable image. + + + + + + A generic placeholder for any file builder like compilers and assemblers. It contains the file types to which the command should be applied, and the flags to be used with that command. + + + + + + + Default command used to build files of the specified fileType. + + + + + + + + + + + + Flags given to the build command when building files of this type. + + + + + + + + + + + + If true, replace any default flags value with the value in the sibling flags element. Otherwise, append the contents of the sibling flags element to any default flags value. + +If the value is true and the "flags" element is empty or missing, this will have the result of clearing any default flags value. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies a linker command file. + + + + + + Linker command file name. + + + + + + + + + + + + The command line switch to specify the linker command file. + + + + + + + + + + + + Specifies whether to generate and enable the linker command file. + + + + + + + + + + + + + + + + + + + + Contains a group of file set references that indicates the set of file sets complying with the tool set of the current executable image. + + + + + + + + + + + + + + + + A reference to a fileSet. + + + + + Specifies a location on which files or fileSets may be dependent. Typically, this would be a directory that would contain included files. + + + + + List of file sets associated with component. + + + + + + + + + + + + + Default command used to build files of the specified fileType. + + + + + + + + + + + + Flags given to the build command when building files of this type. + + + + + + + + + + + + If true, replace any default flags value with the value in the sibling flags element. Otherwise, append the contents of the sibling flags element to any default flags value. + +If the value is true and the "flags" element is empty or missing, this will have the result of clearing any default flags value. + + + + + + + + + + + + + + + + Specifies the original owner of the fileSet, used when importing fileSets from other components, as in Hierarchical components, to allow the parent component to correctly locate files imported from subcomponents + + + + + Identifies this filleSet as belonging to a particular group or having a particular purpose. Examples might be "diagnostics", "boot", "application", "interrupt", "deviceDriver", etc. + + + + + + + + Generator information if this file set describes a sw function. For example, this file set may describe diagnostics for which the DE can generate a diagnostics driver. + +The boolean attribute "replicate", if true (default is false), directs the generator to compile a separate object module for each instance of the component in the design. Otherwise the single function will be called with different arguments for each instance (e.g. baseAddress). + + + + + + + A reference to the file that contains the entry point function. + + + + + Function return type. See the enumerations. + + + + + + + + + + + Arguments passed in when the function is called. Arguments are passed in order. + +This is an extension of the name-value pair which includes the data type in the spirit:dataType attribute. The argument name is in the spirit:name attribute and its value is in the text content of the element. + + + + + + + + + + + + Specifies if the SW function is enabled. Default is true. + + + + + + + + + + + + + + + Source file for the boot load. Relative names are searched for in the project directory and the source of the component directory. + + + + + + + + + + + + + + + + + + + + + + + + + SPIRIT URI, like a standard xs:anyURI except that it can contain environment variables in the ${ } form, to be replaced by their value to provide the underlying URI + + + + + + Enumerates C argument data types. + + + + + + + + + + + + + + + A reference to a generator element. + + + + + A reference to a configurator element. + + + diff --git a/ipxact-1.0/fileType.xsd b/ipxact-1.0/fileType.xsd new file mode 100644 index 0000000..5a3d2f7 --- /dev/null +++ b/ipxact-1.0/fileType.xsd @@ -0,0 +1,66 @@ + + + + + + The type of a file refenced by SPIRIT. +Either <fileTypeC> for a known SPIRIT file type <userFileType> a file type not - yet - known by SPIRIT. + + + + + Enumerated file types known by SPIRIT. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Free form file type, not - yet - known by SPIRIT . + + + + + diff --git a/ipxact-1.0/generator.xsd b/ipxact-1.0/generator.xsd new file mode 100644 index 0000000..0940e2a --- /dev/null +++ b/ipxact-1.0/generator.xsd @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + Select other generator chain files for inclusion into this chain. The boolean attribute "unique" (default false) specifies that only a single generator is valid in this context. If more that one generator is selcted based on the selection criteria, DE will prompt the user to resolve to a single generator. + + + + + + + Select another generator chain using the unique identifier of this generator chain. + + + + + + + + + Selects generators declared in component description files of the current design for inclusion into this generator chain. + + + + + Selects generators declared in bus definition files of the current design for inclusion into this generator chain. + + + + + + + Identifies this generator chain as belonging to the named group. This is used by other generator chains to select this chain for programmatic inclusion. + + + + + + + + + Specifies a set of generators. + + + + + + + + + + Specifies a set of component generators. The scope attribute applies to component generators and specifies whether the generator should be run for each instance of the entity (or module) or just once for all instances of the entity. + + + + + + + + + + + + Specifies a set of group names used to select subsequent generators. The attribute "multipleGroupOperator" specifies the OR or AND selection operator if there is more than one group name (default=OR). + + + + + + Name used to select a generator or generator chain. + + + + + + + + + + + + + + + + + + + + + + This is an non-negative floating point number that is used to sequence when a generator is run. The generators are run in order starting with zero. There may be multiple generators with the same phase number. In this case, the order should not matter with respect to other generators at the same phase. If no phase number is given the generator will be considered in the "last" phase and these generators will be run in the order in which they are encountered while processing generator elements. + + + + + + + + + + + + + + + + An identifier to specify the generator group. This is used by generator chains for selecting which generators to run. + + + + + + The scope attribute applies to component generators and specifies whether the generator should be run for each instance of the entity (or module) or just once for all instances of the entity. + + + + + + + + + + + + + + + + + + + List of component generators. + + + + + + + + + + Types of generators + + + + + The name of this generator. + + + + + + + Identifies the special requirements that this generator may place up on the DE. + + + + + + If true then this generator will not make changes to the design. + + + + + If true then this generator is capable of running in a hierarchical manner and so the DE must ensure that all lower levels of hierarchy are also made available + + + + + If true then the generator operates on designated instances, not the whole design. The DE must capture the instances to be operated on. + + + + + If present then this generator only needs a subset of the design information. + + + + + + If true then the generator only needs to look at design information. + + + + + If true then the generator only needs to look at component related information. + + + + + If true then the generator only needs to look at bus definition information. + + + + + + + + + + + The pathname to the executable file that implements the loose generator + + + + + + diff --git a/ipxact-1.0/identifier.xsd b/ipxact-1.0/identifier.xsd new file mode 100644 index 0000000..6bf5328 --- /dev/null +++ b/ipxact-1.0/identifier.xsd @@ -0,0 +1,86 @@ + + + + + + Base SPIRIT identifier group. Identify a SPIRIT document by its by vendor, library and name. + + + + + Name of the vendor who supplies this file. + + + + + Name of the logical library this component belongs to. Note that a physical library may contain components from multiple logical libraries. Logical libraries are displayes in component browser. + + + + + The name of the object. Must match the root name of the XML file and the directory name it or its version directory belongs to. + + + + + + + This group of elements identifies a design and a PMD - with an optional version number -. + + + + + + + + + This group of elements identifies a component of a bus definition - with a mandatory a version number-. + + + + + + + + + Base SPIRIT document reference. Contains vendor, library, name and optional version attributes. + + + + + + + + + Base SPIRIT document reference type. Contains vendor, library, name and optional version attributes. + + + + + + Resolved SPIRIT document reference type. Contains vendor, library, name and optional version attributes and the URI of the referenced SPIRIT document + + + + + + + + diff --git a/ipxact-1.0/index.xsd b/ipxact-1.0/index.xsd new file mode 100644 index 0000000..6f6b97f --- /dev/null +++ b/ipxact-1.0/index.xsd @@ -0,0 +1,71 @@ + + + + + + + + + + + + This SPIRIT schema documentation is part of the SPIRIT standard deliverables, ALPHA version. SPIRIT v1.0 specifically addresses requirements for RTL design, including IP packaging, configuration and SoC integration. + +The diagrams in this documentation represent the relationships between elements of the schema together with their attributes and expected values. + + + + + To define all elements and attributes supported when defining a bus. + + + + + To define all elements and attributes supported when defining a component. + + + + + To define all elements and attributes supported when defining a design and its configured components + + + + + To define all elements and attributes supported when defining creating platform meta-data transformations. + + + + + To define all elements and attributes supported when defining a generator and the changes made by a generator. + + + + + To define all elements and attributes supported when invoking generators defined in the LGI methodology. + + + + + To define all elements and attributes supported for defining generator chains. + + + + + diff --git a/ipxact-1.0/looseGeneratorChanges.xsd b/ipxact-1.0/looseGeneratorChanges.xsd new file mode 100644 index 0000000..a30419c --- /dev/null +++ b/ipxact-1.0/looseGeneratorChanges.xsd @@ -0,0 +1,170 @@ + + + + + + + + Indicates whether the alteration is an addition, removal or a replacement + + + + + + + + + + + + Indicates whether the alteration is an addition or a removal + + + + + + + + + + + Defines the changes to be made to the design as directed by an external generator. + + + + + + List of changes affecting components in the design. + + + + + + + + + + + This is the file containing the component definition. Required only if the alteration is an addition or a replacement. Should be an absolute filename so that the DE may copy it. + + + + + Required only for hierarchical components. Holds the hierarchical component's sub-component definition files. + + + + + + Path to definitions of components and channels instanced in hierarchical component definition. + + + + + + + + + + + + + + + List of changes affecting interconnections in the design. + + + + + + + + + + + + + + + + + List of changes affecting ad-hoc connections in the design. + + + + + + + + + + This is the name of the ad-hoc connection to modify + + + + + Specifies whether this ad-hoc connection will be exported out of the design. + + + + + + + + + + + + Indicates the signal on the component which is being connected by this ad-hoc connection + + + + + + + + + + + + + + + + + List of changes affecting vendor defined extensions in the design. + + + + + + + + + + + + + + + + + + diff --git a/ipxact-1.0/looseGeneratorInvocation.xsd b/ipxact-1.0/looseGeneratorInvocation.xsd new file mode 100644 index 0000000..bf5edec --- /dev/null +++ b/ipxact-1.0/looseGeneratorInvocation.xsd @@ -0,0 +1,107 @@ + + + + + + + + + Specifies the information required to invoke a loosely coupled generator + + + + + + Path to description of top level design + + + + + The list of bus definition files currently in use within the design + + + + + + Path to a bus definition file used within design. Attributes VLNV used to indicate which bus definition this file represents. + + + + + + + + The list of component definition files currently needed to define all the components within the design. + + + + + + Path to component definition file. This component definition is the component definition as it appears in the DE; i.e. after having been transformed by any PMD info, and including any instance specific settings such as parameter values. The instanceRef attribute is the name of the instance that this file describes. + + + + + Reference handle for this component definition + + + + + + + + + + List of values of configurable settings for this generator invocation + + + + + + + + + + The list of instances to be worked upon by the generator, no instances selected indicates whole design + + + + + + Instance name of selected instance that the generator is expected to work upon. This may be a hierarchical instance name. + + + + + + + + The non-negative floating point phase number associated with this generator invocation + + + + + The generator group name associated with this generator invocation + + + + + + diff --git a/ipxact-1.0/memoryMap.xsd b/ipxact-1.0/memoryMap.xsd new file mode 100644 index 0000000..861e14c --- /dev/null +++ b/ipxact-1.0/memoryMap.xsd @@ -0,0 +1,559 @@ + + + + + + + + The read/write accessability of an addess block. + + + + + + + + + + 'serial' or 'parallel' bank alignment. + + + + + + + + + Describes the usage of an address block. + + + + + Denotes an address range that can be used for read-write or read-only data storage. + + + + + Denotes an address block that is used to communicate with hardware. + + + + + Denotes an address range that must remain unoccupied. + + + + + + + A reference to a unique address space. + + + + + A reference to a unique memory map. + + + + + Describes whether this bank's blocks are aligned in 'parallel' or 'serial'. + + + + + For subspaceMap elements, this attribute identifies the master that contains the address space to be mapped. + + + + + + + + + + + + + + + + + + + + Base type for an element which references an address space. Reference is kept in an attribute rather than the text value, so that the type may be extended with child elements if necessary. + + + + + + Base type for an element which references an memory map. Reference is kept in an attribute rather than the text value, so that the type may be extended with child elements if necessary. + + + + + + Banks nested inside a bank do not specify address. + + + + + + + Address blocks inside a bank do not specify address. + + + + + + + + + Subspace references inside banks do not specify an address. + + + + + Any parameters that may apply to the subspace reference. + + + + + + + + + + + Field name. + + + + + Offset of this field's lsb from bit 0 of the register. + + + + + Width of the field in bits. + + + + + + Bit field description. + + + + + Enumerates specific values that can be assigned to the bit field. + + + + + + Enumerated bit field value. + + + + + Description of a bit field value. + + + + + The name of this enumerated value. This may be used as a token in generating code. + + + + + + + + + + + + + + + + Maps in an address subspace from accross a bus bridge. Its masterRef attribute refers by name to the master bus interface on the other side of the bridge. It must match the masterRef attribute of a bridge element on the slave interface, and that bridge element must be designated as opaque. + + + + + + + Map of address space blocks on slave slave bus interface. + + + + + Memory map name, unique within the component. Put into a group to avoid making it a top level element + + + + + + + + + Map of address space blocks on a slave bus interface in a specific remap state. + + + + + State of the component in which the memory map is active. + + + + + + Map of address space blocks on the local memory map of a master bus interface. + + + + + + Address subspace type. Its subspaceReference attribute references the subspace from which the dimensions are taken. + + + + + + Any parameters that may apply to the subspace reference. + + + + + + + + + Indicates whether the data is volatile, default to false when not present. + + + + + Indicates the accessibility of the data in the address block. Possible values are 'read-write', 'read-only' and 'write-only'. + + + + + This is a single contiguous block of memory inside a memory map. + + + + + References the address space. The name of the address space is kept in its addressSpaceRef attribute. + + + + + If this component is a bus master, this lists all the address spaces +defined by the component. + + + + + + This defines a logical space, referenced by a bus master. + + + + + + The name of the address space. Unique within the model. + + + + + + + Specifies the data storage as "big" or "little" endian. + + + + + + + + + + + + Provides the local memory map of an address space. Blocks in this memory map are accessable to master interfaces on this component that reference this address space. They are not accessable to any external master interface. + + + + + Data specific to this address space. + + + + + + + + + + + + References the memory map. The name of the memory map is kept in its memoryMapRef attribute. + + + + + Lists all the slave memory maps defined by the component. + + + + + + The set of address blocks a bus slave contributes to the bus' address space. + + + + + + + + + + + + + + + + + Represents a bank of memory made up of address blocks or other banks. It has a bankAlignment attibute indicating whether its blocks are aligned in 'parallel' (occupying adjacent bit fields) or 'serial' (occupying contiguous addresses). Its child blocks do not contain addresses or bit offsets. + + + + + Base of an address block. + + + + + + + + + + + + + Base bit offset of an address block. If not included, it is assumed to be 0. + + + + + + + + + + + + The number of bits in the least addressable unit. The default is byte addressable (8 bits). + + + + + This is a group of optional elements commonly added to various types of address blocks in a memory map. + + + + + + + + + + This group of elements describes an absolute or relative address of an address block in a memory map. + +Note that this is a group, not an element. It does not appear in the XML, but its contents may. + + + + + + + + + This group of elements is common to top level banks and banked banks. + + + + + + An address block within the bank. No address information is supplied. + + + + + A nested bank of blocks within a bank. No address information is supplied. + + + + + + + + + + + This group of elements describes width and length of an address block in a memory map. + +Note that this is a group, not an element. It does not appear in the XML, but its contents may. + + + + + The address range of an address block. Expressed as the number of addressable units accessable to the block. + + + + + + + + + + + + Bit width of an address block. If zero or absent and this is part of a slave memory map, the width is assumed to be the data width of the slave interface. It this is part of a local memory map, a missing width is assumed to be the effective width of the address space. If this is part of an address space definition, a missing width is assumed to be the widest data signal of all bus interfaces that reference this address space. + + + + + + + + + + + + + + This group of optional elements can be used to provide additional descriptions to an address block or bank. + +Note that this is a group, not an element. It does not appear in the XML, but its contents may. + + + + + Indicates the usage of this block. Possible values are 'memory', 'register' and 'reserved'. + + + + + + + Any additional parameters needed to describe this address block to the generators. + + + + + + + This group of optional elements describes the memory mapped registers of an address block + + + + + + + + Register name. + + + + + Dimensions a register array. + + + + + Offset from baseAddress. + + + + + Size in bits. + + + + + + + Indicates that this register has a dependency on the setting of another register. + + + + + + The name of the register that enables this register. + + + + + Name of the field within the register that enables this register. + + + + + Value that the enabling field must be set to to enable this register. + + + + + Mask to be anded with the value of the enabling field or register before comparing to the dependency value. + + + + + + + + Register value at reset. + + + + + Describes individual bit fields within the register. + + + + + Register description + + + + + + + + + + diff --git a/ipxact-1.0/model.xsd b/ipxact-1.0/model.xsd new file mode 100644 index 0000000..14bafa3 --- /dev/null +++ b/ipxact-1.0/model.xsd @@ -0,0 +1,106 @@ + + + + + + + + + + + Name of the view. Must be unique within a component + + + + + This is a string such as "ModelsimVerilog", used to uniquely identify the hardware environment. More than one indicates that the same information applies to multiple environments. + + + + + The hardware description language used such as "verilog" or "vhdl". If the attribute "strict" is "true", this value must match the language being generated for the design. + + + + + + + + + + + + HDL-specific name to identify the model. + + + + + + + + + + + Hardware model information. + + + + + View container + + + + + + + + + + Signal container + + + + + + + + + + Hardware parameter name value pairs container + + + + + + A hardware parameter name value pair. The name is given in an attribute. The value is the element value. The dataType (applicable to high level modeling) is given in the dataType attribute. The name should be identical to the RTL (VHDL generic or Verilog parameter) + + + + + + + + + + + Hardware model information. + + + diff --git a/ipxact-1.0/pmd.xsd b/ipxact-1.0/pmd.xsd new file mode 100644 index 0000000..25f983c --- /dev/null +++ b/ipxact-1.0/pmd.xsd @@ -0,0 +1,108 @@ + + + + + + + + + The root element of the platform meta-data definition file. This file defines the Platform meta-data to be applied to specific IP + + + + + + + Defines the components that this pmd applies to. When the user tries to add any of those components, this pmd will be applied. + + + + + + A vendor-library-name-version identifier used to refer to components. + + + + + + + + A display label to override the original component's display label if this 3MD will apply. + + + + + + + + + + + + + + + + + + Defines the components that must exist in the current design for this pmd to apply. The pmd will only apply if an instance of each components declared in this list exists in the design. If the list is empty then this pmd file will apply unconditionaly. + + + + + + A vendor-library-name-version identifier used to refer to components. + + + + + + + + The transformer element contains references to the actual code that will make the transformation. If there are multiple elements, they will be applied in sequence. i.e., the affected component document will pass through a pipeline of transformers with each child element representing a step in a pipeline. + + + + + + An XSLT transformer that will transform the document based on rules defined in the xsl file mentioned here. + + + + + + The relative path to the xsl stylesheet to be used for transformation. + + + + + Parameters to be passed to the xslt stylesheet at run time. + + + + + + + + + + + + diff --git a/ipxact-1.0/signal.xsd b/ipxact-1.0/signal.xsd new file mode 100644 index 0000000..4fd9489 --- /dev/null +++ b/ipxact-1.0/signal.xsd @@ -0,0 +1,100 @@ + + + + + + + + The direction of a component signal. + + + + + + + + + + + + The name of the signal. + + + + + + Specific left and right vector bounds. Signal width is +max(left,right)-min(left,right)+1 When the bounds are not present, a scalar signal is assumed. + + + + Left vector bound. + + + + + + + + + + + + Right vector bound. + + + + + + + + + + + + + + The initial or default value on the signal. + + + + + + + + Specifies whether a signal is to be exported out of the module. + + + + + + + + + + + + + + + Describes signal charateristics. + + + diff --git a/ipxact-1.0/signalDrivers.xsd b/ipxact-1.0/signalDrivers.xsd new file mode 100644 index 0000000..33a3231 --- /dev/null +++ b/ipxact-1.0/signalDrivers.xsd @@ -0,0 +1,190 @@ + + + + + + + + Describes a driven clock signal. + + + + + + Clock period in nanoseconds + + + + + + + + + + + + Time in nanoseconds until first pulse. + + + + + + + + + + + + Value of signal after first clock edge. + + + + + + + + + + + + Duration in nanoseconds of first state in cycle. + + + + + + + + + + + + + + + Describes a driven one-shot signal. + + + + + + Time in nanoseconds until start of one-shot. + + + + + + + + + + + + Value of signal after first edge of one-shot. + + + + + + + + + + + + Duration in nanoseconds of the one shot. + + + + + + + + + + + + + + + Specifies if a signal requires a driver. Default is false. The attribute driverType can further qualify what type of driver is required. Undefined behaviour if direction is not input or inout. Driver type any indicates that any unspecified type of driver must be connected + + + + + + + + + + + + + + + + + + + + Describes a signal value. The signal value can be just a value (number), a strength, or both. If the "value" is not given, it should be considered an X (unknown). A weak strength with no value given is considered Z (tristate). + + + + + + + + + + + + Describes a signal strength. + + + + + + + + + The value of a signal. 1 or 0 for single bit signals, unsigned numeric otherwise. + + + + + + + + + + + + The strength of the signal. "strong" (default) or "weak". + + + + + + + + + + diff --git a/ipxact-1.0/simpleTypes.xsd b/ipxact-1.0/simpleTypes.xsd new file mode 100644 index 0000000..a0d0bf0 --- /dev/null +++ b/ipxact-1.0/simpleTypes.xsd @@ -0,0 +1,44 @@ + + + + + + Number format used by SPIRIT. Supports any string handled by java.lang.Long.decode(). Also supports magnitude suffix of upper or lower case K, M, G or T. + + + + + + + + List of doubles. Used to build configurableDouble type. + + + + + + Can be a double or an empty string. + + + + + + + diff --git a/ipxact-1.0/subInstances.xsd b/ipxact-1.0/subInstances.xsd new file mode 100644 index 0000000..17ea739 --- /dev/null +++ b/ipxact-1.0/subInstances.xsd @@ -0,0 +1,141 @@ + + + + + + + + All configuration information for a contained component or channel instance. + + + + + + + + + + Describes the configurable content of an element in the instance. May contain text and/or child elements. + +The required referenceId attribute refers to the ID attribute of the configurable element. + + + + + + + + + + + + An instance name assigned to subcomponent instances and contained channels, that is unique within the parent component. + + + + + Component instance element. The instance name is contained in the unique-value instanceName attribute. + + + + + + + References a component to be found in an external library. The name attribute gives the name of the component and the version attribute speicifies which version of the component to use. + + + + + + + + + Sub instances of internal components. + + + + + + + + + + Represents an ad-hoc connection between component pins. + + + + + + Specifies whether this ad-hoc connection will be exported out of the design. + + + + + + + + + + + + + + + + + + + + + + + + Defines the set of ad-hoc connections in a design. An ad-hoc connection represents a connection between two component pins which were not connected as a result of interface connections (i.e.the pin to pin connection was made explicitly and is represented explicitly). + + + + + + + + + + Describes a connection from the interace of one comonent to the interface of another component through its attributes. + + The component1Ref and busInterface1Ref attributes indicate the instance name and bus interface name of one end of the connection. The component2Ref and busInterface2Ref attributes indicate the instance name and bus interface name of the other end of he connection. + + + + + + + + + + + Connections between internal sub components. + + + + + + + + From f3f3b6095c5633ca5c07b1d1492a1463f1926d97 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Sat, 19 Aug 2023 23:50:41 +0200 Subject: [PATCH 2/2] Added test case. --- tests/unit/IPXACT.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/unit/IPXACT.py b/tests/unit/IPXACT.py index 5f7305d..c498335 100644 --- a/tests/unit/IPXACT.py +++ b/tests/unit/IPXACT.py @@ -11,3 +11,25 @@ class SPIRIT(TestCase): _root: Path = Path("..") + + def test_Schema10(self): + print() + print(f"CWD: {Path.cwd()}") + + directory = self._root / "ipxact-1.0" + print(f"Schema directory: {directory}") + + schemaFiles = ( + "design.xsd", + "pmd.xsd", + "component.xsd", + "busDefinition.xsd", + "generator.xsd", + "configurator.xsd", + "looseGeneratorInvocation.xsd", + ) + print(f"Reading schemas ...") + for file in schemaFiles: + schemaFile = directory / file + print(f" {schemaFile}") + _ = XMLSchema(schemaFile)