The keywords that are used in an MDD file are as follows:
The BEGIN keyword begins with one of the following: library, drive, block, category, or interface.
The END keyword signifies the end of a definition block.
Specifies the PSF version of the library.
Specifies the DRC function name. This is the global DRC function that is called by the Vitis IDE configuration tool or the command-line tool. This DRC function is called when you enter all the parameters and the MLD or MDD writers can verify that a valid library or driver can be generated with the given parameters.
Specifies the name following the keyword option is an option to the tool. The following five
options are supported: COPYFILES, DEPENDS, SUPPORTED_PERIPHERALS, and
Specifies the list of supported OS types. If it is not specified, then driver is assumed as standalone driver.
Specifies the list of files to be copied for the driver. If ALL is specified as the value, the tool copies all the driver files.
Specifies the list of directories on which a driver depends for compilation.
Specifies the list of peripherals supported by the driver. The values of this option can be specified as a list or as a regular expression. The following example indicates that the driver supports all versions of opb_jtag_uart and the opb_uartlte_v1_00_b version:
option supported_peripherals = (xps_uartlite_v1_0, xps_uart16550)
Regular expressions can be used in specifying the peripherals and versions. The regular expression (RE) is constructed as described below.
- Any character that is not a special character (to be defined) matches itself.
- A backslash (followed by any special character) matches the literal character itself. That is, it escapes the special character.
- The special characters are: + * ? . [ ] ^ $
- The period matches any character except the newline. For example, .umpty matches both Humpty and Dumpty.
- A set of characters enclosed in brackets () is a one-character RE that matches any of the characters in that set. For example, [akm]matches an a, k, or m. A range of characters can be indicated with a dash. For example, [a-z] matches any lower-case letter.
- A single-character RE followed by an asterisk (*) matches zero or more occurrences of the RE. Therefore, [a-z]* matches zero or more lower-case characters.
- A single-character RE followed by a plus (+) matches one or more occurrences of the RE. Therefore, [a-z]+ matches one or more lower-case characters.
- A question mark (?) is an optional element. The preceding RE can occur no times or one time in the string. For example, xy?z matches either xyz or xz.
- The concatenation of REs is an RE that matches the corresponding concatenation of strings. For example, [A-Z][a-z]* matches any capitalized word.
The following example matches any version of xps_uartlite, xps_uart16550, and mdm.
option supported_peripherals = (xps_uartlite_v[0-9]+_[1-9][0-9]_[a-z]
Specifies the state of the driver. The following are the list of values that can be assigned to DRIVER_STATE:
- This is an active driver. By default the value of DRIVER_STATE is ACTIVE.
- This driver is deprecated and is scheduled to be removed.
- This driver is obsolete and is not recognized by any tools. Tools error out on an obsolete driver, and a new driver should be used instead.
Specifies the interfaces that must be provided by other libraries or drivers in the system.
Specifies the help file that describes the library or driver.
Specifies the condition that needs to be satisfied before processing an entity. For example, to enter into a BLOCK, the DEP condition should be satisfied. Conditions of the form ( operand1 OP operand2) are supported.
Specifies the block is to be entered into when the DEP condition is satisfied. Nested blocks are not supported.
Specifies the interfaces implemented by this library or driver and describes the interface functions and header files used by the library or driver.
BEGIN INTERFACE <interface name>
option DEP=<list of dependencies>;
PROPERTY HEADER=<name of header file where the function is declared>
FUNCTION NAME=<name of interface function>, VALUE=<function name
of library/driver implementation> ;
Specifies the header file in which the interface functions would be defined.
Specifies the function implemented by the interface. This is a name-value pair where name is the interface function name and value is the name of the function implemented by the library or driver.
Generally, the MLD/MDD file has a name = value format for statements. The PARAM keyword is required before every such NAME, VALUE pair. The format for assigning a value to a parameter is param name = <name>, default= value. The PARAM keyword specifies that the parameter can be overwritten in the MSS file.
The DTGPARAM keyword is specially used for the device-tree specific parameters that can be configured. Driver defines these DTGPARAMs if it needs to dump any parameters in the Tool DTG generated DTS file.
Specifies the various properties of the entity defined with a BEGIN statement.
Specifies the name of the entity in which it was defined (example: PARAM, PROPERTY ). It also specifies the name of the driver if it is specified with option.
Specifies the version of the driver.
Describes the entity in which it was defined (example: PARAM, PROPERTY ).
Specifies the type for the entity in which it was defined (example: PARAM ). The following are the supported types:
bool: Boolean (true or false)
string: String value within “ " (quotes).
enum: List of possible values, that this parameter can take.
library: Specify other library that is needed for building the library or driver.
peripheral_instance: Specify other hardware drivers needed for building the library or driver. Regular expressions can be used to specify the peripheral instance. Refer to SUPPORTED_PERIPHERALS in MLD Keywords for more details about regular expressions.
Specifies the default value for the entity in which it was defined.
Specifies the permissions for modification of values. The following permissions exist:
- The value can not be modified at all.
- The value can be modified by all. The Vitis IDE does not display this value by default. It is displayed only as an advanced option in the Vitis IDE.
- The value can be modified by all. The Vitis IDE displays this value by default. This is the default value for all the values. If GUI_PERMIT = NONE, the category is always active.