The keywords that are used in an MDD file are as follows:
Begin
The BEGIN keyword begins with one of the following: library, drive, block, category, or interface.
END
The END keyword signifies the end of a definition block.
PSF_VERSION
Specifies the PSF version of the library.
DRC
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.
option
Specifies the name following the keyword option is an option to the tool. The following five
options are supported: COPYFILES, DEPENDS, SUPPORTED_PERIPHERALS, and
DRIVER_STATE.
SUPPORTED_OS_TYPES
Specifies the list of supported OS types. If it is not specified, then driver is assumed as standalone driver.
COPYFILES
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.
DEPENDS
Specifies the list of directories on which a driver depends for compilation.
SUPPORTED_PERIPHERALS
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.
Single-Character REs
- 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.
Multi-Character REs
- 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]
xps_uart16550 mdm);
DRIVER_STATE
Specifies the state of the driver. The following are the list of values that can be assigned to DRIVER_STATE:
- ACTIVE
- This is an active driver. By default the value of DRIVER_STATE is ACTIVE.
- DEPRECATED
- This driver is deprecated and is scheduled to be removed.
- OBSOLETE
- 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.
REQUIRES_INTERFACE
Specifies the interfaces that must be provided by other libraries or drivers in the system.
HELP
Specifies the help file that describes the library or driver.
DEP
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.
BLOCK
Specifies the block is to be entered into when the DEP condition is satisfied. Nested blocks are not supported.
INTERFACE
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> ;
END INTERFACE
HEADER
Specifies the header file in which the interface functions would be defined.
FUNCTION
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.
PARAM
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.
DTGPARAM
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.
PROPERTY
Specifies the various properties of the entity defined with a BEGIN statement.
NAME
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.
VERSION
Specifies the version of the driver.
DESC
Describes the entity in which it was defined (example: PARAM, PROPERTY ).
TYPE
Specifies the type for the entity in which it was defined (example: PARAM ). The following are the supported types:
-
bool: Boolean (true or false)
int: Integer
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.
DEFAULT
Specifies the default value for the entity in which it was defined.
GUI_PERMIT
Specifies the permissions for modification of values. The following permissions exist:
- NONE
- The value can not be modified at all.
- ADVANCED_USER
- 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.
- ALL_USERS
- 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.