Product Documentation
Design Data Translators Reference
Product Version IC23.1, November 2023

2


Design Translation Using XStream Translator

This chapter contains the following sections:

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:

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.

XStream does not report less than half width extension in the log file.

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.

Example 2-1 Running XStream In by specifying the library and strmFile options as command-line arguments.

$strmin -library lib1 -strmFile in.gds

Example 2-2 Running XStream In by specifying the strmTechGen and strmFile options as command-line arguments.

$strmin -strmTechGen <techFileName> -strmFile <StreamFileName>

If both -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:

Example 2-3 Running XStream Out by writing options and their values in the text file template.txt.

$strmout -templateFile template.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 -option1 value1 -option2 value2 -templateFile textfileName
$strmout -option1 value1 -option2 value2 -templateFile textfileName

where,

option1

First option

value1

Value of the first option

option2

Second option

value2

Value of the second option

templateFile

Name of the template file

textfileName

Name of the text file

Example 2-4 Running XStream In by specifying library, strmFile, and templateFile as command-line arguments.

$strmin -library lib1 -strmFile in.gds -templateFile template.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.

You must specify a library name and an output file name during XStream Out. If you do not specify these names, an error message is generated. Similarly, during XStream In, you must specify the input Stream file name and a library name, otherwise, a error message is generated.

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.

LD_LIBRARY_PATH is now automatically set when you invoke XStream from the command line or from GUI.

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 xstEnableGUIHistory 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.

File Type Description

Stream file

A Stream-formatted file that is to be translated to OpenAccess.

Template file

A file that contains the option settings you want to use during XStream In. You can load the option settings from the template file into the XStream In form.

In the XStream In template file, '$' is considered as a special character because it is a UNIX environment variable. However, if you want '$' to be treated as a normal character, you can escape it by using '\' before it.

Technology file

A file used to compile the OpenAccess technology file for the OpenAccess database during XStream In.

SKILL file

An optional file used for mapping cell names, text fonts, property names, and layer names.

OpenAccess database

The output database

Log file

A file used for recording the translation process. It also keeps a log of all the messages.

Summary file

A file that contains a summary of the translated design.

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

When Import to Virtual Memory is enabled, translation occurs in virtual memory. In this mode, by default XStream uses one thread for translation.

You can also manually set number of cores to be used for multithreading with the XST_IN_VM_NT 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 Import to Virtual Memory is disabled or XStream is run from command line, a maximum of two CPU cores are used for translation.

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.

The form displays values from the previous XStream In session, if the changes made were applied before exiting XStream In.

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.

Command-line option: strmFile

You must select a Stream file before running XStream In.

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.

Command-line option: library

You must select a select a destination library before running XStream In.

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.

Default value: ""

Command-line option: topCell

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.

Default value: layout

Command-line option: view

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.

You should use this option in a new library and not in an existing library. This means that instead of using the option in a pre-created library, you should allow XStream In create the new library.

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: ""

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.

Command-line option: techRefs

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.

Command-line option: layerMap

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.

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 In.

Default value: Deselected

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.

Default value: Deselected

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

Command-line option: logFile

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:

Default value: Deselected

Command-line option: verbose

Coloring Mode

To enable color mapping during XStream In, select the Enable check box for the Coloring Mode option.

Default value: Selected

Command-line option: enableColoring

The layer map file, which is either specified through the Layer Map field or is available in the technology, is required if you enable coloring mode. Otherwise, translation will be terminated and an error message will be displayed. (See, Coloring Mode) If the layer map and object map files do not have any color entry, the -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.

Clicking the Translate or the Apply button, saves the values you specify in the XStream In form and when you start a new session of XStream In, these last applied changes will be visible in the form. If you make any updates to the values but do not apply the changes by clicking the Translate or Apply button, these new updates will not be visible the next time you open the XStream In form. The form will continue displaying values from the last applied changes.

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.

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.

Command-line option: cellMap

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:

*       INV_*      *     INV\*_*_ver1

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.

upper

The upper option translates all cell names to uppercase. For example, the name Obj1 becomes OBJ1.

preserve

The preserve option translates cell names without changing case. For example, the name Obj1 remains Obj1.

Default value: preserve

Command-line option: case

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:

Lib1
Lib2
Lib3

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.

Command-line option: propMap

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.

Default value: Deselected

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.

Default value: Deselected

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.

Default value: Deselected

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.

Default value: Deselected

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.

Default value: Deselected

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 overwrite, this option is ignored and a warning message is generated.

Default value: Deselected

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.

Default value: Deselected

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.

Default value: Deselected

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.

This option is considered only if new technology information is created in the target library. This technology information contains the DBUPerUU value specified at the option.

Valid values: Greater than or equal to 1

Command-line option: dbuPerUU

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)

Default value: 1.00

Command-line option: scale

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.

Command-line option: noInfo

Alternatively, click the Message Browser button to display the XStream In Info Messages form to select or specify the information messages that you do not want to print.

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.

Command-line option: noWarn

Alternatively, click the Message Browser button to display the XStream In Warning Messages form to select or specify the warning messages that you do not want to print.

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 XStream In Info Messages form to select or specify the information messages that you want to convert to warning messages.

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 Warning Messages form to select or specify the warning messages that you want to convert to error messages.

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

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.

Other IDs

Use the Other IDs field to specify information message IDs of other dependent tools.

Select All

Click the Select All check box to select all message IDs.

Cancel

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.

Other IDs

Use the Other IDs field to specify warning message IDs of other dependent tools.

Select All

Click the Select All check box to select all message IDs.

Cancel

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.

Other IDs

Use the Other IDs field to specify information message IDs of other dependent tools.

Cancel

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.

Other IDs

Use the Other IDs field to specify information message IDs of other dependent tools.

Cancel

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

Command-line option: runDir

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.

Default value: Deselected

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.

Default value: Deselected

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:

overwrite

Select the overwrite option to overwrite the existing cells in the target library during translation.

noOverwrite

Select the noOverwrite option to prevent existing cells in the target library from being overwritten during translation.

append

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.

rename

Select the rename option to rename the duplicate cells in the target library during translation.

Default value: overwrite

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.

Default value: Deselected

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 Overflow Cell Name Suffix option, and a view-name specified by the value of option Overflow View Name option.

Default value: Deselected

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.

Default value: _xstOverflow

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 View option is used.

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

If you set the 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:

Default value: Deselected

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.

Default value: Deselected

If you are using the Disable file locking option, ensure that the target library is not accessed by another user simultaneously during XStream In. This option brings in chances of data corruption if a cellview is accessed by XStream In as well as by another user or any other process at the same time.

Default: off

Command-line option: enableLocking

Compress

Use the Compress option to enable compression during XStream In.

Default value: Deselected

Command-line option: compress

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.

Valid values: 1 to 9

Default value: 1

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.

Valid values: 1 to 1024000

Default value: 30,000

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.

XStream In supports only following SKILL Core, 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, Coloring Mode)

The vias are not detected automatically for cdsGen vias.

Default value: Deselected

Command-line option: noDetectVias

Via Detection

Via detection is enabled by default during XStream In translation. You can specify the following additional options to be considered during translation.

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.

Command-line option: viaMap

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:

Wildcard

Action

$

Matches one unknown character.

*

Matches zero or more unknown characters.

\

Works as escape character. Use this when you want a wildcard character to be treated as a normal character.

Sample Via Exclusion File:

# 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.

Default value: Deselected

Command-line option: mergeUndefPurposToDrawing

Translate Entire Hierarchy

Use the Translate Entire Hierarchy option to translate the entire design hierarchy.

Default value: Selected

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.

Value values: 0 to 32767

Default value: 32767

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.

Valid values: 0 to 127

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:

Default value: preserve

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

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.

Stream Layer

Use the Stream Layer field to specify the Stream layer name that you want to map to OpenAccess layer.

Stream Datatype

Use the Stream Datatype field to specify the Stream datatype that you want to translate to OpenAccess purpose.

Layer Name

Use the Layer Name field to specify the OpenAccess layer name to which you want to map the Stream layer.

Purpose Name

Use the Purpose Name field to specify the OpenAccess purpose name to which you want to map the Stream type.

Material Type

Use the Material Type field to specify the OpenAccess material type to which you want to map the Stream type.

Mask Number

Use the Mask Number field to specify the OpenAccess mask number to which you want to map the Stream type.

Photo Mask Color

Use the Photo Mask Color field to specify the photo mask color of the layer.

Color State

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.

Show/Hide Columns

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.

Object Name

Use the Object Name field to select the name of the object to be mapped.

Sub Object Name

Use the Sub Object Name field to select the name of the sub object to be mapped.

Layer Name

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.

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.

Stream Type

Use the Stream Type field to specify the Stream datatype for the OpenAccess object. By default, the Stream datatype is specified as 0.

Photo Mask Color

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

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 in the layer map file and object file editors. Also, these entries will be ignored during translation. However if you select Coloring Mode is enabled, then these entries are visible. (See, Coloring Mode)

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.

Stream Name

Use the Stream Name field to specify a name for the Stream file that you want to translate to OpenAccess.

Library

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.

Cell

Use the Cell field to specify the cell name that you want to translate to OpenAccess.

View

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.

If you want to specify the target library name as reference library then you need to use the XST_TARGET_LIB variable in the Available libraries field.

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.

Property ID

Use the Property ID field to specify an ID for the Stream file.

Object Type

Use the Object Type option to select an object that you want to translate to OpenAccess.

Property Name

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.

Default value: Deselected

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

arrayInstToScalar

Convert Arrays to Scalar Instances

attachTechFileofLib

Attach Tech Library

case

Cell Case Sensitivity

cellMap

Cell Map File - Load

checkPolygon

Report Bad Polygons and Paths

convertPathToPathSeg

Pin Attribute NumberConvert Paths to Pathsegs

dbuPerUU

DB Units Per User Units

detectOverflow

Detect Overflow

noDetectViasA

Do Not Detect Via

enableLocking

Enable File Locking

enableIncrementalImport

Enable Incremental Import

enableNegativeViaExt

Enable Negative Extension

excludeMapToVia

Exclude Map to Via File

fontMap

Fonts Map File- Load

hierDepth

Translation Depth

ignoreBoxes

Ignore Box Records

ignoreZeroWidthPath

Ignore Zero Width Paths

infoToWarn

Convert Info Message IDs to Warnings

keepStreamCells

Keep Stream Cells

labelCase

Label Case Sensitivity (preserve, upper, lower)

layerMap

Layer Map File - Load

library

Library

loadTechFile

Load ASCII Tech File

logFile

Log File

maxCellsInTargetLib

Maximum Cells in Target Library

mergeUndefPurposToDrawing

Merge Purposes to Drawing

noInfo

Disable Info Message IDs

noOverwriteCell

noOverwrite

noWarn

Disable Warning Message IDs

objectMap

Object Map File - Load

overflowCellNameSuffix

Overflow Cell Name Suffix

overflowViewName

Overflow View Name

overwriteRootCells

Overwrite Root Cells

pinAttNum

Pin Attribute Number

propMap

Property Map File - Load

propSeparator

Property Separator

reflibList

Ref Lib File Name

replaceBusBitChar

Replace [] with <>

runDir

Run Directory

scale

Design Scale Factor

scaleTextHeight

Scale Text Height

showCompletionMsgBox

Show Completion Message Box

skipUndefinedLPP

Skip Undefined LPPs

snapToGrid

Snap to Grid

strmFile

Stream File

strmTextNS

Text Namespace

summaryFile

Summary File

techRefs

Tech Refs

topCell

Translate

translateNode

Translate Nodes

translateUnmappedLPPs

Translate Unmapped LPPs

userSkillFile

User SKILL File

useExistingViaDefsForDetection

Use stdViaDefs from Technology Library

viaMap

Via Map File

view

View

virtualMemory

Import to Virtual Memory

warnToErr

XStream In Warning Messages Form to Convert Warning Messages to Errors

wildCardInCellMap

XStream In Reference Library File Editor Form

writeMode

Write Mode

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 xstInSetField command in CIW. To access values from XStream In form, you need to enter the xstInGetField command in CIW.

All the options listed above are valid for xstInSetField, xstInGetField, template file, and streamInKeys. All the options except virtualMemory and showCompletionMsgBox are valid for command line executable or batch process.

You can include any UNIX environment variable in template file options. For example, if you user $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:

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 Do Not Detect Via is not selected, REFs that either point to any-angle or magnified master, or both, are not detected as vias.

Translation of Single Point Path

During XStream In, translation of single-point path to OpenAccess database depends on the end type of the path.

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:

Message Type Condition Message Text

Error

If predicted peak memory falls within 5% of process virtual memory limit.

Process may require more virtual memory than available on the system for a process. You can increase this limit using limit command.

Available Memory:YYY MB

Predicted Memory:ZZZ MB

Informational

If predicted peak memory falls within 25% of process virtual memory limit.

Process may require more virtual memory than available on the system. You can increase this limit using limit command.

Available Memory:YYY MB

Predicted Memory:ZZZ MB

Error

If peak memory requirement exceeds 32-bit limits.

Solaris 4GB, HP 4GB, Linux 3GB (2.4 Kernel supports more)

Process might require more virtual memory than 32-bit system can handle. You may need to run 64-bit version of the product.

Available Memory:YYY MB

Predicted Memory:ZZZ MB

Error

If predicted peak memory is within 5% range of total SWAP and RAM on the system.

Process might require more SWAP and RAM than available on the system.

Available Memory:YYY MB

Predicted Memory:ZZZ MB

Informational

If predicted peak memory is within 25% range of total SWAP and RAM on the system.

Process might require more SWAP and RAM than available on the system.

Available Memory:YYY MB

Predicted Memory:ZZZ MB

Error

If there is not enough DATA segment available.

Memory resize failed for YYY bytes.

Error

If there is not enough of shared memory space.

OS Error Code ‘12’ “Not enough space”

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.

File Type Description

Stream File

The output Stream file.

Template File

A file that contains the parameter settings you want to use to run XStream Out. You can load the parameter settings in the template file into the Virtuoso(R)XStream Out form.

In the XStream Out template file, '$' is considered as a special character because it is a UNIX environment variable. However, if you want '$' to be treated as a normal character, you can escape it by using '\' before it.

SKILL File

A file used to map cell names, fonts, and layer names.

OpenAccess database

The database you want to translate to a Stream file.

Log file

A file used for recording the translation process. It also keeps a log of all the messages.

Summary File

A file that has a summary of the translated design.

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 xstOutAutoPopulateIfEmptyLCV 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.

The form displays values from previous XStream Out session, if the changes made were applied before exiting XStream Out.

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.

By default, fields such as Stream File, Library and TopCell(s) in the XStream Out form, consider '$' as a special character because it is a UNIX environment variable. However, if you want '$' to be treated as a normal character, you can escape it by using '\' before it.

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.

Command-line option: strmFile

You must select a library before Streaming out the data.

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.

Command-line option: library

To hide cells, in Library Manager, right-click on a cell name and then select Hide Cell.
You can also specify the -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>
You must select a library before Streaming out the data.

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.

Command-line option: topCell

A Pcell supermaster can also be specified in the top level cell. It will be written in the Stream file during XStream Out.

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.

If you have manually changed the value of Stream File, then changing value of the Top Cell field will not update the Stream file name automatically. This is because manual editing of Stream file name is given the highest priority. To automatically update the Stream file name, first empty the Stream File field and then update the Top Cell field.

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

B C

B G C D E F

C

C D E F

B D

B G D E

If the Top Level Cell field is left blank, then all the cells will be translated.
Using command line, you need to give the cell names in quotes. For example "B G".

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.

Command-line option: view

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.

Default value: layout

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.

Command-line option: techLib

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.

If the Stream Out from Virtual Memory check box is selected, information and warning messages are not displayed in the CIW. They are logged in the log file.

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.

Command-line option: layerMap

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.

Default value: Deselected

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.

Default value: Deselected

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

Command-line option: logFile

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:

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.

Default value: Selected

Command-line option: enableColoring

The layer map file, which is either specified through the Layer Map field or is available in the technology, is required if you enable Coloring Mode. Otherwise, translation is terminated and an error message is displayed. Technology library can be specified using following XStream In options:

If the layer map and object map files do not have any color entry, the -enableColoring option is not considered during translation.

For a video on how to lock colors and how the locked colors propagate to the streamed out GDSII file, you can see Color Locking and Color Aware Xstream on Cadence Online Support.

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

Mask1Color, unlocked

Mask1Color, unlocked

Mask1Color, locked

Mask2Color, unlocked

Mask2Color, unlocked

Mask2Color, locked

Mask1Color, locked

Mask1Color, locked

Mask1Color, locked

Mask2Color, locked

Mask2Color, locked

Mask2Color, locked

Gray (no color)

Gray (no color)

Gray (no color)

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

You can use the SKILL environment variable xstHideMapAllColorToLocked 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.

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.

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.

Command-line option: cellMap

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:

*       INV_*      *     INV\*_*_ver1

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.

If you don't use Wild Card in Cell Map, the default behavior will be same as a normal cell map.

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 Cell Name Prefix and Cell Name Suffix for top level cell(s).

Default value: Deselected

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.

Default value: Deselected

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

Here,

  • subMasterSeparator is configured using the subMasterSeparator option
  • 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.

lower

The lower option translates all cell names to lowercase. For example, the name Obj1 becomes obj1.

upper

The upper option translates all cell names to uppercase. For example, the name Obj1 becomes OBJ1.

preserve

The preserve option translates the cell names without changing case. For example, the name Obj1 remains Obj1.

Command-line option: case

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.

To ensure that the missing or referenced cellviews are found in these libraries, you need to provide same references libraries during xStream In.

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:

Lib1
Lib2
Lib3

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.

Command-line option: propMap

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

Default value: Deselected

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.

Command-line option: fontMap

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.

Command-line option: labelMap

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.

Value values: 1 to 32767

Default value: 1

Command-line option: labelDepth

The -labelDepth option works only when the -labelMap option is specified.
The term Labels in the Label Translation Depth option name refers to the 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.

Default: off

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.

Default value: Deselected

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.

Default value: Deselected

Command-line option: pathToPolygon

However, there are the following instances where path is converted as polygon even if the Output Paths as Polygons option is not selected:

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.

Default Value: Deselected

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.

Default Value: Deselected

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.

The Convert Arrays to Scalar instances option works when the Coloring Mode option is enabled.

For performance issues related to this option, see Guidelines for XStream Out.

Default value: Deselected

Command-line option: arrayInstToScalar

Flatten Pcells

Select the Flatten Pcells check box if you want to flatten the Pcell instances in the designs.

Default value: Deselected

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 Flatten Pcells option.

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")

Default value: Not specified

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 Flatten Pcells option.

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.

Default value: Deselected

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)

Default value: 1.00

Command-line option: scale

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)

Default value: 64

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)

Default value: 64

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.

Valid Values: 5 to 8191

Default value: 200

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

Command-line option: dbuPerUU

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.

Default value: Deselected

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.

Default value: Deselected

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.

Default value: Deselected

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.

Default value: Deselected

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.

Default value: Deselected

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

The following table also summarizes the output when a label map file is specified simultaneously with a Convert Pin to option and when it is not.

Table 2-1 Convert Pin to Options

Option Label Map File Output
geometry

No

  • Pins are translated as the corresponding shape or instance.

Yes

  • Geometry as well as text is translated.
text

No

  • Pins are translated as labels.
  • The label string can consist of a terminal, net, or pin name.
  • The net name is associated with the shape.
  • If there is no net name, terminal name is considered. In case terminal name is not specified, the pin name is considered.

Yes

  • The corresponding entry in the label map file takes precedence over the Convert Pin to option.
  • Only text labels are translated.
  • A warning message informing that the mapping will be based on the label map file displays, and the translation continues to run.
geometryAndText

No

  • Pins are translated into shapes or instances and text labels.

Yes

  • The label map file takes precedence over the Convert Pin to option
  • Geometry as well as text is translated
  • A warning message informing that the mapping will be based on the label map file displays, and the translation continues to run.
ignore

No

  • Pins are not translated.

Yes

  • If Convert Pcell Pin to option is not specified or if the ignore value is specified, then the label map file is ignored.
  • No record is translated.
  • A warning message informing that the label map option will be ignored displays, and XStream Out continues to run.

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.

Example

Consider the following:

  • There are two pins in a cellview with one pin each on M1:drawing and M2: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:

  • If Pin Label Purpose is not selected:
    • Pin shapes are exported on 1:1 and 2:1
    • Pin labels are exported as 1:1 and 2:1
  • If Pin Label Purpose is specified as pin:
    • Pin shapes are exported on 1:1 and 2:1
    • A pin label for pin on M1:drawing is exported as per the mapping for M1:pin which is. 2:10
    • Pin labels for pin on M2:drawing are exported as per the mapping for M2:drawing which is 2:1. This is because there is no mapping for M2:pin.

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.

node

The Node option converts dots to nodes.

polygon

The Polygon option converts dots to polygons.

ignore

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.

Command-line option: noInfo

Alternatively, click the Message Browser button to display the XStream Out Info Messages form to select or specify the XStream Out information messages that you want to disable.

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.

Command-line option: noWarn

Alternatively, click the Message Browser button to display the XStream Out Warning Messages form to select or specify the warning messages that you want to disable.

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 XStream Out Info Messages form to select or specify the information messages that you want to convert to warning messages.

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 Warning Messages form to select or specify the warning messages that you want to convert to error messages.

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.

Other IDs

Use the Other IDs field to specify information message IDs of other dependent tools.

Select All

Click the Select All check box to select all message IDs.

Cancel

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.

Other IDs

Use the Other IDs field to specify warning message IDs of other dependent tools.

Select All

Click the Select All check box to select all message IDs.

Cancel

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.

Other IDs

Use the Other IDs field to specify information message IDs of other dependent tools.

Cancel

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.

Other IDs

Use the Other IDs field to specify information message IDs of other dependent tools.

Cancel

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

Command-line option: runDir

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.

Default value: nil

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.

Default: Deselected

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.

Default: Deselected

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.

A begin or end path with negative extension is truncated to zero if the length of the new path segment is greater than or equal to the half-path width. A warning is added to the log file.

Default value: Deselected

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.

Default value: Deselected

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.

XStream Out supports only those SKILL functions that are essential to evaluate a Pcell. These are SKILL Core, 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>

<*>     <cell2>     <*>     <*>

Command-line option: cellListFile

Asterisk “*” can be specified for all the fields, except <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.

Default value: Selected

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.

Value values: 0 to 32767

Default value: 32767

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.

Valid values: 1 to 127

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.

Default value: preserve

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

Default value: 5

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].

Table 2-2 Examples of Name Mapping

Type Native VHDL Verilog CDBA LEF/DEF SPEF SPF SPICE

lowercase or case sensitive

bigchip

bigchip

BIGCHIP

bigchip

bigchip

bigchip

bigchip

bigchip

bigchip

BIGCHIP

case sensitive mixed case

BigChip

\BigChip\

BigChip

BigChip

BigChip

BigChip

BigChip

%Big%Chip

keyword

and

\and\

\and

and

and

and

and

and

unneeded
escape

ESC_trash

\trash\

ESC_trash

ESC_trash

ESC_trash

ESC_trash

ESC_trash

ESC_trash

embedded
space

foo bar

\foo bar\

\foo#20bar

foo#20bar

foo%20bar

foo#20bar

foo#20bar

foo#20bar

device names

aux

aux

aux

aux

aux

aux

aux

aux

back-slash

\a\b

\\\a\\b\

\\a\b

#5ca#5cb

\\a\\b

\\a\\b

#5ca#5cb

#5ca#5cb

forward slash

#2fa#2fb

\/a/b\

\/a/b

#2fa#2fb

\/a\/b

\/a\/b

\/a\/b

a/b

special characters*

a<1#3a2>

\a<1:2>\

\a<1:2>

a#3c1:2#3e

a<1:2>

a\<\:2\>

a<1\:2>

a<1:2>

bit index

[]

()

[]

<>

[]

[]

scalar only by default

[]

hierarchy

/

:

.

/

/

/

.

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.

When you select this option:

  • 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

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.

Layer Name

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.

Purpose Name

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.

Stream Layer

Use the Stream Layer field to specify the Stream layer name to which DFII layer name has to be translated.

Stream Datatype

Use the Stream Datatype field to specify the Stream type to which DFII purpose name has to be translated.

Material Type

Use the Material Type field to specify the OpenAccess material type to which you want to map the Stream type.

Mask Number

Use the Mask Number field to specify the OpenAccess mask number to which you want to map the Stream type.

Qualifier

Use the Qualifier field to specify the OpenAccess qualifier to which you want to map the Stream type.

Photo Mask Color

Use the Photo Mask Color field to specify the photo mask color of the layer.

Color State

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.

Show/Hide Columns

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.

Object Name

Use the Object Name field to select the name of the object to be mapped.

Sub Object Name

Use the Sub Object Name field to select the name of the sub object to be mapped.

Layer Name

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.

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.

Stream Type

Use the Stream Type field to specify the Stream datatype for the OpenAccess object. By default, the Stream datatype is specified as 0.

Photo Mask Color

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.

Library

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.

Cell

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.

View

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.

Stream Name

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.

If you want to specify the target library name as reference library then you need to use the XST_TARGET_LIB variable in the Available libraries field.

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.

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.

Property Name

Use the Property Name field to specify the property name that you want to map to the Stream format.

Object Type

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.

Property ID

Use the Property ID field to specify the Stream ID on which you want to map the selected object type and the property name.

Property Value Only

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.

Default value: Deselected

Property Separator

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

arrayInstToscalar

Convert Arrays to Scalar Instances

case

Default value: Deselected

cellListFile

Cell List File

cellMap

Cell Map File - Load

cellNamePrefix

Cell Name Prefix

cellNameSuffix

Cell Name Suffix

checkPolygon

Report Bad Polygons and Paths

convertDot

Convert Dot To

convertPcellPin

Convert Pcell Pin to

convertPin

Convert Pin to

dbuPerUU

DB Units Per User Units

scale

Design Scale Factor

doNotPreservePcellPins

Do Not Preserve Pcells Pins

donutNumSides

Donut Sides

ellipseNumSides

Ellipse Sides

flattenPcells

Flatten Pcells

flattenPcellsExclusionFile

  

Pcells Exclusion File

fontMap

Fonts Map File - Load

gdsCellNameLength

GDS Cell Name Length

hierDepth

Translation Depth, Translate Entire Hierarchy

ignoreLines

Do Not Translate Lines

ignoreMissingCells

Ignore Missing Cells

ignoreMissingVias

Ignore Missing Vias

ignoreObjectMapFromTech

Ignore Object Map File from Technology

ignorePcellEvalFail

Ignore Pcell Evaluation Failure

ignoreCurrentTimestamp

Ignore Pcell Evaluation Failure

ignoreTopCellPrefixSuffix

Ignore Cell Name Prefix and Suffix for Top Cell

infoToWarn

Convert Info Message IDs to Warnings

labelCase

Label Case Sensitivity (preserve, upper, lower)

labelDepth

Label Translation Depth

labelMap

Use the Cancel button to exit XStream Out Font Map File Editor form without saving any changes.

layerMap

Layer Map File - Load

library

Library

logFile

Log File

maxVertices

Max Vertices

mapAllColorToLocked

Map All Colors to Locked

noConvertHalfWidthPath

Do Not Convert Half Width Path to Polygon

noInfo

Disable Info Message IDs

noObjectProp

Object Type

theextDisplays

Do Not Translate TextDisplays

noOutputUnplacedInst

Do Not Translate Unplaced Instances

noWarn

Disable Warning Message IDs

objectMap

Object Map File - Load

outputDir

Output Directory

outputViaShapesToViaPurp

Output Shapes of Vias to Via Purpose

pathToPolygon

Output Paths as Polygons

pinAttNum

Pin Attribute Number

pinLabelPurp

Pin Label Purpose

propMap

Property Map File - Load

propValueOnly

Property Name

rectToBox

Output Rectangles as Box Records

refLibList

Reference Library Map File - Load

replaceBusBitChar

Replace <> with []

respectGDSIINameLimit

Respect 32 Characters Name LimitGDS Cell Name Length

runDir

Run Directory

showCompletionMsgBox

Ignore Current Timestamp

snapToGrid

Snap to Grid

strmFile

Stream File

strmTextNS

Text Namespace

strmVersion

Stream Version

subMasterSeparator

Sub-Master Separator

summaryFile

Summary File

techlib

Technology Library

topCell

Top Cell(s)

translateUnmappedLPP

Translate Unmapped LPPs

userSkillFile

User Skill File

viacutArefThreshold

Via Cut Aref Threshold

viaMap

Via Map File

view

View(s)

virtualMemory

Stream Out from Virtual Memory

warnToErr

Convert Warning Message IDs to Errors

wildCardInCellMap

Wildcard in Cell Map

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 xstSetField command in CIW. To access values from Stream Out form, you need to enter the xstGetField command in CIW.

All the options listed above are valid for xstSetField, xstGetField, template file, and streamOutKeys. All the options except 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 the streamOutKeys SKILL list. For this, define the pre-seeding options in the .cdsinit file 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 -topCell option to specify the hierarchy and context.
  • The -enableColoring option 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:

STRNAME LeafCell_0

BOUNDARY  LAYER=1  DATATYPE=1  XY=...  ENDEL

BOUNDARY  LAYER=2  DATATYPE=1  XY=...  ENDEL

ENDSTR

STRNAME LeafCell_1

BOUNDARY  LAYER=1  DATATYPE=1  XY=... ENDEL

BOUNDARY  LAYER=1  DATATYPE=1  XY=... ELDEL

ENDSTR

STRNAME TopCell

SREF SNAME=LeafCell_0   X=... Y=... ENDEL

SREF SNAME=LeafCell_1   X=... Y=... ENDEL

ENDSTR

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.

The two user command-line options -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 locked color 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.

Name

Description

SNAME

Name of the structure

COL

Number of columns

ROW

Number of rows

ANGLE

Angle of rotation

Three XY coordinates

XY0

Origin point

XY1

Displacement from the origin by the inter-column spacing times the number of columns.

XY2

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.

You cannot use the multithreading option while translating a compressed GDSII file.

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.

As of now only gzipped the compressed (.gz) format is supported.

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 strmFilenamePrefix and strmFilenameSuffix control the prefix and the suffix of the GDS filename, respectively. If the GDS file already exists, it will be suffixed with _1, _2 during export.
  • The layerMap and objectMap files, 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/poLayerMap function 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
Here, the layer map file and the SKILL file are user-defined. While, 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:

  1. If you provide a layer map file, the layer map file is used for layer mapping.
  2. 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.
If you provide a layer map file as well as a SKILL file for layer mapping, the layer map file will take precedence over the SKILL file. The piLayerMap/poLayerMap SKILL function will not be considered in this case.
  1. If you do not provide a layer map file or SKILL file, XStream will automatically search for the techlibname.layermap file 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.
  2. If both the layer map file and the SKILL file are not found, automatic layer mapping takes place.
    If you want to force XStream to map layers automatically and ignore the techlibname.layermap file, you can override the default behavior of XStream by specifying the XST_AUTO_LM keyword for the -layerMap option. When you specify the XST_AUTO_LM keyword:
    • Even if a layer map file with the name techlibname.layermap exists, it will be ignored.
    • XStream will use its internal layer mapping scheme.

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 dfIILayer number or dfIIPurpose number is greater than 65535 in the design.
  • The -translateUnmappedLPP option 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.

To prevent collision:

  • When the dfIILayer/dfIIPurpose number is lower than 65535, default automatic mapping in which the dfIILayer number is the same as the strmLayer is done. Here, the dfIILayer number for M1 is 1. Therefore, shape s1 is mapped according to this number.
  • When the dfIILayer/dfIIPurpose number is higher than 65535, then non-default automatic mapping that starts from 5000 is performed. Shape s2 is 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:

Metal1 drawing 10 0

Then, s1 will be mapped to 1/0 and s2 will be mapped to 5000/0.

To prevent collision:

  • When the dfIILayer/dfIIPurpose number is included in the layer map file, mapping is done as defined in the file. Shape s1 is mapped according to this.
  • Even when the dfIILayer number is lower than 65535, default automatic layer mapping is not done because the dfIILayer number 10 is used in the layer map file. Therefore, non-default automatic layer mapping that starts from 5000 is performed for shape s2.

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.

If 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

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:
    • OpenAccess layer name
    • OpenAccess purpose name
    • Stream layer number
    • Stream data type
  • It can also include the following optional fields:
    • Material Type
    • Mask Number
    • Qualifier
    • Photomask Color
    • Color State
  • 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

metal1     

drawing

1, 2

0

metal1     

drawing

3, 4-9

0

text, diff

drawing

5

0

metal, pwell

drawing

6

0

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

metal1     

drawing

1

0

metal1     

drawing

2

0

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

metal     

drawing

13, 10, 18

1

poly

boundary

40

0-63

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

metal     

drawing

13

1

metal     

drawing

10

1

metal     

drawing

18

1

The valid range for layer/datatype is 0-32767 (inclusive of both values).

Sample Layer Map File

#Open Access
Layer Name
Open Access Purpose Name
Stream
Layer
Stream 
DataType
text
drawing
5
0
The same Stream layer number and data type pair might be mapped to more than one Design Framework II on OpenAccess layer-purpose pairs. In this scenario, XStream In translates all the entries for that Stream layer only to the first Design Framework II layer-purpose pair specified in the layer map file.

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
Layer Name
OpenAccess Purpose Name
Stream
Layer Number
Stream 
DataType

metal1

drawing

2

0

metal2

boundary

2

0

metal3

boundary

2

1

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.

Photomask Color and Color State fields are supported in advanced nodes only.
  • 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 Qualifier column are Pin, floating, cutSize:<float>:<float>, ignoreLPP, and WSPRegionType. The complete mapping record is ignored during XStream In when the ignoreLPP qualifier is used.
    Here, qualifier:
    • pin ensures that the specified shape is a pin. The qualifier supports pins onto a different Stream layer datatype. (see Example for Qualifier Pin Shapes)
    • floating checks if the specified shape is connected to any other shape. It fills onto a different Stream layer datatype.This qualifier is only valid for purpose fill and fillOPC.
    • cutsize ensures 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 is cut. This qualifier is valid only for material cut, contactlessMetal, or trim. (see Example for Qualifier cutsize)
    • ignoreLPP ignores 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 when ignoreLPP qualifier is used (see Example for Qualifier IgnoreLPP)
    • WSPRegionType enables the translation of Width Spacing Pattern (WSP) regions.
      Syntax for using WSPRegionType:
      <OA layer> <OA purpose> <LayerNumber> <DataTypeNumber> [<WSPRegionType>]
      Here, WSPRegionType can 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 Color and Color State optional fields are supported both in XStream In and XStream Out.
    • Valid values for Photomask Color field are mask1Color, mask2Color, mask3Color, mask4Color, mask5Color, mask6Color, mask7Color, and mask8Color
    • Valid values for the Color State field are locked and unlocked. (see Example for Color Fields)
For a video on how to lock colors and how the locked colors propagate to the streamed out GDSII file, you can see Color Locking and Color Aware Xstream on Cadence Online Support.

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:

Via1   drawing 2 1 cut

In this case, all the shapes (R1, R2, R3, R4, P1, P2, P3, PA1, and PA2) are written on Streamlayer:datatype, 2:1.

  • Case 2:

Via1   drawing 2 1 cut

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.

  • Case 3:

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.

  • Case 4:

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.

  • Case 5:

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:

M4 drawing 8 1

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.

M4 drawing 7 1 pin

The cases using different layerMap entries with the pin qualifier are listed below:

  • Case 1:

Let us assume you have the following entries in the layer map file:

M4 drawing 8 1

M4 drawing 7 1 pin

Then, all regular shapes will go to Stream layer, <8:1>. Whereas, all pin shapes will go to <7:1>.

  • Case 2:

Let us assume you only have the following entry in the layer map file.

M4 drawing 8 1

Then, all the shapes, including pin shapes will go to Stream layer, <8:1>.

  • Case 3:

Let us assume you only have the following entry in the layer map file.

M4 drawing 7 1 pin

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:

m1 drawing 1 1

m2 drawing 0 0 ignoreLPP

Additionally, there are three shapes, one each on:

m1 drawing

m2 drawing

m3 drawing

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 1 0 Pin

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

Metal1   drawing 1 4

Via1   drawing 2 1

Metal2   drawing 3 1 metal

Via2   drawing 4 1 cut 4

Metal3   fill 5 1 metal floating

Via3   drawing 6 1 cut 6 cutSize:1.0:1.0

Metal4   drawing 7 1 pin

Metal4   drawing 8 1

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.

If XStream Out encounters an unlocked color shape, then it will try to use non-color mapping and the one-time warning message will be displayed for it. If non-color mapping is also not available for that 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.

  1. 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 oaLPP with specific color, then a warning will be displayed on per-shape basis.
  2. 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:

  1. Color Pin Mapping: The mapping entry with Photomask Color, Color State, and Pin as Qualifier.
  2. Color cutSize Mapping: The mapping entry with Photomask Color, Color State, and cutSize:<float>:<float> as Qualifier.
  3. Normal color mapping: The mapping entry with Photomask Color and Color State.

Non-Color aware mapping will use the following order to consider the qualifier field:

  1. Pin Mapping: The mapping entry with Pin as Qualifier.
  2. CutSize Mapping: The mapping entry with cutSize:<float>:<float> as Qualifier.
  3. Normal/default mapping: The mapping entry with only four must fields and without Qualifier field.

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:

Option Description

-labelDepth number

Specifies to what depth of the design hierarchy labels are generated. If the -hierDepth option is also used, and the -labelDepth value is greater than the -hierDepth value, labels are generated for all levels of the hierarchy. If the -labelDepth option is not specified, labels are generated for only the top level of the design.

-labelMap filename

Specifies 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.

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.

# Object

oaLayer

oaPurpose

GDS Layer Number

GDS Data Type

Term

Metal5

drawing

131

0

Term

Metal6

drawing

132

0

Net

Metal5

drawing

131

1

Net

Metal6

drawing

132

1

Term

Metal5

drawing

131

2

Term

Metal6

drawing

132

2

Net

Metal5

drawing

131

3

Net

Metal6

drawing

132

3

Term

Metal5

drawing

131

4

Term

Metal6

drawing

132

4

Net

Metal5

drawing

131

5

Net

Metal6

drawing

132

5

The label map file uses five required fields, listed in the following table.

Field Name Value Type

Object

[ Net | Term ]

Layer

An oaLayer name.

Purpose

An oaPurpose name.

GDS Layer

A numeric value representing a GDS layer.

GDS Data Type

A numeric value representing a GDS data 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:
    • Stream font number
    • OpenAccess font name
  • 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
Legal Stream font numbers are 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

0

Fixed

1

EuroStyle

2

Gothic

3

Math

0

All other fonts

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.

In a property map file,

  • 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.
    • The syntax for an option record is:

    [-f<Format_Specifier>] 
    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:
      • -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,

    attributeNumber

    Specifies the Stream attribute number that is used to store the value of the property. This can be any number other than 126 and 127 which are reserved attribute numbers.

    objectType

    Specifies the object type for which a particular property is to be translated. Valid values of OpenAccess object types are Arc, Donut, Dot, Ellipse, Line, Path, Polygon, Rect, Text, ArrayInst, ScalarInst, PathSeg, Route, Marker, Row, AreaBoundary, PRBoundary, SnapBoundary, ClusterBoundary, AreaBlockage, AreaHalo, LayerBlockage, LayerHalo, and Pin.

    propertyName

    Specifies the property name to be preserved. Valid values include any ASCII string.

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 specifying instName as a property for the object type scalarInst in the property map file.
  • netName
    The netName keyword 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 the netName.

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:
    • Library name
    • OpenAccess cell name
    • OpenAccess view name
    • Stream structure name

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 is on and 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.

XST_TARGET_LIB keyword is applicable only for XStream In.
: In case 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.

The viaMap file is meant to preserve the via mapping information on a XStream Out-XStream In round-trip only.

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.

Processing vias is much faster as compared to processing instances. You may have designs containing millions of via-like structures. Therefore, using a via map file during XStream In ensures that the layout editing and processing tools work faster for designs created by XStream In.

In a via map file:

  • 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:
    • sub master name
    • viaDef name
    • list of non-default parameter values
  • 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 -viaMap option 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.

In case, ignoreObjectMapFromTech is specified techlibname.objectmap file is ignored during XStream Out.
With XStream Out and XStream In sharing the same object map file from technology, both processes pick the same file from the technology library for translation. XStream In supports only a subset of objects in the objectMap file, therefore, warning '142' is displayed during translation. You can use -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.
    • OA object name
    • OA object sub-type
    • [ OA layer name ]
    • Stream layer number (0- 255)
    • Stream datatype (0 -255)
  • 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]

where:

  • Columns 1,2,4, and 5 are mandatory.
  • Columns 3 and 6 are only for the LayerBlockage Object Type. These are optional for XStream Out. However, column 3, Layer Name is mandatory for XStream In.
  • Valid values for Photomask Color column are mask1Color, mask2Color, mask3Color, , mask4Color, mask5Color, mask6Color, mask7Color, mask8Color, blackColor, and multiColor.
  • The object type Stitch can 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.

  1. The object map is considered for the layer name and photo mask color.
  2. 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:

  1. Entry with layer name and photo mask color
  2. Entry with only photo mask color
  3. Entry with only layer name
  4. 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 Handling Stitches in Virtuoso Multi-Patterning Technology User Guide.

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.

Ensure that you specify the option -noObjectProp only when using the -objectMap option. You will get an error message if you use the -noObjectProp option without the -objectMap option.

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

Boundary

oaAreaBoundary

oaPRBoundary

oaSnapBoundary

Cluster

Translating Blockages

The OpenAccess blockage object represents those areas in a design where specific object types cannot be located.

Blockages can be:

  • 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

    AreaBlockage

    placement

    LayerBlockage

    routing

    viaRouting

    feedthru

    fill

    pin

    screen

    slot

    wiring

    AreaHalo

    placement

    If the number of coordinates in a LayerBlockage exceeds 8000, it is divided into smaller objects with the number of coordinates less than or equal to 8000. This is done to ensure a valid GDS file.
    The AreaBlockage object type can only have placement as the sub-type, while the LayerBlockage object can have all other sub-types, except for the placement 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

Marker

acknowledgedWarning

annotation

criticalError

error

fatalError

info

signedOffCriticalError

signedOffError

warning

If the number of coordinates in a Marker exceeds 8000, it is divided into smaller objects with number of coordinates less than or equal to 8000. This is done to ensure a valid GDS file.

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.

Custom and mixed rows are not translated and preserved in this release.

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

Boundary

oaPRBoundary

oaSnapBoundary

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

LayerBlockage

routing

viaRouting

feedthru

fill

pin

screen

slot

wiring

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

Marker

acknowledgedWarning

annotation

criticalError

error

fatalError

info

signedOffCriticalError

signedOffError

warning

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
For 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

Orthogonal pathseg

‘truncate’, ‘extend’, or ‘variable’

paths (PATH)

Orthogonal pathseg

‘custom’ or ‘chamfer’

polygons (BOUNDARY)

Diagonal pathseg

always

polygons (BOUNDARY)

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:
    • It has the extensions, such as spike or gap on the edge.
    • The beginStyle or endStyle of an oaPathSeg is custom or chamfer
  • End type of PATH would become variable if:
    • BeginStyle of the first oaPathSeg and endStyle of the last pathSeg are different. Only styles truncate, extends, and variable are considered.
  • When property mapping is used, if there is a conflict between the properties of the oaPathSegs objects, 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

This section includes:

  • Preserving Pin Connectivity Information
  • Preserving Net Names

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 are Top (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
    • Top
    • Bottom
    • Left
    • Right

    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, and tristate.
  • 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:

XStream does not support the environment variables CDS_PROMPT_CKOUT and CDS_PROMPT_CKIN.
  • 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
The maximum length of a single line in the template file for topcell and other XStream Out options is 8192.

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
During XStream In and XStream Out both 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.lib file size
      The cds.lib file should consist of a minimal list of libraries for XStream In to perform faster. The minimum number of libraries listed in cds.lib should 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 the cds.lib file, 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 the cds.lib file is by using the Reference Library List option.
    • Use the Reference Library List option
      Suppose you are having a number of reference libraries in cds.lib and 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 in cds.lib may 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, and E. You know that the usage density (the maximum probability of finding the referenced cell from a library) is from C and E. In such a case, in order to speed up the XStream In process, first create a file, say relLib1.list. Add library names to this file in the sequence:
      C E A B D
      Next, use the refLibList option 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.
  • 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.
    This functionality is not available in the VCE 3.2 release.
  • 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 also use DFII SKILL functions to access the 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.

.

You do not need a special license to use XStream In with virtual memory. XStream In uses the same license that is used by the Virtuoso layout editor.

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.

Run this flow in a new library and not in an existing library. This means that instead of running the chip-finishing flow in a pre-created library, you should allow XStream In create the new library.
Important:

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 a video on Chip Finishing Flow, see Introducing The Chip Finishing Flow on Cadence Online Support.

For information about XStream SKILL functions, see the Design Data Translator’s SKILL Reference.


Return to top
 ⠀
X