next up previous contents index
Next: Compression Up: xicmanual Previous: Example Script   Contents   Index


Keyboard `!' Commands

The command line interface through the prompt area provides an interface to operating system commands, as well as to a number of internal commands which are often rather specialized and are not associated with a menu button. Each of these commands starts with an exclamation point ``!'', and may be entered when no other command is active, or inside of many commands. These key presses are not recorded in the ``keys'' area below the side menu. If the command entered matches one of the internal commands listed below, that command is executed. Otherwise, an operating system shell and associated window is produced to execute the command, with the exclamation mark stripped.

Special Form: !
Entering a single exclamation point with no other text will produce an interactive terminal window into which the user can issue operating system commands. If any text follows the exclamation point, and that text does not match an internal command, the exclamation point will be stripped, the remaining text sent to the operating system for execution, and the result will be displayed in a pop-up window.

Giving the bare exclamation point is equivalent to giving the !shell command without arguments (see 19.23.1). Giving something like !xyz is equivalent to giving !shell xyz, provided that !xyz is not one of the built-in commands. The use of !shell removes the ambiguity.

Special Form: !!
If a line starts with ``!!'', the rest of the line is taken as a script, and executed by the script parser. This is how to map script interface functions into a macro. For example, below is a macro to reset the current transform:

!!SetTransform(0,0,1) Ctrl-Return

Special Form: !?
Entering ``!?'' will bring up help about the `!' commands.

Special Form: !?name
This special form will bring up help about the help database keyword name.

Special Form: !??
This special form will print a listing of the `!' commands actually available in the program, from internal tables.

Special Form: !#
The last six commands given are saved, and can be recalled with the form ``!#[n]'', that is, an exclamation point and a pound sign followed by an optional integer. The n is an optional integer 0-5, and if not given (the square brackets indicate ``optional'' and are not literal) a value of 0 is taken. The n'th previous command will be printed in the prompt area, where it can be edited and re-executed. If no matching command is found, there is no action.

When a command from the history list is in the prompt area, the Up Arrow and Down Arrow keys can be used to cycle through the other commands in the history list, each of which will be entered into the prompt line in response to the key press.

Each `!' command given, including those from `!#', will be pushed onto the history list in the 0 position if it is not identical to the previous command given.

The following table summarizes the internal commands available. These commands are described in detail in the following sections.

Compression
!gzip Apply compression to file
!gunzip Uncompress a file
!md5 Print file digest
Create Output
!sa Save modified cells
!sqdump Save selections as native cell
!assemble Process or merge archive files
!splwrite Split a layout into multiple pieces
Current Directory
!cd Change working directory
!pwd Print working directory
Diagnostics
!time Print elapsed run time in seconds in console
!timedbg Print timing info in console
!xdepth Print transform stack depth in console
!bincnt Database diagnostic
!netxp Net expression checking
!pcdump Parameterized cell database dump
Design Rule Checking
!showz Show DRC partitioning
!errs Rebuild DRC error highlighting from file
!errlayer Create error polygons on some layer
Electrical
!calc Calculate parameter expression value
!check Check electrical input for consistency
!regen Regenerate damaged file
!devkeys Print device key table
Extraction
!antenna Test for MOS antenna effect
!netext Batch physical net extraction
!addcells Add missing cells
!find Find devices
!ptrms Physical terminal manipulations
!ushow Show unassociated elements
!fc Control capacitance extraction interface
!fh Control inductance/resistance extraction interface
Graphics
!setcolor Set attribute color
!display Display graphics in a foreign X window
Grid
!sg Save the current grid
!rg Restore saved grid
Help
!help Call the help system
!helpfont Set help base font family
!helpfixed Set help fixed font family
!helpreset Clear help topic cache
Keyboard
!kmap Read keyboard mapping file
Layers
!ltab Manipulate layer table
!ltsort Alphanumerically sort layer table
!exlayers List layers by applied keywords in console
Layout Editing
!array Manipulate instance arrays
!layer Create layers/objects using expression
!mo Move objects
!co Copy objects
!spin Rotate objects
!rename Rename subcells
!svq Save selections in register
!rcq Recall selections from register
!box2poly Convert boxes to polygons
!path2poly Convert wire paths to polygons
!poly2path Convert polygon boundaries to wires
!bloat Expand/contract object
!join Join objects into polygon
!jw Join similar wires with common endpoints
!split Split polygon into trapezoids
!manh Convert to Manhattan polygons
!polyfix Fix polygon errors
!polyrev Reverse polygon winding
!noacute Eliminate acute angles
!togrid Move selected object vertices to grid
!tospot Condition object for spot size
!origin Set origin of current cell
!import Import structures into the current cell
Layout Information
!fileinfo Print info about archive file in console
!summary Print summary info of current hierarchy
!compare Compare geometry in files
!diffcells Create cells from !compare output
!empties Check for empty cells
!area Measure object area
!perim Measure object perimeter
!bb Print bounding box of current cell
!checkgrid Check object for off-grid vertices
!checkover Report cells that overlap
!check45 Select polygons and/or wires with angle non-45 degree multiple
!dups Select coincident identical objects
!wirecheck Check wire characteristics
!polycheck Check polygon characteristics
!polymanh Select Manhattan polygons
!poly45 Select polygons with angle not a 45 degree multiple
!polynum Show polygon vertex indices
!setflag Set cell flags
Libraries and Databases
!mklib Create or append to a library file
!lsdb List ``special'' databases in memory
Marks
!mark Create user marks in layout
Memory Management
!clearall Clear all memory
!vmem Windows only, print virtual memory statistics
!mmstats print memory manager statistics
!mmclear Clear caches
OpenAccess Interface
!oaversion Print OpenAccess release number
!oadebug Enable log files
!oanewlib Create new OpenAccess Library
!oabrand Permit save from Xic in OA library
!oatech Query OpenAccess technology database
!oasave Save cell to OpenAccess library
!oaload Read cell from OpenAccess library
!oadelete Delete OpenAccess object
Parameterized Cells
!rmpcprops Remove pcell properties from pcell sub-masters
!preload Pre-load sub-masters to resolve as cell data are read
Rulers
!dr Delete rulers
Scripts
!script Add a script to the User Menu
!rehash Re-read script libraries and rebuild User Menu
!exec Execute a script
!lisp Execute a Lisp script
!py Execute a Python script
!tcl Execute a Tcl script (no Tk)
!tk Execute a Tcl/Tk script
!listfuncs Pop-up list of saved functions
!rmfunc Delete a saved function
!mkscript Create script that generates current cell hierarchy
!ldshared Load a script interface plug-in
Selections
!select Select objects
!desel Deselect objects
!zs Zoom to selected objects
Shell
!shell Open terminal window
!ssh Open terminal window to remote system
Technology File
!attrvars List the variables that are recognized as tech file keywords
!dumpcds Create Cadence VirtuosoTM technology and DRF files
Update Release
!update Download/install new release
Variables
!set Set/examine variables
!unset Unset variables
!setdump Dump variables
WRspice Interface
!spcmd Execute WRspice command



Subsections
next up previous contents index
Next: Compression Up: xicmanual Previous: Example Script   Contents   Index
Stephen R. Whiteley 2022-05-28