7
Name Mapping
To make data interoperable among Cadence® applications, Cadence developed a common naming convention called name mapping.
The rules for creating legal names within an application define what is called a namespace. Data between Cadence applications is interoperable, as shown below, because Cadence maps names from one namespace to another. Name mapping is consistent and predictable.

The Cadence name mapping system maps names when applications use data from other applications with noncompatible naming conventions.
Sets of Cadence applications can create names in different ways. Therefore, names used for the same design objects (such as nets, ports, instances, libraries, cells, views, and properties) vary across applications.
Importance of Name Mapping
If the Cadence system maps names between products automatically for you, why do you need to know about it?
You need to recognize that some design data appears differently when you use the data in other applications. In other applications, you see the mapped name. The system changes the names to fit each application as a design description moves through a design flow.
When you have to enter names in multiple places of a design flow where the names must match each other, you need to know how to form the corresponding name in multiple namespaces. For example,
- If you are working with a library name that is used in Leapfrog, you use the VHDL namespace.
- If you subsequently use the ncvlog, you use the Verilog namespace
-
The library definition in the
cds.libfile is in the LibraryUnix namespace.
In other words, a library used in Leapfrog with -work MYLIB is subsequently used in the ncvlog with -lib mylib. This library must be defined in the cds.lib file with a statement such as:
DEFINE mylib /usr/libs/mylibdir
An example of VHDL mapping to Verilog, then to LibraryUnix, and back to VHDL looks as follows:
|
VHDL |
Verilog |
LibraryUnix |
VHDL |
|---|---|---|---|
myName1 |
myname1 |
myname1 |
myname1 |
You also need to be aware that names in applications and names in the file system are in different namespaces. Names in the file system are in the Library namespace. Therefore, a name that you see in the file system might not always be the same as the name that you typed into the application. This usually happens when the original name contains special characters, such as a period, which are changed when the name is mapped to the Library namespace. For example, if you name a view layout.placed, the directory name in your file system is layout#2eplaced.
When you need to use the name in your application (in user interface forms, command-line options, the Command Interpreter Window, or code), do not use the mapped file system name; specify the original name instead.
You can use the nmp command to get the original name for a mapped file system name.
Type the following in a UNIX shell:
nmp mapName LibraryyourAppNameSpacemappedFileSystemName
For example, if you type the following command:
nmp mapName Library CDBA layout#2eplaced
the nmp command returns the following:
layout.placed
You can avoid name mapping issues by always choosing names that use only lowercase letters and digits.
How Name Mapping Works
To properly handle the variety of names in Cadence applications, each software product applies the correct namespace for each identifier (explained below). A port or pin of an instance might be called i1/addr<3:0> on a Virtuoso® schematic editor or Concept schematic. In Verilog, this name becomes i1.addr[3:0] and in VHDL it becomes i1:addr(3 downto 0). The parts of these names are as follows:
| Name Item | Explanation |
|---|---|
Related Topics
Rules for the Name Mapping Algorithm
Recognizing Identifiers and Understanding Case Sensitivity
Identifiers are the atomic strings your application chooses to identify a design object uniquely. Identifiers are present in the names of many kinds of design objects. Names of nets, ports, instances, libraries, cells, views, and properties contain identifiers. To handle these names properly as they are referenced in different steps of a design flow, Cadence applications consistently apply the correct namespace for each identifier and follow the name mapping rules wherever names from different namespaces are compared.
The CDBA view specification /chip/core/ALU contains three identifiers: chip, core, and ALU. When you subsequently use this information in another application, the algorithm modifies these identifiers into legal identifiers in the target namespace. For example, in the VHDL namespace these identifiers look like chip, core, and \ALU\. Mapping goes both ways.

Illegal Characters in Identifiers

If an escaped namespace is not available for the target namespace, or if the identifier contains characters that are illegal, the algorithm uses character encoding. Characters that are illegal in the target namespace are replaced with a pound sign ( # ) followed by the character value encoded as two hexadecimal digits (0–9 or a–f); for example, #2a. The identifier a*b is represented as a#2ab in a namespace that does not support the asterisk (*).
Case Sensitivity
Most Cadence applications are case sensitive. However, some namespaces, such as VHDL, Concept, and LibraryNT, are case-insensitive.
To provide a one-to-one map between, for example, Verilog and VHDL, name mapping must provide normal alphabetic names. The Verilog name StopGap becomes StopGap in VHDL and the Verilog name stopgap becomes stopgap in VHDL, so, because VHDL is case insensitive, two different Verilog names become a single VHDL name.
To handle this situation, the name mapping rules map all case-insensitive letters as lowercase case-sensitive letters and vice-versa. Case-sensitive uppercase letters map to escaped names where these are available (VHDL and Concept). In the LibraryNT namespace, the algorithm precedes them with a percent sign ( % ) so that the Verilog name GORP becomes %G%O%R%P.
You can avoid name mapping issues by always choosing names that use only lowercase letters and digits.
Related Topics
Rules for the Name Mapping Algorithm
Cadence uses algorithmic name mapping to map identifiers between different namespaces.
- Names can be mapped from one namespace to another using the legal identifier and the source and destination namespaces. The algorithm does not need auxiliary information such as design-specific mapping tables. The algorithm is designed to be context free so that no information about the design is necessary to perform the mapping.
- Every identifier that is legal in one namespace maps to a legal identifier in every other.
- Every pair of identifiers that are different names in one namespace map to different names in every other namespace.
- All mappings are reversible. Mapping an identifier from one namespace to another and then back to the original namespace always results in the original identifier, with the possible exception of a loss of case if the original namespace is case insensitive.
Algorithmic name mapping does not solve certain problems, such as mapping names to another representation where the design has been modified.
Examples of differences between namespaces are as follows:
Related Topics
The nmp Command
Cadence provides a command called nmp to help you understand name mapping. You can use this command, located in your_install_dir/tools/bin, to see how a name maps from one namespace to another, to check if a name is legal in a particular namespace, or to get a list of all the namespaces that Cadence applications use.
Use the following syntax for the nmp command:
nmp { getSpaceNames | isLegalNamenameSpaceidentifier| mapNamefromNameSpacetoNameSpaceidentifier| -v[ersion] | -help }
Examples:
% nmp isLegalName Verilog buf_addr0
legal
% nmp mapName Concept VHDL procedure
\procedure\
Warning: When you enter names with backslashes, the shell might delete a backslash so that it is not seen by the nmp program. To avoid this, include all names in single quotes, such as ’name’. For example:
% nmp mapName VHDL Concept \procedure\
**procedure is not a legal VHDL identifier**
% nmp mapName VHDL Concept ’\procedure\’
procedure
Warning: Verilog requires escaped names to end in a space. This space might not be visible in the output. For example:
% nmp mapName VHDL Verilog ’\2+2=4\’
\2+2=4
% nmp mapName Verilog VHDL ’\2+2=4’
\2+2=4\
Warning: In some shells, you need to escape the backslash that is part of an escaped name with another backslash. For example:
sh% nmp mapName Verilog LibraryUnix’\!Lib!’#21Lib#21
csh% nmp mapName Verilog LibraryUnix’\\!Lib!’#21Lib#21
Related Topics
Namespaces for Different Data Types
Rules for the Name Mapping Algorithm
Name Mapping Rules
Cadence applications adhere to the following name mapping rules:
- As much as possible, names are not modified. For example, the identifier abc is left the same in every supported namespace.
-
When an identifier contains a character that is illegal in the namespace to which it is being mapped (even using escaping), the algorithm uses the hex value for the character, such as a character with the hex value of
2d(a minus sign) becomes#2d. - When case-insensitive names are converted to case-sensitive namespaces, the letters are set to lowercase.
- When case-sensitive names are mapped to a case-insensitive namespace, they are left alone if they are lowercase. If they are uppercase, the algorithm creates escaped names if the namespace has a case-sensitive escaped form, such as in VHDL and Concept.
-
If an escaped name that is legal and is a different name when the escape characters are left off is mapped to a namespace where there is not a similar escaped form, then the algorithm prepends the characters
ESC_to the mapped name. For example, in VHDL,\aaa\is a different name fromaaa, so they cannot both map toaaain Verilog. The name mapping rules map a VHDL\aaa\toESC_aaain Verilog. - Length restrictions are not handled by these name mapping rules. The mapping routines can handle names up to 2,000 characters long.
Examples of Name Mapping
| Type | VHDL | Verilog | CDBA | Concept | Library Unix | LibraryNT |
|---|---|---|---|---|---|---|
* Although the special characters look similar to a name with an index expression, this row shows an identifier, with special characters, that is being used as an atomic identifier. The
character indicates a blank space.
Avoid Name Mapping Issues
Use these strategies for name handling:
- Choose names that use only lowercase letters, digits, and underscores.
- Use identifiers that start with an alphabetic character.
- Do not use identifiers that are keywords in any of the namespaces.
- Do not use characters that are not allowed in any of the namespaces.
Related Topics
Rules for the Name Mapping Algorithm
Checking the Names in your cds.lib File
Many Cadence applications include the cdsLibEditor tool.
To check the name (for example, for VHDL) in your cds.lib file,
-
Type the following command in a shell window:
cdsLibEditor -namespace VHDL
The Library Path Editor opens, showing you library names in the VHDL namespace. In VHDL, the system maps the library nameTESTastestbecause the library name stored in thecds.libfile is case sensitive.
Related Topics
Creating or Editing a cds.lib File
Namespaces for Different Data Types
Cadence applications use the following namespaces:
- VHDL
- VHDLAMS
- VHDL87
- Verilog
- VerilogA
- VerilogAMS
- ALT_NMP
- CDBA
- CDBAFlat
- Concept
- General Constraint Format (GCF)
- Genesis
- Library Exchange Format (LEF)
- Design Exchange Format (DEF)
- Library
- LibraryUnix
- LibraryNT
- Standard Delay Format (SDF)
- Standard Parasitic Format (SPF)
- Standard Parasitic Exchange Format (SPEF)
- Spectre
- SpectreHDL
- Spice
Related Topics
VHDL, VHDLAMS, and VHDL87 Namespaces
Verilog, VerilogA, and VerilogAMS Namespaces
VHDL, VHDLAMS, and VHDL87 Namespaces
Each VHDL identifier is either in the normal form, such as ABC, or the escaped form, such as \ABC\. Most identifiers in a VHDL design are VHDL normal identifiers.
The VHDLAMS namespace is used in the AMS environment. VHDLAMS is identical to the VHDL namespace except that it has additional reserved keywords.
The VHDL87 namespace is used by some VHDL simulators such as NC-VHDL. VHDL87 is identical to the VHDL namespace except that some keywords that are reserved in VHDL are allowed as normal identifiers in VHDL87.
VHDL Normal Names
VHDL normal identifiers are not case insensitive. This means that the identifier AbC and the identifier abc are equivalent and refer to the same object. VHDL normal identifiers can contain alphabetical characters, digits, or the underscore character. The first letter must be an alphabetical character. The only symbol that is allowed is the underscore. Spaces are not allowed.
VHDL Escaped Names
VHDL escaped identifiers are case sensitive, unlike normal VHDL names. Escaped identifiers always begin and end with a backslash (\). This means that the identifier \AbC\ and the identifier \aBc\ refer to two different objects.
An identifier in the VHDL normal namespace and the same identifier in the VHDL escaped namespace do not represent the same object. For example, the VHDL identifiers abc and \abc\ refer to two different objects. To embed a backslash in an escaped identifier, use double backslashes.
If the original identifier was in the VHDL escaped form even though it was legal in the VHDL normal form, it needs to be returned to the escaped form, not the normal form. For example, \abc\ maps to CDBA ESC_abc, and it maps back to \abc\ in VHDL.
All alphanumeric characters and symbols, as well as spaces, are allowed as VHDL escaped identifiers.
Reserved VHDL Keywords
The following keywords are reserved and cannot be used as VHDL identifiers.
Reserved VHDLAMS Keywords
Reserved VHDL keywords are also reserved in VHDLAMS. In addition, the following keywords are also reserved in VHDLAMS and cannot be used as VHDLAMS identifiers.
Reserved VHDL87 Keywords
The following keywords are reserved and cannot be used as VHDL87 identifiers.
Related Topics
Namespaces for Different Data Types
Verilog, VerilogA, and VerilogAMS Namespaces
Each Verilog identifier is either in the normal form ABC or the escaped form \ABC![]()
. Most identifiers in a Verilog design are Verilog normal identifiers. If you need to represent identifiers that are illegal as a Verilog normal identifier, use the Verilog escaped namespace. For example, the identifier and in the CDBA namespace maps to the Verilog escaped \and![]()
because and is a Verilog keyword.
The VerilogA analog simulator uses the VerilogA namespace. The namespace is the same as the Verilog namespace, except that it has additional reserved keywords.
The AMS environment uses the VerilogAMS namespace. The VerilogAMS namespace is the same as the Verilog namespace, except that it has additional reserved keywords.
Note: The ![]()
character in Verilog names is used to clearly document a blank space.
Verilog Normal Names
Verilog normal identifiers are case sensitive. This means that the identifier AbC and the identifier abc refer to two different objects. Verilog normal identifiers might contain letters, digits, the underscore character, and the dollar sign ( $ ). The first character cannot be a digit or a dollar sign ( $ ). All letters and digits are allowed as Verilog normal identifiers. The space is not allowed.
Verilog Escaped Names
Verilog escaped identifiers always begin with a backslash (\) and terminate with a space. Verilog escaped identifiers are case sensitive. This means that the identifier \AbC![]()
and the identifier \aBc![]()
refer to two different objects.
Although any identifier can be escaped, only those identifiers that might not be represented in the Verilog normal namespace due to character restrictions or because they are keywords need to be escaped. An identifier in the Verilog normal namespace and the identifier in the Verilog escaped namespace represent the same object. For example, the Verilog identifiers abc and \abc![]()
refer to the same object.
All alphanumeric characters and symbols are allowed in Verilog escaped identifiers. Blanks or nonprinting characters are not allowed.
Reserved Verilog Keywords
The following keywords are reserved in Verilog and cannot be used as Verilog identifiers.
Reserved VerilogA Keywords
The following keywords are reserved in VerilogA and cannot be used as VerilogA identifiers.
Reserved VerilogAMS Keywords
Reserved Verilog keywords are also reserved in VerilogAMS. In addition, the following keywords are also reserved in VerilogAMS and cannot be used as VerilogAMS identifiers.
Related Topics
Namespaces for Different Data Types
SystemVerilog Namespace
SystemVerilog has eight namespaces for identifiers, which includes:
- Definitions namespace: Merges all the non-nested module, macromodule, primitive, program, and interface identifiers defined outside of all other declarations.
- Package namespace: Merges all the package identifiers defined among all compilation units. Once a name is used to define a package within one compilation unit the name shall not be used again to declare another package within any compilation unit.
- Compilation-unit scope namespace: Exists outside the module, macromodule, interface, package, program, and primitive constructs. It merges the definitions of the functions, tasks, parameters, named events, net declarations, variable declarations and user defined types within the compilation-unit scope.
- Text macro namespace: Is global within the compilation unit. Since text macro names are introduced and used with a leading ‘ character, they remain unambiguous with any other namespace. The text macronames are defined in the linear order of appearance in the set of input files that make up the compilation unit.
- Module namespace: Merges the definition of modules, macromodules, interfaces, programs, functions, tasks, named blocks, instance names, parameters, named events, net declarations, variable declarations and user defined types within the enclosing construct.
- Block namespace: Merges the definitions of the named blocks, functions, tasks, parameters, named events, variable type of declaration and user defined types within the enclosing construct.
- Port namespace: Provides a means of structurally defining connections between two objects that are in two different namespaces.
- Attribute namespace: Is enclosed by the (* and *) constructs attached to a language element. An attribute name can be defined and used only in the attribute namespace. Any other type of name cannot be defined in this namespace.
Listing the SystemVerilog supported and non-supported keywords:
Related Topics
Namespaces for Different Data Types
ALT_NMP Namespace
The ALT_NMP namespace is an alternative method for name-space mapping in a mixed VHDL and Verilog environment. It deals with inconsistencies between the VHDL and Verilog namespaces.
The ALT_NMP namespace is set with the following environment variable:
CDS_ALT_NMP = MATCH
In the ALT_NMP namespace, you cannot have two names that vary only in case. For example, do not name a library MyLib when you already have a library mylib.
The ALT_NMP namespace has the following name mapping rules:
-
When case-sensitive and case-insensitive namespaces interact, the
case-sensitive namespace is treated as case-insensitive. However, escaped names from the case-insensitive namespace are not changed. The mapping of escaped names in this case is irreversible. For example,
\AbC\in the VHDL namespace is irreversibly mapped toAbCin the Verilog namespace. - When names in case-insensitive namespaces are mapped to the LibraryUnix namespace, they are treated as lower case. When names in case-sensitive namespaces are mapped to the LibraryUnix namespace, they are not changed.
You might face case-sensitive issues while compiling the VHDL-AMS entities, to resolve these issues, see
Related Topics
Namespaces for Different Data Types
CDBA Namespace
CDBA normal identifiers are case-sensitive. This means that the identifier AbC and the identifier abc refer to two different objects.
All alphanumeric characters and symbols are allowed in CDBA normal identifiers except the comma ( , ), backslash ( \ ), forward slash ( / ), and the opening ( < ) and closing angle brackets ( > ). Spaces are not allowed. Opening and closing parentheses are allowed with an identifier only if they enclose digits.
CDBAFlat Namespace
The CDBAFlat namespace is used by applications. CDBAFlat is identical to the CDBA namespace except for the following:
-
The pipe character (
|) is used as the hierarchy delimiter character instead of the forward slash character (/) -
Bus bit characters are enclosed in parentheses (
()) instead of angle brackets (< >)
Related Topics
Namespaces for Different Data Types
Concept Namespace
The Concept namespace has many similarities to the VHDL namespace. It has both a normal and an escaped form. The normal form is case insensitive; the escaped form is used only to provide case sensitivity. The escaped form starts and ends with a backslash ( \ ), and double backslashes ( \\ ) can be used to include a backslash in the identifier. Escaped identifiers and normal identifiers that are otherwise identical denote different objects.
The normal form also allows quoting. You can use either a quotation mark ( " ) or an apostrophe ( ' ), and you can start the quoting anywhere in the identifier. You must match an opening quotation mark or apostrophe with a closing one of the same type (" or '). You can use a quotation mark to include an apostrophe, and use an apostrophe as part of the identifier. Hence "ab'cd" and 'ab''cd' are equivalent identifiers that contain an apostrophe.
The Concept namespace has no keywords. Spaces are allowed except at the beginning and ends of a normal identifier.
All printable ASCII characters might be used in a normal identifier except for the apostrophe ( ' ), the quotation mark ( " ), the angle bracket ( < ) and the colon ( : ). These four characters can be used in quoted names where the quotation mark is different from the included quotation mark or else where the included apostrophe is doubled. Spaces can also be used if they are not the first or last character. If quoted, this means the first or last character other than the quotation mark.
Escaped identifiers can contain any of the above characters (all printable graphic ASCII characters). Only the backslash ( \ ) needs to be doubled to be included. Blank spaces are legal anywhere in an escaped name.
Related Topics
Namespaces for Different Data Types
GCF Namespace
The General Constraint Format (GCF) namespace is case sensitive. Names cannot be longer than 1024 characters.
GCF Normal Names
GCF normal names can contain only alphanumeric characters (a-z, A-Z, 0-9) and the underscore character (_). In addition, the following special characters are allowed if they are specified as delimiters in the header section of the GCF file:
-
The hierarchy divider character
If the hierarchy divider character is not defined in the header section of the GCF file, the default hierarchy divider is the period (.). -
The bus bit index characters—usually the left and right square brackets, parentheses, or angle brackets (
[]()<>). The index characters can enclose one positive integer to represent a single object, a pair of positive integers separated by a colon to represent a range, or an asterisk to represent all objects in the array. For example:pipe[4],pipe[1:3], orpipe[*]
If the bus bit index characters are not specified in the header section of the GCF file, the default index characters are the left and right angle brackets (<>).
Normal names cannot include any other characters unless they are escaped. White space characters, such as tabs, spaces, or newlines are not allowed.
GCF Escaped Names
You can use characters that are not allowed in GCF normal names by escaping them. A character is escaped when it is preceded by a backslash character (\).
The following characters can be used in GCF names if they are escaped:
! “ # $ % & ‘ ( ) * + , - . / : ; < = > ? @ [ \ ] ^ ‘ { | } ~
The following examples show how escaped characters can be used in GCF names:
AMUX\+BMUX
pipe4\-done\&enb[3]
Related Topics
Namespaces for Different Data Types
Genesis Namespace
The Genesis namespace is case sensitive. This means that the identifier AbC and the identifier abc refer to two different objects.
Genesis Normal Names
Genesis normal names can contain any printable ASCII characters—which include alphanumeric characters (a-z, A-Z, 0-9), the underscore character (_), and control characters— except the following special characters:
| Hierarchy delimiter character
Genesis Escaped Names
You can use characters that are not allowed in Genesis normal names by escaping them. A character is escaped when it is preceded by a backslash character (\).
Related Topics
Namespaces for Different Data Types
LEF and DEF Namespaces
The Library Exchange Format (LEF) and Design Exchange Format (DEF) namespaces are case sensitive.
LEF and DEF Normal Names
LEF and DEF names can contain any ASCII characters except the semicolon (;), pound sign (#), newline (\n), or space characters.
In addition, the following special characters can be used in LEF and DEF names:
-
Characters that denote regular expressions:
*Matches any sequence of characters
–Matches any sequence of characters up to the next period (.)
%Matches a single character -
Bus bit index characters, as defined in the
BUSBITCHARSstatement
The default index characters are the left and right square brackets ([]). -
Hierarchy divider character, as defined in the
DIVIDERCHARstatement
The default hierarchy divider character is the forward slash (/).
LEF and DEF Escaped Names
You can use characters that are not allowed in LEF and DEF normal names by escaping them. A character is escaped when it is preceded by a backslash character (\).
Reserved LEF Keywords
The following keywords are reserved in the LEF namespace and cannot be used as LEF identifiers.
Reserved DEF Keywords
The following keywords are reserved in the DEF namespace and cannot be used as DEF identifiers.
Related Topics
Namespaces for Different Data Types
Library Namespace
The name mapping software supports a Library namespace that maps to either the LibraryUnix or the LibraryNT namespace, depending on which operating system the software is running. For programs running on UNIX, it is the same as the LibraryUnix namespace. For programs running on Windows, it is the same as the LibraryNT namespace.
LibraryUnix Namespace
LibraryUnix is used for library names in cds.lib files. It is also used for cell and view directory names in libraries that are stored on UNIX systems. LibraryUnix is designed to follow the rules for creating directory names on UNIX systems, except that it is more restrictive. Many characters, such as the period ( . ) and the comma ( , ), which are legal in the file system, are not allowed in LibraryUnix.
LibraryUnix is a case-sensitive namespace; for example, the filenames abc and AbC refer to different directories.
All alphanumeric characters plus the underscore ( _ ), at sign ( @ ), and pound sign ( # ) are allowed in LibraryUnix identifiers.
LibraryNT Namespace
The LibraryNT namespace is used for cell and view subdirectories in Windows libraries. LibraryNT is a case-insensitive, but case-preserving, namespace. This means the filenames abc and AbC are the same file, and only one of them can exist in any given directory. Digits, the underscore character ( _ ), the at sign ( @ ), the percent sign ( % ), and the pound sign ( # ) are allowed. Several names are reserved by Windows. These might be thought of as keywords that are illegal names. The keywords are aux, con, com0 through com9, lpt0 through lpt9, nul, and prn.
LibraryNT uses the pound sign ( # ) followed by two hex digits to map characters that are otherwise illegal.
LibraryNT uses the percent sign ( % ) to map case-sensitive uppercase letters. An X in Verilog becomes %X in LibraryNT.
LibraryNT also uses the percent sign ( % ) to map names that would otherwise look like reserved names. For example, a cell named lpt4 in a UNIX library is called %%lpt4 in a Windows library.
Related Topics
Namespaces for Different Data Types
Print Namespace
The Print namespace is case sensitive. This means that the identifier AbC and the identifier abc refer to two different objects.
Names in the Print namespace can contain any printable ASCII characters, which include alphanumeric characters (a-z, A-Z, 0-9) and control characters.
There is no escaping mechanism in the Print namespace.
Related Topics
Namespaces for Different Data Types
SDF Namespace
The Standard Delay Format (SDF) namespace is case sensitive. This means that the identifier AbC and the identifier abc refer to two different objects.
SDF names cannot be longer than 1024 characters.
SDF Normal Names
SDF normal names can contain only alphanumeric characters (a-z, A-Z, 0-9) and the underscore character (_). In addition, the following special characters are allowed:
-
The hierarchy divider character
If the hierarchy divider character is not specified in the header section of the SDF file, the default hierarchy divider is the forward slash (/). -
Bus bit index characters—square brackets that enclose a positive integer to represent a single object or a pair of positive integers separated by a colon to represent a range. For example:
pipe4[3]orpipe4[0:2]. The default index characters are the left and right square brackets ([]).
SDF normal names cannot include any other characters unless they are escaped. White space characters, such as tabs, spaces, or newlines, are not allowed.
SDF Escaped Names
You can use characters that are not allowed in SDF normal names by escaping them. A character is escaped when it is preceded by a backslash character (\).
The following characters can be used in SDF names if they are escaped:
! “ # $ % & ‘ ( ) * + , - . / : ; < = > ? @ [ \ ] ^ ‘ { | } ~
The following examples show how escaped characters can be used in SDF names:
AMUX\+BMUX
pipe4\-done\&enb[3]
Related Topics
Namespaces for Different Data Types
SPF Namespace
The Standard Parasitic Format (SPF) namespace is case sensitive. This means that the identifier AbC and the identifier abc refer to two different objects.
SPF Normal Names
SPF normal names can contain any ASCII character except white space characters such as space or tab. The following special characters are allowed:
-
The hierarchy divider character, as defined in the header section of the SPF file. If the hierarchy divider character is not defined, the default hierarchy divider is the forward slash (
/). -
Bus bit index characters, as defined in the header section of the SPF file. The index characters can enclose only one positive integer; a range is not allowed. If the bus bit index characters are not defined in the header section of the SPF file, the default index characters are the left and right square brackets (
[]).
SPF Escaped Names
You can use characters that are not allowed in SDF normal names by escaping them. A character is escaped when it is preceded by a backslash character (\).
Related Topics
Namespaces for Different Data Types
SPEF Namespace
The Standard Parasitic Exchange Format (SPEF) namespace is case sensitive. This means that the identifier AbC and the identifier abc refer to two different objects.
SPEF Normal Names
SPEF normal names can contain only alphanumeric characters (a-z, A-Z, 0-9) and the underscore character (_). In addition, the hierarchy divider character and the bus bit index characters are allowed. The default hierarchy divider character is the forward slash (/); the default index characters are the left and right square brackets ([]).
White space characters, such as space or tab, and control characters, such as newline, are not allowed.
SPEF Escaped Names
You can use characters that are not allowed in SPEF normal names by escaping them. A character is escaped when it is preceded by a backslash character (\).
The following characters can be used in SDF names if they are escaped:
! “ # $ % & ‘ ( ) * + , - . / : ; < = > ? @ [ \ ] ^ ‘ { | } ~
Related Topics
Namespaces for Different Data Types
Spectre Namespace
The Spectre namespace is case sensitive. This means that the identifier AbC and the identifier abc refer to two different objects.
Spectre Normal Names
Spectre normal identifiers must be in one of the following forms:
-
The identifier must begin with an alphabetical character (
a–z,A–Z) or an underscore (_) and can only be followed by zero or more of the following characters: alphanumeric characters (a–z,A-Z,0–9), the underscore character (_), and the exclamation mark (!).
For example:abc8 Abc! _ABC
-
The identifier must begin with one or more digits (
0–9), followed by one or more alphabetical or underscore characters (a–z,A–Z,_), followed by a digit, and end with zero or more alphanumeric, underscore, or exclamation characters (a–z,A–Z,0–9,_,!).
For example:1a2abc 11a45 1asdfasdf4 6adfsa324!
-
The identifier must consist of one or more digits (0-9).
For example:1 135
Spaces are not allowed in Spectre identifiers.
Spectre Escaped Names
Characters are escaped in the Spectre namespace if they are preceded by a backslash (\). For example, the escaped form of a>= is a\>\=
The following characters are allowed in Spectre identifiers if they are escaped:
- ! “ # $ % & ’ () * + , . / \ 0-9 : ; < > = ? @ A-Z a-z [ ] ^ _ ‘ { } | ~
The TAB character is also allowed if it is escaped.
The following examples show how escaped characters can be used in Spectre identifiers:
ab\@c
\@aBc
1\$2abc8
1\23
1\\2!
Reserved Spectre Keywords
The following keywords are reserved in the Spectre namespace and cannot be used as Spectre identifiers.
Related Topics
Namespaces for Different Data Types
SpectreHDL Namespace
The SpectreHDL namespace is case sensitive. This means that the identifier AbC and the identifier abc refer to two different objects.
SpectreHDL Normal Names
SpectreHDL normal identifiers can contain only alphabetical characters (a–z, A–Z), digits (0–9), and underscores (_). The identifiers must begin with an alphabetical character or an underscore.
SpectreHDL Escaped Names
Escaped identifiers in the SpectreHDL namespace must begin with a backslash character (\) and end with a space (space, tab, or newline character). Escaped names can contain any printable ASCII character.
Reserved SpectreHDL Keywords
The following keywords are reserved in the SpectreHDL namespace and cannot be used as SpectreHDL identifiers.
Related Topics
Namespaces for Different Data Types
Spice Namespace
The Spice namespace is case insensitive. This means that the identifier AbC and the identifier abc refer to the same object.
Spice Normal Names
Spice identifiers must begin with an alphabetical character. Identifiers can contain alphabetical characters (a–z, A–Z), digits (0–9), and the following characters: # % * - < > [ ] _ $ ! + /
Spice Escaped Names
Any character that is preceded by a backslash (\) is escaped in the Spice namespace.
Reserved Spice Keywords
The following keywords are reserved in the Spice namespace and cannot be used as Spice identifiers.
Related Topics
Namespaces for Different Data Types
Return to top