Product Documentation
Virtuoso Studio Design Environment Adoption Guide
Product Version IC23.1, September 2023

6


Migrating from PIPO to XStream

This chapter contains the following sections:

Overview

From the ICOA5.1.51 release PIPO has been replaced by XStream on OpenAccess. Both PIPO and XStream provide Stream Out capability to generate GDSII format data required for mask generation, and both provide a Stream In capability to restore that data into a Virtuoso environment database. However there are differences in the functionality and use model of PIPO and XStream. The following sections explain these differences in terms of command line usage, arguments and options, template file, and syntax.

One difference between PIPO and XStream is that you could, to some extent, use PIPO as a Virtuoso environment database archival mechanism. For example, using PIPO you can preserve Pcells and keep ROD data though these options are not sufficient to archive the complete design information, such as connectivity or user defined groups. XStream on the other hand does not allow you to preserve Pcells and ROD data. XStream does not duplicate the archival mechanism of PIPO in OpenAccess.

PIPO-XStream Template File Differences

As a PIPO user, you might be running PIPO Stream In - Stream Out from the command line or from customized scripts with the command line function embedded within. These scripts might use established PIPO template files which can be managed outside of the Virtuoso environment GUI.

Moving to XStream, some options and the template file syntax has changed, so you cannot directly use existing PIPO template files with XStream. For example, PIPO template file implements the SKILL list syntax, whereas the XStream template file uses a straight ASCII text, space, and line delimited format. Each line contains the option or argument, the value, and an optional comment or description.

For a Boolean argument, the value is not shown. A nil or an unasserted option is preceded by the comment character, #. A t or asserted option is just listed without a value as shown below:

PIPO XStream Equivalent

‘ignoreBox "nil"

#ignoreBox

‘ignoreBox "t"

ignoreBox

For all text, lists, and other string values, the values can be specified with or without quotes.

Numeric values are specified without any special characters. In-line comments, if present, are preceded by the comment character, #.

Although most PIPO options have identical XStream equivalents, some may have the same functionality but not an identical option name. Some of the seemingly arbitrary option name changes in XStream have been done to maintain compatibility with the native OA Stream translator.

The following section explains the differences in the commands and the options between PIPO and XStream.

Stream In Template File Mapping

The following table maps the PIPO Stream In options with the corresponding XStream options with notes on differences in functionality and changes in the use model.

Stream In Template File Options
PIPO Option XStream Option Notes

runDir

runDir

Same options

inFile

strmFile

Equivalent options

primaryCell

topCell

Equivalent options

libName

library

Equivalent options

-

view

New option

XStream allows you to specify the view name, default being layout.

techFileName

loadTechFile

Equivalent options

scale

-

Unsupported option

In DFII on CDB, you could change the DBU/UU of a design at the library level. This is not permitted on OpenAccess and therefore not supported by XStream.

errFile

logFile

In PIPO, the error file contains messages and summary information. Therefore the PIPO template option errFile is equivalent to using both the logFile and summaryFile options in XStream.

cellMapTable

cellMap

Equivalent options

layerTable

layerMap

Equivalent options

textFontTable

fontMap

Equivalent options

restorePin

pinAttNum

Equivalent options

propMapTable

propMap

Equivalent options

propSeparator

propSeparator

Same options

userSkillFile

userSkillFile

Same options

The PIPO and XStream options are the same. In PIPO the following SKILL functions are supported:

  • piCellNameMap
  • piLayerMap
  • piTextMap
  • pipoErrShapesHandler
  • piPropMap

In XStream all the above SKILL functions are supported for Stream In except pipoErrShapesHandler.

-

objectMap

New option

XStream provides an object map file to preserve non-maskable OpenAccess objects, such as boundaries and blockages. Object mapping file maps the object type and sub type to the Stream layer-datatype pair.

This option is not applicable for PIPO.

-

viaMap

New option

Vias are objects in OpenAccess. The via map file maps the Structure names from the Stream file to the corresponding viaDef names in the input technology library. The original vias can then be recreated during subsequent Stream Ins.

This option is not applicable for PIPO.

checkPolygon

-

Unsupported option

OA does not allow coincident or colinear points and removes them during creation of paths and polygons. XStream only reports incomplete or illegal polygons in the log file.

Therefore this option is not supported by XStream.

snapToGrid

snapToGrid

Same options

arrayToSimMosaic

arrayInstToScalar

Changed option

By default on OA, mosaics are kept as OA arrays (AREF in SKILL). when you set arrayInstToScalar to t, XStream converts the arrays to scalar instances (SREF in SKILL). This is a reversal in behavior from arrayToSimMosaic in PIPO.

skipUndefinedLPP

skipUndefinedLPP

Same options

zeroPathToLine

ignoreZeroWidthPath

Changed option

This PIPO option, zeroPathToLine can have the values <lines/ignore>. By default, during Stream In, XStream converts zero width paths into lines and they are ignored only when ignoreZeroWidthPath option is set to t.

Therefore the mapping is as follows:

‘zeroPathToLine "lines" 

maps to

#ignoreZeroWidthPath

while

‘zeroPathToLine "ignore"

maps to

ignoreZeroWidthPath

caseSensitivity

case

Equivalent options

convertNode

translateNode

Equivalent options

keepPcell

-

Unsupported option

This PIPO option preserves parameterized cells (Pcells) by reading the SKILL files already created by Stream Out in the KPDIR directory located in the run directory.

PIPO can be used to some extent for database archival whereas XStream is not meant to be used as a database archival mechanism.

mergeUndefinedPurposeToDrawing

mergeUndefPurposToDrawing

Equivalent options

reportPrecision

-

Unsupported option

XStream does not perform this precision check and therefore this option is not supported by XStream.

ignoreBox

ignoreBoxes

Equivalent options

refLib

-

Unsupported option

In PIPO this boolean option merely indicates whether to use reference libraries. If this flag is set to ‘t’ then refLibOrder is searched for the list of reference libraries.

XStream uses only one option refLibList. If refLibList is empty then it implies that no reference library is being used.

refLibOrder

refLibList

Equivalent options

noWriteExistCell

noOverwriteCell

Equivalent options

runQuiet

-

Unsupported option

XStream does not filter warning and information messages during translation. All error, warning, and information messages are written to the log file.

Therefore this option is not supported by XStream.

NOUnmappingLayerWarning

-

Unsupported option

XStream does not filter warning and information messages during translation. Therefore this option is not supported by XStream.

hierDepth

hierDepth

Same options

maxVertices

-

Unsupported option

This option is not supported by XStream during Stream In though you can use this option during Stream Out.

rodDir

-

Unsupported option

Using PIPO you can preserve Pcells and keep ROD data though these options are not sufficient to archive the complete design information.

XStream does not allow you to preserve Pcells and ROD data as it is not intended to be used as an archival mechanism.

keepStreamCells

keepStreamCells

Same options

attachTechfileOfLib

attachTechFileOfLib

Equivalent options

comprehensiveLog

-

Unsupported option

This is a SKILL reporting mechanism which is not applicable on XStream.

Therefore, this option is not supported by XStream.

appendDB

appendDB

Same option

Use the Append Existing Database option to append data to an existing database. If the GDS file contains duplicate shapes or instances, they will be appended to the existing database.

genListHier

-

Unsupported option

XStream writes hierarchical information in the summary file.

-

disableLocking

New option

XStream provides the disableLocking option to disable file locking during Stream In. The disabling of file locking reduces the run time of Stream In especially if the designs contain a large number of cellviews in their hierarchy or library.

-

summaryFile

New option

XStream provides two files for messages and summary information whereas in PIPO the error file contains both messages and summary information.

Therefore the PIPO template option errFile is equivalent to using both the logFile and summaryFile options in XStream.

Stream Out Template File Mapping

Stream Out Template File Options
PIPO Option XStream Option Notes

runDir

runDir

Same options

libName

library

Equivalent options

primaryCell

topCell

Equivalent options

viewName

view

Equivalent options

outFile

strmFile

Equivalent options

scale

-

Unsupported option

In DFII on CDB, you could change the DBU/UU of a design at the library level. This is not permitted in OpenAccess and therefore not supported by XStream.

units

-

Unsupported option

In DFII on CDB, you could change the DBU/UU of a design and set the units at the library level. This is not permitted in OpenAccess and therefore not supported by XStream.

hierDepth

hierDepth

Same options

convertToGeo

flattenPcells

Equivalent options

This PIPO option flattens Pcells to geometry. XStream provides the Flatten Pcells option to flatten the Pcell instances in the designs.

maxVertices

maxVertices

Same options

refLib

refLibList

Equivalent options

In PIPO this boolean option merely indicates whether to use reference libraries. XStream uses only one option refLibList. If refLibList is empty then it implies that no reference library is being used.

Therefore the mapping is as follows:

’refLib t

maps to

refLibList "XST_CDS_LIB"

while

’refLib nil 

maps to

refLibList ""

For more information on refLibList see the Design Translation Using XStream Translator chapter of the Virtuoso Studio Design Environment Adoption Guide.

libVersion

-

Unsupported option

This PIPO option allows you to change the version number of the output GDSII Stream. Default: 5.0.

In XStream the version number of the output GDSII Stream is always 5.0.

checkPolygon

-

Unsupported option

OA does not allow coincident or colinear points and removes them during creation of paths and polygons. XStream only reports incomplete or illegal polygons in the log file.

Therefore this option is not supported by XStream.

snapToGrid

snapToGrid

Same options

simMosaicToArray

arrayInstToScalar

Changed option

By default on OA, mosaics are kept as OA arrays (AREF in SKILL). when you set arrayInstToScalar to t, XStream converts the arrays to scalar instances (SREF in SKILL). This is a reversal in behavior from arrayToSimMosaic in PIPO.

caseSensitivity

case

Equivalent options

lineToZeroPath

ignoreLines

Changed option

In PIPO the template option lineToZeroPath can have the values <path/ignore>. By default, during stream out, XStream converts lines to paths and they are ignored only when ignoreLines option is set to t.

Therefore the mapping is as follows:

‘lineToZeroPath "path"

maps to

#ignoreLines

while

‘lineToZeroPath "ignore" 

maps to

ignoreLines

convertDot

convertDot

Same options

rectToBox

rectToBox

Same options

convertPathToPoly

pathToPolygon

Equivalent options

keepPcell

-

Unsupported option

XStream does not support preservation of Pcells. See the Overview section for details.

useParentXYforText

-

Unsupported option

XStream does not do any data manipulation or data checking and therefore this option is not supported by XStream as yet.

reportPrecision

-

Unsupported option

XStream does not perform this precision check and therefore this option is not supported by XStream.

runQuiet

-

Unsupported option

XStream does not filter warning and information messages during translation. All error, warning, and information messages are written to the log file.

Therefore this option is not supported by XStream.

errFile

logFile

Equivalent options

In PIPO, the error file contains messages and summary information. Therefore the PIPO template option errFile is equivalent to using both the logFile and summaryFile options in XStream.

NOUnmappingLayerWarning

-

Unsupported option

XStream does not filter warning and information messages during translation. Therefore this option is not supported by XStream.

techFileChoice

techLib

Changed option

The XStream option techLib and the PIPO option techFileChoice are not equivalent.

The techFileChoice option is to choose the technology file attached either to the input library or to each cellview that is traversed. A Virtuoso product can have any cellview attached to any technology file.

The techLib option in XStream is for obtaining information about the 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.

pcellSuffix

-

Unsupported option

XStream does not support preservation of Pcells. See the Overview section for details.

respectGDSIILimits

respectGDSIINameLimit

Equivalent options

dumpPcellInfo

-

Unsupported option

XStream does not support preservation of Pcells. See the Overview section for details.

cellMapTable

cellMap

Equivalent options

layerTable

layerMap

Equivalent options

textFontTable

fontMap

Equivalent options

convertPin

convertPin

Same options

pinInfo

pinAttNum

Equivalent options

pinTextMapTable

pinTextMap

Equivalent options

propMapTable

propMap

Equivalent options

propSeparator

-

Unsupported option

By default, XStream uses a blank space as the property separator during Stream Out. You cannot specify a property separator during Stream Out though you can specify it during Stream In.

userSkillFile

userSkillFile

Equivalent options

In PIPO the following SKILL functions are supported:

  • poCellNameMap
  • poParamCellNameMap
  • pipoErrShapesHandler
  • poLayerMap
  • textFontMap
  • poTextMap
  • poPropMap

In XStream all the above SKILL functions are supported for Stream Out except poParamCellNameMap and pipoErrShapesHandler.

rodDir

-

Unsupported option

This option is not supported by XStream. Using PIPO you can preserve Pcells and keep ROD data though these options are not sufficient to archive the complete design information.

XStream does not allow you to preserve Pcells and ROD data as it is not intended to be used as an archival mechanism.

comprehensiveLog

-

Unsupported option

This is a SKILL reporting mechanism which is not applicable on XStream. Therefore, this option is not supported by XStream.

genListHier

-

Unsupported option

XStream writes hierarchical information in the summary file.

-

objectMap

New option

This option is not supported by PIPO.

-

viaMap

New option

This option is not supported by PIPO.

-

blockagePurpose

New option

In XStream, you can specify the purpose on which blockages are to be translated. By default during Stream Out, blockages in the input OpenAccess database are translated as BOUNDARY elements in the output Stream file.

-

summaryFile

New option

XStream provides two files for messages and summary information whereas in PIPO the error file contains both messages and summary information.

Therefore the PIPO template option errFile is equivalent to using both the logFile and summaryFile options in XStream.

Using the PIPO-XStream Template Conversion Utility

If you have been using PIPO and want migrate to XStream you can convert your existing PIPO templates to XStream template file using the pipo2Xstrm.pl utility. This utility can be accessed from the <install_directory>/tools/dfII/bin directory. This utility creates an XStream template file from an existing PIPO template file.

The command line syntax to execute this pipo2Xstrm.pl is as follows:

pipo2Xstrm.pl {-in PIPOTemplateFileName
[-out XStreamTemplateFileName]
[-log TranslationLogFileName]
[-overwrite]
[-help] }

If the pipo2Xstrm.pl utility fails to run, then copy the utility from <install_directory>/tools/dfII/bin directory to you local bin directory and modify the first line of code in the script by specifying the complete path from where you can use the perl executable:

#!/usr/bin/perl

change to:

#!<you_local_path_to_perl>
You can exit the script using CTRL-C key combination.

This utility automatically determines whether the input PIPO template file is for Stream In or Stream Out and creates the corresponding XStream template. If you specify a log file name, the log file contains:

Using the PIPO-XStream Utility

The following section contains the sample XStream files translated from PIPO and the corresponding log files that the pipo2Xstrm.pl utility generates.

Use the following commands to run the utility.

pipo2Xstrm.pl - in streamOut.il -out xstrmIn.templt -log xlatestrmIn.log
..............
WARNING: Handling of mosaics has changed - review documentation on arrayInstToScalar
................................
PIPO to XStream strmIn template translation complete.
Review template output. You may want to change file names, etc. from retained values.

Following is a sample XStream stream in template file translated from PIPO

# XStream strmIn template translated from PIPO strmIn template. 
# Source PIPO strmIn template file: streamIn.il 
# Destination XSTREAM strmIn template file: xstrmIn.templt 
# Wed Jul 20 20:46:51 2005
runDir      "."   # Run Directory
strmFile    "test.gds" # Input Stream File
topCell     ""    # Toplevel Cell to Translate
library     "strmLib"   # Destination Library
loadTechFile      ""    # ASCII Tech File
logFile     "PIPO.LOG" # Output Log File Name
hierDepth   32    # Hierarchical Depth to Translate to (0-32)
#snapToGrid       # (t/nil)
#arrayInstToScalar      # (t/nil)
case "lower"     # upper | lower | preserve
#ignoreZeroWidthPath    # (t/nil)
translateNode     # (t/nil)
#skipUndefinedLPP       # (t/nil)
#ignoreBoxes      # (t/nil)
#keepStreamCells # (t/nil)
attachTechFileOfLib     ""    # Tech Lib to Attach to Target Lib
#NoOverwriteCell # (t/nil)
cellMap     ""    # Input Cell Map File
layerMap    "layerMap" # Input Layer Map File
fontMap     ""    # Input Font Map File
pinAttNum   0     # Stream Attribute # (1-127) for Preserving Pins
propMap     ""    # Input Property Map File
propSeparator     ","   #  
userSkillFile     ""    # Input User SKILL File
refLibList ""    # File Containing refLibList
#mergeUndefPurposToDrawing    # (t/nil)
viaMap      ""    # Input Via Map File
view "layout"    # Destination View Name
summaryFile       ""    # Output Summary File
#disableLocking   # (t/nil)
objectMap   ""    # Input Object Map File

Following is a sample of the corresponding pipo2Xstrm stream in translation log file

# Source PIPO strmIn template file: streamIn.il 
# Destination XSTREAM strmIn template file: xstrmIn.templt 
# Wed Jul 20 20:46:51 2005
runDir replaces runDir
strmFile replaces inFile
topCell replaces primaryCell
library replaces libName
loadTechFile replaces techfileName
scale is unsupported in XStream. 
units is unsupported in XStream. 
logFile replaces errFile
refLib is unsupported in XStream. 
hierDepth replaces hierDepth
maxVertices is unsupported in XStream. 
checkPolygon is unsupported in XStream. 
snapToGrid replaces snapToGrid
WARNING: Handling of mosaics has changed - review documentation on arrayInstToScalar
arrayInstToScalar replaces arrayToSimMosaic
case replaces caseSensitivity
ignoreZeroWidthPath replaces zeroPathToLine
translateNode replaces convertNode
keepPcell is unsupported in XStream. 
skipUndefinedLPP replaces skipUndefinedLPP
ignoreBoxes replaces ignoreBox
reportPrecision is unsupported in XStream. 
keepStreamCells replaces keepStreamCells
attachTechFileOfLib replaces attachTechfileOfLib
runQuiet is unsupported in XStream. 
saveAtTheEnd is unsupported in XStream. 
NoOverwriteCell replaces noWriteExistCell
NOUnmappingLayerWarning is unsupported in XStream. 
genListHier is unsupported in XStream. 
cellMap replaces cellMapTable
layerMap replaces layerTable
fontMap replaces textFontTable
pinAttNum replaces restorePin
propMap replaces propMapTable
propSeparator replaces propSeparator
userSkillFile replaces userSkillFile
rodDir is unsupported in XStream. 
refLibList replaces refLibOrder
comprehensiveLog is unsupported in XStream. 
Adding missing PIPO option equivalents with default values. 
Inserting mergeUndefPurposToDrawing with default value ’nil’ 
Adding new XStream options with default values. 
New option ’viaMap’ with value ’""’ 
New option ’view’ with value ’"layout"’ 
New option ’summaryFile’ with value ’""’ 
New option ’disableLocking’ with value ’nil’ 
New option ’objectMap’ with value ’""’ 
PIPO to XStream strmIn template translation complete.
Review template output. You may want to change file names, etc. from retained values.

Following is a sample XStream stream out template file translated from PIPO

# XStream strmOut template translated from PIPO strmOut template. 
# Source PIPO strmOut template file: streamOut.il 
# Destination XSTREAM strmOut template file: xstrmOut.templt 
# Wed Jul 20 21:13:45 2005
runDir      "."   # Run Directory
library     "LIB"       # Input Library
topCell     ""    # Toplevel Cell to Translate
view "layout"    # Toplevel Cell View Name
strmFile    "test.gds" # Output Stream File
hierDepth   32    # Hierarchical Depth to Translate to (0-32)
#flattenPcells    # (t/nil) 
maxVertices       200   # Limit of Vertices Allowed
#refLibList       # Name of File Containing refLibList
#snapToGrid       # (t/nil)
#arrayInstToScalar      # (t/nil)
case "upper"     # upper | lower | preserve
#ignoreLines      # (t/nil)
convertDot "node"      # node | polygon | ignore
#rectToBox # (t/nil)
#pathToPoly       # (t/nil)
logFile     "PIPO.LOG" # Output Log File Name
#respectGDSIINameLimit # (t/nil)
cellMap     ""    # Input Cell Map File
layerMap    "layerMap" # Input Layer Map File
fontMap     ""    # Input Font Map File
convertPin "geometry" # geometry | text | geometryAndTxt | ignore
pinAttNum   0     # Stream Attribute # (1-127) for Preserving Pins
pinTextMap ""    # Input Pin Text Map File
propMap     ""    # Input Property Map File
userSkillFile     ""    # Input User SKILL File
viaMap      ""    # Input Via Map File
summaryFile       ""    # Output Summary File
blockagePurpose   "boundary" # Purpose Name for Blockages
techLib     ""    # Technology Library
objectMap   ""    # Input Object Map File

Following is a sample of the corresponding pipo2Xstrm stream in translation log file

# Source PIPO strmOut template file: streamOut.il 
# Destination XSTREAM strmOut template file: xstrmOut.templt 
# Wed Jul 20 21:13:45 2005
runDir replaces runDir
library replaces libName
topCell replaces primaryCell
view replaces viewName
strmFile replaces outFile
scale is unsupported in XStream. 
units is unsupported in XStream. 
hierDepth replaces hierDepth
flattenPcells replaces convertToGeo
maxVertices replaces maxVertices
refLibList replaces refLib
libVersion is unsupported in XStream. 
checkPolygon is unsupported in XStream. 
snapToGrid replaces snapToGrid
WARNING: Handling of mosaics has changed - review documentation on arrayInstToScalar
arrayInstToScalar replaces simMosaicToArray
case replaces caseSensitivity
ignoreLines replaces lineToZeroPath
convertDot replaces convertDot
rectToBox replaces rectToBox
pathToPoly replaces convertPathToPoly
keepPcell is unsupported in XStream. 
useParentXYforText is unsupported in XStream. 
reportPrecision is unsupported in XStream. 
runQuiet is unsupported in XStream. 
logFile replaces errFile
NOUnmappingLayerWarning is unsupported in XStream. 
techFileChoice is unsupported in XStream. 
pcellSuffix is unsupported in XStream. 
genListHier is unsupported in XStream. 
respectGDSIINameLimit replaces respectGDSIILimits
dumpPcellInfo is unsupported in XStream. 
cellMap replaces cellMapTable
layerMap replaces layerTable
fontMap replaces textFontTable
convertPin replaces convertPin
pinAttNum replaces pinInfo
pinTextMap replaces pinTextMapTable
propMap replaces propMapTable
propSeparator is unsupported in XStream. 
userSkillFile replaces userSkillFile
rodDir is unsupported in XStream. 
comprehensiveLog is unsupported in XStream. 
genListHier is unsupported in XStream. 
Adding missing PIPO option equivalents with default values. 
Adding new XStream options with default values. 
New option ’viaMap’ with value ’""’ 
New option ’summaryFile’ with value ’""’ 
New option ’blockagePurpose’ with value ’"boundary"’ 
New option ’techLib’ with value ’""’ 
New option ’objectMap’ with value ’""’ 
PIPO to XStream strmOut template translation complete.
Review template output. You may want to change file names, etc. from retained values.

Return to top
 ⠀
X