2
Design Translation Using XStream Translator
This chapter contains the following sections:
- Overview
- Running the XStream Translator
- Design Translation During XStream In
- Design Translation During XStream Out
- Fast Stream Out
- Layer Mapping in XStream
- Automatic Layer Mapping
- Using Map Files During Translation
- Preserving Connectivity Information
- Sample Log File
- Sample Summary File
- Sample Template File
- Performance Guidelines for XStream
- Chip Finishing Flow
Overview
The Stream format stores mask generation data for designing integrated circuits. It represents a layout of different design layers the way they finally appear on a chip. The Stream format is widely used in the industry for:
- Archiving design data in interchangeable format.
- Exchanging intellectual property with other vendors.
- Exchanging data between various tools to complete the design cycle.
- Transferring data in a compact form between various design groups.
To translate a design in the Stream format to the OpenAccess database and conversely, you can use the XStream translator. XStream consists of two modules, XStream In and XStream Out. XStream In translates designs in the Stream format to the OpenAccess database. XStream Out translates designs from the OpenAccess database to the Stream format.
This chapter provides information about various methods of running the XStream translator. In this chapter, you read about various XStream In options, XStream Out options, and mapping files. In addition, you will also view the sample log file, sample summary file, and the sample template file. In this chapter, you will also read about the methods of preserving OpenAccess objects during a cycle of XStream Out and XStream In.
Running the XStream Translator
You can translate design files by running the XStream translator either from the Textual User Interface (TUI) or from the Graphical User Interface (GUI). In this section, you will learn about the methods of running the XStream translator by using TUI and GUI. Additionally, you will also read about the interactive mode, the method of invoking help, and setting the environment variables.
Running XStream In and XStream Out Using TUI
You can run XStream In and XStream Out in the batch mode by using the strmin and strmout commands. Use any of the two methods described below to run these commands.
-
Specify the options as command-line arguments
$strmin -
option1value1-option2value2$strmout -
where,option1value1-option2value2
Example 2-1 Running XStream In by specifying the library and strmFile options as command-line arguments.
$strmin -librarylib1-strmFilein.gds
-
Write the options and their values in a text file and then specify the text file as an argument to
strminandstrmout.$strmin -
templateFiletextfileName$strmout -
where,templateFiletextfileName
To view the template file, see Sample Template File.
Example 2-2
Running XStream In by specifying the strmTechGen and strmFile options as command-line arguments.
$strmin -strmTechGen <techFileName> -strmFile <StreamFileName>
-strmTechGen and -library options are specified, then the -library option will take precedence and -strmTechGen option will be ignored.Output
After you specify the -strmTechGen option, the following files are generated:
-
ASCII technology file is generated with the
layerDefinitions()section. ThelayerDefinitions()section have four sub-sections:<techLayers>,<techPurposes>,<techhLayerPurposePriorities>,and <techDisplays>. -
The
<techFileName>.layermapfile is generated with oaLayer and oaPurpose to Stream layer and datatype mapping. This file contains the layer map entries in the form of quadruplets:<oaLayer oaPurpose streamLayer dataType>.
Example 2-3 Running XStream Out by writing options and their values in the text file template.txt.
$strmout -templateFiletemplate.txt
The contents of text file appear in the format shown below:
option1 value1
option2 value2
For boolean options, do not mention any value. When you specify a boolean option, its value is accepted as true. Otherwise, its value is false.
You can combine the above two methods by specifying some options on the command line and other options in the template file. This method is a combination of the above two methods.
If you specify the same option in the template file and the command line, the option specified in the command line takes precedence.
$strmin -option1value1-option2value2-templateFiletextfileName
$strmout -option1value1-option2value2-templateFile textfileName
Example 2-4
Running XStream In by specifying library, strmFile, and templateFile as command-line arguments.
$strmin -librarylib1-strmFilein.gds-templateFiletemplate.txt
In the above example, the topCell and libName options are taken from the command line and all other options are taken from template.txt.
Using Help
If you want help using XStream In and XStream Out, you can use the -help or -h options. These commands provide help on all the options that you can specify with the strmin and strmout commands. Help is displayed even when you type strmin or strmout without specifying options.
Example 2-5 Using help during XStream In and XStream Out
strmin -h
strmout -h
Running XStream In and XStream Out from the GUI
You can run XStream In by choosing the File–Import–Stream command from the CIW. Similarly, you can run XStream Out by choosing the File–Export–Stream command from the CIW.
Preserving GUI History in XStream
The -guihistory command lets you use the last preserved GUI history at command line. These values can be overwritten at command line, if needed.
GUI history is saved only when the SKILL environment variable is set to t. By default, the environment variable is set to nil, which means that the command is disabled.
GUI history values are used across Virtuoso sessions. Therefore, when xstEnableGUIHistory is enabled, the XStream form also reads these values.
These values are also given the highest precedence. Therefore, if both pre-seeding and GUI history values are available, the XStream form will have the values from the GUI history.
Design Translation During XStream In
XStream In Use Model
XStream In converts design data in the Stream format to designs in the OpenAccess database. The inputs to the XStream In process are XStream In options, optional mapping files, user-defined SKILL files, and technology file information. After the design has been streamed in, the log file, the summary file, and the OpenAccess library are generated.

The following table provides generic information about the files used during XStream In.
For details on the map files, see Design Translation During XStream In.
Multithreading in XStream In
XStream In uses multithreading to improve performance during translation. XStream evaluates the machine configuration and then applies the best value to be used for multithreading based on available CPU cores. The maximum number of threads are capped at 2.
Multithreading works differently when:
- Stream In to Virtual Memory Mode is Enabled
- Stream In to Virtual Memory Mode is Disabled or XStream is Run from Command Line
Stream In to Virtual Memory Mode is Enabled
When
You can also manually set number of cores to be used for multithreading with the environment variable. For example, the following sets number of cores to be used for multithreading in VM mode to 4.
setenv XST_IN_VM_NT 4
If you set the value as 0 or 1, it implies no cores will be used and multithreading will not take place.
Stream In to Virtual Memory Mode is Disabled or XStream is Run from Command Line
When
XStream In Form
You can import the Stream file from the GUI by choosing the File–Import–Stream option from the CIW. This method will enable you to display the XStream In form.
This section describes the various XStream In options on the XStream In form. For a list of equivalent template file options, refer to the XStream In Options Names in GUI and Template File section.

The main XStream In form comprises mandatory options that are essential to run the translation. The form also comprises a few other most commonly used options, such as Layer Map and Object Map.
The following sections on the main form can be expanded to view additional options:
Discussed below are the XStream In options available on the main form.
Stream File
Use the Stream File field to specify the name of the Stream file that is to be translated to OpenAccess. Alternatively, click the File Browser button to select the Stream file. This field supports file names that are relative to the run directory or are absolute.
You can either specify the absolute or relative path. If you specify the absolute path, the .gds file will be searched at the specified location. However, in case of relative path, the .gds file will be searched in the run directory. By default, the run directory is the current directory.
Library
Use the Library field to specify the target library where data is to be translated. The library name should be a logical name and follow the naming conventions supported by OpenAccess. You can also select an existing library as the target library from the drop-down list.
When the library does not exist, a new library is created in the run directory. If the target library already exists, data is translated to the library.
Top Cell
Use the Top Cell field to specify the name of the cell at the top of the hierarchy that you want to translate to OpenAccess. The Stream format supports hierarchical designs. So, the Top Cell option determines the node from where the design is to be translated.
Example 2-6 Translating cells by using the Top Cell option
Consider the hierarchical structure below where A, B, C, D, E, F, and G are cell names. You want to translate these cells using the Top Level Cell field.

When C is specified as the top cell in the Top Cell field, cells C, D, E, and F are translated.
View
Use the View field to specify view names that are created in the target library during translation. If you specify a cellview name in the cell name map file or SKILL file, then the view name specified in these files takes precedence over the name specified in the XStream In form.
Example 2-7 Translating cells C, D, E, and F into the layout1 view

In the above figure, if C is specified as the top cell and layout1 as the view name, then the structures C, D, E, and F are translated with layout1 as the view name.
Template File
Use the Template File field to specify an existing template file. You can also click the File Browser button to select the template file. When this file is loaded, the XStream In form is updated with the option settings specified in it. If the correct template file is loaded, then all the GUI fields in the form are reset.
Click the Save button to save the current option settings to the template file.
Command-line option: templateFile
Import to Virtual Memory
Select the Import to Virtual Memory check box to read a GDSII/Stream file and create an OpenAccess design in the virtual memory. You can also specify the number of CPU cores that should be used for multithreading during translation. For more information, see Multithreading in XStream In.
Additionally, Disable Info Message IDs and Disable Warning Message IDs fields are populated with *, when the Import to Virtual Memory check box is selected, to indicate that all the information (INFO) and warning (WARNING) messages are disabled for CIW and the Stream In log file. If you manually change the value of these fields, or if you remove * from them, then if Import to Virtual Memory check box is selected, information and warning messages, if there are any, are not displayed in the CIW. They are logged in the log file.
For more information, refer to the Chip Finishing Flow section.
Technology
Expand Technology to specify a technology library, file, database that you would like to use during translation.

Attach Tech Library
Use the Attach Tech Library drop-down list box to attach an existing technology file to the target library. The Attach Tech Library drop-down list box lists all the technology libraries specified in the cds.lib file.
If you select this option, XStream In attaches the technology file from the library specified in the Attach Tech Library field instead of creating a new one. This option takes precedence over the Load ASCII Tech File option.
If the target library already contains a technology file, then the Attach Tech Library option is ignored. An attached technology file is treated as read-only by XStream In and its contents remain unaltered during XStream In.
It is essential to have a layer map file while using the Attach Tech Library option.
Default value: attachTechFileofLib
Load ASCII Tech File
Use the Load ASCII Tech File field to create or merge a technology file in the target library. Alternatively, click the File Browser button to select the technology file. The technology file is created when the ASCII technology file is compiled during XStream In. If the technology file already exists in the target library, then the technology file that has been created by compiling the ASCII technology file, is merged with the existing one.
The ASCII technology file is searched with respect to the run directory if the complete path of the file is not specified.
When a target library is attached to another technology library, XStream In ignores this option and generates a warning message. If the target library is not attached to any other technology library, a technology file is created or merged with the technology file created from the compilation of the ASCII technology file.
If the absolute path to the current directory exists, then after you click the File Browser button, the File Browser dialog box will be open the current directory. Otherwise, the File Browser dialog box will be open in the run directory.
Command-line option: loadTechFile
Tech Refs
Use the Tech Refs field to specify the technology databases that will be referenced by the technology database created by XStream In. You can specify multiple technology databases in this field. If there are conflicts in the technology graph, that is, technology database created by XStream In and the referenced technology databases that you specify in this field have conflicts, the tool stops and generates an error to specify that XStreamIn has detected a conflict in the technology database graph.
Generate Technology Information
Expand Generate Technology Information and select the Enable check box to specify the target technology file where data needs to be translated in the Stream Technology File field.

After you enable the Generate Technology Information option, all other fields except the Stream Technology File field are disabled.
Layer Map
Use the Layer Map field to specify an existing layer map file. You can also click the File Browser button to select the layer map file. Next, click the Editor button to view the specified file in editor.
Alternatively, to create new layer mapping records or load a new layer map file, leave the Layer Map field blank, and click the Editor button to display the XStream In Layer Map File Editor Form.
Expand Layer Map to view additional options.

Translate Unmapped LPPs
Use the Translate Unmapped LPP option to map unmapped layers. This option works only when a different user-defined layer mapping, layer map file or SKILL function, has been specified. When you enable Translate Unmapped LPP, first, the user-specified layer mapping is applied, and then, automatic layer mapping is performed to translate unmapped layers. For more information about translating unmapped layers in Stream In, see Automatic Translation of Unmapped Layers in XStream In.
Command-line option: translateUnmappedLPP
Use Automatic Layer Mapping
Use the Use Automatic Layer Mapping option to map layers automatically. This option works only if no layer mapping has been specified. Otherwise, this option is ignored and layers are mapped with the specified mapping.
For more information about automatic layer mapping, see Automatic Layer Mapping in XStream In.
Object Map
Object mapping file maps the object type and sub type to the Stream layer-datatype pair. The object mapping file determines which OpenAccess object should be translated as a shape on which Stream layer-datatype.

Use the Object Map field to specify an existing object map file. You can also click the File Browser button to select the object map file. Next, click the Editor button to view the specified file in editor.
Command-line option: objectMap
Alternatively, to create new object mapping records or load a new object map file, leave the Object Map field blank, click the Editor button to display the XStream In Object Map File Editor Form.
Expand Object Map to view additional options.

Ignore Object Properties
Use the Ignore Object Properties option to ignore property information stored at property attribute 126.
Property information (on PROPATTR 126) is written by using an object-map during XStreamOut to translate objects as shapes in GDSII. XStreamOut, by default would write special properties to these shapes which are used by XStreamIn to automatically recreate objects from these shapes. Ignoring these properties means that these objects, which are shapes with special properties in GDSII, will now be translated as shapes in OpenAccess.
Command-line option: ignoreObjectProp
Log File
Expand Log File to specify log and summary files to be used during XStream In translation.

Use the File Name field to specify name of a log file that will be used to record the translation process steps and the messages generated by XStream. After the translation is completed, the log file is displayed in a separate read-only text window. Alternatively, click the Browse button to select the log file.
The path specified for the log file should be a valid file path. It can be absolute or relative to the run directory. For more information, see Sample Log File.
Default file name: strmOut.log
Summary File
Use the Summary File field to specify a file that will provide a summary of the translated design. If you do not specify a file name in the Summary File option before translation, the summary file will not be generated.
The path specified for the summary file can be absolute or relative to the run directory. To view the sample summary file, see Sample Summary File.
Command-line option: summaryFile
Generate Detailed Log and Summary Files
Use the Generate Detailed Log and Summary Files option to include additional summary information in the XStream In log file and XStream In summary file.
With this option is enabled, following sections with additional information are added to the XStream In summary file:
-
Individual Cell Statistics: Cellview summary added to this section is sorted alphabetically according to library/cell/view.
The bBox column is also added. This column lists the boundary boxes of the translated cells in the following format:
((
Here, lowerLeft and upperRight are the lower-left and upper-right coordinates of the boundary box.lowerLeft.x lowerLeft.y) (upperRight.x upperRight.y))

-
Statistics of Layers: Layer summary added to this section is sorted in the same order in which the layer-purpose pairs are defined in the technology file or the layer palette.

-
Top Cells: This section lists the referenced top cells

-
Missing Cells: This section lists the cells that are referenced but are missing from the input GDS file and the referenced library, if it is specified.

-
Dropped Layers: This section lists the
strmLayer:strmTypepair for which no mapping is found. Shapes on these layer-purpose pairs are not translated.

-
Individual Advanced Object Statistics: This section lists the shapes translated as Place and Route objects during XStream In. It lists the object-type, sub-object type, layer name (for layerBlockage), strmLayer, strmType, and the count of the objects translated.

Coloring Mode
To enable color mapping during XStream In, select the Enable check box for the Coloring Mode option.
Command-line option: enableColoring
-enableColoring option is not considered during translation.Translate
Use the Translate button to translate the Stream file to OpenAccess.
Apply
Use the Apply button to translate the Stream file to OpenAccess. After the translation is completed, the XStream In form does not disappear.
Progress Bar
The Progress bar is displayed, when you click the Translate or Apply button. It moves left and right to indicate that the translation is in progress stops when the translation is completed. You can also click the Stop button to stop the process.
Cancel
Use the Cancel button to exit the XStream In form.
Reset All Fields
Use the Reset All Fields button to set the GUI fields to their default values, which are displayed when the tool in invoked.
More Options
Use the More Options button to display the XStream In More Options Form which features additional options that you can set before starting XStream In translation.
Help
Use the Help button to invoke online help.
XStream In More Options Form
This section discusses various options available on the XStream In More Options form.

Search Field
Use the Search field to quickly look for options you want to access or the options related to the value you type in this field. For example, if you type cell, only the options related to cell will be visible in the options tree. The related options will also be highlighted in the options pane.

Options Tree
The Options tree enables you to access the following option panes where you can perform additional settings.
- Mapping Options
- Geometry Options
- Messages Options
- Report Options
- General: Storage Options
- General: Others Options
Options Panes
Options panes comprise different options related to the option currently selected in the tree.
OK
Click OK to save your current settings for the More Options form and exit.
Apply
Click Apply to save your settings on the More Options form. When you click Apply, the form is not closed.
Defaults
Click Defaults to set default values for all options in the More Options form.
Cancel
Click Cancel to close the More Options form without saving any changes.
This section covers the option panes that you can access from the Options tree in the XStream In More Options form.
Mapping Options
Use the Mapping options pane to specify additional mapping files to be used during XStream In translation.

This section describes options on the Mapping options pane.
Cell Map File Name
Use the Cell Map File Name field to specify an existing cell map file. You can also click the File Browser button to select the cell map file. Next, click the Editor button to view the specified file in editor.
To create new cell mapping records or load a new cell map file, leave the Cell Map File field blank, and click the Editor button to display the XStream In Cell Map File Editor Form.
Wildcard in Cell Map
Use the Wildcard in Cell Map option to use wild cards while streaming in. The option supports the characters '*' and '?' as wild cards and ‘\’ as the escape character. If you don't use this option, wild card will be considered as a special character during translation.
Consider the following example:
Here, during XStream In translation, the created cellview will be INV_NAND. if the structure in the GDS is INV*_NAND_ver1. In this example, in INV\*_*_ver1, the first ‘*’ is treated as special character and the second ‘*’ as the wild card.
If you don't use Wildcard in Cell Map, the default behavior will be same as a normal cell map.
Consider that the following cell map file is used with the Wildcard in Cell map option to add prefix and suffix to all STRUCT names, except the topcell, in the GDS during XStream In translation:
#####################################################
#lib cell view struct
#
XST_TARGET_LIB topCell layout topCell
XST_TARGET_LIB pre_*_suf layout *
#####################################################
The cell map will add the prefix pre_ and the suffix _suf to all STRUCT names except the topcell.
Command-line option: wildCardInCellMap
Cell Case Sensitivity
Use the Cell Case Sensitivity drop-down-list to specify whether XStream In changes the case of letters in cell names. lower
The lower option translates all cell names to lowercase. For example, the name Obj1 becomes obj1.
The upper option translates all cell names to uppercase. For example, the name Obj1 becomes OBJ1.
The preserve option translates cell names without changing case. For example, the name Obj1 remains Obj1.
XStream In ignores this option when cell mapping is done. You can map cell names in a cell name map table or in a SKILL file. For more information, see Cell Name Map File.
Ref Lib File Name
Use the Ref Lib File Name field to specify an existing reference library name. You can also click the File Browser button to select the reference library. Next, click the Editor button to view the specified file in editor.
Command-line option: refLibList
To select a library name from the list of available libraries to be used as a reference libraries, leave the Reference Library File Name field blank, and click the Editor button to display the XStream In Reference Library File Editor Form.
Use All Libraries as Ref Lib
Use the Use All Libraries as Ref Lib check box to select all available libraries as reference libraries.
If you invoke Stream In from the command line, you can write the list of reference libraries in a text file and provide this file as the value of the refLibList option. For example, consider a reference library file refLib.list with the following content:
In this case, the -refLibList refLib.list command will consider all reference libraries listed in the refLib.list file.
If you want to consider all the libraries defined in the cds.lib file as reference libraries, use the XST_CDS_LIB keyword (-refLibList XST_CDS_LIB). You can provide this keyword as a value of the reflibList option from the command line or by writing it in a text file containing the list of libraries.
Prop Map File Name
Use the Prop Map File Name field to specify an existing properties mapping file. You can also click the File Browser button to select the properties mapping file. Next, click the Editor button to view the specified file in editor.
To create new properties mapping records or load a new properties mapping file, leave the Property Map File Name field blank, and click the Editor button to display the XStream In Property Map File Editor Form.
Font Map File Name
Use the Font Map File Name field to specify an existing font mapping file. You can also click the File Browser button to select the font mapping file. Next, click the Editor button to view the specified file in editor.
To create new font mapping records or load a new properties mapping file, leave the Font Map File Name blank, and click the Editor button to display the XStream In Font Map File Editor Form
Replace [] with <>
The Replace [] with <> option replaces the character [ with < and ] with > in text records during the translation from the Stream file to a DFII library.
Command-line option: replaceBusBitChar
Geometry Options
This section describes options on the Geometry options pane.

Ignore Box Records
Use the Ignore Box Records option if you do not want to translate Stream file box records to rectangles in the OpenAccess database. If you select this option, then all the box records are dropped.
Command-line option: ignoreBoxes
Convert Arrays to Scalar Instances
The Convert Arrays to Scalar Instances option translates Stream arrays to ROWS * COLS scalar instances in OpenAccess. If this option is not selected, each element in AREF translates to a single array in OpenAccess.
Command-line option: arrayInstToScalar
Convert Paths to Pathsegs
Use the Convert Paths to PathSegs field to convert the 2-point orthogonal paths in the input Stream file to pathSeg objects in the OpenAccess database.
All non-orthogonal paths (PATH) in the input Stream file are imported as OpenAccess path objects even when Convert paths to pathsegs option is used during XStream In.
Command-line option: convertPathToPathSeg
Translate Nodes
Use the Translate Nodes option to translate nodes as dots in OpenAccess. If you select this option, nodes are translated as dots, otherwise they are ignored.
Command-line option: translateNode
Skip Undefined LPPs
The Skip Undefined LPPs option ignores the layer-purpose pairs that are not existing in the technology file. This option is selected only when you XStream In a design on an existing target library. When a user specifies the Skip Undefined LPPs option, a warning message will be displayed mentioning that the Stream layer-datatype pair is mapped to the layer-purpose, which does not exist in the technology library.
The Skip Undefined LPPs option is ignored when a new target library is created. This is because there is no pre-existing technology information. If the technology file of the target library is write-protected, then this option is automatically selected during XStream In.
The Skip Undefined LPPs option is considered when you XStream In to a new library using an ASCII technology file. In this case, any undefined layer-purpose pairs will not be created in the OpenAccess technology for the target library.
Command-line option: skipUndefinedLPP
Keep Stream Cells
The Keep Stream Cells option provides a way of referring to the information pertaining to a particular cell in the Stream file first instead of a reference library.
If the Keep Stream Cells option is not used, then the Stream file will not be searched while creating instances. If Write mode is set as
Command-line option: keepStreamCells
Ignore Zero Width Paths
Use the Ignore Zero Width Paths option to ignore the translation of zero-width path. If you select this option, zero-width paths are ignored, otherwise they are translated as lines.
Command-line option: ignoreZeroWidthPath
Snap to Grid
The Snap to Grid option adjusts the coordinates of geometric objects to coincide with the grid resolution. However, this option can shift data from the original Stream grid, resulting in a loss of precision.
Command-line option: snapToGrid
Scale Text Height
Use the Scale Text Height field to control the height of text labels. Default value is 1. For example, you can specify the text height as 2.0 or 0.5 to double or reduce the label height to half.
Command-line option: scaleTextHeight
DB Units Per User Units
Use the DB Units Per User Units field to specify the database units per user units, which should be used during translation. This option allows you to scale the target design library as per the new DBUPerUU.
DBUPerUU value specified at the option.Valid values: Greater than or equal to 1
Design Scale Factor
Use the Design Scale Factor option to scale an imported design by the factor set here. This option will accept any positive floating value. The scale option will not have any impact on existing options or behavior because scaling is done internally. It will work in addition to the settings in the DBUPerUU option.
For example, consider DBUPerUU is 1000 and GDS polygon size is 3000 db units (user units). If you run the command strmin -scale 4 -dbuPerUU 2000, the resultant polygon size will be calculated as below:
3000 x (2000/1000) x 4 = 24000 db units (user units)
Messages Options
This section describes options on the Messages options pane.

Disable Info Message IDs
Use the Disable Info Message IDs field to specify list of information message IDs that you do not want to print. You can also specify message IDs of dependent tools in this field.
The information message IDs should be specified in numeric format and they should not be prefixed by any other character. For example, 4374. The list of information message IDs must be separated by a comma or white space.
Alternatively, click the Message Browser button to display the
Disable Warning Message IDs
Use the Disable Warning Message IDs field to specify list of warning message IDs that you do not want to print. You can also specify message IDs of dependent tools in this field.
The warning message IDs should be specified in numeric format and they should not be prefixed by any other character. For example, 3075. The list of warning message IDs should be separated by a comma or white space.
Alternatively, click the Message Browser button to display the
Convert Info Message IDs to Warnings
Use the Convert Info Message IDs to Warnings field to specify list of information message IDs that you want to convert to warning messages. You can also specify message IDs of dependent tools in this field.
The information message IDs should be specified in numeric format and they should not be prefixed by any other character. For example, 4374. The list of information message IDs must be separated by a comma or white space.
Command-line option: infoToWarn
Alternatively, click the Message Browser button to display the
Convert Warning Message IDs to Errors
Use the Convert Warning Message IDs to Errors field to specify the IDs of warning messages that you want to convert to error messages. You can also specify message IDs of dependent tools in this field.
The warning message IDs should be specified in numeric format and they should not be prefixed by any other character. For example, 3075. The list of warning message IDs should be separated by a comma or white space.
Command-line option: WarnToErr
Alternatively, click the Message Browser button to display the
XStream In Messages Forms
This sections describes the XStream In Message forms that are displayed when you click the respective Message Browser button.
- XStream In Info Messages Form to Disable Info Messages
- XStream In Warning Messages Form to Disable Warning Messages
- XStream In Warning Messages Form to Convert Warning Messages to Errors
- XStream In Warning Messages Form to Convert Warning Messages to Errors
XStream In Info Messages Form to Disable Info Messages
This section describes options on the XStream In Info Messages form that is displayed when you click the Message Browser button for the Disable Info Message IDs option.

Select check boxes for the XStream information messages that you want to disable.
Use the Other IDs field to specify information message IDs of other dependent tools.
Click the Select All check box to select all message IDs.
Use the Cancel button to exit the XStream In Info Messages form without saving any changes.
XStream In Warning Messages Form to Disable Warning Messages
This section describes options on the XStream In Warning Messages form that is displayed when you click the Message Browser button for the Disable Warning Message IDs option.

Select check boxes for the XStream warning messages that you want to disable.
Use the Other IDs field to specify warning message IDs of other dependent tools.
Click the Select All check box to select all message IDs.
Use the Cancel button to exit the XStream In Warning Messages form without saving any changes.
XStream In Info Messages Form to Convert Messages to Warnings
This section describes options on the XStream In Info Messages form that is displayed when you click the Message Browser button for the Convert Info Message IDs to Warnings option.

Select check boxes of the XStream information messages listed in this form.
Use the Other IDs field to specify information message IDs of other dependent tools.
Use the Cancel button to exit the XStream In Info Messages form without saving any changes.
XStream In Warning Messages Form to Convert Warning Messages to Errors
This section describes options on the XStream In Warning Messages form that is displayed when you click the Message Browser button for the Convert Warning Message IDs to Errors option.

Select check boxes of the XStream information messages listed in this form.
Use the Other IDs field to specify information message IDs of other dependent tools.
Use the Cancel button to exit the XStream In Info Messages form without saving any changes.
Report Options
This section describes options on the Report options pane.

Run Directory
The Run Directory field accepts the default directory for all the files you specify in the XStream In form. The run directory will be created automatically (provided you have the appropriate permissions) if it does not exist during XStream In or XStream Out. If you want to read from or write to a file that is not in the run directory, type the absolute file path in the field.
Default value: Current working directory
Report Bad Polygons and Paths
The Report bad polygons and path option provides a way for reporting self-intersecting paths, coincident or collinear paths, paths that have less than two coordinates, path with an invalid begin and end extension value, an open polygon, coincident or collinear polygons, a polygon with self-intersecting points, and zero-area rectangles. However, using this option can cause a degradation in performance.
Command-line option: checkPolygon
Report Precision Loss
The Report Precision Loss option gives you an error message if there is any precision loss while scaling a design.
Command-line option: reportPrecisionLoss
General: Storage Options
This section describes options on the General: Storage options pane.

Write Mode
Use the Write Mode field to select the write mode during the translation of the existing cells. The following options are available:
Select the overwrite option to overwrite the existing cells in the target library during translation.
Select the noOverwrite option to prevent existing cells in the target library from being overwritten during translation.
Select the append option to append data to an existing database during translation. If this option is selected, in case the GDS file contains shapes or instances that already exist in the database, they will be appended to the existing database. Therefore, the database will have duplicates of these shapes and instances.
Select the rename option to rename the duplicate cells in the target library during translation.
Command-line option: writeMode
Overwrite Root Cells
This option is available only if the Write Mode is set to rename. Using this option, all the root cells (un-instantiated cells in the GDS file) will replace the duplicate cells in the user-defined top-cell hierarchy; and the cells present in the root cell’s hierarchy will be renamed.
Command-line option: overwriteRootCells
Detect Overflow
Use the Detect Overflow option to detect overflow cellviews during translation.
OpenAccess limits the number of individual object types (like shapes, instances and properties) in a cellview. By default, the XStream In translator fails to translate a Stream file to OpenAccess if the maximum capacity of a cellview is reached for an individual object type. The Detect Overflow option enables XStream In to translate a Stream file even if the number of individual objects is more than the maximum capacity of a single cellview. In this scenario, overflow cellviews are created on reaching the maximum capacity of a cellview, with the remaining objects translated in the overflow cell. An instance of this overflow cell is then placed inside the main cell exceeding the maximum capacity.
Overflow cells are created with the name of the original cell suffixed with the value of the
Command-line option: detectOverflow
Overflow Cell Name Suffix
Use the Overflow Cell Name Suffix to specify the string to be appended to the name of the overflow cells.
Command-line option: overflowCellNameSuffix
Overflow View Name
Use the Overflow View Name to specify a view name for the overflow cells.
Default value: If no value is specified, value of the
Command-line option: overflowViewName
Example 2-8 Multiple GDS files; Single StreamIn

In the above example, there are multiple definitions for cells across GDS files.
If the Write Mode is set to overwrite, then the expected XStream In output is the shown below.
Example 2-9 XStream In output: Write mode is overwrite

If the Write Mode is set to noOverwrite, then the expected XStream In output is the shown below.
Example 2-10 XStream In output: Write mode is noOverwrite

If the Write Mode is set to append, then the expected XStream In output is the shown below.
Example 2-11 XStream In output: Write mode is append

If the Write Mode is set to rename, then the expected XStream In output is the shown below.
Example 2-12 XStream In output: Write mode is rename

If the Write Mode is set to rename and the Overwrite Root Cells option is selected, then the expected XStream In output is the shown below.
Example 2-13 XStream In output: Write mode (rename) and Overwrite Root Cells

xstInOverwriteLibPopup SKILL variable to t and Write mode to overwrite or append, then when you try to perform XStream In translation to an existing library, a message will be displayed to warn you that cells in the target library will be overwritten or appended to in this process. Enable Incremental Import
Use the Enable Incremental Import option to import multiple GDS files into the same design library. The two methods to import the GDS files are:
- Specify all the GDS files in one XStream In translation.
- Specify a subset of GDS files at a time. For this, multiple XStream In translations are needed to import all the GDS files. This is called incremental import mode. During the incremental import mode, you need to select the Enable Incremental Import option from the first XStream In translation.
XStream In creates a temporary file to maintain incremental import data at the path: .cadence/geoTrans/.incrementalImport
Also, a limitation for this option is that one directory can handle one incremental import. However, you can perform XStream In translation, with the Enable Incremental Import option deselected, in the same directory.
Command-line option: enableIncrementalImport
Enable File Locking
Use the Enable File Locking option to enable file locking during XStream In. By default, file locking will not be enabled.
If the target library exists, then this option is automatically turned off to avoid data corruption because the target library might be in use by some other process.
Command-line option: enableLocking
Compress
Use the Compress option to enable compression during XStream In.
Compression Level
Use the Compression Level option to specify the level of library compression to be applied during XStream In. You can specify a value from 1 to 9 for this option. Value 1 signifies the lowest level of library compression and 9 signifies the highest level of library compression. If you do not specify any value in the Compression Level option, value 1 is considered as the library compression level during XStream In. This option is enabled only if the Compress option is selected.
Command-line option: compressLevel
Maximum Cells in Target Library
Use the Maximum Cells in Target Library field to specify the maximum number of cell that you want to include in the target library. If the number of cells are more than the cells you have specified, then the other library will be created with the same name followed by “_1”. For example, if the number of cells in the target libraray, trglib exceeds the limit of the value specified in the Maximum Cells in Target Library field, then the new library will be created as, trglib_1. The number following the file name will be incremented by 1 depending on the number of libraries that are created. For example, the another library will be created as, trglib_2.
Command-line option: maxCellsInTargetLib
General: Others Options
This section describes the options on the General: Others option pane.

User SKILL File
The User SKILL File field lets you specify a file of SKILL routines. Using this file, you can specify the mapping mechanism for cell names, layers, and fonts through the use of programming routines written in SKILL.
In order to load all the required SKILL procedures in a single file, use only one SKILL file during translation. The SKILL file is searched with respect to the run directory if the complete path of the SKILL file is not specified. For more information, see the Chip Finishing Flow video.
db, dd, tech, and cst SKILL functions. Application specific functions, such as le, hi, sch, lx, via and so on are not supported.
Command-line option: userSkillFile
Do Not Detect Via
Select the Do Not Detect Via option to disable via detection during translation.
In case, there is no via map file and the Do Not Detect Via option is not specified, the tool evaluates the system and if it is possible, performs via detection.This process creates standard and custom vias during XStream In.
If you do not have a via map file, and the option Do Not Detect Via is selected, then the translator will produce multiple OpenAccess designs to represent a via. This affects the performance of XStream In and other applications, which work on these OpenAccess designs adversely.
Via detection is a color-aware process. Therefore, when the Coloring Mode option is enabled, color information on vias is appropriately set during translation. (See,
Command-line option: noDetectVias
Via Detection
-
Enable Negative Extension
Use the Enable Negative Extension option to detect vias with the negative metal extension during via detection. Vias with the negative extension have cut shapes that are partially overlapping with the metal shapes.
This option is disabled when the Do Not Detect Via option is selected.
Default value: Deselected
Command-line option:enableNegativeViaExt -
Use stdViaDefs from Technology Library
Use the Use stdViaDefs from Technology Library option to enable using the standard via definitions from the technology database for via detection.
Default value: Deselected
Command-line option:useExistingViaDefsForDetection
Via Map File
Use the Via Map File field to specify a via map file. The via map file maps the Structure names from the Stream file to the corresponding viaDef names in the input technology library. For more information on the via map file, see Via Map File.
Exclude Map to Via File
Use the Exclude Map to Via File field to specify a file name that contains the list of STRUCTs. In XStream In, vias are detected by default. Therefore, when the Exclude Map To Via File option is specified, XStream In does not convert the STRUCT names as Viadefs.
The via exclusion file contains one GDS structure per line. This option supports the use of following wildcards:
|
Works as escape character. Use this when you want a wildcard character to be treated as a normal character. |
# List of structures to be excluded from via mapping
M1M2Wire # Do not map M1M2Wire to a via
M2M3Wire* # Do not map cells starting with M2M3Wire to a via
Command-line option: excludeMapToVia
Merge Purposes to Drawing
Use the Merge Purposes to Drawing option to map all Stream datatypes to the purpose drawing during XStream In. This option is applicable only if XStream does not find a layer map file or a SKILL file. For more information about automatic layer mapping, see Automatic Layer Mapping.
Command-line option: mergeUndefPurposToDrawing
Translate Entire Hierarchy
Use the Translate Entire Hierarchy option to translate the entire design hierarchy.
Translation Depth
Use the Translation Depth option to specify the depth of the design hierarchy during XStream In. XStream In stops the translation process at the hierarchy level indicated by this option. The hierarchy depth value applies to all the top cells getting translated to OpenAccess. This option is enabled only if the Translate Entire Hier option is deselected.
Command-line option: hierDepth
Example 2-14 Translating cells C, D, and F by using the Translation Depth option

The above hierarchy shows cells A, B, C, D, E, F, G, and H placed at different levels. When cell C is selected as the top cell and the hierarchy depth is selected as 1, then the cells C, D, and F are translated.
An instance of E is created in the structure D, but its structure information is ignored. Cell H is ignored and is not translated to OpenAccess.
Pin Attribute Number
Use the Pin Attribute Number field to specify the Stream attribute number at which pin information is present in the input Stream file. For more information, see Preserving Pin Connectivity Information.
Command-line option: preservePinAtt
Label Case Sensitivity
Use the Label Case Sensitivity drop-down list to specify if XStream In changes the casing of text labels. The following options are available:
-
lower
The lower option translates the text labels to lowercase. For example, the label
Obj1becomesobj1. -
upper
The upper option translates the text label to uppercase. For example, the label
Obj1becomesOBJ1. -
preserve
The preserve option translates text labels without changing case. For example, the label
Obj1remainsObj1.
You can further modify text labels by using SKILL call back piTextMap function.
Command-line option: labelCase
Text Namespace
Use the Text Namespace field to specify the namespace mapping for text records in the Stream file. This option enables you to specify the name space in which the TEXT records of the Stream file are in.
For consistency, any of the OpenAccess namespaces (except OS namespaces like oaUnixNS and oaWinNS) can be specified. The valid arguments for this option are native, cdba, lef, def, verilog, vhdl, spef, spice, and spf is used as the default option.
For example, if a TEXT record in the Stream file has text bus[7] and you specify options value as verilog, the text object created in OpenAccess design will be bus<7>.
Command-line option: strmTextNS
Show Completion Message Box
The Show Completion Message Box check box enables you to display the Stream in translation complete message box with the number of errors and warnings after the translation is completed. The state of this check box depends on the value of the xstShowCompletionMsgBox SKILL variable, which is t by default.
XStream In Editor Forms
This section discusses the following XStream In Editor Forms:
- XStream In Layer Map File Editor Form
- XStream In Object Map File Editor Form
- XStream In Cell Map File Editor Form
- XStream In Reference Library File Editor Form
- XStream In Property Map File Editor Form
- XStream In Font Map File Editor Form
XStream In Layer Map File Editor Form
This section describes options on the XStream In Layer Map File Editor form that is displayed when you click the Editor button for the Layer Map option.

Add Row
Click the Add Row button to create a new layer mapping record.
For more information on columns in a layer mapping record, see Layer Map File.
Use the Stream Layer field to specify the Stream layer name that you want to map to OpenAccess layer.
Use the Stream Datatype field to specify the Stream datatype that you want to translate to OpenAccess purpose.
Use the Layer Name field to specify the OpenAccess layer name to which you want to map the Stream layer.
Use the Purpose Name field to specify the OpenAccess purpose name to which you want to map the Stream type.
Use the Material Type field to specify the OpenAccess material type to which you want to map the Stream type.
Use the Mask Number field to specify the OpenAccess mask number to which you want to map the Stream type.
Use the Photo Mask Color field to specify the photo mask color of the layer.
Use the Color State field to specify the color state of the layer.
The Photo Mask Color and Color State fields are visible only if the Coloring Mode option is enabled (See, Coloring Mode).
If you want to populate and select the values corresponding to the fields mentioned above, then you need to enter the valid GDS/Stream file in the Stream File field. In case you want to add or modify the values in any of the above mentioned fields, you need to double-click in the cells.

To hide either or both Material Type and Mask Number columns, right-click on the column heading row. Next, clear the check box of the column you do not want to display.
Delete Row
Click the Delete Row button to delete an existing layer mapping record.
Load
Use the Load button to load a new layer map file. You can specify multiple layer name map files by using the Load file option iteratively. A layer map file maps Stream layer number and Stream data type pairs to OpenAccess layer name and purpose name pairs. If you specify an invalid file name, a warning message is generated and the file name is ignored.
The path specified for the layer map file can be absolute or relative to the run directory. For more information, see Layer Map File.
Save As and Exit
Use the Save As and Exit button to the save the mapping information in a new file and exit the layer map file editor.
Save and Exit
Use the Save and Exit button to the save the mapping information in the current file and exit the layer map file editor.
Cancel
Use the Cancel button to exit XStream In Layer Map File Editor form without saving any changes.
XStream In Object Map File Editor Form
This section describes options on the XStream In Object Map File Editor form that is displayed when you click the Editor button for the Object Map option.

Add Row
Click the Add Row button to create a new object mapping record.
For more information on columns in an object mapping record, see Object Map File.
Use the Object Name field to select the name of the object to be mapped.
Use the Sub Object Name field to select the name of the sub object to be mapped.
The Layer Name field is displayed only when the Object Name is specified as layerBlockage. However, N/A will be displayed in the Layer Name field in case of any other Object Name.
Use the Stream Layer field to specify the Stream layer number for the OpenAccess object. By default, the Stream layer number is specified as 0.
Use the Stream Type field to specify the Stream datatype for the OpenAccess object. By default, the Stream datatype is specified as 0.
Use the Photo Mask Color field to specify the photo mask color of the layer.
The Photo Mask Color field is visible only if the Coloring Mode option is enabled. (See, Coloring Mode.)
For more information, see Object Map File
Delete Row
Click the Delete Row button to delete an existing object mapping record.
Load
Use the Load button to load the object map file. An object map file is used for preserving OpenAccess objects. If you specify an invalid file name, a warning message is generated and the file name is ignored.
The path specified for the object map file can be absolute or relative to the run directory. For more information, see Object Map File.
Save As and Exit
Use the Save As and Exit button to save the object mapping information in a new file and exit the object map file editor.
Save and Exit
Use the Save and Exit button to save the object mapping information in the current file and exit the object map file editor.
Cancel
Use the Cancel button to exit the XStream In Layer Map File Editor form without saving any changes.
XStream In Cell Map File Editor Form
This section describes options on the XStream In Cell Map File Editor form that is displayed when you click the Editor button for the Cell Map File Name option.

Add Row
Click the Add Row button to create a new cell mapping record.
For more information on columns in a cell mapping record, see Cell Name Map File.
Use the Stream Name field to specify a name for the Stream file that you want to translate to OpenAccess.
Use the Library option to select the library that you want to translate to OpenAccess. The Library drop-down list box lists all the available libraries defined in cds.lib as well as XST_TARGET_LIB.
Use the Cell field to specify the cell name that you want to translate to OpenAccess.
Use the View field to specify the view name of the specified cell that you want to translate to OpenAccess.
In case you want to add or modify the values in any of the above mentioned fields then you need to double-click in the cells.
Delete Row
Click the Delete Row button to delete an existing cell mapping record.
Load
Use the Load button to load a new cell name map file. A cell name map file contains a table that maps structure names in the Stream file to cellview names in the OpenAccess database.
The path specified for the cell name map file can be absolute or relative to the run directory. For more information, see Cell Name Map File.
Save As and Exit
Use the Save As and Exit button to save the object mapping information in a new file and exit the cell map file editor.
Save and Exit
Use the Save and Exit button to save the object mapping information in the current file and exit the cell map file editor.
Cancel
Use the Cancel button to exit the XStream In Cell Map File Editor form without saving any changes.
XStream In Reference Library File Editor Form
This section describes options on the XStream In Ref Lib File Editor form that is displayed when you click the Editor button for the Ref Lib File Name option.

Add
Use the Add button to add libraries to the Reference Libraries field.
The Reference Libraries field is used to specify logical library names that you want to consider as reference libraries. The libraries specified in this field should be present in the cds.lib file. Otherwise, they are not considered as reference libraries.
During XStream In, when you search for master cellviews of instances, reference libraries are searched in the same order as specified in the Reference Libraries field. If any of the specified libraries do not exist in the cds.lib file, an error message is displayed.
Remove
Use the Remove button to remove libraries from the Reference Libraries field.
Move Up
Use the Move Up button to move up selected reference libraries in the Reference Libraries list on the right. This helps you arrange reference libraries in order of preference.
Move Down
Use the Move Down arrow button to move down selected reference libraries in the Reference Libraries list on the right. This helps you arrange reference libraries in order of preference.
Load
Use the Load button to load the text file containing the list of reference libraries. When you specify the text file, the path and the text file name is displayed in the blank field above the Load button.
Save As and Exit
Use the Save As and Exit button to save the reference library information in a new file and exit the reference library map file editor.
Save and Exit
Use the Save and Exit button to save the reference library information in the current file and exit the reference library map file editor.
Cancel
Use the Cancel button to exit the XStream In Reference Library File Editor form without saving any changes.
XStream In Property Map File Editor Form
This section describes options on the XStream In Prop Map File Editor form that is displayed when you click the Editor button for the Prop Map File Name option.

Add Row
Click Add Row button to create a new property mapping record.
For more information on columns in a property mapping record, see Property Map File.
Use the Property ID field to specify an ID for the Stream file.
Use the Object Type option to select an object that you want to translate to OpenAccess.
Use the Property Name field to specify the property name that you want to map to OpenAccess.
In case you want to add or modify the values in any of the above mentioned fields then you need to double-click in the cells.
Delete Row
Click the Delete Row button to delete an existing property mapping record.
Property Value Only
Use the Property Value Only format specifier to import the property value of a Stream attribute from the GDS file as the value of the specified propertyName of an objectType.
Property Separator
Use the Property Separator format specifier to specify a property separator. If you specify a property separator in the property map file, XStream In ignores the property separator defined in the form.
Default value: The default property separator is a comma ‘,’.
Load
Use the Load button to load the property map file. A property map file is used for preserving properties associated with OpenAccess objects. If you specify an invalid file name, a warning message is generated and the file name is ignored.
The path specified for the property map file can be absolute or relative to the run directory. For more information, see Property Map File.
Save As and Exit
Use the Save As and Exit button to save the property map information in a new file and exit the property map file editor.
Save and Exit
Use the Save and Exit button to save the property map information in the current file and exit the property map file editor.
Cancel
Use the Cancel button to exit the XStream In Prop Map File Editor form without saving any changes.
Property Separator
Use the Property Separator option to specify a property separator.
Default value: The default property separator is a comma ‘,’.
XStream In Font Map File Editor Form
This section describes options on the XStream In Font Map File Editor form that is displayed when you click the Editor button for the Font Map File Name option.

Font vs Stream Value Mapping
Use the 0, 1, 2, and 3 drop-down lists to create direct mapping for selected fonts.
Load
Use the Load button to load a new text font map file for font mapping. You use a text font map file to map Stream text fonts to OpenAccess text font names. If you specify an invalid file name, a warning message is generated and the file name is ignored.
The path specified for the text font map file can be absolute or relative to the run directory. For more information, see Text Font Map File.
Save As and Exit
Use the Save As and Exit button to save the font mapping information in a new file and exit the font map file editor.
Save and Exit
Use the Save and Exit button to save the font mapping information in the current file and exit the font map file editor.
Cancel
Use the Cancel button to exit the XStream In Font Map File Editor form without saving any changes.
XStream In Options Names in GUI and Template File
The following table provides a list of all the XStream In GUI options and their corresponding names in the template file. To view the sample template file, see XStream In Template File.
| Name in Template File | XStream In GUI Options |
|---|---|
|
Cell Map File - Load |
|
|
Fonts Map File- Load |
|
|
Label Case Sensitivity (preserve, upper, lower) |
|
|
Layer Map File - Load |
|
|
Object Map File - Load |
|
|
Property Map File - Load |
|
|
|
|
You can access and input values in XStream GUI using SKILL commands. Using SKILL to populate values in XStream In form, you need to enter the
All the options listed above are valid for xstInSetField, xstInGetField, template file, and virtualMemory and showCompletionMsgBox are valid for command line executable or batch process.
$TECH_DIR, $CDS_WORKAREA, $USER variables in a template file and the variables are correctly resolved by XStream.Seeding the XStream In GUI
You can use the following methods to set default values for a user:
-
Using the XST_IN environment variable
You can assign the XStream In template file as a value of the XST_INshell environment variable.
For example:envSetVal( "xstream" "XST_IN" 'string "demo.txt" )
setenv XST_IN "demo.txt":
Sample XStream In option template file:======================
pinAttNum "100"
summaryFile "xStreamIn.sum"
replaceBusBitChar
======================
-
Using the
streamInKeysSKILL list
You can define a set of option values to load into the XStream In form in thestreamInKeysSKILL list. For this, define the pre-seeding options in the.cdsinitfile because the system automatically loads this file when you start Virtuoso.
The following is a sample streamInKeys SKILL list.
;***************************************************************
; Copyright (C) 2001 - 2018 *
; Cadence Design Systems Inc. All Rights Reserved. *
;***************************************************************
;
;**************************************************************
;
; filename : streamIn.il
;
;**************************************************************
streamInKeys=list(nil
'hierDepth "32767" ;- (0-32767) - Hierarchy Depth Limit
'maxCellsInTargetLib "30000" ;- Maximum Cells in Target Library
'strmTextNS "cdba" ;- Text NameSpace
'arrayInstToScalar nil ;- Convert AREF to Scalar Instances
'attachTechFileOfLib "" ;- Attach Techfile of Library
'case "preserve" ;- preserve | upper | lower - Case Sensitivity
'cellMap "" ;- Cell Map File Name
'checkPolygon t ;- Report Bad Polygons
'convertPathToPathSeg nil ;- Convert Two Point Path(s) to PathSeg(s)
'compress ;- Allow libraries to be compressed
'compressLevel "1" ;- Defines the compression level to use (default: 1)
'detectOverflow "false" ;- Enable overflow cellview creation on reaching maximum limit of shapes in a cellview
'enableLocking nil ;- Enable File Locking
'enableNegativeViaExt nil ;- Enable Negative Extension for Via Detection
'excludeMapToVia "" ;- Via exclusion Data file
'fontMap "" ;- Font Map File Name
'ignoreBoxes nil ;- Ignore BOX records
'ignoreObjectProp nil ;- Ignore Object Properties
'ignoreZeroWidthPath nil ;- Ignore Zero Width Path(s)
'infoToWarn "" ;- Treat the Specified Info Messgaes Ids as the Warnings
'keepStreamCells nil ;- Keep Stream File Cells
'labelCase "preserve" ;- preserve | upper | lower - Label Case Sensitivity
'layerMap "" ;- Layer Map File Name
'library "strmLib" ;- Library Name
'loadTechFile "" ;- ASCII Technology File Name
'logFile "strmIn.log" ;- Log File Name
'mergeUndefPurposToDrawing nil ;- Merges Undefined Purposes to "drawing" Purpose
'noDetectVias nil ;- Do Not Detect possible viaDefs from Strem File and create vias
'noInfo "" ;- Do not Print the Specified Info Messages Ids
'noWarn "" ;- Do not Print the Specified Warning Messages Ids
'objectMap "" ;- Object Mapping File Name
'overflowCellNameSuffix "_xstOverflow" ;- Cell name suffix of overflow cellviews
'overflowViewName "layout" ;- View name of overflow cellviews
'overwriteRootCells nil ;- overwrite top Cells in case write mode is rename
'pinAttNum "127" ;- (0-127) - Stream Attribute Number To Preserve Pin
'dbuPerUU "1000" ;- DB Units Per User Units
'reportPrecisionLoss nil ;- Report Precision Loss
'propMap "" ;- Property Map File Name
'propSeparator "," ;- Property Separator Character
'refLibList "" ;- Rerferrence Library List File
'replaceBusBitChar nil ;- Replace "[]" With "<>"
'runDir "." ;- Run Directory
'scale "1.00000" ;- Design Scaling Factor
'scaleTextHeight "1.00000" ;- Text Height Scaling Value (+ve value only)
'enableIncrementalImport nil ;- Enable incremetal import of multiple Stream Files
'showCompletionMsgBox t ;- Show the Completion Message Box
'skipUndefinedLPP nil ;- Skip Creating Undefined Layer-Purpose Pair in Technology
'snapToGrid t ;- Snap XY to Grid Resolution
'strmFile "test.gds" ;- Stream File Name
'strmTechGen "" ;- Generated the LPP information of specified stream file
'summaryFile "" ;- Summary File Name
'techRefs "" ;- Ordered List of Technology Libraries
'topCell "" ;- Top Cell(s) to Translate
'translateUnmappedLPP nil ;- Allow undefined LPP to be translated by incrementally mapping LPP using layerMap file, SKILL hook piLayerMap, and automatic layer mapping
'translateNode nil ;- Convert Node(s) to Dot(s)
'userSkillFile "" ;- Users' Skill File Name
'useExistingViaDefsForDetection nil ;- Enable the usage of standard viaDefs from technology database for via detection
'verbose nil ;- Generate detailed information in the log and summary files
'viaMap "" ;- Via Map File Name
'view "layout" ;- View Name(s) to Translate
'virtualMemory nil ;- Do Stream In into Virtual Memory
'warnToErr "" ;- Treat the Specified Warning Messgaes Ids as the Errors
'wildCardInCellMap nil ;- Wild Card in Cell Map
'writeMode "overwrite" ;- write mode of existing cells
)
It is possible to combine both the pre-seeding methods but Cadence recommends to avoid using both methods at the same time. If you combine both the methods, streamInKeys SKILL list takes precedence over template file.
To prepare a template file for XStream Out, see Seeding the XStream Out GUI.
Handling Non-Manhattan Angle Rotation and Magnification
When the source GDS file contains SREF/AREF with either non-Manhattan angle rotation or non-default magnification, XStream In translates and generates variant of the original master cell. The instance in the translated OpenAccess design refers to the variant, instead of the original master cell.
Each variant has the same content as the original cell, except that the content is either rotated or magnified, or both. If original cell contains instances or vias, variants are generated recursively for their masters. The cell name of the variant is different from the original master cell name. The variant name follows the below convention:
variantName = originalCellName[_m<mag>][_a<angle>][_v<version>]
Here, the mag and angle are floating-point values written in the printf format of .15g. The suffix, version is appended to the name if a cellview with the same name already exists in the library. In case of such a conflict, versions will be generated regardless of the value of -writeMode option.
AREF with non-Manhattan angle rotation is translated as a set of scalar instances. These instances refer to the rotated (and maybe further scaled) variant. The array lattice vectors are not affected by the referenced cell rotation and magnification and are used to calculate the individual instance displacements as is.
In the following example, the AREFs colored red are rotated by 30 degree vectors of the lattice, and the AREFs in green are not rotated. You can see that the parameter ANGLE of the figure on the left is 0 degrees and the parameter ANGLE of the rotated image on the right is 30 degrees.

When the option
Translation of Single Point Path
During XStream In, translation of single-point path to OpenAccess database depends on the end type of the path.
- Single-point paths with end type as round are converted to circle.
- Single-point paths that do not have end type as round are converted to square.
Predicting Memory Requirements
XStream now provides a memory prediction module using which memory requirements can be predicted for a GDS file up to a range of +-10%. The range might vary if the Stream file contains repeated strings or large number of properties. During XStream In, the memory prediction module runs by default.
The memory prediction module also collects system information for the total virtual memory installed on the system. It compares different process resource limits on the system with the memory requirements and displays error, warning, or informational messages, if required.
If XStream In runs in the non-interactive mode, then these messages appear on the terminal as well as the log file. XStream In does not stop while running in this mode. If XStream In runs in the interactive mode, then these messages are displayed on the terminal and the log file. In addition, you are provided the choice of stopping the translation.
The following table provides a list of messages generated by the memory prediction module and the conditions in which these messages appear:
Design Translation During XStream Out
XStream Out Use Model
XStream Out translates designs from the OpenAccess database to the Stream format. The inputs to the XStream Out process are the OpenAccess database, XStream Out options, the optional mapping files, and the user-defined SKILL files. Using these inputs, XStream Out generates Stream file, log file, and an optional summary file. The XStream Out use model is shown below.

The following table provides generic information about input and output files during XStream Out.
For details on map files, see Design Translation During XStream In.
Once you have selected the option to do a strmout, click the OK button. The XStream Out form will be displayed.
After you enable the Generate Technology Information option, all other fields except the Stream Technology File field are disabled.
Multithreading in XStream Out
XStream Out uses multithreading and multiprocessing to improve performance during translation. XStream Out evaluates the machine configuration and then applies the best value to be used for multithreading based on available CPU cores. The maximum number of threads are capped at 4.
XStream Out Form
You can export the Stream file from the GUI by choosing the File–Export–Stream option from the CIW. This method will enable you to display the XStream Out form. If a cellview is open when you run this command, the Stream File, Library, TopCell(s), and View(s) fields on this form are automatically filled.
However, if these fields already have some information, you might want to prevent automatic filling even if a cellview is open. For this, set the value of environment variable to t. When you do this, the Stream File, Library, TopCell(s), and View(s) fields on the XStream Out main form will be filled automatically, only when they are empty.
For a list of equivalent template file options, see XStream Out Option Names in GUI and Template File.

The main XStream Out form comprises mandatory options that are essential to run the translation. The form also features a few other most commonly used options, such as Layer Map and Object Map.
The following sections on the main form can be expanded to view additional options:
Discussed below are XStream Out options available on the main form.
Stream File
This is the output Stream file. Use the Stream File field to specify the name of the output Stream file. Alternatively, File Browser button to select the Stream file. The path specified for the output file can be absolute or relative to the run directory. However, if the user has not specified the Stream file name then it will be automatically generated from the top cell. This is a mandatory field.
Library
Use the Library option to specify a library from which a design is to be translated to the Stream format. The library name should be a logical name supported in the cds.lib file. The library name should also follow the naming conventions supported by OpenAccess. This is a mandatory field. You can also click the Open button to display the Library Browser form. This form does not display hidden cells.

-cdslib option to access the cds.lib file from any other directory. For example, to access the cds.lib file from any other location, use the syntax: virtuoso -cdslib <cds.lib file path>Top Cell(s)
Use the Top Cell(s) field to specify the name of the cell at the top of the hierarchy that you want to translate to the Stream file.
By default, all cells in the specified library are translated.
After you enter the top level cell in the Top Cell field, the Stream file will reflect the filename as <Top Cell>.<file extension>. The default file extension name for the output file is .gds. You can change the default file extension name from .gds to any other string by using the xstOutExt SKILL variable.
Example 2-15 Translating cells by using the Top Cell option
Consider the hierarchical structure below where A, B, C, D, E, F, and G are cell names. You want to translate these cells using the Top Level Cell(s) field.

When C is specified as the top cell in the Top Level Cell(s) field, cells C, D, E, and F are translated. For instance, if you specify the top cell name as B and C, cells B, G, C, D, E, and F are translated. Below is the tabular representation on how the cells will be translated.
| Top Level Cell field | Cells translated |
|---|---|
View(s)
Use the View(s) field to specify view names that are created in the target library during translation. If you specify a cellview name in the cell name map file or SKILL file, then the view name specified in these files takes precedence over the name specified in the XStream In form.
Example 2-16 Translating cells C, D, E, and F into the layout1 view

In the above figure, if C is specified as the top cell and layout1 as the view name, then the structures C, D, E, and F are translated with layout1 as the view name.
Technology Library
Use the Technology Library option for getting information about layers and purposes used in the design. By default, the technology file of the source library is used to get information about the layers and purposes used in the design.
Template File
Use the Template File field to specify an existing template file. You can also click the File Browser button to select the template file. When this file is loaded, the XStream Out form is updated with the option settings specified in it.
Click the Save button to save the current option settings to the template file.
Command-line option: templateFile
Stream Out from Virtual Memory
Select the Stream Out from Virtual Memory check box to export OpenAccess designs from virtual memory to a GDSII/Stream file on disk.
Layer Map

Use the Layer Map field to specify an existing layer map file. You can also click the File Browser button to select the layer map file. Next, click the Editor button to view the specified file in editor.
To create new layer mapping records or load a new layer map file, leave the Layer Map field blank, and click the Editor button to display the XStream Out Layer Map File Editor Form.
Expand Layer Map to view additional options.

Translate Unmapped LPPs
Use the Translate Unmapped LPP option to map unmapped layers. This option works only when a different user-defined layer mapping, layer map file or SKILL function, has been specified. When you enable Translate Unmapped LPP, first the user-specified layer mapping is applied, and then, automatic layer mapping is performed to translate unmapped layers. For more information about translating unmapped layers in Stream Out, see Automatic Layer Mapping in XStream Out.
Default value: Deselected
Command-line option: translateUnmappedLPP
Use Automatic Layer Mapping
Use the Use Automatic Layer Mapping option to map layers automatically. This option works only if no layer mapping has been specified. Otherwise, this option is ignored and layers are mapped with the specified mapping. For more information about automatic layer mapping, see Automatic Layer Mapping in XStream Out.
Object Map
Use the File Name field to specify an existing object map file. You can also click the File Browser button to select the object map file. Next, click the Editor button to view the specified file in editor.
Command-line option: objectMap
To create new object mapping records or load a new object map file, leave the Object Map field blank, and click the Editor button to display the XStream Out Object Map File Editor Form.
Expand Object Map to view additional options.

Do Not Output Object Properties
Use the Do Not Output Object Properties option to translate OpenAccess objects as shapes, but not write the property information to the property attribute 126. If you select the Do Not Output Properties option, then although the shapes and OpenAccess objects are translated, no property data is written to the Stream file for OpenAccess objects.
Command-line option: noObjectProp
Ignore Object Map File from Technology
Use the Ignore Map File from Technology to ignore PDK-installed object map file during XStream Out.
Command-line option: ignoreObjectMapFromTech
Log File
Expand Log File to specify log and summary files to be used during XStream Out translation.

Use the File Name field to specify name of a log file that will be used to record the translation process steps and the messages generated by XStream. After the translation is completed, the log file is displayed in a separate read-only text window. Alternatively, click the Browse button to select the log file.
The path specified for the log file should be a valid file path. It can be absolute or relative to the run directory. For more information, see Sample Log File.
Default file name: strmOut.log
Summary File
Use the Summary File field to specify a file that will provide a summary of the translated design. If you do not specify a file name in the Summary File option before translation, the summary file will not be generated.
The path specified for the summary file can be absolute or relative to the run directory. To view the sample summary file, see Sample Summary File.
Command-line option: summaryFile
Generate Detailed Log and Summary Files
Use the Generate Detailed Log and Summary Files option to include additional summary information in the XStream Out log file and XStream Out summary file.
With this option is enabled, following sections with additional information are added to the XStream Out summary file:
-
Individual Cell Statistics: Individual cell statistics for Basic Objects and Advance Objects is alphabetically sorted order based on Library/Cell/View.
-
Bounding box for the cells: Individual Cell Statistics for basic objects prints additional column titled bBox. This columns lists the boundary box of the translated cell in the following format:
((lowerLeft.x lowerLeft.y) (upperRight.x upperRight.y))
Here, lowerLeft and upperRight are the lower-left and upper-right coordinates of the boundary box.

-
Bounding box for the cells: Individual Cell Statistics for basic objects prints additional column titled bBox. This columns lists the boundary box of the translated cell in the following format:
((lowerLeft.x lowerLeft.y) (upperRight.x upperRight.y))
Here, lowerLeft and upperRight are the lower-left and upper-right coordinates of the boundary box.
-
Statistics of Layers: Layer summary added to this section is sorted in the same order in which layer-purpose pairs are defined in the technology file or the layer pellet.

-
Missing Cells: This section lists the cells that are referenced but are missing in the OpenAccess database.

-
Dropped Layers: This section lists the layer-purpose pairs for which no mapping is found. Shapes on these layer-purpose pairs are not translated.

-
Individual Advanced Object Statistics: This section lists the Place and Route objects translated during XStream Out. It lists the object-type, sub-object type, layer name (for layerBlockage), strmLayer, strmType, and the count of the objects translated.

Default value: Deselected
Command-line option: verbose
Coloring Mode
Expand Coloring Mode to specify coloring options to be used during XStream Out translation.

Enable
Select the Enable check box to enable color mapping during XStream Out.
Command-line option: enableColoring
-
Attach Tech Library (
attachTechFileOfLib) -
Load ASCII Tech File (
loadTechFile) -
Tech Refs (
techRef)
-
Attach Tech Library (
Technology can be either attached to the existing target library or the target library has its own technology. The Via Cut Aref Threshold option is not supported if coloring mode is enabled. Therefore, the Via Cut Aref Threshold option will be ignored and a warning message will be displayed. In case Merge Connected PathSegs check box is selected and coloring mode is enabled, the connected pathSegs on the colorable layers will not be merged and each pathSeg will be written as separate PATH record in GDS. The Merge Connected PathSegs option will not be considered for the pathSegs on colorable layers. In case of the Max Vertices option, the color information of the original polygon or path will be used and all the chopped polygons will be mapped using the same mapping entry.
If the layer map and object map files do not have any color entry, the -enableColoring option is not considered during translation.
Map All Colors to Locked
This option is visible when xstHideMapAllColorToLocked is set to nil.

XStream Out outputs shapes to GDS using the mapping in the layer map file so that the resulting GDS preserves the colors and color lock state for each shape. However, when you choose Map All Colors to Locked, there is no change to the mapping for shapes with locked colors and gray (no color) shapes. Shapes that are colored but unlocked, including lower level hierarchical shapes, will map to the locked state for their color, instead of the unlocked state.
| Before XStream | After Xstream Out (Default) | After XStream Out with Map All Colors to Locked |
|---|---|---|
In case of locked standard via layers, when Map All Colors to Locked is enabled, the corresponding shapes are mapped according to the locked color layer map entry in the Layer Map File. Otherwise, if the color state for the standard via layers is unlocked, the color information is ignored and the corresponding shapes are mapped according to the gray layer map entry in the map file.
Command-line option: mapAllColorToLocked
to hide this option by default. Add the following command in .cdsenv:
xstream xstHideMapAllColorToLocked boolean nil
Translate
Use the Translate button to translate OpenAccess files to the Stream files. This option, if used without loading the hierarchy, enables faster translation.
If you have opened cellviews that are not yet saved, the XStream Out GUI displays a warning message to save all the opened cellview before translating
Apply
Use the Apply button to translate OpenAccess files to the Stream files. After the translation is completed, the XStream Out form does not disappear.
Cancel
Use the Cancel button to exit the XStream Out form.
Reset All Fields
Use the Reset All Fields button to set the GUI fields to their default values, which are displayed when the tool in invoked.
More Options
Use the More Options button to display the XStream Out More Options form that comprises additional options that you can set before starting XStream Out translation.
Help
Use the Help button to invoke online help.
XStream Out More Options Form
This section describes options of the XStream Out More Options form.

Search Field
Use the Search field to quickly look for options you want to access or the options related to the value you type in this field. For example, if you type cell, only the options related to cell will be visible in the options tree. The related options will also be highlighted in the options pane.

Options Tree
The Options tree enables you to access the following option panes where you can perform additional settings.
- Mapping Options
- Geometry Options
- Messages Options
- Report Options
- General Options
Options Panes
OK
Apply
Defaults
Cancel
Click Cancel to close the More Options form without saving any changes.
Mapping: Cell Mapping Options
This section describes options on the Mapping: Cell Mapping options pane.

Cell Map File Name
Use the Cell Map File Name field to specify an existing cell map file. You can also click the File Browser button to select the cell map file. Next, click the Editor button to view the specified file in editor.
When Cell Map File Name and poParamCellNameMap both are specified, poParamCellNameMap takes precedence. However, when both Cell Map File Name and poCellNameMap are specified then Cell Map File Name is used.
To create new cell mapping records or load a new cell map file, leave the Cell Map field blank, and click the Editor button to display the XStream Out Cell Map File Editor Form.
Wildcard in Cell Map
Use the Wild Card in Cell Map option to use wild card while streaming out. The option supports the characters '*' and '?' as wild cards and ‘/’ as the escape character. If you don't use this option, wild card will be considered as a special character during translation.
Consider the following example:
Here, when you strmout, the created structure will be INV*_NAND_ver1 if the design cellName is INV_NAND. In this example, in INV\*_*_ver1, the first ‘*’ is treated as special character and the second ‘*’ as the wild card.
Command-line option: wildCardInCellMap
Ignore Cell Name Prefix and Suffix for Top Cell
Use the Ignore Cell Name Prefix and Suffix for Top Cell if you want to ignore the
Command-line option: ignoreTopCellPrefixSuffix
Respect 32 Characters Name Limit
Use the Respect 32 Characters Name Limit option if you want to set the GDSII character limit of 32 for cells and library names. If a cellview name is greater than 32, it is modified to create unique name within 32 characters. A record is created for such a cellview in the cell name map file.
In addition, if you have specified a cell map file, which has the structure name whose size is greater than 32 characters, then it is modified to create a unique name within 32 characters.
Command-line option: respectGDSIINameLimit
GDS Cell Name Length
Use GDS Cell Name Length to set cell name length. Minimum value that you can set using this option is 10.
Command-line option: gdsCellNameLength
Cell Name Prefix
This option enables you to add prefix in all the cell names in OpenAccess. For example, if a prefix, _pi is added the cellname, cell1 then the cellname in OpenAccess would be _picell1. All options, such as Case Sensitivity or Respect 32 Characters Name Limit will be applied on the modified name.
Command-line option: cellNamePrefix
Cell Name Suffix
This option enables you to add suffix in all the cell names in OpenAccess. For example, if a suffix, _si is added the cellname, cell1 then the cellname in OpenAccess would be cell1_si. All options, such as Case Sensitivity or Respect 32 Characters Name Limit will be applied on the modified name.
If cell name mapping is provided either through a cellMap file or through a SKILL function, poCellNameMap(), then the prefix and suffix will be added to names that are already mapped.
Command-line option: cellNameSuffix
Sub-Master Separator
Use the Sub-Master Separator to change the default value of the separator added to Pcells during translation. The default separator is _CDNS_. The following naming convention is used:
pCell/via master name + subMasterSeparator + timestamp + number
-
subMasterSeparator
is configured using the
subMasterSeparatoroption - timestamp is an 11 digit number, where the first nine digits are the number of seconds elapsed since January 1, 1970 and the last 2 digits are micro seconds
- number is an incrementing number.
This naming conversion does not apply when poParamCellNameMap is used.
Command-line option: subMasterSeparator
Cell Case Sensitivity
The Cell Case Sensitivity option specifies whether XStream Out changes the case of letters in cell names. XStream Out uses this option when you do not supply cell name mapping information for the cell. You can map cell names in a cell name map table or in a SKILL file.
The lower option translates all cell names to lowercase. For example, the name Obj1 becomes obj1.
The upper option translates all cell names to uppercase. For example, the name Obj1 becomes OBJ1.
The preserve option translates the cell names without changing case. For example, the name Obj1 remains Obj1.
Mapping: General Options
This section describes options on the Mapping: General options pane.

Ref Lib File Name
Use the Ref Lib File Name field to select a library name from the list of available libraries that are to be used as a reference libraries. You can also click the File Browser button to select the file containing list of reference libraries. Next, click the Editor button to view the specified file in editor.
Command-line option: refLibList
To select a library name from the list of available libraries to be used as a reference libraries, leave the Ref Lib File Name field blank, and click the Editor button to display the XStream Out Reference Library File Editor Form.
Use All Libraries as Ref Lib
Use the Use All Libraries option to select all available libraries as reference libraries. The refLibList option exports only instances to cellviews from these reference libraries. It does not export any cellviews from them.
If you invoke Stream Out from the command line, you can write the list of reference libraries in a text file and provide this file as the value of the refLibList option. For example, consider a reference library file refLib.list with the following content:
In this case, the -refLibList refLib.list command will consider all reference libraries listed in the refLib.list file.
If you want to consider all the libraries defined in the cds.lib file as reference libraries, use the XST_CDS_LIB keyword (-refLibList XST_CDS_LIB). You can provide this keyword as a value of the reflibList option from the command line or by writing it in a text file containing the list of libraries.
Prop Map File Name
Use the Prop Map File Name field to specify an existing properties mapping file. You can also click the File Browser button to select the properties mapping file. Next, click the Editor button to view the specified file in editor.
To create new properties mapping records or load a new properties mapping file, leave the Prop Map File Name field blank, and click the Editor button to display the XStream Out Property Map File Editor Form.
Output Property Value Only
Use the Output Property Value Only option to export the specified propertyName's value of an objectType as the value of the corresponding Stream attribute specified in the mapping record to the GDS file.
Command-line option: propValueOnly
Font Map File Name
Use the Font Map File Name field to specify an existing font mapping file. You can also click the File Browser button to select the font mapping file. Next, click the Editor button to view the specified file in editor.
To create new font mapping records or load a new properties mapping file, leave the Font Map File Name field blank, and click the Editor button to display the XStream Out Font Map File Editor Form.
Label Map File Name
Use the Label Map File Name field to specify a label map file that determines the object type for which labels are created and determines the mapping of shapes on an oaLayer and oaPurpose pair to a GDS layer and GDS data type pair. The object type specified in the label map file is either a terminal or a net.
Label Translation Depth
Use the Label Translation Depth field to specify the depth of the design hierarchy for which labels are generated. If you leave this field as is (default value 1), labels are generated for only the top level of the design.
Command-line option: labelDepth
net/term/pin name. This is different from the label created using the Layout XL > Create > Label command.Replace <> with []
The Replace <> with [] option replaces the character < with [ and > with ] in text records during the translation from the DFII library to a Stream file.
Command-line option: replaceBusBitChar
Geometry: Transformation Options
This section describes options on the Geometry: Transformation options pane.

Output Rectangles as Box Records
Select the Output rectangles as box records check boxto translate a rectangle into a BOX record. A BOX record is an alternative way of defining a rectangular shape. It consists of a coordinate representing the center of the rectangular shape and values specifying the height and width of the shape.
If you do not select this option, rectangles are translated as polygons. This option is required for backward compatibility with some old party GDSII readers and writers. Using this option, you can also preserve rectangles.
Command-line option: rectToBox
Output Paths as Polygons
Select the Output Paths as Polygons check box to translate all paths in OpenAccess as BOUNDARY records in the Stream format.
Command-line option: pathToPolygon
- Path is less than 1/2 width
- Path with acute angle
-
Path with rounded extensionIf the option Do Not Convert Half Width Path to Polygon is selected then the half width path is not converted to boundary.
Convert Paths with Non-Orthogonal Segments to Polygons
Select the Convert Paths with Non-Orthogonal Segments to Polygons check box to export paths with non-orthogonal segments as BOUNDARY records. When this check box is not selected, all paths with non-orthogonal segments are translated as PATH records.
Command-line option: diagonalPathToPolygon
Do Not Convert Half Width Path to Polygon
Select the Do Not Convert Half Width Path to Polygon check box to translate half width path as a path and not as a polygon. When this check box is not selected, all half width paths are translated as BOUNDARY records.
Command-line option: noConvertHalfWidthPath
Merge Connected PathSegs
Select the Merge Connected PathSegs check box to assemble all the connected oaPathSegs of the same LPP into a single PATH record during XStream Out. This reduces the size of the GDSII file.
Command-line option: mergePathSegsToPath
Convert Arrays to Scalar Instances
Select the Convert Arrays to Scalar instances check box to translate an array as a Stream array (AREF) or break an array into individual instances (SREF). When you select this option, an array in the OpenAccess database is translated as multiple SREFs in the Stream file.
For performance issues related to this option, see Guidelines for XStream Out.
Command-line option: arrayInstToScalar
Flatten Pcells
Select the Flatten Pcells check box if you want to flatten the Pcell instances in the designs.
Command-line option: flattenPcells
Pcells Exclusion File
Use the Pcells Exclusion File option to specify the name of the exclusion file that contains a list of Pcells to be excluded during Pcell flattening. The Pcells Exclusion File option is available only if you select the
Example of a Pcell Exclusion file:
;Specify either library, library and cell, or library, cell, and view
("libraryB")
("libraryA" "pcellA")
("libraryA" "pcellB")
("libraryA" "pcellC" "layout1") ("LibraryC")
Command-line option: flattenPcellsExclusionFile
Do Not Preserve Pcells Pins
Select this check box if you do not want to retain the connectivity information of pins in flattened Pcell instances. The Do Not Preserve Pcell pins option is available only if you select the
Command-line option: doNotPreservePcellPins
Flatten Vias
Select the Flatten Vias check box if you want to flatten all standard, custom, and cdsGen vias in the design.
Command-line option: flattenVias
Output Shapes of Vias to Via Purpose
Select the Output Shapes of Vias to Via Purpose check box to export the shapes of vias according to the purpose that was defined for the vias.
If this option is used along with the Flatten Vias option then via shapes are flattened to the via purpose.
Command-line option: outputViaShapesToViaPurp
Design Scale Factor
Use the Design Scale Factor option to scale an exported design by the factor set here. This option accepts any positive floating value. The scale option will not have any impact on the existing options or behavior because scaling is done internally. It will work in addition to the settings in the DBUPerUU option.
For example, consider DBUPerUU is 1000 and GDS polygon size is 3000 db units (user units). If you run the command strmin -scale 4 -dbuPerUU 2000, the resultant polygon size will be calculated as below:
3000 x (2000/1000) x 4 = 24000 db units (user units)
Geometry: Limit Options
This section describes options on the Geometry: Limit options pane.

Ellipse Sides
Specifies the number of sides for the boundary of ellipse.
Valid values: Any value between 4 and 131072 (inclusive of both values)
Command-line option: elipseNumSides
Donut Sides
Specifies the number of sides for the boundary of donut objects.
Valid values: Any value between 4 and 131072 (inclusive of both values)
Command-line option: donutNumSides
Max Vertices
Use the Max Vertices field to specify the maximum number of coordinates for polygons and paths in Stream. Export – Stream divides polygons and paths in DFII that have vertices more than or equal to maxVertices into smaller objects.
Polygons and paths are stored differently in Design Framework II and Stream formats. The DFII database does not store both the start and end points of a polygon because they are the same point. The Stream format requires that both points be stored individually. The maximum limit imposed by the GDSII format is 200 and that by the Stream format is 8191. Therefore, the Stream/GDSII reader writer of each EDA vendor is responsible for handling restrictions imposed by their databases with this option.
The largest DFII polygon or path Export – Stream can process a maximum of 8191 vertices, which translates into 8191 Stream vertices.
Command-line option: maxVertices
Via Cut Aref Threshold
While translating vias, XStream Out writes BOUNDARY record for intermediate cut layer repeatedly based on the ‘Row’ and ‘Column’ values with which the device is instantiated. For example, if a via instance has M rows and N columns for the cut layer, the corresponding GDS will have MxN BOUNDARY records representing this cut layer. For large values of MxN, the size of the GDS file can grow quite large due to this reason.
The viaCutArefThreshold option provide the flexibility of representing the cut layer geometry through AREF record in the GDS file. By default, XStream Out does not array the cut layer geometry. When used with non default values (+ve integers), if a via instance has non default cut layer pattern and Row * column >= viaCutArefThreshold, Streamout writes the regularly sized and spaced cut layers through AREF record in the GDS file by introducing an additional level of hierarchy and in turn reduces the GDS file size.
Use the Via Cut Aref Threshold field to specify the number of cut layers for the array.
Command-line option: viaCutArefThreshold
DB Units Per User Units
Use the DB Units Per User Units field to scale the design during translation, which enables XStream Out to write the UNITS section and the geometry in the output GDSII/Stream as per the new value. By default, the value of DBUPerUU in the technology information is used.
Valid values: Greater than or equal to 1
Snap to Grid
The Snap to Grid option adjusts the coordinates of geometric objects to coincide with the grid resolution. However, this option can shift data from the original Stream grid, resulting in a loss of precision.
Command-line option: snapToGrid
Geometry: General Options
This section describes options on the Geometry: General options pane.

Do Not Translate TextDisplays
Select the Do Not translate text displays option if you do not want to translate text displays into Stream files. By default, XStream Out translates the text displays into Stream files.
Command-line option: noOutputTextDisplays
Do Not Translate Unplaced Instances
Unplaced instances are not visible in the Layout Editor. Therefore, if needed, select the Do Not Translate Unplaced Instances option to prevent these instances from getting translated during XStream Out.
Command-line option: noOutputUnplacedInst
Do Not Translate Lines
Select the Do Not Translate Lines option if you want to ignore the lines during translation. By default, lines are translated as zero-width paths.
Command-line option: ignoreLines
Ignore Zero Width Paths
Use the Ignore Zero Width Paths option to ignore the translation of zero-width path. If you select this option, zero-width paths are ignored, otherwise they are translated as lines.
Command-line option: ignoreZeroWidthPathSeg
Convert Pin to
Use the Convert Pin to option to control the translation of the pins present in an OpenAccess design to Stream format. During XStream Out, pins can either be translated as geometries or text, or be ignored. Use the options described in the table below to specify whether pins are translated as labels or instances, or are ignored by the translator.
Command-line option: convertPin
Table 2-1 Convert Pin to Options
| Option | Label Map File | Output |
|---|---|---|
| geometry | ||
| text | ||
| geometryAndText | ||
| ignore | ||
Pin Label Purpose
Use the Pin Label Purpose option to export pin labels corresponding to the specified purpose. Pin labels are exported according to the layer mapping for the layer on which the pin is created and the specified purpose.
This option works only when Convert Pin to is set to geometryAndText or text.
-
There are two pins in a cellview with one pin each on
M1:drawingandM2:drawing. -
A layer-map file contains the following entries:
M1 drawing 1 1
M2 drawing 2 1
M1 pin 2 10 -
Convert Pin to option is specified as
geometryAndText.
In this case, during XStream Out translation:
Convert Pcell Pin to
Use the Convert Pcell Pin to option to control the translation of the pins present in the Pcell submaster to Stream format. This option overrides the value of convertPin for the Pcell submaster. However, if the convertPcellPin option is not specified, value of convertPin is considered.
During XStream Out, pins can either be translated as geometries or text, or be ignored. For information on specifying whether the pins in the Pcell submaster are translated as labels or instances, or are ignored by the translator, see the Convert Pin to Options table.
Command-line option: convertPcellPin
Convert Dot To
Use the Convert dot to option if you want to convert dots to nodes or polygons.
The Node option converts dots to nodes.
The Polygon option converts dots to polygons.
The Ignore option ignores the dots during translation.
Command-line option: convertDot
Messages Options
Use the Messages options pane to specify the information and warning message IDs that you want to disable or convert.

Disable Info Message IDs
Use the Disable Info Message IDs field to specify list of information message IDs that you do not want to print. You can also specify message IDs of dependent tools in this field.
The information message IDs should be specified in numeric format and they should not be prefixed by any other character. For example, 4374. The list of information message IDs should be separated by a white space.
Alternatively, click the Message Browser button to display the
Disable Warning Message IDs
Use the Disable Warning Message IDs field to specify list of warning message IDs, separated by comma that you do not want to print. You can also specify message IDs of dependent tools in this field.
The warning message IDs should be specified in numeric format and they should not be prefixed by any other character. For example, 3075. The list of warning message IDs should be separated by a comma or white space.
Alternatively, click the Message Browser button to display the
Convert Info Message IDs to Warnings
Use the Convert Info Message IDs to Warnings field to specify list of information message IDs that you want to convert to warning messages. You can also specify message IDs of dependent tools in this field.
The information message IDs should be specified in numeric format and they should not be prefixed by any other character. For example, 4374. The list of information message IDs should be separated by a comma or white space.
Command-line option: infoToWarn
Alternatively, click the Message Browser button to display the
Convert Warning Message IDs to Errors
Use the Convert Warning Message IDs to Errors field to specify the IDs of warning messages that you want to convert to error messages. You can also specify message IDs of dependent tools in this field.
The warning message IDs should be specified in numeric format and they should not be prefixed by any other character. For example, 3075. The list of warning message IDs must be separated by a comma or white space.
Command-line option: WarnToErr
Alternatively, click the Message Browser button to display the
XStream Out Messages Forms
This sections describes the XStream In Message forms that are displayed when you click the respective Message Browser button.
XStream Out Info Messages Form to Disable Info Messages
This section describes options on the XStream Out Info Messages form that is displayed when you click the Message Browser button for the Disable Info Message IDs option.

Select check boxes of the XStream information messages listed in this form that you want to disable.
Use the Other IDs field to specify information message IDs of other dependent tools.
Click the Select All check box to select all message IDs.
Use the Cancel button to exit the XStream Out Info Messages form without saving any changes.
XStream Out Warning Messages Form to Disable Warning Messages
This section describes options on the XStream Out Warning Messages form that is displayed when you click the Message Browser button for the Disable Warning Message IDs option.

Select check boxes of the XStream warning messages listed in this form that you want to disable.
Use the Other IDs field to specify warning message IDs of other dependent tools.
Click the Select All check box to select all message IDs.
Use the Cancel button to exit the XStream Out Warning Messages form without saving any changes.
XStream Out Info Messages Form - Convert Information Messages to Warnings
This section describes options on the XStream Out Info Messages form that is displayed when you click the Message Browser button for the Convert Info Message IDs to Warnings option.

Select check boxes of the XStream information messages listed in this form to covert to warnings.
Use the Other IDs field to specify information message IDs of other dependent tools.
Use the Cancel button to exit the XStream Out Info Messages form without saving any changes.
XStream Out Warning Messages Form to Convert Messages to Errors
This section describes options on the XStream Out Warning Messages form that is displayed when you click the Message Browser button for the Convert Warning Message IDs to Errors option.

Select check boxes of the XStream warning messages listed in this form that you want to convert to errors.
Use the Other IDs field to specify information message IDs of other dependent tools.
Use the Cancel button to exit the XStream Out Info Messages form without saving any changes.
Report Options
This section describes options on the Report options pane.

Run Directory
The Run Directory field accepts the default directory for all the files you specify in the XStream Out form. If you want to read from or write to a file that is not present in the run directory, type the full path in the field for the file.
Use the directory browser to select the path of the run directory.
Default value: Current working directory
Output Directory
The Output Directory field enables you to specify the path of the output directory. The purpose of this field to output only the .gds file.
Command-line option: outputDir
Ignore Pcell Evaluation Failure
Select the Ignore Pcell Evaluation Failure option if you do not want XStream to halt upon any Pcell evaluation failure. If you do not select this option, XStream will halt upon any Pcell evaluation failure and an error message will be displayed.
Command-line option: ignorePcellEvalFail
Ignore Missing Cells
Select the Ignore Missing Cells option to ignore missing cells during translation and continue translation with a warning message displayed in the CIW.
Command-line option: ignoreMissingCells
Ignore Missing Vias
Select the Ignore Missing Vias option to ignore missing via definitions during translation and continue translation with a warning message displayed in the CIW.
Command-line option: ignoreMissingVias
Report Bad Polygons and Paths
The Report Bad polygons and paths option provides a way for reporting self intersecting paths, coincident or collinear paths, paths that have less than two coordinates, path with an invalid begin and end extension value, an open polygon, coincident or collinear polygons, and a polygon with self-intersecting points. However, using this option can cause a degradation in performance.
Command-line option: checkPolygon
In case of XStream Out, if an OpenAccess design has path with octagonal extensions then these paths are mapped to PATHTYPE1, which is circular path end according to the Stream/GDSII format. You can retain the geometry of these paths by using the Output Paths as Polygon option.
In case of XStream In, if a Stream/GDSII files has some PATH records with PATHTYPE1, which is circular path end according to the Stream/GDSII format, then these PATH records will be translated as paths with octagonal extensions. There could be a potential problem which should be corrected at the source of the Stream/GDSII file.
Report Precision Loss
The Report Precision Loss option gives you an error message if there is any precision loss while scaling a design.
Command-line option: reportPrecisionLoss
Backup GDS and Log Files
Select the Backup GDS and Log Files option if you want to create a backup of the GDS and log files.
Command-line option: backGdsLogFiles
General Options

This section describes options on the General options pane.
User Skill File
The User Skill File field lets you specify a file that consists of user-defined SKILL routines. Using this file, you can specify mapping mechanism for cell names, layers, font through the use of programming routines written in SKILL.
In order to load all the required SKILL procedures in a single file, use only one SKILL file during translation. The SKILL file is searched with respect to the run directory if complete path of the SKILL file is not specified. For more information, see For more information, see Chip Finishing Flow video.
db, dd, tech, cst, abe, vfo (vfo.cxt), and pas (pdkutils.cxt) SKILL functions. Application specific functions such as le, hi, sch, lx, and via are not supported.
Command-line option: userSkillFile
Via Map File
Use the Via Map File field to specify a via map file. The via map file maps the Structure names from the Stream file to the corresponding viaDef names in the input technology library. This via map file can be used to recreate the original vias during subsequent Stream Ins. For more information on the via map file, see Via Map File.
Command-line option: viaMapFile
Cell List File
The Cell List File field enables you to specify a file containing a list of cell names. The cell names in a cell list file is displayed in the following format:
<libName> <cellName> <viewName> <output GDSII file name>
For example, the Cell List File can be specified as:
<Lib1> <cell1> <view1> <outGDS1>
Command-line option: cellListFile
<cellName>. However, if you only specify <cellName>, then also XStream Out will consider this entry as a valid entry.Translate Entire Hierarchy
Use the Translate Entire Hierarchy option to translate the entire design hierarchy.
Translation Depth
Use the Translation Depth field to control the depth of the design hierarchy during XStream Out. XStream Out stops the translation process at the hierarchy level indicated by this option. The hierarchy depth value applies to all the top cells getting translated. This option is enabled only if the Translate Entire Hier option is deselected.
Command-line option: hierDepth
Example 2-17 Translating cells by using the Translation Depth option

The above hierarchy shows structures A, B, C, D, E, F, G, and H placed at different levels. When structure C is selected as the top cell name and the hierarchy depth is selected as 1, the structures C, D, and F are translated.
Instance of E will first be translated as SREF inside structure D and then be translated to the Stream file, but its structure information is ignored. Structure H is ignored and is not translated.
By default, the entire hierarchy is translated.
Pin Attribute Number
Use the Pin Attribute Number field to preserve pin connectivity information. For more information, see Preserving Pin Connectivity Information.
Command-line option: pinAttNum
Label Case Sensitivity
Use the Label Case Sensitivity option to specify if XStream Out changes the casing of letters in the text labels. The following options are available:
- lower - The lower option translates the text labels to lowercase. For example, the label Obj1 becomes obj1.
- upper - The upper option translates the text label to uppercase. For example, the label Obj1 becomes OBJ1.
- preserve - The preserve option translates text labels without changing case. For example, the label Obj1 remains Obj1.
Command-line option: labelCase
Stream Version
Use the Stream Version field to specify the Stream version to be used for XStream Out. The three options are Three, Five, and Six. By default, rectangles are written as boundary records. If you need XStream Out to write the BOX records, use the Output Rectangles as Box Records. If you use Stream version 3, all rectangles are written as boundary records because Stream version 3 does not support BOX records.
In addition, Stream version 3 does not support variable extensions for paths. For example, consider the following Stream output when the Stream Version is set to Five.
PATHLAYER-0 DATATYPE-0 PATHTYPE 4 WIDTH 1000 BGNEXTN=2000 ENDEXTN=3000 XY=(0,0) (5000,0) ENDEL
For the same path, XStream gives the following Stream output if the Stream Version is set to Three.
PATHLAYER-0 DATATYPE-0 PATHTYPE 0 WIDTH 1000 XY=(-2000,0) (8000,0) ENDEL
Command-line option: strmVersion
For more information on different Stream versions, see Differences in Stream Format Versions.
Text Namespace
Use the Text Namespace field to specify the namespace mapping for pin labels or textDisplays associated with the pins. This option enables you to specify the name space in which the TEXT records of the Stream file will be.
For consistency, any of the OpenAccess namespaces (except OS namespaces like oaUnixNS and oaWinNS) can be specified. The valid arguments for this option are native, cdba, lef, def, verilog, vhdl, spef, spice, and spf. The default option is cdba.
Command-line option: strmTextNS
For example, if a pin label in the input design is bus<7> and you specify verilog namespace, it will be translated in the Stream file as bus[7].
| Type | Native | VHDL | Verilog | CDBA | LEF/DEF | SPEF | SPF | SPICE |
|---|---|---|---|---|---|---|---|---|
Let’s consider another example, if a pin label in VHDL is bus(7) and you specify CDBA namespace, then it will be translated in the Stream file as bus<7>.
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.
Ignore Current Timestamp
Use the Ignore Current Timestamp option to ignore the current timestamp while exporting GDS.
- Time stamp is not added as a suffix to the standard via and Pcell names. As a result, their names do not change every time you generate the GDS.
- Exported GDS is time-independent. This means that time information is not added to the exported GDS and therefore, contents of GDS do not change every time you run XStream Out.
Command-line option: ignoreCurrentTimestamp
Show Completion Message Box
The Show Completion Message Box check box enables you to display the Stream out translation complete message box with the number of errors and warnings after the translation is completed. The state of this check box depends on the value of the xstShowCompletionMsgBox SKILL variable, which is t by default.
XStream Out Editor Forms
This section discusses the following XStream Out Editor Forms:
- XStream Out Layer Map File Editor Form
- XStream Out Object Map File Editor Form
- XStream Out Cell Map File Editor Form
- XStream Out Reference Library File Editor Form
- XStream Out Property Map File Editor Form
- XStream Out Font Map File Editor Form
XStream Out Layer Map File Editor Form
This section describes options on the XStream Out Layer Map File Editor form that is displayed when you click the Editor button for the Layer Map option.

Add Row
Click the Add Row button to create a new layer mapping record.
For more information on columns in a layer mapping record, see Layer Map File.
Use the Layer Name field to specify a DFII layer that you want to translate to the Stream format.
The number of layers present in this option are taken from the technology file.
Use the Purpose Name field to specify a DFII purpose that you want to translate to the Stream format.
The number of purposes present in this option are taken from the technology file.
Use the Stream Layer field to specify the Stream layer name to which DFII layer name has to be translated.
Use the Stream Datatype field to specify the Stream type to which DFII purpose name has to be translated.
Use the Material Type field to specify the OpenAccess material type to which you want to map the Stream type.
Use the Mask Number field to specify the OpenAccess mask number to which you want to map the Stream type.
Use the Qualifier field to specify the OpenAccess qualifier to which you want to map the Stream type.
Use the Photo Mask Color field to specify the photo mask color of the layer.
Use the Color State field to specify the color state of the layer.
The Photo Mask Color and Color State fields are visible only if Coloring Mode is enabled. See, Coloring Mode.

To hide either or both Material, Mask Number, and Qualifier columns, right-click on the column heading row. Next, clear the check box of the column you do not want to display.
Delete Row
Click the Delete Row button to delete an existing layer mapping record.
Load
Use the Load option to load a new layer map file. You can specify multiple layer name map files by using the Load file option iteratively. Using a layer map file, you can map OpenAccess layer name and purpose name pairs to Stream layer number and Stream data type pairs. If you specify an invalid file name, a warning message is generated and the file name is ignored.
The path specified for the layer map file can be absolute or relative to the run directory. For more information, see Layer Map File.
Save As and Exit
Use the Save As and Exit button to the save the mapping information in a new file and exit the layer map file editor.
Save and Exit
Use the Save and Exit button to the save the mapping information in the current file and exit the layer map file editor.
Cancel
Use the Cancel button to XStream Out Layer Map File Editor form without saving any changes.
XStream Out Object Map File Editor Form
This section describes options on the XStream Out Object Map File Editor form that is displayed when you click the Editor button for the Object Map option.

Add Row
Click the Add Row button to create a new object mapping record.
For more information on columns in an object mapping record, see Object Map File.
Use the Object Name field to select the name of the object to be mapped.
Use the Sub Object Name field to select the name of the sub object to be mapped.
The Layer Name field is displayed only when the Object Name is specified as layerBlockage. Use the Layer Name field to specify the OpenAccess layer name to which you want to map the Stream layer.
Use the Stream Layer field to specify the Stream layer number for the OpenAccess object. By default, the Stream layer number is specified as 0.
Use the Stream Type field to specify the Stream datatype for the OpenAccess object. By default, the Stream datatype is specified as 0.
Use the Photo Mask Color field to specify the photo mask color of the layer.
The Photo Mask Color field is visible only if the Coloring Mode option is enabled. See Coloring Mode)
A one-time warning will be displayed if the layer/object map file has color entries, but the Coloring Mode is not enabled. In addition, these entries will not be visible on the Layers and Object tabs. Also, these entries will be ignored during translation. However if you enable the Coloring Mode, then these entries are visible.
Delete Row
Click the Delete Row button to delete an existing object mapping record.
Load
Use the Load button to load the object map file. An object map file is used for preserving OpenAccess objects. If you specify an invalid file name, a warning message is generated and the file name is ignored.
The path specified for the object map file can be absolute or relative to the run directory. For more information, see Object Map File.
Save As and Exit
Use the Save As and Exit button to save the object mapping information in a new file and exit the object map file editor.
Save and Exit
Use the Save and Exit button to save the object mapping information in the current file and exit the object map file editor.
Cancel
Use the Cancel button to exit the XStream Out Object Map File Editor form without saving any changes.
XStream Out Cell Map File Editor Form
This section describes options on the XStream Out Cell Map File Editor form that is displayed when you click the Editor button for the Mapping: Cell Mapping Options option.

Add Row
Click the Add Row button to create a new cell mapping record.
For more information on columns in a cell mapping record, see Cell Name Map File.
Use the Library field to select a library from which you want to translate a design to OpenAccess. All libraries present in the Library field are a list of reference libraries present in the cds.lib file.
Use the Cell option to select a library cell that you want to translate to the Stream format. For example, in the above figure, cell M1_M2 has been selected from library techLib for translation.
Use the View option to select a view of the specified cell that you want to translate to the Stream format. In the above figure, view via of cell M1_M2 will be translated to the Stream format.
Use the Stream Name field to specify the Stream file name in which you want to translate the selected library, cell, and view.
Delete Row
Click the Delete Row button to delete an existing cell mapping record.
Load
Use the Load button to load a new cell name map file. A cell name map file contains a table that maps cellview names in the OpenAccess database to structure names in the Stream file.
The path specified for the cell name map file can be absolute or relative to the run directory. For more information, see Cell Name Map File.
Save As and Exit
Use the Save As and Exit button to save the cell mapping information in a new file and exit the cell map ffile editor.
Save and Exit
Use the Save and Exit button to save the cell mapping information in the current file and exit the cell map file editor.
Cancel
Use the Cancel button to exit the XStream Out Cell Map File Editor form without saving any changes.
XStream Out Reference Library File Editor Form
This section describes options on the XStream Out Reference Library File Editor form that is displayed when you click the Editor button for the Ref Lib File Name option.

Add
Use the Add arrow button to add libraries to the Reference Libraries field.
The Reference Libraries field is used to specify logical library names that you want to consider as reference libraries. The libraries specified in this field should be present in the cds.lib file. Otherwise, they are not considered as reference libraries.
During XStream Out, when you search for master cellviews of instances, reference libraries are searched in the same order as specified in the Reference Libraries field. If any of the specified libraries do not exist in the cds.lib file, an error message is displayed.
Remove
Use the Remove button to remove libraries from the Reference Libraries field.
Move Up
Use the Move Up arrow button to move up selected reference libraries in the Reference Libraries list on the right. This helps you arrange reference libraries in order of preference.
Move Down
Use the Move Down arrow button to move down selected reference libraries in the Reference Libraries list on the right. This helps you arrange reference libraries in order of preference.
Load
Use the Load button to load the text file containing the list of reference libraries. When you specify the text file, the path and the text file name is displayed in the blank field above the Load button.
Save As and Exit
Use the Save As and Exit button to save the reference library information in a new file and exit the reference library file editor.
Save and Exit
Use the Save and Exit button to save the reference library information in the current file and exit the reference library file editor.
Cancel
Use the Cancel button to exit the XStream Out Ref Lib File Editor form without saving any changes.
XStream Out Property Map File Editor Form
This section describes options on the XStream Out Prop Map File Editor form that is displayed when you click the Editor button for the Prop Map File Name option.

Click Add Row button to create a new property mapping record.
For more information on columns in a property mapping record, see Property Map File.
Use the Property Name field to specify the property name that you want to map to the Stream format.
Use the Object Type option to select the object that you want to translate to the Stream format. The supported object types are: Arc, Dot, Ellipse, Line, Path, Polygon, Rect, Text, ArrayInst, ScalarInst, PathSeg, Route, Marker, Row, AreaBoundary, PRBoundary, SnapBoundary, ClusterBoundary, AreaBlockage, LayerBlockage, AreaHalo, Pin, stdVia, and customVia.
Use the Property ID field to specify the Stream ID on which you want to map the selected object type and the property name.
Use the Property Value Only format specifier to export the specified propertyName's value of an objectType as the value of the corresponding Stream attribute specified in the mapping record to the GDS file. If Property Value Only is specified in the property map file, XStream Out ignores the Property Value Only defined in the form.
Use the Property Separator format specifier to specify a property separator.
Default value: The default property separator is a comma ‘,’.
Delete Row
Click the Delete Row button to delete an existing property mapping record.
Load
Use the Load button to load a property map file. A property map file preserves properties associated with OpenAccess objects. If you specify an invalid file name, a warning message is generated and the file name is ignored.
The path specified for the log file should be a valid file path. It can be absolute or relative to the run directory. For more information, see Property Map File.
Save As and Exit
Use the Save As and Exit button to save the property map information in a new file and exit the property map file editor.
Save and Exit
Use the Save and Exit button to save the property map information in the current file and exit the property map file editor.
Cancel
Use the Cancel button to exit XStream Out Prop Map File Editor form without saving any changes.
XStream Out Font Map File Editor Form
This section describes options on the XStream Out Font Map File Editor form that is displayed when you click the Editor button for the Font Map File Name option.

Use the drop-down lists to create direct mapping for selected fonts.
Load
Use the Load button to load a new text font map file for font mapping. You use a text font map file to map Stream text font numbers to OpenAccess text font names. If you specify an invalid file name, a warning message is generated and the file name is ignored.
The path specified for the text font map file can be absolute or relative to the run directory. For more information, see Text Font Map File.
Save As and Exit
Use the Save As and Exit button to save the font mapping information in a new file and exit the font map file editor.
Save and Exit
Use the Save and Exit button to save the font mapping information in the current file and exit the font map file editor.
Cancel
Use the Cancel button to exit XStream Out Font Map File Editor form without saving any changes.
XStream Out Option Names in GUI and Template File
The following table provides a list of all the XStream Out GUI options and their corresponding names in the template file. To view the sample template file, see .
| Name in the Template File | XStream Out GUI Options |
|---|---|
|
Cell Map File - Load |
|
|
Fonts Map File - Load |
|
|
Label Case Sensitivity (preserve, upper, lower) |
|
|
Use the Cancel button to exit XStream Out Font Map File Editor form without saving any changes. |
|
|
Layer Map File - Load |
|
|
Object Map File - Load |
|
|
Property Map File - Load |
|
|
Reference Library Map File - Load |
|
You can also access and input values in XStream GUI using SKILL commands. To populate values in Stream Out form, you need to enter the
All the options listed above are valid for virtualMemory and showCompletionMsgBox are valid for command line executable or batch process.
Seeding the XStream Out GUI
You can use the following methods to set default values for a user:
-
Using XST_OUT environment variable
You can assign the XStream Out template file as a value of the XST_OUT shell environment variable.
For example:envSetVal( "xstream" "XST_OUT" 'string "demo.txt" )
setenv XST_Out "demo.txt":
Sample XStream Out option template file:======================
pinAttNum "100"
summaryFile "xStreamOut.sum"
replaceBusBitChar
======================
-
Using streamOutKeys SKILL list
You can define a set of option values to load into the XStream In form in thestreamOutKeysSKILL list. For this, define the pre-seeding options in the .cdsinitfile because the system automatically loads this file when you start Virtuoso.
The following is a sample streamOutKeys SKILL list:
;***************************************************************
; Copyright (C) 2001 - 2018 *
; Cadence Design Systems Inc. All Rights Reserved. *
;***************************************************************
;
;**************************************************************
;
; filename : streamOut.il
;
;**************************************************************
streamOutKeys=list(nil
'hierDepth "32767" ;- (0-32767) - Hierarchy Depth Limit
'strmTextNS "cdba" ;- Text NameSpace
'viaCutArefThreshold "0" ;- Write a STRUCT if the number of cuts are more the specified
'arrayInstToScalar nil ;- Convert Arrays to Scalar Instances
'backupGdsLogFiles nil ;- Backup GDSII and Log Files
'case "preserve" ;- preserve | upper | lower - Case Sensitivity
'cellListFile "" ;- The Cell List File Name
'cellMap "" ;- Cell Map File Name
'cellNamePrefix "" ;- Prefix to be added to each STRUCT
'cellNameSuffix "" ;- Suffix to be added to each STRUCT
'checkPolygon nil ;- Report Bad Polygons
'convertDot "node" ;- polygon | node | ignore - Convert Dots to
'convertPcellPin "geometry" ;- geometry | text | geometryAndText | ignore - Convert Pcell Pin to
'convertPin "geometry" ;- geometry | text | geometryAndText | ignore - Convert Pin to
'diagonalPathToPolygon nil ;- Convert Paths with non-orthogonal segments to polygons
'doNotPreservePcellPins nil ;- Do not Preserve PCell Pins
'donutNumSides "64" ;- Number of sides for the BOUNDARY of donut
'ellipseNumSides "64" ;- Number of sides for the BOUNDAR of ellipse
'dbuPerUU "1000" ;- DB Units Per User Units
'reportPrecisionLoss nil ;- Report Precision Loss in Scaling
'flattenPcells nil ;- Convert PCells to Geometry
'flattenPcellsExclusionFile "" ;- A file specifying list of Pcells to exclude from flattening
'flattenViaShapesToViaPurp nil ;- Flatten Vias' Shapes to Via Purpose
'flattenVias nil ;- Convert Vias to Geometry
'fontMap "" ;- Font Map File Name
'gdsCellNameLength "0" ;- Truncate GDS Cell/STRUCT name length to specified value
'ignoreCurrentTimestamp nil ;- Ignores current timestamp
'ignoreLines nil ;- Ignores Lines During Translation
'ignoreMissingCells nil ;- Ignores Missing cellViews During Translation and Continue Translation
'ignoreMissingVias nil ;- Ignores Missing standard/custom vias During Translation and Continue Translation
'ignorePcellEvalFail nil ;- Ignores the PCell Evaluation Failure
'ignoreTopCellPrefixSuffix nil ;- Ignores cellName Prefix and Suffix for topCell
'ignoreZeroWidthPathSeg nil ;- Ignores zero width PathSeg during translation
'ignoreObjectMapFromTech nil ;- Ignores object map file from technology
'infoToWarn "" ;- Treat the Specified Info Messgaes Ids as the Warnings
'labelCase "preserve" ;- preserve | upper | lower - Label Case Sensitivity
'labelDepth "1" ;- Hierarchical depth to add labels to
'labelMap "" ;- Label Map File Name
'layerMap "" ;- Layer Map File Name
'library "LIB" ;- Library Name
'logFile "strmOut.log" ;- Log File Name
'maxVertices "200" ;- Maximum Vertices in Path/Polygon
'mergePathSegsToPath nil ;- Merge the Connected Pathsegs to Path
'noConvertHalfWidthPath nil ;- Do not Convert The Half Width Path to Boundary
'noInfo "" ;- Do not Print the Specified Info Messages Ids
'noObjectProp nil ;- Do not Write Special OA Object Properties
'noOutputTextDisplays nil ;- Ignores Text Display Objects
'noOutputUnplacedInst nil ;- Ignores the Unplaced Instances
'noWarn "" ;- Do not Print the Specified Warning Messages Ids
'objectMap "" ;- Object Map File Name
'outputDir "." ;- The Output Directory for Stream File
'pathToPolygon nil ;- Convert Paths to Polygons
'pinAttNum "0" ;- (0-127) - Stream Attribute Number for Preserving Pins
'propMap "" ;- Property Map File Name
'propValueOnly nil ;- Output Property Values Only
'rectToBox nil ;- Output Rectangle as BOX
'refLibList "" ;- Referrence Library List File Name
'replaceBusBitChar nil ;- Replace "<>" With "[]"
'respectGDSIINameLimit nil ;- Respect GDSII limits
'runDir "." ;- Run Directory
'scale "1.00000" ;- Design Scaling Factor
'showCompletionMsgBox t ;- Show the Completion Message Box
'snapToGrid nil ;- Snap XY to Grid Resolution
'strmFile "top.gds" ;- Stream File Name
'strmVersion "5" ;- 3 | 5 | 6 - Stream Version
'subMasterSeparator "_CDNS_" ;- Separator to used for sub-master naming
'summaryFile "" ;- Summary File Name
'techLib "" ;- Technology Library Name
'topCell "top" ;- Top Cell(s) to Translate
'translateUnmappedLPP nil ;- Allow undefined LPP to be translated by incrementally mapping LPP using layerMap file, SKILL hook poLayerMap, and automatic layer mapping
'userSkillFile "" ;- Users' Skill File Name
'verbose nil ;- Generate detailed information in the log and summary files
'viaMap "" ;- Via Map File Name
'view "layout" ;- View Name(s) to Translate
'virtualMemory nil ;- Do Stream Out from Virtual Memory
'warnToErr "" ;- Treat the Specified Warning Messgaes Ids as the Errors
'wildCardInCellMap nil ;- Wild Card in Cell Map
)
It is possible to combine both the pre-seeding methods but Cadence recommends to avoid using both methods at the same time. If you combine both the methods, streamOutKeys SKILL list takes precedence over template file.
Variant Generation during XStream Out
XStream Out generates the color variant that is used to support unlocked color shapes. The effective color of the unlocked color shapes is hierarchy and context dependant. This implies that the unlocked color shapes in a cell can have different colors based on the hierarchy at the topCell and its context. In addition, a cell with unlocked color shapes can have many color variants based on the effective color of the unlocked shapes, and XStream Out has to write all those color variants in order to preserve the effective color.
Therefore, to have a GDS with effective color, the following options are required:
-
The
-topCelloption to specify the hierarchy and context. -
The
-enableColoringoption to enable the coloring mode. - The layer map file with the unlocked color mapping.
The array instances can be written as multiple SREF records in the GDS file whenever there is a need for variant generation. This is because both the -enableColoring and -topCell options are specified and the layer map file has unlocked mapping entries. Therefore, different color variants might need to be generated for each element of an array.
In addition, the GDS can be generated without effective color or hierarchy or context-specific color for the unlocked color shapes. This is because the -topCell option is not specified but the -enableColoring option is specified and the layer map file has unlocked mapping entries. Therefore, the hierarchy context should be defined using the -topCell option.
In case of the unlocked color state, XStream Out also saves the information related to the color variant. Let us consider a scenario where a cell has two rectangles with unlocked green and red colors. Now, in the top cell, the placement of this cell may cause violation of the minimum color distance constraint. Due to this, the effective color of the shapes may change and color variants of the same instance are generated accordingly. XStream Out will be able to save this information and write color variants as different structs in the GDS file.
Consider the following layout where the rectangle is drawn on the Metal1:drawing layer-purpose pair.

Consider the following entries in the layer map file: Metal1 drawing 1 1 mask1Color unlocked
Metal1 drawing 2 1 mask1Color unlocked
XStream Out will write color variants of the instance, LeafCell, as different structs in the following GDS file:
BOUNDARY LAYER=1 DATATYPE=1 XY=... ENDEL
BOUNDARY LAYER=2 DATATYPE=1 XY=... ENDEL
BOUNDARY LAYER=1 DATATYPE=1 XY=... ENDEL
BOUNDARY LAYER=1 DATATYPE=1 XY=... ELDEL
SREF SNAME=LeafCell_0 X=... Y=... ENDEL
SREF SNAME=LeafCell_1 X=... Y=... ENDEL
Hierarchical Coloring during XStream Out
In XStream Out, hierarchical mode is the mode when you are translating a fully colored hierarchical chip and are exporting colors on all the shapes. In a hierarchical design, effective colors are shifted and color variants are generated for the cells.
To specify the hierarchical coloring mode during XStream Out, specify -enableColoring –topCell <cellname> during translation, and include both locked and unlocked mapping specifications in the layer map file.
If the shape that is being translated belongs to the pre-colored shape categories, these shapes will be mapped according to the locked specifications in the layer map file.
-enableColoring and -topCell, and the layer map file determine the multi-patterning mode and behavior of translation using XStream Out.Pre-coloring during XStream Out
In XStream Out, if you are translating a full chip starting with the top-cell instead of individual cells, you can also export coloring on a set of pre-colored shapes, and map those shapes based on the locked color specifications specified in the layer map file.
The pre-colored shapes are categorized as:
-
Locked shapes, which are the shapes with
lockedcolor state. These shapes are user-specified colored and locked shapes. - Anchored shapes
When translating the coloring information on a hierarchical chip, XStream Out, uses the effective color of the shapes by default. One exception to the default behavior is when the color state of the shape is locked. In this case, the effective color on the shape should always be the same as the assigned color, so that the translator can use the assigned color instead.
To specify the pre-coloring mode during XStream Out, specify -enableColoring -topCell <cellname> during translation and include the locked mapping specifications in the layer map file.
AREF Record Generation Behavior in XStream — Deviation from the Stream Format
For rotated arrayed instances, the AREF records generated by XStream in the output Stream file do not conform to the Stream format. This has been happening since many years and the data generated by XStream has become an industry standard. XStream as well as the third-party Stream readers recognize it as desired and are able to read this data correctly.
In Stream format, an AREF is represented as described below.
|
Displacement from the origin by the inter-column spacing times the number of columns. |
|
|
Displacement from the origin by the inter-row spacing times the number of rows. |
Consider the following example of an arrayed instance

The arrayed instance is placed at zero angle as shown in Figure1. It is represented by the following information in the Stream format:
COL= 4
ROW= 3
ANGLE=0
XY0 = P0 (0,0)
XY1 = P1(15000,0)
XY2 = P2(0,8000)
XStream writes this information correctly in the Stream file.
Figure 2 shows the same arrayed instance rotated at an angle of 90 degrees. Notice that the points P0, P1, and P2 have moved to P0’, P1’, and P2’. In the Stream format, the coordinates should be represented by the following information:
COL= 4
ROW= 3
ANGLE=90
XY0 = P0 (0,0)
XY1 = P1(15000,0)
XY2 = P2(0,8000)
But XStream writes the displaced points after rotation instead of writing the original points. The following information is written by XStream:
COL= 4
ROW= 3
ANGLE=90
XY0 = P0’ (0,0)
XY1 = P1’ (0, 15000)
XY2 = P2’ (-8000, 0)
GZip Support
With increasing complexity of designs, the size of the GDSII file is also increasing. As a result, these files take up a lot of disk space. To overcome this problem GDSII files can be kept in compressed format. But this introduces extra step of gzip/gunzip while importing and exporting using XStream In and XStream Out.
XStream In
You can import a compressed GDSII file, which is in the gzipped format. The only condition is that the input compressed GDSII file name should end with the .gz extension. For example, to compress strmin.gds, append .gz to the file name as follows: strmin.gds.gz.
XStream Out
You can export to a compressed GDSII file, which is in the gzipped format. The only condition is that the output compressed Stream file name should end with the .gz extension. For example, to compress strmout.gds, append .gz to the file name as follows: strmout.gds.gz.
Fast Stream Out
You can use the Export Stream From VM option located in the File menu of Layout Editor to export your design that is currently open in the layout window. When you choose this option, translation starts immediately in Virtual Memory mode and XStream Out GUI is not launched.
This process considers the following arguments during translation from the current layout window:
-
The current library (
-library). -
The current cell (
-topCell). -
The current view (
-view). -
The Stream filename (
-strmFile), which is <topCell.gds>by default. Two SKILL environment variables strmFilenamePrefixand strmFilenameSuffixcontrol the prefix and the suffix of the GDS filename, respectively. If the GDS file already exists, it will be suffixed with_1,_2during export. -
The
layerMapandobjectMapfiles, if either one or both files are present in the technology, or if the self-technology library contains these files. -
The enableColoring
SKILL environment variable controls the value for Coloring Mode used during XOasis Out translation.
After the translation is complete, a message is displayed, informing you whether the translation has completed successfully or not. A detailed log is saved in the strmOut.log file.
For more information see, XStream Fast Export SKILL Environment Variables.
Layer Mapping in XStream
Layer mapping during XStream translation can be done by using the following ways:
- By using user-defined layer map file. (see Layer Map File)
-
By using the user-defined
piLayerMap/poLayerMapfunction in SKILL file - By performing automatic layer mapping. (see Automatic Layer Mapping)
- By using the techlibname.layermap file, if it is defined in the technology
techlibname.layermap file is system defined and is available in the technology by default. The translation process gives priority to user-defined input.Default Precedence for Layer Mapping
By default, XStream applies only one type of layer mapping at a time. Given below is the sequence in which it gives precedence or priority to the different methods used for layer mapping:
- If you provide a layer map file, the layer map file is used for layer mapping.
- If you provide a user-defined SKILL file, layer mapping is done using the piLayerMap/poLayerMap function defined in the SKILL file. This type of layer mapping is also referred to as dynamic layer mapping.
piLayerMap/poLayerMap SKILL function will not be considered in this case. -
If you do not provide a layer map file or SKILL file, XStream will automatically search for the
techlibname.layermapfile in the technology library. Additionally, in case of Incremental Technology Database (ITDB) hierarchy, XStream will traverse through all the layer map files in the hierarchy. If a layer map file is present in the technology library with some other name, it will not be detected by default. -
If both the layer map file and the SKILL file are not found, automatic layer mapping takes place.
Precedence for Layer Mapping when Translate Unmapped LPP is Selected
By default, XStream applies only one type of mapping during translation. Therefore, if you specify the layer map file or the SKILL file, the tool will refer to it, and perform the translation. In this case, any unmapped layers are ignored and not translated.
However, if you choose to translate unmapped LPPs, the tool will first look for and apply any user-defined mapping (layer file or SKILL file), based on the default precedence. Next, the tool will perform automatic layer mapping, which will then translate all unmapped layers also.
Automatic Layer Mapping
XStream uses number-based mapping to perform automatic layer mapping in XStream In and XStream Out.
Automatic Layer Mapping in XStream In
While performing automatic layer mapping, XStream In tries to use the strmLayer/strmType number for the dfIILayer:dfIIPurpose number and creates L<strmLayer>/P<strmLayer> (layer:purpose), if required.
For the reserved dfIILayer:dfIIPurpose number, it creates L<strmLayer>_XSTIN/P<strmType>_XSTIN dfIILayer/dfIIPurpose.
During XStream In, if you do not provide a layer map file, then for each Stream layer or Stream datatype present in the Stream file, a new layer-purpose pair is created in the technology file. For example, if Stream layer is 2 and Stream datatype is 3, then layer L2 and purpose P3 is created in the technology file. For every new layer-purpose pair, XStream In populates the techDisplays section of the technology file. The display packets are defined in the default display.drf file are used to display the newly created layer-purpose pair. XStream supports around 75 display packets. These include: y0 - y9, annotate - annotate9, hilite - hilite9, Unrouted - Unrouted9, y0Flt - y9Flt, designFlow - designFlow9, text - text2, device - device2, deviceAnt, deviceLbl, markerAno, markerInf, markerAck, markerSer, markerScr, markerCrt, and markerFat.
Also, if you select the Merge Purposes To Drawing option then all the undefined purposes are mapped to drawing.
Automatic Translation of Unmapped Layers in XStream In
Automatic layer mapping works differently in XStream In when you use the -translateUnmappedLPP option. In XStream In, all shapes on an unmapped strmLayer/strmType combination are mapped to L<strmLayer>_XSTIN:P<strmType>_XSTIN dfIILayer:dfIIPurpose.
For example, if there is an unmapped strmLayer/strmType combination 100/100, then all shapes on this will be mapped to dfIILayer:dfIIPurpose L100_XSTIN:P100_XSTIN.
Automatic Layer Mapping in XStream Out
By default, while performing automatic layer mapping, XStream Out tries to use the dfIILayer:dfIIPurpose number for the strmLayer/strmType number. For dfIILayer:dfIIPurpose L<strmLayer>_XSTIN/P<strmType>_XSTIN it uses strmLayer/strmType.
Automatic layer mapping works the same way when you use the -translateUnmappedLPP option to map unmapped layers during XStream Out.
For example, if there is an unmapped layer:
M1/drawing1 with the dfIILayer/dfIIPurpose number as 30/1, then, all shapes on M1/drawing1 will be mapped to strmLayer/strmType 30/1
However, if there is an unmapped layer:
L100_XSTIN:P100_XSTIN with a random dfIILayer/dfIIPurpose number, then, all shapes on L100_XSTIN/P100_XSTIN will be mapped to strmLayer/strmType 100/100.
Under certain conditions, the default automatic layer mapping during XStream Out might lead to collisions. During a collision, the shapes on two or more DFII layer/purpose might get translated to the same strmLayer/strmType.
Collisions during XStream Out can happen, if either of the following conditions is true:
-
The
dfIILayernumber ordfIIPurposenumber is greater than65535in the design. -
The
-translateUnmappedLPPoption is used and a layer map file with conflicting entries is defined.
To prevent collisions, automatic mapping is done differently when either of the above-mentioned conditions is true.
If dfIILayer number or dfIIPurpose number is greater than 65535 in the design, and if we have:
Shape s1 on M1/drawing with the dfIILayer/dfIIPurpose number 1/-1
Shape s2 on L65536/drawing with the dfIILayer/dfIIPurpose number 65536/-1
Then, s1 will be mapped to 1/0 and s2 will be mapped to 5000/0.
-
When the
dfIILayer/dfIIPurposenumber is lower than65535, default automatic mapping in which thedfIILayernumber is the same as thestrmLayeris done.Here, thedfIILayernumber forM1is1. Therefore, shapes1is mapped according to this number. -
When the
dfIILayer/dfIIPurposenumber is higher than65535, then non-default automatic mapping that starts from5000is performed. Shapes2is mapped according to this.
If -translateUnmappedLPP is used, and if we have:
Shape s1 on M1/drawing with dfIILayer/dfIIPurpose number 1/-1
Shape s2 on L10/drawing with dfIILayer/dfIIPurpose number 10/-1
And, the layer map file has the following entry:
Then, s1 will be mapped to 1/0 and s2 will be mapped to 5000/0.
-
When the
dfIILayer/dfIIPurposenumber is included in the layer map file, mapping is done as defined in the file. Shapes1is mapped according to this. -
Even when the
dfIILayernumber is lower than65535, default automatic layer mapping is not done because thedfIILayernumber10is used in the layer map file. Therefore, non-default automatic layer mapping that starts from5000is performed for shapes2.
After XStream Out, the mapping information is available in the xStrmOut_layermap.txt file. During automatic layer mapping, for each (layer, purpose) pair in OpenAccess design, if the layer number and purpose number are within the valid range for Stream (0 to 216-1), they are mapped to the corresponding Stream layer and datatype. Purpose drawing is mapped to purpose 0.
Also, those layer numbers and purpose numbers that are in the range of 216 to 232-1, are mapped to the available Stream layer and purpose in the range, 0 to 216-1.
xStrmOut_layermap.txt is not writable, then a new file xStrmOut_layerMap.userName.txt is generated. However, if xStrmOut_layerMap.userName.txt is also not writable, a new file xStrmOut_layermap.userName.n.txt is generated automatically and the mapping information is added to this file. Here, n stands for 1, 2, and so on. Using Map Files During Translation
Map files control the behavior of XStream In and XStream Out. Using map files, you can map layers, cellview names, fonts, and properties in the OpenAccess database to the Stream layers, structure names, Stream fonts, and attributes in the Stream file to each other. The mapping support by using the SKILL file is yet to be implemented.
The various types of map files that are used during translation are:
- Layer Map File
- Label Map File
- Text Font Map File
- Property Map File
- Cell Name Map File
- Via Map File
- Object Map File
Layer Map File
A layer map file is an ASCII file that maps the layer numbers and data types used in the Stream file to the layer-purpose pairs in OpenAccess, and vice-versa. You can provide multiple layer map files for mapping. In addition to mapping layers for translation, you can also map layers by merging many layers into a single layer.
Layer Map File Format and Conventions
A layer map file has the following format:
<Layer Name> <Purpose Name> <Stream Layer Number> <Stream DataType> [Material Type] [Mask Number] [Qualifier] [Photomask Color] [Color State]
This file must follow the conventions described below.
- It must have the following four mandatory fields:
- It can also include the following optional fields:
- The fields must be separated by one or more spaces or tabs.
- Each mapping record must be a single line.
- The Stream layer number and the Stream data type must be in the range 0 to 32767.
-
Any record starting with
;or#is considered a comment and is ignored.
Using Mandatory Fields In the Layer Map File
You can map a Design Framework II layer-purpose to more than one Stream layer and data type pair. To do this, separate the ranges with hyphens and the individual numbers and ranges with commas. The layer map file must contain all layers that occur in the data translation. Export - Stream converts only layers listed in the layer map file. (It does not convert layers that are not listed in the layer map file.) The following is an example of an Export - Stream layer mapping file:
| # DFII #Layer Name | DFII Layer-Purpose | Stream Layer Number | Stream Data Type |
|---|---|---|---|
The first entry in the above example, is the same as the following two entries:
| # DFII #Layer Name | DFII Layer-Purpose | Stream Layer Number | Stream Data Type |
|---|---|---|---|
Similarly, you can map more than one Stream layer to one Design Framework II layer-purpose pair. The following is an example of an Import - Stream layer map file:
| # DFII #Layer Name | DFII Layer-Purpose | Stream Layer Number | Stream Data Type |
|---|---|---|---|
The first entry in the above example, is the same as the following three entries:
| # DFII #Layer Name | DFII Layer-Purpose | Stream Layer Number | Stream Data Type |
|---|---|---|---|
Sample Layer Map File
#Open Access |
Open Access Purpose Name |
Stream |
Stream |
|
|
5 |
0 |
If you want XStream In to retain the different layer-purpose pairs mapped to the same Stream layer number and data type pair, update the layer name map file used during the XStream Out stage itself. Change either the Stream layer number or the Stream data type for all such layer-purpose pairs. Use the updated layer name file to again run XStream Out and then XStream In to obtain the desired results.
For example, if the layer map file looks like:
#OpenAccess |
OpenAccess Purpose Name |
Stream |
Stream |
|---|---|---|---|
where, metal1 and metal2 have the same Stream layer number and data type. Even though metal3 has the same Stream layer number but it differs from metal1 and metal2 in the Stream data type. So, XStream In translates the Stream layer number 2 with data type 0 only to the first layer-purpose pair mapped to this Stream layer and data type, that is, metal1 drawing. XStream In translates Stream layer number 2 with data type 1 to metal3 boundary.
Using Optional Fields In the Layer Map File
A layer map file can have Material Type, Mask Number, Qualifier, Photomask Color, and Color State optional fields.
- The layer map file format with optional fields work with both the command line and GUI.
- The translation of shapes is based on the layerMap entries.
- Material type and Mask number are considered during XStream In and ignored during XStream Out.
-
Qualifier is considered only during XStream Out and is ignored during StreamIn. Valid values for the
Qualifiercolumn arePin,floating,cutSize:<float>:<float>,ignoreLPP, andWSPRegionType. The complete mapping record is ignored during XStream In when theignoreLPPqualifier is used.
Here, qualifier:-
pinensures that the specified shape is a pin. The qualifier supports pins onto a different Stream layer datatype. (see Example for Qualifier Pin Shapes) -
floatingchecks if the specified shape is connected to any other shape. It fills onto a different Stream layer datatype.This qualifier is only valid for purposefillandfillOPC. -
cutsizeensures that the bbox of the given shape matches the specified cutsize. The qualifier enables mapping the via cuts with different cut sizes onto different Stream layer and Stream datatype. The cut sizes (height:width) are calculated from the bounding box of the shapes on a cut layer, whose material type iscut. This qualifier is valid only for materialcut,contactlessMetal, ortrim. (see Example for Qualifier cutsize) -
ignoreLPPignores the specified LPPs during mapping and does not display a missing LPP warning for them. This qualifier is not valid with any other optional field. The complete mapping record is ignored during XStream In whenignoreLPPqualifier is used (see Example for Qualifier IgnoreLPP) -
WSPRegionTypeenables the translation of Width Spacing Pattern (WSP) regions.
Syntax for usingWSPRegionType:
<OA layer> <OA purpose> <LayerNumber> <DataTypeNumber> [<WSPRegionType>]
Here,WSPRegionTypecan be:
WSPRegionType:user, which is created by the user
WSPRegionType:system, which is created by the system
When WSP entries are added to the layer map file, there should not be any other optional field. If any optional field is added, the entire entry is ignored.
XStream Out supports design-specific WSPDefs and multiple-WSPDefs per LPP. The translator exports the WSPDefName as a text record on the same LPP as the pattern region shape in the GDS file. (see Example for WSPRegionType)
-
-
The
Photomask ColorandColor Stateoptional fields are supported both in XStream In and XStream Out.-
Valid values for
Photomask Colorfield aremask1Color,mask2Color,mask3Color,mask4Color,mask5Color,mask6Color,mask7Color, andmask8Color -
Valid values for the
Color Statefield arelockedandunlocked. (see Example for Color Fields)
-
Valid values for
Allowed Combinations for the Mandatory and Optional Fields
-
<Material> -
<Material> <MaskNumber> -
<Material> <MaskNumber> <Qualifier> -
<Material> <Qualifier> -
<Qualifier> -
<
Material Type> <PhotoMaskColor> <ColorState> -
<
Material Type> <MaskNumber> <PhotoMaskColor> <ColorState> -
<
Material Type> <MaskNumber> <Qualifier> <PhotoMaskColor> <ColorState> -
<
Material Type> <Qualifier> <PhotoMaskColor> <ColorState> -
<
Qualifier> <PhotoMaskColor> <ColorState>
-
Example for Qualifier cutsize
The cases using different layerMap entries with the cutsize qualifier are listed below:
Let us assume a design has the following shapes on cut layer, Via1, and purpose, drawing:
-
R1: a rect with a bounding box of
0.5x0.5 -
R2: a rect with a bounding box of
1.0x1.0 -
R3: a rect with a bounding box of
2.0x4.0 -
R4: a rect with a bounding box of
4.0x2.0 -
P1: a polygon with a bounding box of
0.5x0.5 -
P2: a polygon with a bounding box of
1.0x1.0 -
P3: a polygon with a bounding box of
1.0x0.5 -
PA1: a path with a bounding box of
0.5x0.5 -
PA2: a path with a bounding box of
1.0x1.0 - Case 1:
In this case, all the shapes (R1, R2, R3, R4, P1, P2, P3, PA1, and PA2) are written on Streamlayer:datatype, 2:1.
Via1 drawing 2 2 cut cutSize:1.0:1.0
In this case, all the shapes with bounding box 1.0x1.0 (R2, P2, and PA2) are written on Streamlayer:datatype, 2:2. All other shapes use default mapping, therefore, R1, R3, R4, P1, P3, and PA1 will be written on Streamlayer:datatype, 2:1.
Via1 drawing 2 2 cut cutSize:1.0:1.0
In this case, all the shapes with bounding box 1.0x1.0 (R2, P2, and PA2) are written on Streamlayer:datatype, 2:2. All other shapes are dropped with a one-time warning message because default mapping is not provided.
Via1 drawing 2 3 cut cutSize:2.0:4.0
In this case, all the shapes with bounding box 2.0x4.0 and 4.0x2.0 (R3 and R4) are written on Streamlayer:datatype, 2:3. All other shapes are dropped with a one-time warning message because default mapping is not provided.
No mapping provided for Via1 drawing.
In this case, all the shapes are dropped with a one-time warning message because no mapping is provided.
Example for Qualifier Pin Shapes
Let’s assume you have pin shapes and some regular shapes on an LPP (layer-purpose pair). Now, if you want to Xstream Out only pin shapes, other than the regular shapes, on to a different Stream layer, then you can use the pin qualifier. For example, if layer map is:
then, all <M4 drawing> data should go on <8:1>. However, if you want the pin shapes on the same layer <M4 drawing> should go on Stream layer-datatype, <7:1>, then the following entry needs to be specified in the layer map.
The cases using different layerMap entries with the pin qualifier are listed below:
Let us assume you have the following entries in the layer map file:
Then, all regular shapes will go to Stream layer, <8:1>. Whereas, all pin shapes will go to <7:1>.
Let us assume you only have the following entry in the layer map file.
Then, all the shapes, including pin shapes will go to Stream layer, <8:1>.
Let us assume you only have the following entry in the layer map file.
Then, all pin shapes will go to Stream layer, <7:1>. All other shapes will be dropped.
Example for Qualifier IgnoreLPP
Let us assume you have the following entries in the layer map file:
Additionally, there are three shapes, one each on:
Then, the shape on m1 drawing will go to the Stream layer: data type <1 :1> and the shapes on the m2 drawing and m3 drawing LPPs will not be written in the GDS file. However, warning 35, which informs that objects in a specific LPP are ignored, will be displayed only for the shape on the m3 drawing. The warning will not be displayed for the shape on m2 drawing because the ignoreLPP qualifier is specified for this entry in the layer map file.
Example for WSPRegionType
Consider a layer map file with the following entries:
Metal1 localWSP 2 0 WSPRegionType:user
Metal1 localWSP 3 0 WSPRegionType:system
In this case, the first entry in the layer map file will be ignored during translation.
During Stream Out, translated regions are written to the GDS layer-datatype pair depending on their created type, user or system.
Currently, this feature is supported only by XStream Out. During XStream In, the create type attribute of a region is not restored. As a result, all region shapes in the GDS will appear as user created after GDS import.
Example for Color Fields
Metal1 drawing 1 1 mask1Color locked
Metal1 drawing 1 2 mask2Color locked
Metal1 drawing 1 3 pin mask2Color locked
Metal3 fill 5 1 metal floating
Via3 drawing 6 1 cut 6 cutSize:1.0:1.0
Enhanced Layer Mapping for XStream In
The layer map functionality is enhanced to set the color information on the created shape based on the mapping entry used for strmLayer or strmType. XStream In supports color mapping for both locked and unlocked color state, so that created shapes can have either locked or unlocked color state.
In the layer map file, XStream In considers all the color mapping entries, if the -enableColoring option is specified. Otherwise all the color mapping entries will be ignored and the warning message will be displayed.
The Photo mask color information, which is specified in an entry of the layerMap file is validated against the number of photo mask color in the technology library for the particular oaLayerName. In case there is any inconsistency in the entry of the layerMap file, then the entry will be ignored and the warning message will be displayed.
In addition, XStream In uses the color information of the mapped entry to set the color information on the created shapes. Therefore, in XStream In both the locked color shapes and unlocked color shapes can be created. Also, coloring can be done on the third party GDS with the color state as either locked or unlocked. Here, the key to differentiate the color information is strmLayer/strmType.
Enhanced Layer Mapping for XStream Out
The layer map functionality is enhanced to map color shapes to strmLayer or strmType based on the color information of the shape. XStream Out supports color mapping for both locked and unlocked color shapes, according to the mappings specified in the layer map file.
In the layer map file, XStream Out considers all the color mapping entries, if the enableColoring option is specified. Otherwise all the color mapping entries will be ignored and a warning message will be displayed.
The photo mask color information, which is specified in an entry of the layerMap file is validated against the number of photo mask color in the technology library for the particular oaLayerName. In case there is any inconsistency in the entry of the layerMap file, then the entry will be ignored and a warning message will be displayed.
oaLPP, then a warning will be displayed and the un-mapped shapes will be ignored.
XStream Out follows the following order to map the locked color shape on a specific strmLayer/strmType.
-
The entry with the Photo Mask Color and Color State fields of the shape will be considered. If such color aware mapping is not available for the
oaLPPwith specific color, then a warning will be displayed on per-shape basis. -
The entry without the Photo Mask Color and Color State fields will be considered. If non-color aware mapping is not available for that
oaLPP, then this un-mapped shape will be ignored and a warning will be displayed on per shape basis.
The color aware mapping will use the following order to consider the qualifier field:
-
Color Pin Mapping: The mapping entry with
Photomask Color,Color State, and Pin asQualifier. -
Color cutSize Mapping: The mapping entry with
Photomask Color,Color State, andcutSize:<float>:<float> asQualifier. -
Normal color mapping: The mapping entry with
Photomask ColorandColor State.
Non-Color aware mapping will use the following order to consider the qualifier field:
-
Pin Mapping: The mapping entry with Pin as
Qualifier. -
CutSize Mapping: The mapping entry with
cutSize:<float>:<float> asQualifier. -
Normal/default mapping: The mapping entry with only four must fields and without
Qualifierfield.
Label Map File
The label map file is an ASCII file that generates labels for the top level nets and terminals of a design. You use the -labelMap option to specify that labels be included during XStream Out. To XStream Out label information for nets and terminals that are present in the various levels in the hierarchy, you can use the -labelDepth option to specify the level in the hierarchy where label information will be streamed out.
The following table describes the two options:
Labels are created for each top level cell, or if the -labelDepth option is used, labels are created for each top level cell and its children down to the specified level of hierarchy. Labels are created for all nets at the top level. If a net has a terminal and the terminal name differs from the net name, the label that is created corresponds to the terminal name. If a label map file includes more than one mapping for a combination of object, oaLayer, and oaPurpose, the first of these entries in the label map file is used and a warning is displayed.
If you do not provide a label map file, XStream will automatically search for the techlibname.labelmap file in the technology library. A label map file, if present in the technology library with some other name, is not detected. In case of Incremental Technology Database (ITDB) hierarchy, XStream will traverse through all the label map files in the hierarchy.
The label map file format uses one line per mapping where the five fields are each separated from others by tabs or spaces. Lines beginning with the # character are comment lines and are ignored by the translator.
Following is an example of a label map file.
The label map file uses five required fields, listed in the following table.
| Field Name | Value Type |
|---|---|
Text Font Map File
The text font map file is an ASCII file that maps the Stream text font numbers to OpenAccess text fonts. You can specify the text font map file for mapping. You can also specify the text font mapping information in a SKILL file.
If you provide a text font map file, the mappings specified in the file are used for mapping fonts. If you specify a SKILL file, then layer mapping is done by using the SKILL functions. However, if you specify both a text font mapping file and a SKILL file for font mapping, the translator ignores the SKILL file.
You can create a text map file by using a text editor. A text font map file must conform to the following conventions:
- It must have two fields:
- The fields must be separated by one or more spaces or tabs.
- Each mapping record should be a single line.
- Any record starting with a # is considered a comment and is ignored.
A sample text font map file is as follows:
#This is a sample XStream In text font file
0 Fixed
1 EuroStyle
2 Gothic
3 Math
0, 1, 2, and 3. If you use any other number, the resulting Stream font number is unpredictable. For more information about Stream font numbers, see Appendix A Stream File Description.
There is a minor difference in the font names that you use in the text font map file as compared to the font names displayed in the GUI. In the template file do not use the oac prefix and the Font suffix. For example, define the oacFixedFont font as Fixed.
During XStream Out, if a font name in OpenAccess is not mapped using a text font map file, then the fonts are translated to the Stream file as shown below:
| Stream Font Number | OpenAccess Font Name |
If any font map in the text font map file is not in the proper format, a warning message is generated and the mapping for that font is ignored.
Property Map File
A property map file is an ASCII file that can be used to map object types and property names from the OpenAccess database to the Stream file. You can create a property map file using any text editor.
- Each mapping record must be a single line.
- Fields in the mapping record must be separated with one or more spaces or tabs.
- The same attribute number can be used to store the value of multiple number of properties.
- Multiple properties separated by a property separator can be specified on the same attribute number.
- Records starting with # are considered comments and are ignored.
- Multiple properties separated by a comma can be specified in the same mapping record.
-
There is one option record and several mapping records.
[-f<
where, the Format_Specifier lets you specify the format in which properties and their values are written to the Stream file. It can have the following values:Format_Specifier>]-
-fv: Format the output to show the property values only. The property value is written as a value of the Stream attribute specified in the mapping record. This shows “inputOutput” in the Stream file. -
-fp(default setting): Format the output to show the property’s name-value pair. This shows “accessDir=inputOutput” in the Stream file.
where, -
In OpenAccess, database objects, such as instances and shapes, can have certain properties attached to them. By default, these properties are not translated during XStream Out. A property map file provides a mechanism to translate and preserve these properties during XStream Out and XStream In. It is also used to map object types and property names from the OpenAccess database to the Stream attribute numbers in the Stream file to each other.
During XStream Out, sufficient information is written to the Stream file for preserving the properties if you translate these properties as property name-value pairs. Therefore, while streaming in the same information, you must not specify a property map file. A property map file is required to preserve properties when you translate only the value of a property during XStream Out. If the same attribute number is associated with different user property names of the same object, then properties get separated in the output Stream file.
Sample Property Map File
-fp -s ‘;’
12 rect signame
13 path prop1, prop2
14 scalarInst instName
In the sample property map file shown above, prop1 and prop2 are associated with the same attribute number 13. During XStream Out, these properties get separated by a property separator in the output Stream file.
Property map file supports certain keywords which are not OpenAccess properties. These keywords are described below.
-
instName
You can translate and preserve instance names during XStream Out and XStream In. This can be done by specifyinginstNameas a property for the object typescalarInstin the property map file. -
netName
ThenetNamekeyword is used to preserve information pertaining to net names. For more information, see Preserving Net Names. Ideally, property ID should be same for all type of objects. This is because GDS supports fewer objects and different property IDs can cause issue in preserving thenetName.
Cell Name Map File
A cell name map file is an ASCII file that stores mapping information between the OpenAccess cellview names and Stream cell names. A cell name map file can be created by using any text editor. You can also specify cell name mapping information in a SKILL file. In a cell name map file:
- Each mapping record must be a single line.
- Fields must be separated with one or more spaces or tabs.
- Any line starting with # is considered a comment and is ignored. Blank lines are also ignored.
- Each record must contain the following four fields:
If any record in the cell name map file is not in the proper format, the record is ignored and a warning message is generated. You can map cell names by providing a cell name map file, a user-defined SKILL file, or by using the Case option. The Case option is used when the cell name map file or the user-defined SKILL file is not used for cell mapping.
In addition to changing the cellview names by using a cell name map file or a SKILL file, cellview names also change automatically. The situations in which cellview names are automatically changed are described below.
- When the OpenAccess design consists of two cellviews having same names but present in different libraries. Similarly, two cellviews having same cell names but different view names. In such a case, cellview names are automatically changed because the Stream format does not support two structures having same names.
Example 2-18 When two libraries have same cell names
Consider a situation where a library lib1 has a cell cell1 and a view view1. Similarly, another library lib2 has a cell cell1 and a view view1. During XStream Out, cell1 is automatically mapped and assigned a name because the Stream format does not support two cells having same names.
Example 2-19 When the library names and cell names are same but view names are different
Consider a situation where a library lib1 has a cell cell1 and a views view1and view2. During XStream Out, cell1 is automatically mapped and assigned a new name because the Stream format does not support two cells with the same name.
-
When an OpenAccess cell name consists of a character that is not supported in the Stream format. Valid characters supported by the Stream format are
A-Z,a-z,0-9,_,?, and$. An invalid character is replaced by underscore in the Stream format.When the Respect GDSII Name Limit option isonand a cellview name in OpenAccess is more than 32 characters.
Sample Cell Name Map File
#Library Name |
OpenAccess Cell Name |
OpenAccess View Name |
Stream Structure Name |
|---|---|---|---|
reflib1 |
cell1 |
view1 |
STCELL1 |
* |
cell2 |
view2 |
STCELL2 |
XST_TARGET_LIB |
cell3 |
view3 |
STCELL3 |
XST_TARGET_LIB |
cell4 |
view4 |
STCELL4 |
During XStream Out, the cell mapping information of the cells that are defined in the source library or any other library, and have been automatically mapped, is recorded in the xStrmOut_cellMap.txt file. All the cells that are present in the source library and are automatically mapped have library name as XST_TARGET_LIB. The XST_TARGET_LIB will be replaced with the library name specified using the -lib option. The * keyword denotes that this mapping is applied to the specified cellview present in any reference library.
xStrmOut_cellMap.txt is not writable, a new file (xStrmOut_cellMap.userName.n.txt) is generated automatically and the mapping information is added to this file. The name of the each new file changes incrementally. For example, xStrmOut_cellMap.userName.1.txt, xStrmOut_cellMap.userName.2.txt, and so on.Via Map File
A via map file is a SKILL file that stores via mapping information during the XStream Out - XStream In round trip. A via represents a physical connection between two adjacent shapes that are on different layers. By default, during XStream Out vias are translated as SREFs in the Stream file and recreated as instances during subsequent Stream Ins.
To preserve and recreate vias in OpenAccess, XStream requires the viaDef names from the technology file and the via parameters. This information can be stored in the via map file during XStream Out. Via map file allows you to preserve via information during XStream Out - XStream In round trips.
During XStream Out if you use the -viaMap option then XStream creates a Stream file and a via map file. The via map file maps the Structure names from the Stream file to the corresponding viaDef names in the input technology library. This via map file is then used to recreate the original vias during subsequent Stream Ins.
Also, when using Stream files from third-party vendors you may want some Structures to be treated as vias during XStream In. For this, you can create viaDefs in the technology library and manually create a via map file. You can create a via map file using any text editor.
- Each mapping record must be a SKILL list.
- Any line starting with # is considered a comment and is ignored. Blank lines are also ignored.
- Each record must contain the following three fields:
- If any record in the via map file is not in the proper format the record is ignored and a warning message is generated.
-
For preserving vias ensure that the original technology file in which viaDefs are defined exists. If you do not specify the technology library during XStream In and the target library does not have a technology file associated with it, then the
-viaMapoption is not available during XStream In. - Before starting the translation the via map file is loaded and for each entry in the via map file the corresponding viaDefs are searched in the technology file. If a viaDef does not exist in the technology file, then the record in the via map file is ignored and a warning message issued.
- In addition if you instantiate a via with the same parameter values multiple times in a design, then only one entry is created in the via map file during XStream Out. If the same sub master names are specified multiple times in the via map file, only the first record is considered during XStream In; all subsequent records are ignored and warning messages issued.
You can specify the name of the via map file from the command line by using the -viaMap option during XStream Out, as shown below.
strmout [-viaMap viaMapFileName]
When you use the -viaMap option then a via map file is created along with the Stream file. If you do not specify the -viaMap option, then a via map file is not created and only the Stream file is created.
After creating the via map file you can specify the via map file during XStream In using the following command:
strmin [-viaMap viaMapFileName]
XStream In checks for the via map file and if it exists, then the mapping information from the via map file is used for preserving vias. If you do not specify the -viaMap option, then the vias are not preserved and are translated as instances.
Sample Via Map File
viaMapTable = list( nil
subMasterTable (
( "VIAGEN12S_0" "VIAGEN12S" nil )
( "VIAGEN12S_1" "VIAGEN12S" (("CutHeight" 8000 "int")) )
( "VIAGEN12S_2" "VIAGEN12S" (("CutWidth" 9000 "int")) )
( "VIAGEN23_3" "VIAGEN23" (("CutHeight" 5000 "int")) )
( "VIAGEN12S_4" "VIAGEN12S" (("CutWidth" 8000 "int")) )
( "VIAGEN12S_5" "VIAGEN12S" (("CutHeight" 7000 "int")) )
( "VIAGEN23_6" "VIAGEN23" nil )
( "VIAGEN23_7" "VIAGEN23" (("CutHeight" 10000 "int")) )
( "VIAGEN12B_8" "VIAGEN12B" nil )
( "VIAGEN12B_9" "VIAGEN12B" (("CutWidth" 8000 "int")) )
( "via1Array_10" "via1Array" (("CutHeight" 1000 "int") ("CutWidth" 1000 "int")) )
( "via2Array_11" "via2Array" nil )
( "via2Array_12" "via2Array" (("CutWidth" 1000 "int")) )
( "via1Array_13" "via1Array" nil )
) ;End of subMasterTable
) ;End of viaMapTable
Object Map File
An object map file is an ASCII file that maps OpenAccess objects and sub-objects to Stream layer and data type. OA2.2 objects such as boundary, blockage, marker, and row do not represent physical shapes that can be represented in the Stream format. The objects are design concepts used by Place and Route and other display-editing tools. You may want to preserve these objects while archiving design data or while exchanging data between different tools to complete a design cycle.
The object map file maps the OpenAccess object and sub-objects to the Stream layer-datatype pair and decides which OpenAccess object should be translated as a shape on which Stream layer-datatype pair. You can provide multiple object map files for mapping.
If you do not provide an object map file, XStream will automatically search for the techlibname.objectmap file in the technology library. An object map file, if present in the technology library with some other name, is not detected.
ignoreObjectMapFromTech is specified techlibname.objectmap file is ignored during XStream Out.-noWarn 142 during XStream In to avoid these warning messages.In case of Incremental Technology Database (ITDB) hierarchy, XStream will traverse through all the object map files in the hierarchy.
You can create an object map file using any text editor. In an object map file:
- Any line starting with # is considered a comment and is ignored. Blank lines are also ignored.
- Each mapping record should be a single line.
- Fields should be separated with one or more spaces or tabs.
- Each record in the object map file must contain atleast four fields.
- If the same object type and object sub-type pair is specified in multiple records, then only the first record is considered; all subsequent records are ignored and warning messages issued.
- If you specify both the object map file and the layer map file during XStream Out and XStream In, then ensure that the Stream layer-datatype pairs specified in the object map file are not used in the layer map file. If the Stream layer-datatype pairs in the object map file are the same as the Stream layer-datatype pairs in the layer map file then the entries in the object map file are ignored and warning messages issued. However, the object will be created if the GDSII/Stream file was generated by XStream streamOut.
- If the layer map file is not specified during XStream Out then the layers are automatically mapped and the layer-datatype pairs specified in the object map file are not used.
- If the map file contains entries with invalid object type and sub-type mapped to correct Stream layer-datatype pair then the records are ignored and error messages issued.
- The OpenAccess Layer Name field is only valid for oaLayerBlockage objects not for other object types.
- The OpenAccess Layer Name field is optional only for XStream Out. If this field is not specified during XStream Out, XStream Out writes all the layer blockages to the same Stream layer-datatype pairs.
Enhanced Object Mapping for XStream In and XStream Out
The object map functionality preserves the color information of the layerblockages in XStream Out-XStream In round trip and vice versa. In addition, the object mapping functionality sets the color information on the layerblockages in case of third-party GDS or GDS created using XStream Out without the -enableColoring or -noObjectProp options.
The following enhancements have been made in the object map file format:
<Object Type> <Object SubType> [Layer Name] <Stream Layer Number> <Stream DataType> [Photomask Color]
- Columns 1,2,4, and 5 are mandatory.
-
Columns 3 and 6 are only for the
LayerBlockageObject Type. These are optional for XStream Out. However, column 3,Layer Nameis mandatory for XStream In. -
Valid values for
Photomask Colorcolumn aremask1Color,mask2Color,mask3Color, ,mask4Color,mask5Color,mask6Color,mask7Color,mask8Color,blackColor, andmultiColor. -
The object type
Stitchcan be used to map existing stitch objects in XStream Out.
Enhanced Layer Blockages for XStream In
XStream In considers all the color mapping entries in the object map file, if the Enable Coloring check box is selected. Otherwise, all the color mapping entries will be ignored and a warning message will be displayed.
XStream In follows the following order to create the layer blockages on the specific layer and to set the color information.
- The object map is considered for the layer name and photo mask color.
- In case the GDS was generated by XStream Out, the shape record property is considered for the layer name and photo mask color.
XStream Out will consider all the color mapping entries in the object map file if the Coloring Mode is enabled. Otherwise, all the color mapping entries will be ignored and a warning message will be displayed.
XStream Out follows the below mentioned order to map the layer blockages on a specific layer with a specific photo mask color:
- Entry with layer name and photo mask color
- Entry with only photo mask color
- Entry with only layer name
- Entry with no layer name and no photo mask color
Using Stitch Objects
The object type Stitch can be used to map existing stitch objects in XStream Out. An example of the object map file syntax is described below:
<OA Object Name> <OA object sub-type> <OA Layer Name> <Stream Layernumber> <Stream Datatype>
Stitch None M1 32 5
In the above example, the stitch region associated with stitch objects on layer M1 is mapped as a shape on the Stream layer number 32 and Stream data type 5.
When the GDS file streamed in, the layer mapping file is used to map the stitch region back to a specified purpose. In the example below, the purpose is stitch.
<OA Layer Name> <OA Purpose Name> <Stream Layernumber> <Stream Datatype>
M1 stitch 32 5
For more information, see
Object Map File - OpenAccess Object Property Data
You can specify the object file by using the -objectMap command-line option. Also, you can load the object map file using the Load button in the XStream Out Object Map File Editor form. If you do not specify the object file, then only shapes are translated into the Stream file and OpenAccess objects, such as blockages, boundaries, rows, and markers are not translated. Any data related to the OpenAccess objects are dropped during translation.
If you load an object map file using the -objectMap option during XStream Out, then shapes as well as OpenAccess objects are translated as shapes. Also, the property data is written to the Stream file at the property attribute 126 on shapes that correspond to the OpenAccess objects. This property information is used during XStream In to preserve the OpenAccess objects.
To translate OpenAccess objects as shapes, but not write the property information to the property attribute 126, select the Do Not Output Properties option in the Objects Map section. You can also use the -noObjectProp option along with the -objectMap option during XStream Out. If you use the -noObjectProp option, then although the shapes and OpenAccess objects are translated, no property data is written to the Stream file for OpenAccess objects.
If the design contains area halos and the -objectMap option and the -noObjectProp options are not specified, then to preserve area halos in the XStream Out - XStream In cycle, the -propMap option is required. If you do not specify the -propMap option during XStream Out, the following message is displayed.
Property map file is needed to preserve areaHalo blockages. If the Property map file is not specified, then you need to specify the file at the -propMap option.
If XStream streamOut is used to generate a GDSII using an object map file, then there is no need of using an object file during streamIn. The objects would be automatically preserved in streamOut-streamIn round-trip as necessary information (on PROPATTR 126) would be written in the GDSII files in streamOut itself.
XStream Out Object Types and Sub-types
The following object type and object sub types are valid only for XStream Out.
Translating Boundaries
The OpenAccess boundary object defines an enclosed area, including a polygon outline. In OpenAccess there are four types of boundaries– area boundary, PR boundary, snap boundary, and cluster boundary. A cluster boundary has a cluster associated with it and this cluster must be specified while creating cluster boundaries. During XStream Out, however, the cluster information is lost and upon a subsequent XStream In, an empty cluster is created for each cluster boundary.
The following table lists the valid boundary object type and sub-types.
| Object Type | Object Sub-type |
|---|---|
Translating Blockages
The OpenAccess blockage object represents those areas in a design where specific object types cannot be located.
- oaAreaBlockage - represents an area. Most commonly used to prevent standard cells from being placed within this area.
- oaLayerBlockage - represents an area on a specific layer. Most commonly used to map layer blockages on different layers to different Stream layers and datatype pairs.
-
oaAreaHalo - represents the area around the master’s prBoundary. Most commonly used to prevent standard cells from being placed within a specific range of an instance.
The following table lists the valid blockage object type and sub-types.Object Type Object Sub-type
Translating Markers
The OpenAccess marker object indicates design violations and the objects that cause the violations.
The following table lists the Marker object type and sub-types that are translated and preserved.
| Object Type | Object Sub-type |
Translating Rows
An OpenAccess row object represents a potential location for placing standard cells, macros, or devices. For the row object type, the valid object sub-type is none.
Sample XStream Out Object Map File
# ObjectType ObjectSubType StreamLayer StreamPurpose
Boundary Area 0 1
Boundary Cluster 0 2
Boundary PR 0 3
Boundary Snap 0 4
LayerBlockage viaRouting metal1 1 1
LayerBlockage routing metal2 1 2
AreaBlockage placement 1 3
LayerBlockage wiring metal1 1 4
LayerBlockage fill metal2 1 5
LayerBlockage slot metal1 1 6
LayerBlockage slot metal2 3 7
LayerBlockage pin metal1 1 7
LayerBlockage feedthru metal2 1 8
LayerBlockage screen metal1 1 9
Marker annotation 2 1
Marker info 2 2
Marker acknowledgedWarning 2 3
Marker warning 2 4
Marker signedOffError 2 5
Marker error 2 6
Marker signedOffCriticalError 2 7
Marker criticalError 2 8
Marker fatalError 2 9
Row none 3 10
Creating OpenAccess Objects from Third Party GDSII
If the GDSII is from third-party (no information on PROPATTR 126) or the GDSII file is created by XStream Out using the -noObjectProp option, then users need to use object map files to create OpenAccess objects from BOUNDARY or BOX records in the GDSII file. This functionality only works for the OpenAccess objects (layerBlockage, PR boundary, Snap boundary, and Marker).
The object map file maps the Stream layer-datatype pair to OpenAccess object and sub-objects and decides which shape should be translated as an OpenAccess object.
XStream In Object Types and Sub-types
The following object type and object sub types are valid only for XStream In.
Translating Boundaries
The OpenAccess boundary object defines an enclosed area, including a polygon outline. In OpenAccess there are two types of boundaries, PR boundary and snap boundary.
Following table lists the valid boundary object type and sub-types.
| Object Type | Object Sub-type |
|---|---|
Translating Blockages
The OpenAccess blockage object represents those areas in a design where specific object types cannot be located.
Blockage can be oaLayerBlockage representing an area on a specific layer. It is most commonly used to map layer blockages on different layers to different Stream layers and datatype pairs. Following table lists the valid blockage object type and sub-types.
| Object Type | Object Sub-type |
Translating Markers
The OpenAccess marker object indicates design violations and the objects that cause the violations. Following table lists the marker object type and sub-types that are translated and preserved.
| Object Type | Object Sub-type |
Sample XStream In Object Map File
Boundary pr 1 1
Boundary snap 1 2
layerBlockage fill metal1 2 1
layerBlockage routing metal2 2 2
layerBlockage slot metal1 1 6
layerBlockage slot metal2 3 7
Marker error 3 1
Marker info 3 2
layerBlockage the object map file must contain all five fields, namely, OpenAccess object name, OpenAccess object sub-type, OpenAccess layer name, Stream layer number, and Stream datatype. The OpenAccess layer name field is mandatory in XStream In.OpenAccess PathSegs to XStream/GDSII Record Mapping
OpenAccess pathSeg objects can be either orthogonal (0, 90, 180, or 270 degrees) or diagonal (45, 135, 225, or 315 degrees). All the orthogonal pathSegs will be written as PATH records in the Stream file during streamOut unless Convert Path to Polygon option is used or path extension is custom or chamfer. However, the diagonal pathSegs will always be written as polygons (BOUNDARY) in the Stream file.
| OpenAccess PathSegs | Extensions | Object Type |
|---|---|---|
A diagonal pathSeg in the OpenAccess design will be written as a polygon (BOUNDARY) record in the Stream file during XStream Out. If the Stream file is imported back in OpenAccess using XStream In then the original diagonal pathSeg will become a polygon. The diagonal pathSeg will not be preserved during XStream Out/XStream In, only the geometry will be preserved.
In IC5141, a Path object is created in CDB database when a route segment is created. During XStream Out, this multi-point path is written as a single multi-point PATH record in the GDSII file.
Example 2-20 Single multi-point PATH Record

A multi-point path is written as a single multi-point PATH record in the GDSII file as:
PATH LAYER=1 DATATYPE-0
PATHTYPE 0 WIDTH 1000 XY=(0,0)
(2000,0) (2000,2000) (4000,2000) (4000,4000) ENDEL
In IC61, a collection of Path object are created in OpenAccess database when a route segment is created. During XStream Out, these multi-point path is written as a multiple 2-point PATH record in the GDSII file.
Example 2-21 Multiple 2-point PATH Record

A multi-point path is written as a multiple 2-point PATH record in the GDSII file as:
PATH LAYER=1 DATATYPE-0
PATHTYPE 2 WIDTH 1000 XY=(4000,2000) (4000,4000) ENDEL
PATH LAYER=1 DATATYPE-0
PATHTYPE 2 WIDTH 1000 XY=(2000,2000) (4000,2000) ENDEL
PATH LAYER=1 DATATYPE-0
PATHTYPE 2 WIDTH 1000 XY=(2000,0) (2000,2000) ENDEL
PATH LAYER=1 DATATYPE-0
PATHTYPE 2 WIDTH 1000 XY=(0,0) (2000,0) ENDEL
The mergePathSegsToPath option has been introduced to assemble all the connected oaPathSegs into a single PATH record during streamOut. This enables you to reduce the size of the GDSII. In addition, it will provide backward compatibility with IC5141.
Assumptions
- Only the oaPathSegs, which has the same width would be considered for merging.
- A pathSeg will not be considered for merging if:
- End type of PATH would become variable if:
-
When property mapping is used, if there is a conflict between the properties of the
oaPathSegsobjects, then the first property value will be considered for writing in the GDSII and the second property value will be dropped with a warning.
This option must be used when required as it will have some performance overheads.
Preserving Connectivity Information
Preserving Pin Connectivity Information
The Stream format does not support pins and their connectivity information. To preserve pins in the round trip, use the Pin Attribute Num option.
During XStream Out, the value of the Pin Attribute Num option specifies the Stream attribute number that stores the pin information. If you specify a value for this option between 1-127, the following information related to pins is translated to the Stream file:
-
Access direction
Possible directions areTop(T),Bottom(B),Left(L),Right(R). If a pin has more than one access direction, the access direction appears as any of the following
If the access direction is not specified, XStream Out writes a blank character to the Stream file during translation. - Pin name
- Terminal name
-
Terminal direction
Possible terminal directions are:input,output,inputOutput,switch,jumper,unused, andtristate. - Instance name
If you specify 0 as the value of the Pin Attribute Num option, then pin information will not be translated to the Stream file.
During XStream In, the value of the Pin Attribute Num option specifies the Stream attribute number containing the pin information in the Stream file.
Example
If the pin name is 13, terminal name is VSS, the access direction is Bottom, and the terminal direction is inputOutput, then XStream Out will write B 13 VSS InputOutput as the value of the Stream attribute number in the Pin Attribute Num option. This value will then be assigned to the geometry corresponding to the pin in the Stream file.
Preserving Net Names
The Stream format does not support net names that are associated with various shapes. You can preserve net names to ensure proper design translation. During XStream Out, when you specify netName for an object in the property map file, the net name is saved in the Stream file as a value of the mapped attribute.
During XStream In, if any shape having a property on the attribute that is mapped to netName, is specified in the property map file, then the net name is verified in the database. If it exists, then it is associated with the shape. Otherwise, a net is created with the specified name and is associated with the shape.
Sample Log File

Sample Summary File

Environment Variables in XStream
XStream supports following environment variables:
- XST_DEBUG - this environment variable can be set to any value. Using this environment variable, XStream writes additional error or warning messages in the log file. These additional messages help you in debugging design information.
- CDS_AUTO_CKIN - XStream uses this environment variable to control the check in of design data to Design Management System (DM). For more information, see Cadence Library Manager User Guide.
- CDS_AUTO_CKOUT - XStream uses this environment variable to control the check out of design data from Design Management System (DM). For more information, see Cadence Library Manager User Guide.
- CDS_EXP_PCELL_DIR - this environment variable controls the directory to be used for caching the Pcells. You can specify either an absolute path or a path relative to your current working directory. Set this variable prior to launching the Virtuoso Studio design environment.
- CDS_ENABLE_EXP_PCELL - this environment variable controls the caching of evaluated SKILL Pcells. It can be set to true or false. The default value of this variable in a Virtuoso session is different from its default value while using a non-Virtuoso or third party application.
Sample Template File
XStream Out Template File
#***************************************************************
# Copyright (C) 2001 - 2018 *
# Cadence Design Systems Inc. All Rights Reserved. *
#***************************************************************
#
#**************************************************************
#
# filename : streamOut.template
#
#**************************************************************
arrayInstToScalar "false" #- Convert Arrays to Scalar Instances
backupGdsLogFiles "false" #- Backup GDSII and Log Files
case "preserve" #- preserve | upper | lower - Case Sensitivity
cellListFile "" #- The Cell List File Name
cellMap "" #- Cell Map File Name
cellNamePrefix "" #- Prefix to be added to each STRUCT
cellNameSuffix "" #- Suffix to be added to each STRUCT
checkPolygon "false" #- Report Bad Polygons
#colorAnalysisGroup "" #- Name of the color analysis group
convertDot "node" #- polygon | node | ignore - Convert Dots to
convertPcellPin "" #- geometry | text | geometryAndText | ignore - Convert Pcell Pin to
convertPin "geometry" #- geometry | text | geometryAndText | ignore - Convert Pin to
dbuPerUU "" #- DB Units Per User Units
diagonalPathToPolygon "false" #- Convert Paths with non-orthogonal segments to polygons
doNotPreservePcellPins "false" #- Do not Preserve PCell Pins
donutNumSides "64" #- Number of sides for the BOUNDARY of donut
ellipseNumSides "64" #- Number of sides for the BOUNDARY of ellipse
#enableColoring "true" #- Enable Coloring Support
flattenPcells "false" #- Convert PCells to Geometry
flattenPcellsExclusionFile "" #- A file specifying list of Pcells to exclude from flattening
flattenVias "false" #- Convert Vias to Geometry
flattenViaShapesToViaPurp "false" #- Flatten Vias' Shapes to Via Purpose
fontMap "" #- Font Map File Name
gdsCellNameLength "" #- Truncate GDS Cell/STRUCT name length to specified value
hierDepth "32767" #- (0-32767) - Hierarchy Depth Limit
ignoreCurrentTimestamp "false" #- Ignores current timestamp
ignoreLines "false" #- Ignores Lines During Translation
ignoreMissingCells "false" #- Ignores Missing cellViews During Translation and Continue Translation
ignoreMissingVias "false" #- Ignores Missing standard/custom vias During Translation and Continue Translation
ignoreObjectMapFromTech "false" #- Ignores Object Map file from Technology
ignorePcellEvalFail "false" #- Ignores the PCell Evaluation Failure
ignoreTopCellPrefixSuffix "false" #- Ignores cellName Prefix and Suffix for topCell
ignoreZeroWidthPathSeg "false" #- Ignores zero width PathSeg during translation
infoToWarn "" #- Treat the Specified Info Messages Ids as the Warnings
labelCase "preserve" #- preserve | upper | lower - Label Case Sensitivity
labelDepth "1" #- Hierarchical depth to add labels to
labelMap "" #- Label Map File Name
layerMap "" #- Layer Map File Name
library "LIB" #- Library Name
logFile "strmOut.log" #- Log File Name
#mapAllColorToLocked "false" #- Map all the Colored Shapes to Locked DataType
maxVertices "200" #- Maximum Vertices in Path/Polygon
mergePathSegsToPath "false" #- Merge the Connected Pathsegs to Path
noConvertHalfWidthPath "false" #- Do not Convert The Half Width Path to Boundary
noInfo "" #- Do not Print the Specified Info Messages Ids
noObjectProp "false" #- Do not Write Special OA Object Properties
noOutputTextDisplays "false" #- Ignores Text Display Objects
noOutputUnplacedInst "false" #- Ignores the Unplaced Instances
noWarn "" #- Do not Print the Specified Warning Messages Ids
objectMap "" #- Object Map File Name
outputDir "" #- The Output Directory for Stream File
pathToPolygon "false" #- Convert Paths to Polygons
pinAttNum "" #- (0-127) - Stream Attribute Number for Preserving Pins
propMap "" #- Property Map File Name
propValueOnly "false" #- Output Property Values Only
rectToBox "false" #- Output Rectangle as BOX
refLibList "" #- Referrence Library List File Name
replaceBusBitChar "false" #- Replace "<>" With "[]"
reportPrecisionLoss "false" #- Report Precision Loss in Scaling
respectGDSIINameLimit "false" #- Respect GDSII limits
runDir "." #- Run Directory
scale "1.00000" #- Design Scaling Factor
snapToGrid "false" #- Snap XY to Grid Resolution
strmFile "top.gds" #- Stream File Name
strmTextNS "cdba" #- Text NameSpace
strmVersion "5" #- 3 | 5 | 6 - Stream Version
subMasterSeparator "_CDNS_" #- Separator to be used for sub-master naming
summaryFile "" #- Summary File Name
techLib "top" #- Technology Library Name
topCell "" #- Top Cell(s) to Translate
translateUnmappedLPP "false" #- Allow undefined LPP to be translated by incrementally mapping LPP using layerMap file, SKILL hook poLayerMap, and automatic layer mapping
userSkillFile "" #- Users' Skill File Name
verbose "false" #- Generate detailed information in the log and summary files
viaCutArefThreshold "" #- Write a STRUCT if the number of cuts are more the specified
viaMap "" #- Via Map File Name
view "layout" #- View Name(s) to Translate
warnToErr "" #- Treat the Specified Warning Messgaes Ids as the Errors
wildCardInCellMap "false" #- Wild Card in Cell Map
XStream In Template File
#***************************************************************
# Copyright (C) 2001 - 2018 *
# Cadence Design Systems Inc. All Rights Reserved. *
#***************************************************************
#
#**************************************************************
#
# filename : streamIn.template
#
#**************************************************************
arrayInstToScalar "false" #- Convert AREF to Scalar Instances
attachTechFileOfLib "" #- Attach Techfile of Library
case "preserve" #- preserve | upper | lower - Case Sensitivity
cellMap "" #- Cell Map File Name
checkPolygon "false" #- Report Bad Polygons
compress "false" #- Allow libraries to be compressed
#compressLevel "1" #- Defines the compression level to use (default: 1)
convertPathToPathSeg "false" #- Convert Two Point Path(s) to PathSeg(s)
detectOverflow "false" #- Enable overflow cellview creation on reaching maximum limit of shapes in a cellview
dbuPerUU "" #- DB Units Per User Units
#enableColoring "false" #- Enable Coloring Support
enableIncrementalImport "false" #- Enable incremetal import of multiple Stream Files
enableLocking "false" #- Enable File Locking
enableNegativeViaExt "false" #- Enable Negative Extension for Via Detection
excludeMapToVia "" #- Via exclusion Data file
fontMap "" #- Font Map File Name
hierDepth "32767" #- (0-32767) - Hierarchy Depth Limit
ignoreBoxes "false" #- Ignore BOX records
ignoreObjectProp "false" #- Ignore Object Properties
ignoreZeroWidthPath "false" #- Ignore Zero Width Path(s)
infoToWarn "" #- Treat the Specified Info Messgaes Ids as the Warnings
keepStreamCells "false" #- Keep Stream File Cells
labelCase "preserve" #- preserve | upper | lower - Label Case Sensitivity
layerMap "" #- Layer Map File Name
library "strmLib" #- Library Name
loadTechFile "" #- ASCII Technology File Name
logFile "strmIn.log" #- Log File Name
maxCellsInTargetLib "30000" #- Maximum Cells in Target Library
mergeUndefPurposToDrawing "false" #- Merges Undefined Purposes to "drawing" Purpose
noDetectVias "false" #- Do Not Detect possible viaDefs from Strem File and create vias
noInfo "" #- Do not Print the Specified Info Messages Ids
noWarn "" #- Do not Print the Specified Warning Messages Ids
objectMap "" #- Object Mapping File Name
#overflowCellNameSuffix "_xstOverflow" #- Cell name suffix of overflow cellviews
#overflowViewName "layout" #- View name of overflow cellviews
#overwriteRootCells "false" #- Overwrite the top cells
pinAttNum "" #- (0-127) - Stream Attribute Number To Preserve Pin
propMap "" #- Property Map File Name
propSeparator "," #- Property Separator Character
refLibList "" #- Rerferrence Library List File
replaceBusBitChar "false" #- Replace "[]" With "<>"
reportPrecisionLoss "false" #- Report Precision Loss in Scaling
runDir "." #- Run Directory
scale "1.00000" #- Design Scaling Factor
scaleTextHeight "1.00000" #- Text Height Scaling Value (+ve value only)
showCompletionMsgBox "true" #- Show Completion Message Box
skipUndefinedLPP "false" #- Skip Creating Undefined Layer-Purpose Pair in Technology
snapToGrid "false" #- Snap XY to Grid Resolution
strmFile "test.gds" #- Stream File Name
#strmTechGen "" #- Generated the LPP information of specified stream file
strmTextNS "cdba" #- Text NameSpace
summaryFile "" #- Summary File Name
techRefs "" #- Ordered List of Technology Libraries
topCell "" #- Top Cell(s) to Translate
translateNode "false" #- Convert Node(s) to Dot(s)
translateUnmappedLPP "false" #- Allow undefined LPP to be translated by incrementally mapping LPP using layerMap file, SKILL hook piLayerMap, and automatic layer mapping
userSkillFile "" #- Users' Skill File Name
verbose "false" #- Generate detailed information in the log and summary files
viaMap "" #- Via Map File Name
view "layout" #- View Name(s) to Translate
virtualMemory "false" #- Import to Virtual Memory
warnToErr "" #- Treat the Specified Warning Messgaes Ids as the Errors
wildCardInCellMap "false" #- Wild Card in Cell Map
writeMode "overwrite" #- Write Mode for Existing Cells
strmFile and library fields are mandatory. However, null strings (“ “) can be allowed while loading the template file.Library Cell(s) Limit
Since the OpenAccess library structure complies to 5.x architecture, the total number of cells in a library can go only upto the maximum number of sub-directories that are supported by the UNIX filesystem(32,767). This limits XStream to support only those Stream files that have less than 32,767 cells, which are to be translated in a library.
To overcome this limit, XStream has been enhanced to keep a count of number of cells in the target library. Whenever the number of cells in the target library become 30,000 and then, if XStream needs to translate more cells, a new target library TargetLib_# (where # can be 1,2, or 3) is created.
If a new target library already exists, then, XStream creates another library instead of overwriting the existing one. For example, if a target library TargetLib_1 already exists, then XStream creates TargetLib_2. The technology library for the new target library is attached to the technology library of the original target library.
Performance Guidelines for XStream
XStream In and XStream Out provide many options and features to make its use model extremely flexible in accordance with the increasing requirements of the customers.
The following section provides information on the known speed impact of some of the XStream In and XStream Out options, and some guidelines on extracting maximum performance by avoiding those options that reduce the speed of translation in specific customer designs.
Guidelines for XStream In
-
In order to optimize the time consumed in searching for reference libraries during XStream In, use the methods described below:
-
Reduce the
cds.libfile size
Thecds.libfile should consist of a minimal list of libraries for XStream In to perform faster. The minimum number of libraries listed incds.libshould be the target and reference libraries. The cells of these libraries should be instantiated in the Stream file. If there are a large number of libraries mentioned in thecds.libfile, XStream In spends extra time in searching for different cellviews in those libraries and thus takes more time. Another way to resolve this issue without modifying thecds.libfile is by using the Reference Library List option. -
Use the Reference Library List option
Suppose you are having a number of reference libraries incds.liband a design or a sub design/module is using a small fraction of the libraries that are being used. In another case, the libraries defined incds.libmay not get ordered in an optimal fashion to minimize the search for a referenced cell during XStream In. In such a case, use the Reference Library List option.
Example:
Consider a situation where you are using instances from five different libraries:A,B,C,D, andE. You know that the usage density (the maximum probability of finding the referenced cell from a library) is fromCandE. In such a case, in order to speed up the XStream In process, first create a file, sayrelLib1.list. Add library names to this file in the sequence:
C E A B D
Next, use therefLibListoption as shown below:
-refLibList refLib1
If you provide a proper reference library name for a structure (cellview) in the cell name map file, then XStream does not search for that cellview in the list of libraries. Therefore, a cell name map file can also provide speed advantage when you use the Reference Library List option. -
If the value of the Convert Arrays to Scalar Instances option is chosen as
ON(a non-default value), it will explode each AREF record in a Stream file. This will be done by translating an AREF record to the corresponding individual instances in the OpenAccess database. In some specific cases, this can reduce the translation speed and increase the output database size.
-
Reduce the
-
Ensure that there is enough virtual memory in your system. The virtual memory requirements for XStream might vary from 0.6 to 1.3 times the biggest struct size of the Stream file.
XStream In has an internal algorithm, which estimates the virtual memory requirements before starting the translation process. It gives appropriate warnings and errors in the beginning if the available memory on your system is either less than or close to its estimated requirement. This feature can save time as you can update the swap space on your system in the beginning of translation itself. -
Use the Disable file locking option to disable file locking during XStream In. By default, file locking will not be disabled. The disabling of file locking reduces the run time of XStream In especially if the designs contain a large number of cellviews in their hierarchy or library.
Default Value: Deselected
For more information, see Enable File Locking.
Guidelines for XStream Out
- Avoid the Flatten Pcellsoption. This option increases the XStream Out translation time because it has to flatten all Pcell instances in the design.
- When the Convert Arrays to Scalar Instances option is enabled, all arrays explode in OpenAccess. This is because each element of the array is translated to a corresponding SREF record in the Stream file. This significantly slows down the translation and increases the size of the output Stream file.
- For specific purposes, you can use a limited set of layers to be translated. This can be done by configuring the layer mapping table accordingly. Using the limited set of layers, you can speed up translation because the amount of data to be translated is reduced.
-
Avoid using the Output Paths as Polygons option. This option converts each OpenAccess path to a polygon (boundary record in Stream format) during XStream Out. If there are large number of paths in a design, this option can reduce the speed of translation due to the additional overhead of converting each path to a polygon internally.XStream progress bar is not linear because its increment is based on the number of structures in the Stream file that is the number of cellviews present in the design. As the cellviews might vary in sizes, progress bar might seem to increase at variable speed. For example, if the last few cellviews being translated are of big sizes as compared to the other cellviews in the design, it might take a longer time to finish even after hitting 99% in some cases.
Performance Improvement in XStream Out Using Express Pcells
-
While translating Pcell instances in designs, streamOut evaluates Pcell SKILL code for writing submasters in the GDSII/Stream file. The evaluation of Pcell SKILL code impacts the performance of streamOut in the case of designs with large number of complex Pcell instances. This is because for the evaluation of Pcell SKILL code, a design is opened each time. However, when Express Pcells feature is enabled while exporting GDSII/Stream, the streamOut performance is improved. On some of the benchmark designs the performance gain is even greater than 10X.
To manage the Pcell cache, you can use the UNIX environment variables, CDS_EXP_PCELL_DIR and CDS_ENABLE_EXP_PCELL. By default, these variables are set to false in the Virtuoso environment. These variables are read only once, during the Virtuoso session startup. If you want to use the Express Pcells feature and cache your Pcell submasters for better performance and interoperability, set this variable to true before starting a Virtuoso session. - The Express Pcell feature, available in the Virtuoso environment, maintains a cache of the pre-evaluated pcells on the disk. Because this feature is based on a caching mechanism, Pcell code is not evaluated each time a design is opened. This offers an enormous performance in case of designs containing a large number of Pcell instances or even in cases of designs containing moderate number of instances of complex Pcells that involve computationally intensive SKILL code.
Chip Finishing Flow
Before the IC6.1.5 release, as part of the chip finishing flow, OpenAccess designs imported from the GDSII/Stream file were also stored on disk. These OpenAccess designs were read from the disk while they were edited in the Virtuoso layout editor, and the modified design after being exported to a GDSII/Stream file was saved on the disk. Because OpenAccess designs—especially the custom and mixed signals designs—can contain thousands of cellviews, reading and writing the designs from or to the disk, which is determined by the disk access speed, was a time consuming process.
In the IC6.1.5 release, to improve the speed at which OpenAccess designs are accessed, the following features have been introduced:
- Virtuoso XStream In translator reads a GDSII file from the disk and creates an OpenAccess design in the virtual memory.
-
You can use the Virtuoso layout editor to view or edit an OpenAccess design stored in the virtual memory.
- You can use the XStream Out translator to export an OpenAccess design from virtual memory to the GDSII/Stream file on the disk.
The figure below illustrates how XStream In and XStream Out work in the IC6.1.5 release.

To use XStream In with virtual memory, you need to select the Import to Virtual Memory check box in the XStream In form. Similarly, if you want to use XStream Out with virtual memory, you need to select the Stream Out from Virtual Memory check box.
XStream In GDSII to virtual memory requires space for storing temporary data, though the OpenAccess designs are not saved on disk.
In Linux, the temporary data is stored in /dev/shm. If the available space in /dev/shm is less than 5 MB, temporary data is stored in /tmp. Moreover, if the available space in /tmp is less than 5 MB, the temporary data is stored in ./ (the run directory).
In Solaris and IBM, the temporary data is stored in /tmp. If the available space in /tmp is less than 5 MB, temporary data is stored in ./ (the run directory).
The temporary data is deleted when the Virtuoso session is exited.
By default, information (INFO) and warning (WARNING) messages are not displayed during XStream In to virtual memory.
For additional information about improving performance or space utilization during translation, refer to GZip Support.
For information about XStream SKILL functions, see the Design Data Translator’s SKILL Reference.
Return to top