coriolis/lefdef/doc/defapi/ch6DEFwriter.html

5573 lines
568 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN" "http://www.w3.org/MarkUp/Wilbur/HTML32.dtd">
<html xmlns="http://www.w3.org/MarkUp/Wilbur/HTML32.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>DEF 5.8 C/C++ Programming Interface -- 6</title>
<META NAME="Approver" CONTENT="Technical Publications">
<META NAME="Author" CONTENT="Technical Publications">
<META NAME="CreateDate" CONTENT="2017-04-18">
<META NAME="CreateTime" CONTENT="1492498753">
<META NAME="DataType" CONTENT="Manuals">
<META NAME="Description" CONTENT="Describes the C/C++ programming interface used to read and write Design Exchange Format (DEF) files.">
<META NAME="DocTitle" CONTENT="DEF 5.8 C/C++ Programming Interface">
<META NAME="DocType" CONTENT="Reference">
<META NAME="EdmsRelease" CONTENT="FM-Wiki-1.0_P005">
<META NAME="FileTitle" CONTENT="6">
<META NAME="Keywords" CONTENT="">
<META NAME="FileType" CONTENT="Chapter">
<META NAME="Keyword" CONTENT="defapi">
<META NAME="Language" CONTENT="English">
<META NAME="ModifiedDate" CONTENT="2017-04-18">
<META NAME="ModifiedTime" CONTENT="1492498753">
<META NAME="NextFile" CONTENT="ch7DEFcompressed.html">
<META NAME="PageCount" CONTENT="148">
<META NAME="Platform" CONTENT="ALL">
<META NAME="PrevFile" CONTENT="ch5DEFwritercallback.html">
<META NAME="Product" CONTENT="Languages">
<META NAME="ProductFamily" CONTENT="Cadence Shared Tools">
<META NAME="ProductVersion" CONTENT="5.8">
<META NAME="Syntax" CONTENT=" res = defwStartPins(1); CHECK_RES(res); res = defwPin(&quot;scanpin&quot;, &quot;SCAN&quot;, 0, &quot;INPUT&quot;, NULL, NULL, 0, 0, -1, NULL, 0, 0, 0, 0); CHECK_RES(res); res = defwEndPins(); CHECK_RES(res); return 0;}, ... res = defwSpecialNetPathStart(&quot;ROUTED&quot;); CHECK_RES(res); res = defwSpecialNetPathLayer(&quot;M1&quot;); CHECK_RES(res); res = defwSpecialNetPathWidth(250); CHECK_RES(res); res = defwSpecialNetPathShape(&quot;IOWIRE&quot;); CHECK_RES(res); coorX = (const char**)malloc(sizeof(char*)*3); coorY = (const char**)malloc(sizeof(char*)*3); coorX[0] = strdup(&quot;5&quot;); coorY[0] = strdup(&quot;15&quot;); coorX[1] = strdup(&quot;125&quot;); coorY[1] = strdup(&quot;*&quot;); coorX[2] = strdup(&quot;245&quot;); coorY[2] = strdup(&quot;*&quot;); res = defwSpecialNetPathPoint(3, coorX, coorY); CHECK_RES(res); res = defwSpecialNetPathEnd(); free((char*)coorX[0]); free((char*)coorY[0]); free((char*)coorX[1]); free((char*)coorY[1]); ... return 0;}, layers = (const char**)malloc(sizeof(char*)*1); layers[0] = strdup(&quot;M1&quot;); res = defwTracks(&quot;X&quot;, 3000, 40, 120, 1, layers); CHECK_RES(res); free((char*)layers[0]); layers[0] = strdup(&quot;M2&quot;); res = defwTracks(&quot;Y&quot;, 5000, 10, 20, 1,layers); CHECK_RES(res); free((char*)layers[0]); free((char*)layers); res = defwNewLine(); CHECK_RES(res); return 0;}, res = defwStartScanchains(1); CHECK_RES(res); res = defwScanchain(&quot;the_chain&quot;); CHECK_RES(res); res = defwScanchainCommonscanpins(&quot;IN&quot;, &quot;PA1&quot;, &quot;OUT&quot;, &quot;PA2&quot;) CHECK_RES(res); res = defwScanchainStart(&quot;PIN&quot;, &quot;scanpin&quot;); CHECK_RES(res); res = defwScanchainStop(&quot;cell4&quot;, &quot;PA2&quot;); CHECK_RES(res); res = defwScanchainOrdered(&quot;cell2&quot;, &quot;IN&quot;, &quot;PA0&quot;, NULL NULL, &quot;cell1&quot;, &quot;OUT&quot;, &quot;P10&quot;, NULL, NULL); CHECK_RES(res); res = defwScanchainFloating(&quot;scancell1&quot;, &quot;IN&quot;, &quot;PA0&quot;, NULL, NULL) CHECK_RES(res); res = defwEndScanchain(); CHECK_RES(res); return 0;}, res = defwStartVias(1); CHECK_RES(res); res = defwViaName(&quot;VIA_ARRAY&quot;); CHECK_RES(res); res = defwViaRect(&quot;M1&quot;, -40, -40, 40, 40); CHECK_RES(res); res = defwViaRect(&quot;V1&quot;, -40, -40, 40, 40); CHECK_RES(res); res = defwViaRect(&quot;M2&quot;, -50, -50, 50, 50); CHECK_RES(res); res = defwOneViaEnd(); CHECK_RES(res); res = defwEndVias(); CHECK_RES(res);return 0;}, ...// Open the def file for the writer to writeif ((f = fopen(&quot;defOutputFileName&quot;,&quot;w&quot;)) == 0) {printf(&quot;Couldn<64>t open output file <20>%s<>\n&quot;, &quot;defOutputFileName&quot;);return(2);}, // Check if the type is correct if (type != defwComponentCbkType) { printf(&quot;Type is not defwComponentCbkType, terminate writing.\n&quot;); return 1; } foreigns = (const char**)malloc(sizeof(char*)*1); foreignX = (int*)malloc(sizeof(int)*1); foreignY = (int*)malloc(sizeof(int)*1); foreignOrient = (int*)malloc(sizeof(int)*1); res = defwStartComponents(2); CHECK_RES(res); res = defwComponent(&quot;Z38A01&quot;, &quot;DFF3&quot;, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, &quot;PLACED&quot;, 18592, 5400, 6, 0, NULL, 0, 0, 0, 0); CHECK_RES(res); foreigns[0] = strdup(&quot;gds2name&quot;); foreignX[0] = -500; foreignY[0] = -500; foreignOrient[0] = 3; res = defwComponent(&quot;cell3&quot;, &quot;CHM6A&quot;, 0, NULL, NULL, NULL, NULL, &quot;TIMING&quot;, 1, foreigns, foreignX, foreignY, foreignOrient, &quot;PLACED&quot;, 240, 10, 0, 0, &quot;region1&quot;, 0, 0, 0, 0); CHECK_RES(res); res = defwStringProperty(&quot;cc&quot;, &quot;This is the copy list&quot;); CHECK_RES(res); res = defwIntProperty(&quot;index&quot;, 9); CHECK_RES(res); res = defwRealProperty(&quot;size&quot;, 7.8); CHECK_RES(res); res = defwEndComponents(); CHECK_RES(res); free((char*)foreigns[0]); free((char*)foreigns); free((char*)foreignX); free((char*)foreignY); free((char*)foreignOrient); return 0;}, // Check if the type is correctif (type != defwDesignEndCbkType) {printf(&quot;Type is not defwDesignEndCbkType, terminate writing.\n&quot;);return 1;}res = defwEnd();CHECK_RES(res);return 0;}, // Check if the type is correctif (type != defwSNetCbkType) {printf(&quot;Type is not defwSNetCbkType, terminate writing.\n&quot;);return 1;}res = defwStartSpecialNets(2); CHECK_RES(res); res = defwSpecialNet(&quot;net1&quot;); CHECK_RES(res); res = defwSpecialNetConnection(&quot;cell1&quot;, &quot;VDD&quot;, 0); CHECK_RES(res); res = defwSpecialNetWidth(&quot;M1&quot;, 200); CHECK_RES(res); res = defwSpecialNetVoltage(3.2); CHECK_RES(res); res = defwSpecialNetSpacing(&quot;M1&quot;, 200, 190, 210); CHECK_RES(res); res = defwSpecialNetSource(&quot;TIMING&quot;); CHECK_RES(res); res = defwSpecialNetOriginal(&quot;VDD&quot;); CHECK_RES(res); res = defwSpecialNetUse(&quot;POWER&quot;); CHECK_RES(res); res = defwSpecialNetWeight(30); CHECK_RES(res); res = defwStringProperty(&quot;contype&quot;, &quot;star&quot;); CHECK_RES(res); res = defwIntProperty(&quot;ind&quot;, 1); CHECK_RES(res); res = defwRealProperty(&quot;maxlength&quot;, 12.13); CHECK_RES(res); res = defwSpecialNetEndOneNet(); CHECK_RES(res); res = defwSpecialNet(&quot;VSS&quot;); CHECK_RES(res); res = defwSpecialNetConnection(&quot;cell1&quot;, &quot;GND&quot;, 0); CHECK_RES(res);... // An example on Special Wiring can be found under the // Special Wiring section. ... // An example on SpecialNet Shield can be found under the // Shielded Routing section.res = defwSpecialNetPattern(&quot;STEINER&quot;); CHECK_RES(res); res = defwSpecialNetEstCap(100); CHECK_RES(res); res = defwSpecialNetEndOneNet(); CHECK_RES(res); res = defwEndSpecialNets(); CHECK_RES(res); return 0;}, // Check if the type is correctif (type != defwViaCbkType) {printf(&quot;Type is not defwViaCbkType, terminate writing.\n&quot;); return 1; }, // Initialize the writer. This routine has to call first.// Call this routine instead of defwInit() if you are// using the writer with callbacks.res = defwInitCbk(f);..., // Initialize the writer. This routine has to call first.// Call this routine instead of defwInitCbk(f)// if you are not using callback routines. res = defwInit(f); ..., // Invoke the parserres = defwWrite(f, &quot;defInputFileName&quot;, (void*)userData);if (res != 0) {printf(&quot;DEF writer returns an error\n&quot;);return(2);}, // Set the user callback routinesdefwSetArrayCbk (arrayCB);defwSetBusBitCbk (busbitCB);defwSetCaseSensitiveCbk (casesensitiveCB);defwSetComponentCbk (componentCB);defwSetConstraintCbk (constraintCB);defwSetDefaultCapCbk (defaultCapCB);defwSetDesignCbk (designCB);defwSetDesignEndCbk (designendCB);..., fclose(f);return 0;}, res = defwCloseEncrypt(); // Clean up the encrypted buffer..., res = defwEncrypt(); // Set flag to write in encrypted format..., res = defwEnd(); ...,#define CHECK_RES(res) \ if (res) { \ defwPrintError(res); \ return(res); \ },defwBlockageDesignRuleWidth( int effectiveWidth),defwBlockagePlacement(),defwBlockagePolygon( int num_polys, double* xl, double* yl),defwBlockageSpacing(int minSpacing),defwBlockagesLayerDesignRuleWidth( int effectiveWidth),defwBlockagesPlacement(),defwComponentHalo( int left, int bottom, int right, int top),defwDieAreaList( int num_points, int* xl, int*yh),defwEndNonDefaultRules(),defwEndStyles(),defwFillPolygon(int num_polys, double* xl, double* yl),defwNetPathStyle( int styleNum),defwNetPathViaWithOrient( const char* name, int orient),defwNonDefaultRule( const char* ruleName, int hardSpacing),defwNonDefaultRuleLayer( const char* layerName, double width, double diagWidth, double spacing, double wireExt),defwNonDefaultRuleMinCuts( const char* cutLayerName, int numCuts),defwNonDefaultRuleVia( const char* viaName),defwNonDefaultRuleViaRule( const char* viaRuleName),defwPinGroundSensitivity( const char* pinName),defwPinLayer(const char* layerName, int spacing, int designRuleWidth, int xl, int yl, int xh, int yh),defwPinNetExpr( const char* pinExpr),defwPinPolygon( const char* layerName,int spacing,int designRuleWidth,int num_polys, double* xl, double* yl),defwPinSupplySensitivity( const char* pinName),defwSlotPolygon( int num_polys, double* xl, double* yl),defwSpecialNetFixedBump(),defwSpecialNetPathPointWithWireExt( int numPoints,const char** pointX,const char** pointY,const char** value),defwSpecialNetPolygon( const char* layerName, int num_polys, double* xl, double* yl),defwSpecialNetRect( const char* layerName, int xl, int yl, int xh, int yh),defwSpecialNetStyle( int styleNum),defwStartNonDefaultRules(int count),defwStartStyles(int count),defwStyles( int styleNums, int num_points, double* xp, double* yp),defwViaViarule( const char* viaRuleName, double xCutSize, double yCutSize, const char* botMetalLayer, const char* cutLayer, const char* topMetalLayer,double xCutSpacing, double yCutSpacing, double xBotEnc, double yBotEnc, double xTopEnc, double yTopEnc),defwViaViaruleOffset( int xBotOffset, int yBotOffset, int xTopOffset, int yTopOffset),defwViaViaruleOrigin( int xOffset, int yOffset),defwViaViarulePattern( const char* cutPattern),defwViaViaruleRowCol( int numCutRows, int numCutCols),int componentCB (defwCallbackType_e type, defiUserData userData) { int res; const char** foreigns; int *foreignX, *foreignY, *foreignOrient;,int defwAddComment(const char* comment),int defwAddIndent(),int defwBeginextCreator(const char* creatorName),int defwBeginextDate(),int defwBeginextRevision(int vers1,int vers2),int defwBlockageLayer(const char* layerName,const char* compName),int defwBlockageLayerExceptpgnet(const char* layerName),int defwBlockageLayerFills(const char* layerName),int defwBlockageLayerPushdown(const char* layerName),int defwBlockageLayerSlots(const char* layerName),int defwBlockagePlacementComponent(const char* compName),int defwBlockagePlacementPartial(double maxDensity),int defwBlockagePlacementPushdown(),int defwBlockagePlacementSoft(),int defwBlockageRect(int xl,int yl,int xh,int yh),int defwBlockagesLayer(const char* layerName),int defwBlockagesLayerComponent(const char* compName),int defwBlockagesLayerExceptpgnet(const char* layerName),int defwBlockagesLayerFills(),int defwBlockagesLayerMask(int maskColor),int defwBlockagesLayerPushdown(const char* layerName),int defwBlockagesPlacementComponent(const char* compName),int defwBlockagesPlacementPartial(double maxDensity),int defwBlockagesPlacementPushdown(),int defwBlockagesPlacementSoft(),int defwBlockagesPolygon( int num_polys, double* xl, double* yl),int defwBlockagesRect(int xl,int yl,int xh,int yh),int defwBusBitChars(const char* busBitChars),int defwComponent(const char* name,const char* master,const char* eeq,const char* source,const char* status,int statusX, int statusY,const char* statusOrient, double weight,const char* region,),int defwComponent(const char* name,const char* master,const char* eeq,const char* source,const char* status,int statusX, int statusY,int statusOrient, double weight,const char* region,),int defwComponentHaloSoft(int left, int bottom, int right, int top),int defwComponentRouteHalo(int haloDist, const char* minLayer,const char* maxLayer),int defwCurrentLineNumber(void),int defwDesignName(const char* name),int defwDieArea (int xl,int yl,int xh,int yh ),int defwDividerChar(const char* dividerChar),int defwEnd(void),int defwEndBeginext(),int defwEndBlockages(),int defwEndComponents(void),int defwEndFills(),int defwEndGroups(),int defwEndNets(),int defwEndPinProperties(void),int defwEndPins(void),int defwEndPropDef(void),int defwEndRegions(void),int defwEndScanchains(),int defwEndSlots(),int defwEndSpecialNets(),int defwEndVias(void),int defwFillLayer(const char* layerName),int defwFillLayerOPC(),int defwFillPoints(int num_points, double* xl, double* yl),int defwFillRect(int xl,int yl,int xh,int yh),int defwFillVia(const char* viaName),int defwFillViaOPC(),int defwGcellGrid(const char* master,int doStart, int doCount,int doStep) ,int defwGroup(const char* groupName,int numExpr,const char** groupExpr),int defwGroupRegion(int xl, int yl,int xh, int yh, const char* regionName),int defwHistory(const char* string),int defwInit (FILE* file,int vers1,int vers2,const char* caseSensitive,const char* dividerChar,const char* busBitChars,const char* designName,const char* technology,const char* array,const char* floorplan,double units),int defwInit(FILE* file);,int defwIntPropDef(const char* objType,const char* propName,double leftRange,double rightRange,const char* value) ,int defwIntProperty(const char* propName,int propValue),int defwNet(const char* netName),int defwNetConnection(const char* compName, const char* pinName, int synthesized) ,int defwNetEndOneNet(),int defwNetEstCap(double wireCap),int defwNetFixedBump(),int defwNetFrequency(double frequency),int defwNetMustjoinConnection( const char* compName, const char* pinName) ,int defwNetNondefaultRule(const char* ruleName),int defwNetOriginal(const char* netName),int defwNetPathEnd(),int defwNetPathLayer(const char* layerName,int isTaper, const char* rulename),int defwNetPathPoint(int numPts,const char** pointX,const char** pointY,const char** value) ,int defwNetPathStart(const char* type),int defwNetPathVia(const char* viaName),int defwNetPattern(const char* name),int defwNetSource(const char* name),int defwNetSubnetEnd(),int defwNetSubnetPin(const char* component,const char* name),int defwNetSubnetStart(const char* name),int defwNetUse(const char* name),int defwNetVpin(const char* vpinName,const char* layerName,int layerXl,int layerYl,int layerXh,int layerYh,const char* status,int statusX,int statusY, const char* orient) ,int defwNetVpin(const char* vpinName,const char* layerName,int layerXl,int layerYl,int layerXh,int layerYh,const char* status,int statusX,int statusY, int orient) ,int defwNetWeight(double weight),int defwNetXtalk(int num),int defwNewLine(),int defwOneViaEnd(),int defwPin(const char* pinName, const char* netName, int special,const char* direction,const char* use,const char* status, int statusX,int statusY,const char* orient),int defwPin(const char* pinName, const char* netName, int special,const char* direction,const char* use,const char* status, int statusX,int statusY,int orient),int defwPinAntennaModel(const char* oxide),int defwPinAntennaPinDiffArea(int value,const char* layerName),int defwPinAntennaPinGateArea(int value,const char* layerName),int defwPinAntennaPinMaxAreaCar(int value,const char* layerName),int defwPinAntennaPinMaxCutCar(int value,const char* layerName),int defwPinAntennaPinMaxSideAreaCar(int value,const char* layerName),int defwPinAntennaPinPartialCutArea(int value,const char* layerName),int defwPinAntennaPinPartialMetalArea(int value,const char* layerName),int defwPinAntennaPinPartialMetalSideArea(int value,const char* layerName),int defwPinPort(),int defwPinPortLayer(const char* layerName,int spacing,int designRuleWidth,int xl, int yl,int xh, int yh),int defwPinPortLocation(const char* status,int statusX, int statusY,const char* orient),int defwPinPortPolygon(const char* layerName,int spacing,int designRuleWidth, int num_polys, double* xl, double* yl),int defwPinPortVia(const char* viaName, int xl, int yl),int defwPinProperty(const char* component, const char* pinName),int defwPinVia(const char* viaName, int xl, int yl),int defwRealPropDef(const char* objType,const char* propName,double leftRange,double rightRange,const char* value) ,int defwRealProperty(const char* propName,double propValue),int defwRegionName(const char* regionName),int defwRegionPoints(int xl,int yl,int xh,int yh),int defwRegionType(const char* type),int defwRow(const char* rowName,const char* rowType,int origX,int origY,int orient,int do_count,int do_increment,int xstep,int ystep),int defwRowStr (const char* rowName,const char* rowType,int x_orig,int y_orig,const char* orient,int do_count,int do_increment,int xstep,int ystep),int defwScanchain(const char* chainName),int defwScanchainCommonscanpins(const char* inst1,const char* pin1, const char* inst2, const char* pin2) ,int defwScanchainFloating(const char* floatingComp, const char* inst1,const char* pin1, const char* inst2,const char* pin2) ,int defwScanchainFloatingBits(const char* floatingComp, const char* inst1,const char* pin1, const char* inst2,const char* pin2,int bits) ,int defwScanchainOrdered(const char* name1,const char* inst1, const char* pin1, const char* inst2, const char* pin2, const char* name2,const char* inst3, const char* pin3, const char* inst4, const char* pin4),int defwScanchainOrderedBits(const char* name1,const char* inst1, const char* pin1, const char* inst2, const char* pin2, int bits1,const char* name2,const char* inst3, const char* pin3, const char* inst4, const char* pin4,int bits2),int defwScanchainPartition(const char* name,int maxBits),int defwScanchainStart(const char* inst,const char* pin),int defwScanchainStop(const char* inst,const char* pin) ,int defwSlotLayer(const char* layerName),int defwSlotRect(int xl,int yl,int xh,int yh),int defwSpecialNet(const char* netName),int defwSpecialNetConnection(const char* compNameRegExpr, const char* pinName, int synthesized) ,int defwSpecialNetEndOneNet(),int defwSpecialNetEstCap(double wireCap),int defwSpecialNetOriginal(const char* netName),int defwSpecialNetPathEnd(),int defwSpecialNetPathLayer(const char* layerName) ,int defwSpecialNetPathPoint(int numPts, const char** pointX, const char** pointY) ,int defwSpecialNetPathShape(const char* shapeType),int defwSpecialNetPathStart(const char* type),int defwSpecialNetPathVia(const char* viaName),int defwSpecialNetPathViaData(int numX,int numY,int stepX,int stepY),int defwSpecialNetPathWidth(int width),int defwSpecialNetPattern(const char* name),int defwSpecialNetShieldEnd(),int defwSpecialNetShieldLayer(const char* name),int defwSpecialNetShieldNetName(const char* name),int defwSpecialNetShieldPoint(int numPts,const char** pointx,const char** pointy),int defwSpecialNetShieldShape(const char* shapeType),int defwSpecialNetShieldStart(const char* name),int defwSpecialNetShieldVia(const char* name),int defwSpecialNetShieldViaData(int numX,int numY,int stepX,int stepY),int defwSpecialNetShieldWidth(int width),int defwSpecialNetSource(const char* name),int defwSpecialNetUse(const char* name),int defwSpecialNetVoltage(double volts),int defwSpecialNetWeight(double weight),int defwStartBeginext(const char* name),int defwStartBlockages(int count),int defwStartComponents( int count),int defwStartFills(int count),int defwStartGroups(int count) ,int defwStartNets(int count),int defwStartPinProperties(int count),int defwStartPins(int count),int defwStartPropDef(void),int defwStartRegions(int count),int defwStartScanchains(int count),int defwStartSlots(int count),int defwStartSpecialNets(int count),int defwStartVias(int count),int defwStringPropDef(const char* objType,const char* propName,double leftRange,double rightRange,const char* value) ,int defwStringProperty(const char* propName,const char* propValue),int defwTechnology(const char* technology),int defwTracks(const char* master,int doStart,int doCount,int doStep,int numLayers,const char** layers),int defwUnits(int units),int defwVersion(int vers1,int vers2),int defwViaName(const char* name),int defwViaPolygon( const char* layerName, int num_polys, double* xl, double* yl),int defwViaRect(const char* layerName,int xl,int yl, int xh, int yh) ,int designendCB (defwCallbackType_e type, defiUserData userData) { int res;,int dieareaCB (defwCallbackType_e type, defiUserData userData) { int res; // Check if the type is correct if (type != defwDieAreaCbkType) { printf(&quot;Type is not defwDieAreaCbkType, terminate writing.\n&quot;); return 1; } res = defwDieArea(-190000, -120000, 190000, 70000); CHECK_RES(res); return 0;},int dividerCB (defwCallbackType_e type, defiUserData userData) { int res; const char **groupExpr; // Check if the type is correct if (type != defwGroupCbkType) { printf(&quot;Type is not defwGroupCbkType, terminate writing.\n&quot;); return 1; } groupExpr = (const char**)malloc(sizeof(char*)*2); res = defwStartGroups(2); CHECK_RES(res); groupExpr[0] = strdup(&quot;cell2&quot;); groupExpr[1] = strdup(&quot;cell3&quot;); res = defwGroup(&quot;group1&quot;, 2, groupExpr); CHECK_RES(res); free((char*)groupExpr[0]); free((char*)groupExpr[1]); res = defwGroupRegion(0, 0, 0, 0, &quot;region1&quot;); CHECK_RES(res); res = defwStringProperty(&quot;ggrp&quot;, &quot;xx&quot;); CHECK_RES(res); res = defwIntProperty(&quot;side&quot;, 2); CHECK_RES(res); res = defwRealProperty(&quot;maxarea&quot;, 5.6); CHECK_RES(res); groupExpr[0] = strdup(&quot;cell1&quot;); res = defwGroup(&quot;group2&quot;, 1, groupExpr); CHECK_RES(res); free((char*)groupExpr[0]); res = defwGroupRegion(0, 10, 1000, 1010, NULL); CHECK_RES(res); res = defwGroupSoft(&quot;MAXHALFPERIMETER&quot;, 4000, &quot;MAXX&quot;, 10000, NULL, NULL); CHECK_RES(res); res = defwEndGroups(); CHECK_RES(res); free((char*)groupExpr); // Write a new line res = defwNewLine(); CHECK_RES(res); return 0;},int extensionCB (defwCallbackType_e type, defiUserData userData) { int res; // Check if the type is correct if (type != defwExtCbkType) { printf(&quot;Type is not defwExtCbkType, terminate writing.\n&quot;); return 1; } res = defwStartBeginext(&quot;tag&quot;); CHECK_RES(res); res = defwBeginextCreator(&quot;CADENCE&quot;); CHECK_RES(res); res = defwBeginextDate(); CHECK_RES(res); res = defwBeginextSyntax(&quot;OTTER&quot;, &quot;furry&quot;); CHECK_RES(res); res = defwStringProperty(&quot;arrg&quot;, &quot;later&quot;); CHECK_RES(res); res = defwBeginextSyntax(&quot;SEAL&quot;, &quot;cousin to WALRUS&quot;); CHECK_RES(res); res = defwEndBeginext(); CHECK_RES(res); return 0;},int gcellgridCB (defwCallbackType_e type, defiUserData userData) { int res; // Check if the type is correct if (type != defwGcellGridCbkType) { printf(&quot;Type is not defwGcellGridCbkType, terminate writing.\n&quot;); return 1; } res = defwGcellGrid(&quot;X&quot;, 0, 100, 600); CHECK_RES(res); return 0;},int historyCB (defwCallbackType_e type, defiUserData userData) { int res; // Check if the type is correct if (type != defwHistoryCbkType) { printf(&quot;Type is not defwHistoryCbkType, terminate writing.\n&quot;); return 1; } res = defwHistory(&quot;DEF version 5.3&quot;); CHECK_RES(res); return 0;},int lefwBeginextSyntax(const char* title,const char* string),int netCB (defwCallbackType_e type, defiUserData userData) { int res; const char **coorX, **coorY; const char **coorValue; ... res = defwNetPathStart(&quot;NEW&quot;); CHECK_RES(res); res = defwNetPathLayer(&quot;M1&quot;, 1, NULL); CHECK_RES(res); coorX[0] = strdup(&quot;2400&quot;); coorY[0] = strdup(&quot;282400&quot;); coorValue[0] = NULL; coorX[1] = strdup(&quot;240&quot;); coorY[1] = strdup(&quot;*&quot;); coorValue[1] = NULL; res = defwNetPathPoint(2, coorX, coorY, coorValue); CHECK_RES(res); free((char*)coorX[0]); free((char*)coorY[0]); free((char*)coorX[1]); free((char*)coorY[1]); res = defwNetPathEnd(); CHECK_RES(res); ... return 0;},int netCB (defwCallbackType_e type, defiUserData userData) { int res; const char **coorX, **coorY; const char **coorValue; ... res = defwNetSubnetStart(&quot;SUB1_XX100&quot;); CHECK_RES(res); res = defwNetSubnetPin(&quot;Z38A05&quot;, &quot;G&quot;); CHECK_RES(res); res = defwNetSubnetPin(&quot;VPIN&quot;, &quot;V_SUB1_XX100&quot;); CHECK_RES(res); res = defwNetPathStart(&quot;ROUTED&quot;); CHECK_RES(res); res = defwNetPathLayer(&quot;M1&quot;, 0, &quot;RULE1&quot;); CHECK_RES(res); coorX[0] = strdup(&quot;54040&quot;); coorY[0] = strdup(&quot;30300&quot;); coorValue[0] = strdup(&quot;0&quot;); coorX[1] = strdup(&quot;*&quot;); coorY[1] = strdup(&quot;30900&quot;); coorValue[1] = NULL; res = defwNetPathPoint(2, coorX, coorY, coorValue); CHECK_RES(res); free((char*)coorX[0]); free((char*)coorY[0]); free((char*)coorValue[0]); free((char*)coorX[1]); free((char*)coorY[1]); res = defwNetPathVia(&quot;nd1VIA12&quot;); CHECK_RES(res); ... res = defwNetPathEnd(); CHECK_RES(res); res = defwNetSubnetEnd(); ... return 0;},int netCB (defwCallbackType_e type, defiUserData userData) { int res; const char **coorX, **coorY; const char **coorValue; // Check if the type is correct if (type != defwNetCbkType) { printf(&quot;Type is not defwNetCbkType, terminatewriting.\n&quot;); return 1; } res = defwStartNets(3); CHECK_RES(res); coorX = (const char**)malloc(sizeof(char*)*5); coorY = (const char**)malloc(sizeof(char*)*5); coorValue = (const char**)malloc(sizeof(char*)*5); res = defwNet(&quot;my_net&quot;); CHECK_RES(res); res = defwNetConnection(&quot;I1&quot;, &quot;A&quot;, 0); CHECK_RES(res); res = defwNetConnection(&quot;BUF&quot;, &quot;Z&quot;, 0); CHECK_RES(res); res = defwNetNondefaultRule(&quot;RULE1&quot;); CHECK_RES(res); res = defwNetShieldnet(&quot;VSS&quot;); CHECK_RES(res); res = defwNetPathStart(&quot;ROUTED&quot;); CHECK_RES(res); ... = defwNetNoshieldStart(&quot;M2&quot;); CHECK_RES(res); coorX[0] = strdup(&quot;14100&quot;); coorY[0] = strdup(&quot;341440&quot;); coorX[1] = strdup(&quot;14000&quot;); coorY[1] = strdup(&quot;*&quot;); res = defwNetNoshieldPoint(2, coorX, coorY); CHECK_RES(res); res = defwNetNoshieldEnd(); CHECK_RES(res); res = defwNetEndOneNet(); CHECK_RES(res); res = defwNet(&quot;MUSTJOIN&quot;); CHECK_RES(res); res = defwNetConnection(&quot;cell4&quot;, &quot;PA1&quot;, 0); CHECK_RES(res); res = defwNetEndOneNet(); CHECK_RES(res); res = defwNet(&quot;XX100&quot;); CHECK_RES(res); res = defwNetConnection(&quot;Z38A05&quot;, &quot;G&quot;, 0); CHECK_RES(res); res = defwNetConnection(&quot;Z38A03&quot;, &quot;G&quot;, 0); CHECK_RES(res); res = defwNetConnection(&quot;Z38A01&quot;, &quot;G&quot;, 0); CHECK_RES(res); res = defwNetVpin(&quot;V_SUB3_XX100&quot;, NULL, -333, -333, 333, 333, &quot;PLACED&quot;, 189560, 27300, 0); CHECK_RES(res); res = defwNetSubnetStart(&quot;SUB1_XX100&quot;); CHECK_RES(res); ...// An example for Regular Wiring can be found in the// Regular Wiring section. res = defwNetPathEnd(); CHECK_RES(res); res = defwNetNoshieldStart(&quot;M2&quot;); CHECK_RES(res); coorX[0] = strdup(&quot;14100&quot;); coorY[0] = strdup(&quot;341440&quot;); coorX[1] = strdup(&quot;14000&quot;); coorY[1] = strdup(&quot;*&quot;); res = defwNetNoshieldPoint(2, coorX, coorY); CHECK_RES(res); res = defwNetNoshieldEnd(); CHECK_RES(res); res = defwNetEndOneNet(); CHECK_RES(res); res = defwNet(&quot;MUSTJOIN&quot;); CHECK_RES(res); res = defwNetConnection(&quot;cell4&quot;, &quot;PA1&quot;, 0); CHECK_RES(res); res = defwNetEndOneNet(); CHECK_RES(res); res = defwNet(&quot;XX100&quot;); CHECK_RES(res); res = defwNetConnection(&quot;Z38A05&quot;, &quot;G&quot;, 0); CHECK_RES(res); res = defwNetConnection(&quot;Z38A03&quot;, &quot;G&quot;, 0); CHECK_RES(res); res = defwNetConnection(&quot;Z38A01&quot;, &quot;G&quot;, 0); CHECK_RES(res); res = defwNetVpin(&quot;V_SUB3_XX100&quot;, NULL, -333, -333, 333,333, &quot;PLACED&quot;, 189560, 27300, 0); CHECK_RES(res); res = defwNetSubnetStart(&quot;SUB1_XX100&quot;); CHECK_RES(res); ...// An example for Subnet can be found in the Subnet section CHECK_RES(res); res = defwNetSubnetEnd(); CHECK_RES(res); res = defwEndNets(); CHECK_RES(res); return 0;},int pinCB (defwCallbackType_e type, defiUserData userData) { int res; // Check if the type is correct if (type != defwPinCbkType) { printf(&quot;Type is not defwPinCbkType, terminate writing.\n&quot;); return 1; },int pinCB (defwCallbackType_e type, defiUserData userData) { int res; // Check if the type is correct if (type != defwPropDefCbkType) { printf(&quot;Type is not defwPropDefCbkType, terminate writing.\n&quot;); return 1; } res = defwStartPropDef(); check_res(res); defwAddComment(&quot;defwPropDef is broken into 3 routines, defwStringPropDef&quot;); defwAddComment(&quot;defwIntPropDef, and defwRealPropDef&quot;); res = defwStringPropDef(&quot;REGION&quot;, &quot;scum&quot;, 0, 0, NULL); CHECK_RES(res); res = defwIntPropDef(&quot;REGION&quot;, &quot;center&quot;, 0, 0, NULL); CHECK_RES(res); res = defwRealPropDef(&quot;REGION&quot;, &quot;area&quot;, 0, 0, NULL); CHECK_RES(res); res = defwStringPropDef(&quot;GROUP&quot;, &quot;ggrp&quot;, 0, 0, NULL); CHECK_RES(res); res = defwEndPropDef(); CHECK_RES(res); return 0;},int pinpropCB (defwCallbackType_e type, defiUserData userData) { int res; // Check if the type is correct if (type != defwPinPropCbkType) { printf(&quot;Type is not defwPinPropCbkType, terminate writing.\n&quot;); return 1; } res = defwStartPinProperties(2); CHECK_RES(res); res = defwPinProperty(&quot;cell1&quot;, &quot;PB1&quot;); CHECK_RES(res); res = defwStringProperty(&quot;dpBit&quot;, &quot;1&quot;); CHECK_RES(res); res = defwRealProperty(&quot;realProperty&quot;, 3.4); CHECK_RES(res); res = defwPinProperty(&quot;cell2&quot;, &quot;vdd&quot;); CHECK_RES(res); res = defwIntProperty(&quot;dpIgnoreTerm&quot;, 2); CHECK_RES(res); res = defwEndPinProperties(); CHECK_RES(res); return 0;},int regionCB (defwCallbackType_e type, defiUserData userData) { int res; // Check if the type is correct if (type != defwRegionCbkType) { printf(&quot;Type is not defwRegionCbkType, terminate writing.\n&quot;); return 1; } res = defwStartRegions(1); CHECK_RES(res); res = defwRegionName(&quot;region2&quot;); CHECK_RES(res); res = defwRegionPoints(4000, 0, 5000, 1000); CHECK_RES(res); res = defwStringProperty(&quot;scum&quot;, &quot;on bottom&quot;); CHECK_RES(res); res = defwEndRegions(); CHECK_RES(res); return 0;},int rowCB (defwCallbackType_e type, defiUserData userData) { int res; ... res = defwRealProperty(&quot;minlength&quot;, 50.5); CHECK_RES(res); res = defwStringProperty(&quot;firstName&quot;, &quot;Only&quot;); CHECK_RES(res); res = defwIntProperty(&quot;idx&quot;, 1); CHECK_RES(res); ... return 0;},int rowCB (defwCallbackType_e type, defiUserData userData) { int res; nt regionCB (defwCallbackType_e type, defiUserData userData) { int res; // Check if the type is correct if (type != defwRowCbkType) { printf(&quot;Type is not defwRowCbkType, terminate writing.\n&quot;); return 1; } res = defwRow(&quot;ROW_9&quot;, &quot;CORE&quot;, -177320, -111250, 5, 911, 1, 360, 0); CHECK_RES(res); res = defwRealProperty(&quot;minlength&quot;, 50.5); CHECK_RES(res); res = defwStringProperty(&quot;firstName&quot;, &quot;Only&quot;); CHECK_RES(res); res = defwIntProperty(&quot;idx&quot;, 1); CHECK_RES(res); res = defwRow(&quot;ROW_10&quot;, &quot;CORE1&quot;, -19000, -11000, 6, 1, 100,0, 600); CHECK_RES(res); return 0;},int scanchainCB (defwCallbackType_e type, defiUserData userData) { int res; // Check if the type is correct if (type != defwScanchainCbkType) { printf(&quot;Type is not defwScanchainCbkType, terminate writing.\n&quot;); return 1; },int setupRoutine() { FILE* f; int res; int userData = 0x01020304;,int setupRoutine() { FILE* f; int res;,int snetCB (defwCallbackType_e type, defiUserData userData) { int res; const char **coorX, **coorY;,int snetCB (defwCallbackType_e type, defiUserData userData) { int res; const char **coorX, **coorY; ... res = defwSpecialNetShieldStart(&quot;my_net&quot;); CHECK_RES(res); res = defwSpecialNetShieldLayer(&quot;M2&quot;); CHECK_RES(res); res = defwSpecialNetShieldWidth(90); CHECK_RES(res); coorX[0] = strdup(&quot;14100&quot;); coorY[0] = strdup(&quot;342440&quot;); coorX[1] = strdup(&quot;13920&quot;); coorY[1] = strdup(&quot;*&quot;); res = defwSpecialNetShieldPoint(2, coorX, coorY); CHECK_RES(res); res = defwSpecialNetShieldVia(&quot;M2_TURN&quot;); CHECK_RES(res); free((char*)coorX[0]); free((char*)coorY[0]); coorX[0] = strdup(&quot;*&quot;); coorY[0] = strdup(&quot;263200&quot;); res = defwSpecialNetShieldPoint(1, coorX, coorY); CHECK_RES(res); res = defwSpecialNetShieldVia(&quot;M1_M2&quot;); CHECK_RES(res); free((char*)coorX[0]); free((char*)coorY[0]); coorX[0] = strdup(&quot;2400&quot;); coorY[0] = strdup(&quot;*&quot;); res = defwSpecialNetShieldPoint(1, coorX, coorY); CHECK_RES(res); res = defwSpecialNetShieldEnd(); ... return 0;},int trackCB (defwCallbackType_e type, defiUserData userData) { int res; const char** layers; // Check if the type is correct if (type != defwTrackCbkType) { printf(&quot;Type is not defwTrackCbkType, terminate writing.\n&quot;); return 1; },int viaCB (defwCallbackType_e type, defiUserData userData) { int res;,void defwPrintError(int status)">
<META NAME="RightsManagement" CONTENT="Copyright 2017 Cadence Design Systems Inc.">
<META NAME="Title" CONTENT="DEF 5.8 C/C++ Programming Interface -- 6">
<META NAME="TopicTags" CONTENT="FALSE">
<META NAME="Version" CONTENT="5.8">
</head>
<body style="margin-left: 5%;">
<a name="pagetop"></a>
<a name="firstpage"></a>
<!-- Begin Buttons -->
<table width="650" cellpadding="0" cellspacing="0" border="0">
<tr>
<td height="36" width="650" colspan="10">
<img src="images/header_doc.gif" width="650" height="34">
</td>
</tr>
<tr>
<td height="20" width="59">
<a href="javascript:openLibrary()"><img src="../support/nav2_library.gif" border="0" alt="View Library" height="20" width="59"></a>
</td>
<td height="20" width="73">
<a href="defapiTOC.html"><img src="../support/nav2_toc.gif" alt="Table of Contents" border="0"></a>
</td>
<td height="20" width="46">
<img src="../support/nav2_index_b.gif" border="0">
</td>
<td>
<a href="ch5DEFwritercallback.html"><img src="images/nav2_previous.gif" alt="Previous" border="0"></a>
</td>
<td>
<a href="ch7DEFcompressed.html"><img src="images/nav_next.gif" alt="Next" border="0"></a>
</td>
<td height="20">
<a>
<a href="defapi.pdf"><img src="../support/nav2_print.gif" border="0" alt="Open PDF to print book" height="20" width="114"></a>
</a>
</td>
<td height="20" width="61">
<img src="../support/nav2_black.gif" border="0" height="20" width="76">
</td>
<td height="20" width="76">
<a href="/feedback.htm"><img src="../support/nav2_feedback.gif" border="0" alt="Email Comments" height="20" width="76"></a>
</td>
<td height="20" width="43">
<a href="../cdsuser/help.html"><img src="../support/nav2_help.gif" border="0" alt="Help Using Documentation" height="20" width="43"></a>
</td>
<td height="20" width="37">
<a href="/exitsearch.htm"><img src="../support/nav2_exit.gif" border="0" alt="Shut Down Cadence Documentation Server" height="20" width="37"></a>
</td>
</tr>
</table>
<!-- End Buttons -->
<p>
<hr>
<p>
<h3>
<center>
<font >
<div>DEF 5.8 C&#47;C++ Programming Interface (Open Licensing Program)</div>
<font >
<div></div>
</font>
</font>
</center>
</h3>
<br>
</p>
<div>
<h1>6<a name="1011663">&nbsp;</a></h1>
<h1><a name="1023330">DEF Writer Routines</a></h1>
<p><a name="1036497">You can use the Cadence</a><font color="#000000"><sup>&#174;</sup></font> Design Exchange Format (DEF) writer routines to create a program that outputs a DEF file. The DEF writer routines correspond to the sections of the DEF file. This chapter describes the routines listed below that you need to write a particular DEF section.</p>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="646">
<caption>
<tr>
<td cellpadding="4" border="0" bordercolor="#D3D3D3" valign="middle" width="230">
<p>
<font face="Verdana, Arial, Helvetica, sans-serif" color="#003366"><strong><a name="1050459">Routines</a></strong></font>
</p>
</td>
<td cellpadding="4" border="0" bordercolor="#D3D3D3" valign="middle" width="415">
<p>
<font face="Verdana, Arial, Helvetica, sans-serif" color="#003366"><strong><a name="1050461">DEF File Section</a></strong></font>
</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1037914" title="6" name="1050466"><font color="#0000ff"><u>DEF Writer Setup and Control</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1050468">Initialization and global variables</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#Blockages" title="6" name="1052726"><font color="#0000ff"><u>Blockages</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1052728"><font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1058435" title="6" name="1058428"><font color="#0000ff"><u>Bus Bit Characters</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1058430"><font size="2" face="'Courier New'" color="#000000">BUSBITCHARS</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#Components" title="6" name="1050487"><font color="#0000ff"><u>Components</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1050489"><font size="2" face="'Courier New'" color="#000000">COMPONENTS</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1058513" title="6" name="1058515"><font color="#0000ff"><u>Design Name</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1058517"><font size="2" face="'Courier New'" color="#000000">DESIGN</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1059998" title="6" name="1050508"><font color="#0000ff"><u>Die Area</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1050510"><font size="2" face="'Courier New'" color="#000000">DIEAREA</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1058485" title="6" name="1058523"><font color="#0000ff"><u>Divider Character</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1058525"><font size="2" face="'Courier New'" color="#000000">DIVIDERCHAR</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1024021" title="6" name="1050515"><font color="#0000ff"><u>Extensions</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1050517"><font size="2" face="'Courier New'" color="#000000">EXTENSIONS</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1052847" title="6" name="1052844"><font color="#0000ff"><u>Fills</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1052846"><font size="2" face="'Courier New'" color="#000000">FILLS</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1045795" title="6" name="1050522"><font color="#0000ff"><u>GCell Grid</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1050524"><font size="2" face="'Courier New'" color="#000000">GCELLGRID</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1025201" title="6" name="1050529"><font color="#0000ff"><u>Groups</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1050531"><font size="2" face="'Courier New'" color="#000000">GROUPS</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1025497" title="6" name="1050536"><font color="#0000ff"><u>History</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1050538"><font size="2" face="'Courier New'" color="#000000">HISTORY</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#Nets" title="6" name="1050550"><font color="#0000ff"><u>Nets</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1050552"><font size="2" face="'Courier New'" color="#000000">NETS</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<blockquote><a href="#1031995" title="6" name="1050564"><font color="#0000ff"><u>Regular Wiring</u></font></a></blockquote>
</td>
<td cellpadding="4" valign="top">
<p><a name="1050566"><font color="#000000"><em>regularWiring</em></font></a> statement in a <font size="2" face="'Courier New'" color="#000000">NETS</font> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<blockquote><a href="#1048341" title="6" name="1055498"><font color="#0000ff"><u>Subnet</u></font></a></blockquote>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055500"><font size="2" face="'Courier New'" color="#000000">SUBNET</font></a> statement in a <font size="2" face="'Courier New'" color="#000000">NETS</font> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1061879" title="6" name="1062330"><font color="#0000ff"><u>Nondefault Rules</u></font></a> </p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1062332"><font size="2" face="'Courier New'" color="#000000">NONDEFAULTRULES</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1024550" title="6" name="1050571"><font color="#0000ff"><u>Pins</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1050573"><font size="2" face="'Courier New'" color="#000000">PINS</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1024591" title="6" name="1050578"><font color="#0000ff"><u>Pin Properties</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1050580"><font size="2" face="'Courier New'" color="#000000">PINPROPERTIES</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1048676" title="6" name="1050585"><font color="#0000ff"><u>Property Definitions</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1050587"><font size="2" face="'Courier New'" color="#000000">PROPERTYDEFINITIONS</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1032848" title="6" name="1050592"><font color="#0000ff"><u>Property Statements</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1050594"><font size="2" face="'Courier New'" color="#000000">PROPERTY</font></a> statements</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1035438" title="6" name="1056658"><font color="#0000ff"><u>Regions</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056660"><font size="2" face="'Courier New'" color="#000000">REGIONS</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1030184" title="6" name="1056665"><font color="#0000ff"><u>Rows</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056667"><font size="2" face="'Courier New'" color="#000000">ROW</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#SpecialNets" title="6" name="1050606"><font color="#0000ff"><u>Special Nets</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1050608"><font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<blockquote><a href="#1030116" title="6" name="1050613"><font color="#0000ff"><u>Special Wiring</u></font></a></blockquote>
</td>
<td cellpadding="4" valign="top">
<p><a name="1050615"><font color="#000000"><em>specialWiring</em></font></a> statement in a <font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<blockquote><a href="#1051269" title="6" name="1051274"><font color="#0000ff"><u>Shielded Routing</u></font></a></blockquote>
</td>
<td cellpadding="4" valign="top">
<p><a name="1051276"><font color="#000000"><em>shielded routin</em></font></a>g statement in a <font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1024695" title="6" name="1056639"><font color="#0000ff"><u>Scan Chains</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056641"><font size="2" face="'Courier New'" color="#000000">SCANCHAINS</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1052810" title="6" name="1054342"><font color="#0000ff"><u>Slots</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1054362"><font size="2" face="'Courier New'" color="#000000">SLOTS</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1062343" title="6" name="1063195"><font color="#0000ff"><u>Styles</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1063197"><font size="2" face="'Courier New'" color="#000000">STYLES</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1058605" title="6" name="1058602"><font color="#0000ff"><u>Technology</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1058604"><font size="2" face="'Courier New'" color="#000000">TECHNOLOGY</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1045530" title="6" name="1050634"><font color="#0000ff"><u>Tracks</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1050636"><font size="2" face="'Courier New'" color="#000000">TRACKS</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1058627" title="6" name="1058642"><font color="#0000ff"><u>Units</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1058644"><font size="2" face="'Courier New'" color="#000000">UNITS</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a href="#1058387" title="6" name="1058384"><font color="#0000ff"><u>Version</u></font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1058386"><font size="2" face="'Courier New'" color="#000000">VERSION</font></a> statement</p>
</td>
</tr>
<tr>
<td cellpadding="4" border="1" bordercolor="#000000" valign="top">
<p><a href="#1024881" title="6" name="1050641"><font color="#0000ff"><u>Vias</u></font></a></p>
</td>
<td cellpadding="4" border="1" bordercolor="#000000" valign="top">
<p><a name="1050643"><font size="2" face="'Courier New'" color="#000000">VIAS</font></a> statement</p>
</td>
</tr>
</table>
<h2><a name="1037914">DEF Writer Setup and Control</a></h2>
<p><a name="1045542">The DEF writer setup and control routines initialize the reader and set global variables that are used by the DEF file. You must begin a DEF file with either the </a><font size="2" face="'Courier New'" color="#000000">defwInit</font> routine or the <font size="2" face="'Courier New'" color="#000000">defwInitCbk</font> routine. You must end a DEF file with the <font size="2" face="'Courier New'" color="#000000">defwEnd</font> routine. All other routines must be used between these routines. The remaining routines described in this section are provided as utilities. </p>
<p><a name="1051024">For an example on how to set up the writer, see </a><a href="#1047554" title="6"><font color="Blue"><u>"Setup Examples"</u></font></a><a href="#1047554" title="6"></a>.</p>
<p><a name="1028488">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="1025734">defwInit</a></h3>
<p><a name="1038082">Initializes the DEF writer. Use this routine if you do not want to use the callback mechanism.</a></p>
<h4><a name="1038049">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1038050">int defwInit (<dd>FILE* </a><font size="2" face="'Courier New'" color="#000000"><em>file</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>vers1</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>vers2</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>caseSensitive</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>dividerChar</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>busBitChars</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>designName</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>technology</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>array</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>floorplan</em></font>,<dd>double <font size="2" face="'Courier New'" color="#000000"><em>units</em></font>)</font>
</dl>
<h4><a name="1038061">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1038063"><font size="2" face="'Courier New'" color="#000000"><em>file</em></font></a></strong>
</p>
<blockquote><a name="1066780">Specifies the name of the DEF file to create.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1066793"><font size="2" face="'Courier New'" color="#000000"><em>vers1, vers2</em></font></a></strong>
</p>
<blockquote><a name="1066800">Specifies which version of LEF&#47;DEF is being used. </a><font size="2" face="'Courier New'" color="#000000"><em>vers1</em></font> specifies the major number. <font size="2" face="'Courier New'" color="#000000"><em>vers2</em></font> specifies the minor number.</blockquote>
<p>
<strong></strong>
<strong><a name="1066818"><font size="2" face="'Courier New'" color="#000000"><em>caseSensitive</em></font></a></strong>
</p>
<blockquote><a name="1066825"><font color="#000000"><strong>Note:</strong></font></a> The <font size="2" face="'Courier New'" color="#000000">NAMECASESENSITIVE</font> statement is obsolete; therefore the writer ignores this argument. </blockquote>
<p>
<strong></strong>
<strong><a name="1066834"><font size="2" face="'Courier New'" color="#000000"><em>dividerChar</em></font></a></strong>
</p>
<blockquote><a name="1066841">Writes the </a><font size="2" face="'Courier New'" color="#000000">DIVIDERCHAR</font> statement that specifies the character used to express hierarchy when DEF names are mapped to or from other databases. The character must be enclosed in double quotation marks.</blockquote>
<p>
<strong></strong>
<strong><a name="1066850"><font size="2" face="'Courier New'" color="#000000"><em>busBitChars</em></font></a></strong>
</p>
<blockquote><a name="1066857">Writes the </a><font size="2" face="'Courier New'" color="#000000">BUSBITCHARS</font> statement that specifies the pair of characters used to specify bus bits when DEF names are mapped to or from other databases. The characters must be enclosed in double quotation marks.</blockquote>
<p>
<strong></strong>
<strong><a name="1066875"><font size="2" face="'Courier New'" color="#000000"><em>designName</em></font></a></strong>
</p>
<blockquote><a name="1066882">Writes the </a><font size="2" face="'Courier New'" color="#000000">DESIGN</font> statement that specifies a name for the design.</blockquote>
<p>
<strong></strong>
<strong><a name="1038069"><font size="2" face="'Courier New'" color="#000000"><em>technology</em></font></a></strong>
</p>
<blockquote><a name="1067977">Writes the </a><font size="2" face="'Courier New'" color="#000000">TECHNOLOGY</font> statement that specifies a technology name for the design. </blockquote>
<p>
<strong></strong>
<strong><a name="1045576"><font size="2" face="'Courier New'" color="#000000"><em>units</em></font></a></strong>
</p>
<blockquote><a name="1067988">Writes the </a><font size="2" face="'Courier New'" color="#000000">UNITS</font> statement that specifies how to convert DEF units.</blockquote>
<h3><a name="defwInitCbk"></a><a name="1045577">defwInitCbk</a></h3>
<p><a name="1058341">Also initializes the DEF writer. Use this routine if you want to use the callback mechanism. If you use this routine, you must also use the following routines:</a></p>
<div>
<table border="0" cellspacing="0" cellpadding="3" summary="">
<tr valign="baseline">
<td width="31.999679999999998">
<div>
<nobr>
<font color="#000000"><img src="images/b_bullet.gif" alt="ParagraphBullet" border="0"></font>
</nobr>
</div>
</td>
<td><a name="1058373"><font size="2" face="'Courier New'" color="#000000">defwVersion</font></a> </td>
</tr>
</table>
</div>
<div>
<table border="0" cellspacing="0" cellpadding="3" summary="">
<tr valign="baseline">
<td width="31.999679999999998">
<div>
<nobr>
<font color="#000000"><img src="images/b_bullet.gif" alt="ParagraphBullet" border="0"></font>
</nobr>
</div>
</td>
<td><a name="1058375"><font size="2" face="'Courier New'" color="#000000">defwBusBitChars</font></a> </td>
</tr>
</table>
</div>
<div>
<table border="0" cellspacing="0" cellpadding="3" summary="">
<tr valign="baseline">
<td width="31.999679999999998">
<div>
<nobr>
<font color="#000000"><img src="images/b_bullet.gif" alt="ParagraphBullet" border="0"></font>
</nobr>
</div>
</td>
<td><a name="1058376"><font size="2" face="'Courier New'" color="#000000">defwDividerChar</font></a> </td>
</tr>
</table>
</div>
<div>
<table border="0" cellspacing="0" cellpadding="3" summary="">
<tr valign="baseline">
<td width="31.999679999999998">
<div>
<nobr>
<font color="#000000"><img src="images/b_bullet.gif" alt="ParagraphBullet" border="0"></font>
</nobr>
</div>
</td>
<td><a name="1059463"><font size="2" face="'Courier New'" color="#000000">defwDesignName</font></a> </td>
</tr>
</table>
</div>
<p><a name="1058380">If you do not include these routines, default values are used.</a></p>
<h4><a name="1058350">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1058355">int defwInit(<dd>FILE* file);</a></font>
</dl>
<h4><a name="1058351">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1058358"><font size="2" face="'Courier New'" color="#000000"><em>file</em></font></a></strong>
</p>
<blockquote><a name="1067995">Specifies the name of the DEF file to create.</a></blockquote>
<h3><a name="1058340">defwEnd</a></h3>
<p><a name="1038114">Ends the DEF file. This routine is required and must be used last. </a></p>
<h4><a name="1038097">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1038098">int defwEnd(void)</a></font>
</dl>
<h3><a name="1023752">defwCurrentLineNumber</a></h3>
<p><a name="1038142">Returns the line number of the last line written to the DEF file. This routine does not require any arguments.</a></p>
<h4><a name="1038127">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1038128">int defwCurrentLineNumber(void)</a></font>
</dl>
<h3><a name="1023771">defwNewLine</a></h3>
<p><a name="1038172">Writes a blank line. This routine does not require any arguments.</a></p>
<h4><a name="1038160">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1038161">int defwNewLine()</a></font>
</dl>
<h3><a name="1047436">defwAddComment</a></h3>
<p><a name="1047437">Allows you to enter any comment into the DEF file. This statement automatically adds a pound symbol (#) to the beginning of the comment statement.</a></p>
<h4><a name="1047438">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047439">int defwAddComment(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>comment</em></font>)</font>
</dl>
<h3><a name="1047440">defwAddIntent</a></h3>
<p><a name="1047441">Automatically indents a statement by adding three blank spaces to the beginning of the statement. This routine does not require any arguments.</a></p>
<h4><a name="1047442">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047443">int defwAddIndent()</a></font>
</dl>
<h3><a name="1023779">defwPrintError</a></h3>
<p><a name="1038203">Prints the return status of the </a><font size="2" face="'Courier New'" color="#000000">defw*</font> routines. </p>
<h4><a name="1038184">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1038185">void defwPrintError(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>status</em></font>)</font>
</dl>
<h4><a name="1038214">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1045583"><font size="2" face="'Courier New'" color="#000000"><em>status</em></font></a></strong>
</p>
<blockquote><a name="1068003">Specifies the nonzero integer returned by the DEF writer routines. </a></blockquote>
<h3><a name="1047554">Setup Examples</a></h3>
<p><a name="1047595">The following examples show how to set up the writer. There are two ways to use the DEF writer:</a></p>
<div>
<table border="0" cellspacing="0" cellpadding="3" summary="">
<tr valign="baseline">
<td width="31.999679999999998">
<div>
<nobr>
<font color="#000000"><img src="images/b_bullet.gif" alt="ParagraphBullet" border="0"></font>
</nobr>
</div>
</td>
<td><a name="1051998">You call the write routines in your own sequence. The writer makes sure that some routines are called before others, but it is mainly your responsibility to make sure the sequence is correct, and all the required sections are there.</a></td>
</tr>
</table>
</div>
<div>
<table border="0" cellspacing="0" cellpadding="3" summary="">
<tr valign="baseline">
<td width="31.999679999999998">
<div>
<nobr>
<font color="#000000"><img src="images/b_bullet.gif" alt="ParagraphBullet" border="0"></font>
</nobr>
</div>
</td>
<td><a name="1052001">You write callback routines for each section, and the writer calls your callback routines in the sequence based on the </a><font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>. If a section is required but you do not provide a callback routine, the writer will issue a warning. If there is a default routine, the writer will invoke the default routine with a message attached</td>
</tr>
</table>
</div>
<p><a name="1052007">This manual includes examples with and without callback routines.</a></p>
<p><a name="1050172">The following example uses the writer without callbacks.</a></p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050005">int setupRoutine() {<dd> FILE* f;<dd> int res;<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047620"> ...<dd>&#47;&#47; Open the def file for the writer to write<dd>if ((f = fopen(&#34;defOutputFileName&#34;,&#34;w&#34;)) == 0) {<dd>&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;Couldn't open output file '%s'\n&#34;,<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#34;defOutputFileName&#34;);<dd>return(2);<dd>}<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047627"> &#47;&#47; Initialize the writer. This routine has to call first.<dd>&#47;&#47; Call this routine instead of defwInitCbk(f)<dd>&#47;&#47; if you are not using callback routines.<dd> res = defwInit(f);<dd> ...<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047644"> res = defwEnd();<dd> ...<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047751"> fclose(f);<dd><dd>return 0;<dd>}</a></font>
</dl>
<p><a name="1047762">The following example uses the writer with callbacks.</a></p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050006">int setupRoutine() {<dd> FILE* f;<dd> int res;<dd> int userData = 0x01020304;<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047658"> ...<dd>&#47;&#47; Open the def file for the writer to write<dd>if ((f = fopen(&#34;defOutputFileName&#34;,&#34;w&#34;)) == 0) {<dd>&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;Couldn't open output file '%s'\n&#34;,<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#34;defOutputFileName&#34;);<dd>return(2);<dd>}<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047665"> &#47;&#47; Initialize the writer. This routine has to call first.<dd>&#47;&#47; Call this routine instead of defwInit() if you are<dd>&#47;&#47; using the writer with callbacks.<dd>res = defwInitCbk(f);<dd>...<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047671"> res = defwEncrypt(); &#47;&#47; Set flag to write in encrypted format<dd>...<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047674"> &#47;&#47; Set the user callback routines<dd>defwSetArrayCbk (arrayCB);<dd>defwSetBusBitCbk (busbitCB);<dd>defwSetCaseSensitiveCbk (casesensitiveCB);<dd>defwSetComponentCbk (componentCB);<dd>defwSetConstraintCbk (constraintCB);<dd>defwSetDefaultCapCbk (defaultCapCB);<dd>defwSetDesignCbk (designCB);<dd>defwSetDesignEndCbk (designendCB);<dd>...<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047695"> &#47;&#47; Invoke the parser<dd>res = defwWrite(f, &#34;defInputFileName&#34;, (void*)userData);<dd>if (res != 0) {<dd>&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;DEF writer returns an error\n&#34;);<dd>&nbsp;&nbsp;&nbsp;&nbsp;return(2);<dd>}<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047702"> res = defwCloseEncrypt(); &#47;&#47; Clean up the encrypted buffer<dd>...<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047705"> fclose(f);<dd><dd>return 0;<dd>}</a></font>
</dl>
<p><a name="1047710">The following example shows the callback routine to mark the end of the DEF design. The type is </a><font size="2" face="'Courier New'" color="#000000">defwDesignEndCbkType</font>.</p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047713">#define CHECK_RES(res) \<dd> if (res) { \<dd> defwPrintError(res); \<dd> return(res); \<dd> }<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047719">int designendCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047723"> &#47;&#47; Check if the type is correct<dd>if (type != defwDesignEndCbkType) {<dd>printf(&#34;Type is not defwDesignEndCbkType, terminate<dd> &nbsp;&nbsp;&nbsp;&nbsp;writing.\n&#34;);<dd>return 1;<dd>}<dd>res = defwEnd();<dd>CHECK_RES(res);<dd>return 0;<dd>}</a></font>
</dl>
<h2><a name="Blockages"></a><a name="1052733">Blockages</a></h2>
<p><a name="1053108">Blockages routines write a DEF </a><font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. The <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement is optional and can be used only once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement, see <a href="../lefdefref/DEFSyntax.html#Blockages" target="external_window"><font color="#0000ff"><u>"Blockages"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1053071">A </a><font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement must start and end with the <font size="2" face="'Courier New'" color="#000000">defwStartBlockages</font> and <font size="2" face="'Courier New'" color="#000000">defwEndBlockages</font> routines. All blockages must be defined between these routines. </p>
<h3><a name="defwStartBlockages"></a><a name="1052735">defwStartBlockages</a></h3>
<p><a name="1052736">Starts a </a><font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. </p>
<h4><a name="1052741">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052742">int defwStartBlockages(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>count</em></font>)</font>
</dl>
<h4><a name="1052743">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1052744"><font size="2" face="'Courier New'" color="#000000"><em>count</em></font></a></strong>
</p>
<blockquote><a name="1068010">Specifies the number of blockages defined in the </a><font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. </blockquote>
<h3><a name="defwEndBlockages"></a><a name="1063207">defwEndBlockages</a></h3>
<p><a name="1063208">Ends the </a><font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement.</p>
<h4><a name="1063209">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052801">int defwEndBlockages()</a></font>
</dl>
<h3><a name="defwBlockageDesignRuleWidth"></a><a name="1061125">defwBlockageDesignRuleWidth </a></h3>
<p><a name="1061129">Writes a </a><font size="2" face="'Courier New'" color="#000000">DESIGNRULEWIDTH</font> statement for the blockage. Either a <font size="2" face="'Courier New'" color="#000000">SPACING</font> or a <font size="2" face="'Courier New'" color="#000000">DESIGNRULEWIDTH</font> statement can be specified for a routing blockage. The <font size="2" face="'Courier New'" color="#000000">DESIGNRULEWIDTH</font> statement is optional and can be used only once for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement.</p>
<p><a name="1065916"><strong>Note</strong></a>: This function will become obsolete in the next parser release. Use <font size="2" face="'Courier New'" color="#000000">defwBlockagesLayerDesignRuleWidth</font> instead.</p>
<h4><a name="1061144">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1061145">defwBlockageDesignRuleWidth( <dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>effectiveWidth</em></font>)</font>
</dl>
<h4><a name="1061146">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1061147"><font size="2" face="'Courier New'" color="#000000"><em>effectiveWidth</em></font></a></strong>
</p>
<blockquote><a name="1068018">Specifies that the blockages have a width of </a><font size="2" face="'Courier New'" color="#000000"><em>effectiveWidth</em></font> for the purposes of spacing calculations.</blockquote>
<h3><a name="defwBlockagesLayerDesignRuleWidth"></a><a name="1065891">defwBlockagesLayerDesignRuleWidth </a></h3>
<p><a name="1065892">Writes a </a><font size="2" face="'Courier New'" color="#000000">DESIGNRULEWIDTH</font> statement for the blockage. Either a <font size="2" face="'Courier New'" color="#000000">SPACING</font> or a <font size="2" face="'Courier New'" color="#000000">DESIGNRULEWIDTH</font> statement can be specified for a routing blockage. The <font size="2" face="'Courier New'" color="#000000">DESIGNRULEWIDTH</font> statement is optional and can be used only once for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement.</p>
<h4><a name="1065893">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1065894">defwBlockagesLayerDesignRuleWidth( <dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>effectiveWidth</em></font>)</font>
</dl>
<h4><a name="1065895">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1065896"><font size="2" face="'Courier New'" color="#000000"><em>effectiveWidth</em></font></a></strong>
</p>
<blockquote><a name="1068026">Specifies that the blockages have a width of </a><font size="2" face="'Courier New'" color="#000000"><em>effectiveWidth</em></font> for the purposes of spacing calculations.</blockquote>
<h3><a name="defwBlockageLayer"></a><a name="1052798">defwBlockageLayer</a></h3>
<p><a name="1065747">Writes a </a><font size="2" face="'Courier New'" color="#000000">LAYER</font> statement that defines a routing blockage. When the <font size="2" face="'Courier New'" color="#000000"><em>compName</em></font> argument is specified, writes a <font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font> statement that defines a routing blockage that is associated with a component. Either a <font size="2" face="'Courier New'" color="#000000">LAYER</font>, <font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">FILLS</font>, <font size="2" face="'Courier New'" color="#000000">SLOTS</font>, or <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font> statement can be specified for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. The <font size="2" face="'Courier New'" color="#000000">LAYER</font> and <font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font> statements are optional and each can be used only once for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. </p>
<p><a name="1065748"><strong>Note</strong></a>: This function will become obsolete in the next parser release. Use <font size="2" face="'Courier New'" color="#000000">defwBlockagesLayer</font> and&#47;or <font size="2" face="'Courier New'" color="#000000">defwBlockagesLayerComponent</font> instead.</p>
<h4><a name="1065749">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052751">int defwBlockageLayer(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>compName</em></font>)</font>
</dl>
<h4><a name="1052752">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1053194"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1068034">Specifies the layer on which to create the routing blockage.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1053195"><font size="2" face="'Courier New'" color="#000000"><em>compName</em></font></a></strong>
</p>
<blockquote><a name="1068042">Optional argument that specifies a component with which to associate the blockage. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument.</blockquote>
<h3><a name="defwBlockagesLayer"></a><a name="1065566">defwBlockagesLayer</a></h3>
<p><a name="1065567">Writes a </a><font size="2" face="'Courier New'" color="#000000">LAYER</font> statement that defines a routing blockage. Any one of the <font size="2" face="'Courier New'" color="#000000">LAYER</font>, <font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">FILLS</font>, <font size="2" face="'Courier New'" color="#000000">SLOTS</font>, or <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font> statements can be specified for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. The <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement is optional and can be used only once for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. </p>
<h4><a name="1065521">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1065522">int defwBlockagesLayer(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>)</font>
</dl>
<h4><a name="1065523">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1065524"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1068050">Specifies the layer on which to create the routing blockage.</a></blockquote>
<h3><a name="defwBlockagesLayerComponent"></a><a name="1065824">defwBlockagesLayerComponent</a></h3>
<p><a name="1065825">Writes a </a><font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font> statement that defines a routing blockage that is associated with a component. Any one of the <font size="2" face="'Courier New'" color="#000000">LAYER</font>, <font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">FILLS</font>, <font size="2" face="'Courier New'" color="#000000">SLOTS</font>, or <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font> statements can be specified for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. The <font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font> statement is optional and can be used only once for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. </p>
<h4><a name="1065827">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1065857">int defwBlockagesLayerComponent(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>compName</em></font>)</font>
</dl>
<h4><a name="1065829">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1065831"><font size="2" face="'Courier New'" color="#000000"><em>compName</em></font></a></strong>
</p>
<blockquote><a name="1068058">Specifies a component with which to associate the blockage.</a></blockquote>
<h3><a name="defwBlockageLayerExceptpgnet"></a><a name="1065485">defwBlockageLayerExceptpgnet</a></h3>
<p><a name="1065118">Writes an </a><font size="2" face="'Courier New'" color="#000000">EXCEPTPGNET</font> statement for a routing blockage on the given layer, which specifies that the blockage only blocks signal net routing and does not block power or ground net routing. Either a <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">SLOTS</font>, <font size="2" face="'Courier New'" color="#000000">FILLS</font>, <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font>, or <font size="2" face="'Courier New'" color="#000000">EXCEPTPGNET</font> statement can be specified for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. The <font size="2" face="'Courier New'" color="#000000">EXCEPTPGNET</font> statement is optional and can be used only once for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. </p>
<p><a name="1065754"><strong>Note</strong></a>: This function will become obsolete in the next parser release. Use <font size="2" face="'Courier New'" color="#000000">defwBlockagesLayerExceptpgnet</font> instead.</p>
<h4><a name="1065121">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1065122"><font color="#000000">int defwBlockageLayerExceptpgnet(<dd>const char* </font></a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>)</font>
</dl>
<h4><a name="1065123">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1065119"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1068066">Specifies the layer on which to create the routing blockage.</a></blockquote>
<h3><a name="defwBlockagesLayerExceptpgnet"></a><a name="1065729">defwBlockagesLayerExceptpgnet</a></h3>
<p><a name="1065730">Writes an </a><font size="2" face="'Courier New'" color="#000000">EXCEPTPGNET</font> statement for a routing blockage on the given layer, which specifies that the blockage only blocks signal net routing and does not block power or ground net routing. Any one of the <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">SLOTS</font>, <font size="2" face="'Courier New'" color="#000000">FILLS</font>, <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font>, or <font size="2" face="'Courier New'" color="#000000">EXCEPTPGNET</font> statements can be specified for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. The <font size="2" face="'Courier New'" color="#000000">EXCEPTPGNET</font> statement is optional and can be used only once for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. </p>
<h4><a name="1065731">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1065732"><font color="#000000">int defwBlockagesLayerExceptpgnet(<dd>const char* </font></a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>)</font>
</dl>
<h4><a name="1065733">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1065734"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1068073">Specifies the layer on which to create the routing blockage.</a></blockquote>
<h3><a name="defwBlockageLayerFills"></a><a name="1059289">defwBlockageLayerFills</a></h3>
<p><a name="1059290">Writes a </a><font size="2" face="'Courier New'" color="#000000">FILLS</font> statement, which defines a routing blockage on the specified layer where metal fills cannot be placed. Either a <font size="2" face="'Courier New'" color="#000000">LAYER</font>, <font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">FILLS</font>, <font size="2" face="'Courier New'" color="#000000">SLOTS</font>, <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font>, or <font size="2" face="'Courier New'" color="#000000">EXCEPTPGNET </font>statement can be specified for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. The <font size="2" face="'Courier New'" color="#000000">FILLS</font> statement is optional and can be used only once for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. </p>
<p><a name="1065621"><strong>Note</strong></a>: This function will become obsolete in the next parser release. Use <font size="2" face="'Courier New'" color="#000000">defwBlockagesLayerFills</font> instead.</p>
<h4><a name="1061293">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052773">int defwBlockageLayerFills(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>)</font>
</dl>
<h4><a name="1052774">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1052780"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1068080">Specifies the layer on which to create the blockage.</a></blockquote>
<h3><a name="defwBlockagesLayerFills"></a><a name="1065588">defwBlockagesLayerFills</a></h3>
<p><a name="1065589">Writes a </a><font size="2" face="'Courier New'" color="#000000">FILLS</font> statement, which defines a routing blockage where metal fills cannot be placed. Any one of the <font size="2" face="'Courier New'" color="#000000">LAYER</font>, <font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">FILLS</font>, <font size="2" face="'Courier New'" color="#000000">SLOTS</font>, <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font>, or <font size="2" face="'Courier New'" color="#000000">EXCEPTPGNET </font>statements can be specified for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. The <font size="2" face="'Courier New'" color="#000000">FILLS</font> statement is optional and can be used only once for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. </p>
<h4><a name="1066381">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1066392">int defwBlockagesLayerFills()</a></font>
</dl>
<h3><a name="defwBlockageLayerPushdown"></a><a name="1066397">defwBlockageLayerPushdown</a></h3>
<p><a name="1061460">Writes a </a><font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font> statement, which defines the routing blockage as being pushed down into the block from the top level of the design. Either a <font size="2" face="'Courier New'" color="#000000">LAYER</font>, <font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">FILLS</font>, <font size="2" face="'Courier New'" color="#000000">SLOTS</font>, <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font>, or <font size="2" face="'Courier New'" color="#000000">EXCEPTPGNET </font>statement can be specified for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. The <font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font> statement is optional and can be used only once for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement.</p>
<p><a name="1065690"><strong>Note</strong></a>: This function will become obsolete in the next parser release. Use <font size="2" face="'Courier New'" color="#000000">defwBlockagesLayerPushdown</font> instead.</p>
<h4><a name="1061461">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052782">int defwBlockageLayerPushdown(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>)</font>
</dl>
<h4><a name="1052787">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1052788"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1068088">Specifies the layer on which the blockage lies.</a></blockquote>
<h3><a name="defwBlockagesLayerPushdown"></a><a name="1065651">defwBlockagesLayerPushdown</a></h3>
<p><a name="1065652">Writes a </a><font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font> statement, which defines the routing blockage as being pushed down into the block from the top level of the design. Any one of the <font size="2" face="'Courier New'" color="#000000">LAYER</font>, <font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">FILLS</font>, <font size="2" face="'Courier New'" color="#000000">SLOTS</font>, <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font>, or <font size="2" face="'Courier New'" color="#000000">EXCEPTPGNET </font>statements can be specified for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. The <font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font> statement is optional and can be used only once for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement.</p>
<h4><a name="1065653">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1065654">int defwBlockagesLayerPushdown(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>)</font>
</dl>
<h4><a name="1065655">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1065656"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1068096">Specifies the layer on which the blockage lies.</a></blockquote>
<h3><a name="defwBlockageLayerSlots"></a><a name="1052778">defwBlockageLayerSlots</a></h3>
<p><a name="1053267">Writes a </a><font size="2" face="'Courier New'" color="#000000">SLOTS</font> statement, which defines a routing blockage where slots cannot be placed. Either a <font size="2" face="'Courier New'" color="#000000">LAYER</font>, <font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">FILLS</font>, <font size="2" face="'Courier New'" color="#000000">SLOTS</font>, <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font>, or <font size="2" face="'Courier New'" color="#000000">EXCEPTPGNET </font>statement can be specified for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. The <font size="2" face="'Courier New'" color="#000000">SLOTS</font> statement is optional and can be used only once for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. </p>
<h4><a name="1052766">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052767">int defwBlockageLayerSlots(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>)</font>
</dl>
<h4><a name="1052768">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1052769"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1068104">Specifies the layer on which to create the blockage.</a></blockquote>
<h3><a name="defwBlockagePlacement"></a><a name="1052764">defwBlockagePlacement</a></h3>
<p><a name="1063431">Writes a </a><font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> statement, which defines a placement blockage. Either a <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PARTIAL</font>, or <font size="2" face="'Courier New'" color="#000000">PLACEMENT SOFT </font>statement can be specified for each placement blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. The <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> statement is optional and can be used only once for each placement blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement.</p>
<p><a name="1065977"><strong>Note</strong></a>: This function will become obsolete in the next parser release. Use <font size="2" face="'Courier New'" color="#000000">defwBlockagesPlacement</font> instead.</p>
<h4><a name="1063655">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1063656">defwBlockagePlacement()</a></font>
</dl>
<h3><a name="defwBlockagesPlacement"></a><a name="1065956">defwBlockagesPlacement</a></h3>
<p><a name="1065957">Writes a </a><font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> statement, which defines a placement blockage. Any one of the <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PARTIAL</font>, or <font size="2" face="'Courier New'" color="#000000">PLACEMENT SOFT </font>statements can be specified for each placement blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. The <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> statement is optional and can be used only once for each placement blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement.</p>
<h4><a name="1065968">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1065969">defwBlockagesPlacement()</a></font>
</dl>
<h3><a name="defwBlockagePlacementComponent"></a><a name="1063432">defwBlockagePlacementComponent</a></h3>
<p><a name="1053275">Writes a </a><font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font> statement, which defines a placement blockage associated with a component. Either a <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PARTIAL</font>, or <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">SOFT</font> statement can be specified for each placement blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. The <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font> statement is optional and can be used only once for each placement blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. </p>
<p><a name="1066029"><strong>Note</strong></a>: This function will become obsolete in the next parser release. Use <font size="2" face="'Courier New'" color="#000000">defwBlockagesPlacementComponent</font> instead.</p>
<h4><a name="1052791">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052792">int defwBlockagePlacementComponent(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>compName</em></font>)</font>
</dl>
<h4><a name="1052793">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1052794"><font size="2" face="'Courier New'" color="#000000"><em>compName</em></font></a></strong>
</p>
<blockquote><a name="1068112">Specifies the component with which to associate the blockage. </a></blockquote>
<h3><a name="defwBlockagesPlacementComponent"></a><a name="1066011">defwBlockagesPlacementComponent</a></h3>
<p><a name="1066012">Writes a </a><font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font> statement, which defines a placement blockage associated with a component. Any one of the <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PARTIAL</font>, or <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">SOFT</font> statements can be specified for each placement blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. The <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font> statement is optional and can be used only once for each placement blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. </p>
<h4><a name="1066013">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1066014">int defwBlockagesPlacementComponent(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>compName</em></font>)</font>
</dl>
<h4><a name="1066015">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1066016"><font size="2" face="'Courier New'" color="#000000"><em>compName</em></font></a></strong>
</p>
<blockquote><a name="1068120">Specifies the component with which to associate the blockage. </a></blockquote>
<h3><a name="defwBlockagePlacementPartial"></a><a name="1052789">defwBlockagePlacementPartial</a></h3>
<p><a name="1065257">Writes a </a><font size="2" face="'Courier New'" color="#000000">PLACEMENT PARTIAL</font> statement, which specifies that the initial placement should not use more than <font size="2" face="'Courier New'" color="#000000"><em>maxDensity</em></font> percentage of the blockage area for standard cells. Either a <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PARTIAL</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">SOFT</font>, or <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font> statement can be specified for each placement blockage. The <font size="2" face="'Courier New'" color="#000000">PLACEMENT PARTIAL </font>statement is optional and can be used only once for each placement blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement.</p>
<p><a name="1066079"><strong>Note</strong></a>: This function will become obsolete in the next parser release. Use <font size="2" face="'Courier New'" color="#000000">defwBlockagesPlacementPartial</font> instead.</p>
<h4><a name="1065138">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1065139"><font color="#000000">int defwBlockagePlacementPartial(<dd>double </font></a><font size="2" face="'Courier New'" color="#000000"><em>maxDensity</em></font>)</font>
</dl>
<h4><a name="1065140">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1065141"><font size="2" face="'Courier New'" color="#000000"><em>maxDensity</em></font></a></strong>
</p>
<blockquote><a name="1068128">Specifies the maximum density value. The initial placement will not use more than </a><font size="2" face="'Courier New'" color="#000000"><em>maxDensity</em></font> percentage of the blockage area for standard cells. <br>Value: <font size="2" face="'Courier New'" color="#000000">0.0&#45;100.0</font></blockquote>
<h3><a name="defwBlockagesPlacementPartial"></a><a name="1066061">defwBlockagesPlacementPartial</a></h3>
<p><a name="1066062">Writes a </a><font size="2" face="'Courier New'" color="#000000">PLACEMENT PARTIAL</font> statement, which specifies that the initial placement should not use more than <font size="2" face="'Courier New'" color="#000000"><em>maxDensity</em></font> percentage of the blockage area for standard cells. Any one of the <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PARTIAL</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">SOFT</font>, or <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font> statements can be specified for each placement blockage. The <font size="2" face="'Courier New'" color="#000000">PLACEMENT PARTIAL </font>statement is optional and can be used only once for each placement blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement.</p>
<h4><a name="1066063">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1066064"><font color="#000000">int defwBlockagesPlacementPartial(<dd>double </font></a><font size="2" face="'Courier New'" color="#000000"><em>maxDensity</em></font>)</font>
</dl>
<h4><a name="1066065">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1066066"><font size="2" face="'Courier New'" color="#000000"><em>maxDensity</em></font></a></strong>
</p>
<blockquote><a name="1068135">Specifies the maximum density value. The initial placement will not use more than </a><font size="2" face="'Courier New'" color="#000000"><em>maxDensity</em></font> percentage of the blockage area for standard cells. <br>Value: <font size="2" face="'Courier New'" color="#000000">0.0&#45;100.0</font></blockquote>
<h3><a name="defwBlockagePlacementPushdown"></a><a name="1065115">defwBlockagePlacementPushdown</a></h3>
<p><a name="1053362">Writes a </a><font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font> statement, which defines the placement blockage as being pushed down into the block from the top level of the design. Either a <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PARTIAL</font>, or <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">SOFT</font> statement can be specified for each placement blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. The <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font> statement is optional and can be used only once for each placement blockage in a <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. </p>
<p><a name="1066136"><strong>Note</strong></a>: This function will become obsolete in the next parser release. Use <font size="2" face="'Courier New'" color="#000000">defwBlockagesPlacementPushdown</font> instead.</p>
<h4><a name="1052755">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052756">int defwBlockagePlacementPushdown()</a></font>
</dl>
<h3><a name="defwBlockagesPlacementPushdown"></a><a name="1066113">defwBlockagesPlacementPushdown</a></h3>
<p><a name="1066114">Writes a </a><font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font> statement, which defines the placement blockage as being pushed down into the block from the top level of the design. Any one of the <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PARTIAL</font>, or <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">SOFT</font> statement can be specified for each placement blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. The <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font> statement is optional and can be used only once for each placement blockage in a <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. </p>
<h4><a name="1066115">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1066116">int defwBlockagesPlacementPushdown()</a></font>
</dl>
<h3><a name="defwBlockagePlacementSoft"></a><a name="1065113">defwBlockagePlacementSoft</a></h3>
<p><a name="1065149">Writes a </a><font size="2" face="'Courier New'" color="#000000">PLACEMENT SOFT</font> statement, which specifies that the initial placement should not use the blockage area, but later timing optimization phases can use the blockage area. Either a <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PARTIAL</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">SOFT</font>, or <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font> statement can be specified for each placement blockage. The <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">SOFT</font> statement is optional and can be used only once for each placement blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement.</p>
<p><a name="1066193"><strong>Note</strong></a>: This function will become obsolete in the next parser release. Use <font size="2" face="'Courier New'" color="#000000">defwBlockagesPlacementSoft</font> instead.</p>
<h4><a name="1065150">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1065151"><font color="#000000">int defwBlockagePlacementSoft()</font></a></font>
</dl>
<h3><a name="defwBlockagesPlacementSoft"></a><a name="1066177">defwBlockagesPlacementSoft</a></h3>
<p><a name="1066178">Writes a </a><font size="2" face="'Courier New'" color="#000000">PLACEMENT SOFT</font> statement, which specifies that the initial placement should not use the blockage area, but later timing optimization phases can use the blockage area. Any one of the <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PARTIAL</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">SOFT</font>, or <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font> statements can be specified for each placement blockage. The <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">SOFT</font> statement is optional and can be used only once for each placement blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement.</p>
<h4><a name="1066179">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1066180"><font color="#000000">int defwBlockagesPlacementSoft()</font></a></font>
</dl>
<h3><a name="defwBlockagePolygon"></a><a name="1061172">defwBlockagePolygon</a></h3>
<p><a name="1061176">Writes a </a><font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement. Either a <font size="2" face="'Courier New'" color="#000000">RECT</font> or a <font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement is required with a <font size="2" face="'Courier New'" color="#000000">LAYER</font>, <font size="2" face="'Courier New'" color="#000000">LAYER COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">FILLS</font>, <font size="2" face="'Courier New'" color="#000000">SLOTS</font>, or <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font> statement. The <font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement can be used more than once for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement.</p>
<p><a name="1066247"><strong>Note</strong></a>: This function will become obsolete in the next parser release. Use <font size="2" face="'Courier New'" color="#000000">defwBlockagesPolygon</font> instead.</p>
<h4><a name="1061195">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1061196">defwBlockagePolygon( <dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>num_polys</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>)</font>
</dl>
<h4><a name="1061197">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1061198"><font size="2" face="'Courier New'" color="#000000"><em>num_polys</em></font></a></strong>
</p>
<blockquote><a name="1068142">Specifies the number of polygon sides.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1061228"><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yl</em></font></strong>
</p>
<blockquote><a name="1068150">Specifies a sequence of points to generate a polygon geometry. The polygon edges must be parallel to the x axis, to the y axis, or at a 45&#45;degree angle.</a></blockquote>
<h3><a name="defwBlockagesPolygon"></a><a name="1066228">defwBlockagesPolygon</a></h3>
<p><a name="1066229">Writes a </a><font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement. Either a <font size="2" face="'Courier New'" color="#000000">RECT</font> or a <font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement is required with a <font size="2" face="'Courier New'" color="#000000">LAYER</font>, <font size="2" face="'Courier New'" color="#000000">LAYER COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">FILLS</font>, <font size="2" face="'Courier New'" color="#000000">SLOTS</font>, or <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font> statement. The <font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement can be used more than once for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement.</p>
<h4><a name="1066230">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1066231">int defwBlockagesPolygon( <dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>num_polys</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>)</font>
</dl>
<h4><a name="1066232">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1066233"><font size="2" face="'Courier New'" color="#000000"><em>num_polys</em></font></a></strong>
</p>
<blockquote><a name="1068158">Specifies the number of polygon sides.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1066234"><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yl</em></font></strong>
</p>
<blockquote><a name="1068170">Specifies a sequence of points to generate a polygon geometry. The polygon edges must be parallel to the x axis, to the y axis, or at a 45&#45;degree angle.</a></blockquote>
<h3><a name="defwBlockageRect"></a><a name="1053456">defwBlockageRect</a></h3>
<p><a name="1053457">Writes a </a><font size="2" face="'Courier New'" color="#000000">RECT</font> statement. Either a <font size="2" face="'Courier New'" color="#000000">RECT</font> or a <font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement is required with a <font size="2" face="'Courier New'" color="#000000">LAYER</font>, <font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">FILLS</font>, <font size="2" face="'Courier New'" color="#000000">SLOTS</font>, or <font size="2" face="'Courier New'" color="#000000">LAYER PUSHDOWN</font> statement. A <font size="2" face="'Courier New'" color="#000000">RECT</font> statement is also required with a <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font> or <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font> statement. The <font size="2" face="'Courier New'" color="#000000">RECT</font> statement can be used more than once for each blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement.</p>
<p><a name="1066300"><strong>Note</strong></a>: This function will become obsolete in the next parser release. Use <font size="2" face="'Courier New'" color="#000000">defwBlockagesRect</font> instead.</p>
<h4><a name="1053458">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1053459">int defwBlockageRect(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>xh</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>yh</em></font>)</font>
</dl>
<h4><a name="1064050">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1064051"><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yl</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>xh</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yh</em></font></strong>
</p>
<blockquote><a name="1068178">Specifies the absolute coordinates of the blockage geometry.</a></blockquote>
<h3><a name="defwBlockagesRect"></a><a name="1066282">defwBlockagesRect</a></h3>
<p><a name="1066283">Writes a </a><font size="2" face="'Courier New'" color="#000000">RECT</font> statement. Either a <font size="2" face="'Courier New'" color="#000000">RECT</font> or a <font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement is required with a <font size="2" face="'Courier New'" color="#000000">LAYER</font>, <font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">FILLS</font>, <font size="2" face="'Courier New'" color="#000000">SLOTS</font>, or <font size="2" face="'Courier New'" color="#000000">LAYER PUSHDOWN</font> statement. A <font size="2" face="'Courier New'" color="#000000">RECT</font> statement is also required with a <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">COMPONENT</font> or <font size="2" face="'Courier New'" color="#000000">PLACEMENT</font> <font size="2" face="'Courier New'" color="#000000">PUSHDOWN</font> statement. The <font size="2" face="'Courier New'" color="#000000">RECT</font> statement can be used more than once for each blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement.</p>
<h4><a name="1066284">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1066285">int defwBlockagesRect(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>xh</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>yh</em></font>)</font>
</dl>
<h4><a name="1066286">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1066287"><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yl</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>xh</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yh</em></font></strong>
</p>
<blockquote><a name="1068186">Specifies the absolute coordinates of the blockage geometry.</a></blockquote>
<h3><a name="defwBlockagesLayerMask"></a><a name="1066334">defwBlockagesLayerMask</a></h3>
<p><a name="1066335">Writes the blockage layer color mask.</a></p>
<h4><a name="1066336">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1066337">int defwBlockagesLayerMask(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>maskColor</em></font>)</font>
</dl>
<h4><a name="1066338">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1066339"><font size="2" face="'Courier New'" color="#000000"><em>maskColor</em></font></a></strong>
</p>
<blockquote><a name="1068194">Specifies the mask color.</a></blockquote>
<h3><a name="defwBlockageSpacing"></a><a name="1064054">defwBlockageSpacing</a></h3>
<p><a name="1061053">Writes a </a><font size="2" face="'Courier New'" color="#000000">SPACING</font> statement for the blockage. Either a <font size="2" face="'Courier New'" color="#000000">SPACING</font> or a <font size="2" face="'Courier New'" color="#000000">DESIGNRULEWIDTH</font> statement can be specified for a routing blockage. The <font size="2" face="'Courier New'" color="#000000">SPACING</font> statement is optional and can be used only once for each routing blockage in the <font size="2" face="'Courier New'" color="#000000">BLOCKAGES</font> statement. </p>
<h4><a name="1061114">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1061115">defwBlockageSpacing(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>minSpacing</em></font>)</font>
</dl>
<h4><a name="1061116">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1061092"><font size="2" face="'Courier New'" color="#000000"><em>minSpacing</em></font></a></strong>
</p>
<blockquote><a name="1068201">Specifies the minimum spacing between this blockage and any other routing shape.</a></blockquote>
<h2><a name="1058435">Bus Bit Characters</a></h2>
<p><a name="1058436">The Bus Bit Characters routine writes a DEF </a><font size="2" face="'Courier New'" color="#000000">BUSBITCHARS</font> statement. The <font size="2" face="'Courier New'" color="#000000">BUSBITCHARS</font> statement is required and can be used only once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">BUSBITCHARS</font> statement, see <a href="../lefdefref/DEFSyntax.html#BusBitCharacters" target="external_window"><font color="#0000ff"><u>"Bus Bit Characters"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1058450">This routine returns </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="defwBusBitChars"></a><a name="1058455">defwBusBitChars</a></h3>
<p><a name="1058456">Writes a </a><font size="2" face="'Courier New'" color="#000000">BUSBITCHARS</font> statement.</p>
<h4><a name="1058457">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1058458">int defwBusBitChars(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>busBitChars</em></font>)</font>
</dl>
<h4><a name="1058459">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1058460"><font size="2" face="'Courier New'" color="#000000"><em>busBitChars</em></font></a></strong>
</p>
<blockquote><a name="1068209">Specifies the pair of characters used to specify bus bits when DEF names are mapped to or from other databases. The characters must be enclosed in double quotation marks.<br>If one of the bus bit characters appears in a DEF name as a regular character, you must use a backslash ( \) before the character to prevent the DEF reader from interpreting the character as a bus bit delimiter.</a></blockquote>
<h2><a name="Components"></a><a name="1023787">Components</a></h2>
<p><a name="1028684">Components routines write a DEF </a><font size="2" face="'Courier New'" color="#000000">COMPONENTS</font> section. The <font size="2" face="'Courier New'" color="#000000">COMPONENTS</font> section is optional and can be used only once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">COMPONENTS</font> section, see <a href="../lefdefref/DEFSyntax.html#Components" target="external_window"><font color="#0000ff"><u>"Components"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1060411">The </a><font size="2" face="'Courier New'" color="#000000">COMPONENTS</font> section must start and end with the <font size="2" face="'Courier New'" color="#000000">defwStartComponents</font> and <font size="2" face="'Courier New'" color="#000000">defwEndComponents</font> routines. All components must be defined between these routines. </p>
<p><a name="1028688">If the DEF file contains a </a><font size="2" face="'Courier New'" color="#000000">REGIONS</font> statement, the <font size="2" face="'Courier New'" color="#000000">COMPONENTS</font> statement must follow it. For more information about the DEF <font size="2" face="'Courier New'" color="#000000">REGIONS</font> routines, see <a href="#1035438" title="6"><font color="Blue"><u>"Regions"</u></font></a><a href="#1035438" title="6"></a>.</p>
<p><a name="1051020">For examples of the routines described here, see </a><a href="#1047557" title="6"><font color="Blue"><u>"Components Example"</u></font></a><a href="#1047557" title="6"></a>. </p>
<p><font color="#000000"><strong>Note: </strong></font><a name="1038573">To write a </a><font size="2" face="'Courier New'" color="#000000">PROPERTY</font> statement for the component, you must use one of the property routines between the routines described here. For more information, see <a href="#1032848" title="6"><font color="Blue"><u>"Property Statements"</u></font></a><a href="#1032848" title="6"></a>.</p>
<p><a name="1038582">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="1025186">defwStartComponents</a></h3>
<p><a name="1050907">Starts the </a><font size="2" face="'Courier New'" color="#000000">COMPONENTS</font> section. </p>
<h4><a name="1038590">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1038591">int defwStartComponents( <dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>count</em></font>)</font>
</dl>
<h4><a name="1038602">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1038605"><font size="2" face="'Courier New'" color="#000000"><em>count</em></font></a></strong>
</p>
<blockquote><a name="1068231">Specifies the number of components defined in the </a><font size="2" face="'Courier New'" color="#000000">COMPONENTS</font> section. </blockquote>
<h3><a name="1023801">defwEndComponents</a></h3>
<p><a name="1038666">Ends the </a><font size="2" face="'Courier New'" color="#000000">COMPONENTS</font> section. </p>
<p><a name="1060431">If the </a><font size="2" face="'Courier New'" color="#000000"><em>count</em></font> specified in <font size="2" face="'Courier New'" color="#000000">defwStartComponents</font> is not the same as the actual number of <font size="2" face="'Courier New'" color="#000000">defwComponent</font> routines used, this routine returns <font size="2" face="'Courier New'" color="#000000">DEFW_BAD_DATA</font>. </p>
<h4><a name="1038632">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1038633">int defwEndComponents(void)</a></font>
</dl>
<h3><a name="1023813">defwComponent</a></h3>
<p><a name="1038720">Writes a set of statements that define one component. This routine is required and can be used more than once in the </a><font size="2" face="'Courier New'" color="#000000">COMPONENTS</font> statement. </p>
<p><a name="1060464">If you specify </a><font size="2" face="'Courier New'" color="#000000">0</font> for all optional arguments except <font size="2" face="'Courier New'" color="#000000"><em>weight</em></font>, they are ignored. For <font size="2" face="'Courier New'" color="#000000"><em>weight</em></font>, you must specify <font size="2" face="'Courier New'" color="#000000">&#45;1.0</font>.</p>
<h4><a name="1038689">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1038690">int defwComponent(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>master</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>eeq</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>source</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>status</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>statusX</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>statusY</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>statusOrient</em></font>, <dd>double <font size="2" face="'Courier New'" color="#000000"><em>weight</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>region</em></font>,)</font>
</dl>
<h4><a name="1038701">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1054535"><font size="2" face="'Courier New'" color="#000000"><em>eeq</em></font></a></strong>
</p>
<blockquote><a name="1068238">Optional argument that specifies that the component being defined should be electrically equivalent to </a><font size="2" face="'Courier New'" color="#000000"><em>eeq</em></font> (a previously defined component). Specify <font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument. </blockquote>
<p>
<strong></strong>
<strong><a name="1068256"><font size="2" face="'Courier New'" color="#000000"><em>master</em></font></a></strong>
</p>
<blockquote><a name="1068257">Specifies the name of a model defined in the library.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1068258"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1068263">Specifies the component name, which is an instance of </a><font size="2" face="'Courier New'" color="#000000"><em>master</em></font>.</blockquote>
<p>
<strong></strong>
<strong><a name="1054567"><font size="2" face="'Courier New'" color="#000000"><em>region</em></font></a></strong>
</p>
<blockquote><a name="1068270">Optional argument that specifies the name of a previously defined region in which the component must lie. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument.</blockquote>
<p>
<strong></strong>
<strong><a name="1054563"><font size="2" face="'Courier New'" color="#000000"><em>status</em></font></a></strong>
</p>
<blockquote><a name="1068277">Optional argument that specifies the component state. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument. <br><font color="#000000"><em>Value:</em></font> Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="645">
<caption>
<tr>
<td cellpadding="4" valign="top" width="200">
<p><a name="1055662">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="133">
<p><a name="1055664"><font size="2" face="'Courier New'" color="#000000">COVER</font></a></p>
</td>
<td cellpadding="4" valign="top" width="312">
<p><a name="1055666">Specifies that the component has a location and is a part of the cover macro. It cannot be moved by automatic tools or interactive commands.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1055668">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055670"><font size="2" face="'Courier New'" color="#000000">FIXED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055672">Specifies that the component has a location and cannot be moved by automatic tools, but can me moved using interactive commands.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1055674">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055676"><font size="2" face="'Courier New'" color="#000000">PLACED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055678">Specifies that the component has a location, but can be moved using automatic layout tools.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1055698">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055700"><font size="2" face="'Courier New'" color="#000000">UNPLACED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055702">Specifies that the component does not have a location.</a></p>
</td>
</tr>
</table>
<p>
<strong></strong>
<strong><a name="1054547"><font size="2" face="'Courier New'" color="#000000"><em>statusOrient</em></font></a></strong>
</p>
<blockquote><a name="1068285">Optional argument that specifies the orientation of the component. Specify </a><font size="2" face="'Courier New'" color="#000000">&#45;1</font> to ignore this argument.<br><font color="#000000"><em>Value:</em></font> <font size="2" face="'Courier New'" color="#000000">0</font> to <font size="2" face="'Courier New'" color="#000000">7</font>. For more information, see <a href="ch1Intro.html#1019049" title="1"><font color="Blue"><u>"Orientation Codes"</u></font></a><a href="ch1Intro.html#1019049" title="1"></a>.</blockquote>
<p>
<strong></strong>
<strong><a name="1063227"><font size="2" face="'Courier New'" color="#000000"><em>statusX</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>statusY</em></font></strong>
</p>
<blockquote><a name="1068293">Optional arguments that specify the location of the component. Specify </a><font size="2" face="'Courier New'" color="#000000">0</font> to ignore these arguments.</blockquote>
<p>
<strong></strong>
<strong><a name="1063215"><font size="2" face="'Courier New'" color="#000000"><em>source</em></font></a></strong>
</p>
<blockquote><a name="1068301">Optional argument that specifies the source of the component. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument. <br><font color="#000000"><em>Value:</em></font> Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="648">
<caption>
<tr>
<td cellpadding="4" valign="top" width="199">
<p><a name="1055614">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="101">
<p><a name="1055616"><font size="2" face="'Courier New'" color="#000000">DIST</font></a></p>
</td>
<td cellpadding="4" valign="top" width="348">
<p><a name="1055618">Component is a physical component (that is, it only connects to power or ground nets), such as filler cells, well&#45;taps, and decoupling caps.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1055620">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055622"><font size="2" face="'Courier New'" color="#000000">NETLIST</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055624">Component is specified in the original netlist. This is the default value, and is normally not written out in the DEF file.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1055626">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055628"><font size="2" face="'Courier New'" color="#000000">TIMING</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055630">Component is a logical rather than physical change to the netlist, and is typically used as a buffer for a clock&#45;tree, or to improve timing on long nets.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1055644">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055646"><font size="2" face="'Courier New'" color="#000000">USER</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055648">Component is generated by the user for some user&#45;defined reason.</a></p>
</td>
</tr>
</table>
<p>
<strong></strong>
<strong><a name="1038711"><font size="2" face="'Courier New'" color="#000000"><em>weight</em></font></a></strong>
</p>
<blockquote><a name="1068308">Optional argument that specifies the weight of the component, which determines if automatic placement attempts to keep the component near the specified location. </a><font size="2" face="'Courier New'" color="#000000"><em>weight</em></font> is only meaningful when the component is placed. All non&#45;zero weights have the same effect during automatic placement. Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument.</blockquote>
<h3><a name="1052197">defwComponentStr</a></h3>
<p><a name="1058838">Also writes a set of statements that define one component. This routine is the same as the </a><font size="2" face="'Courier New'" color="#000000">defwComponent</font> routine, with the exception of the <font size="2" face="'Courier New'" color="#000000"><em>foreignOrients</em></font> argument, which takes a string instead of an integer.This routine is required and can be used more than once in the <font size="2" face="'Courier New'" color="#000000">COMPONENTS</font> statement. </p>
<p><a name="1063354">If you specify </a><font size="2" face="'Courier New'" color="#000000">0</font> for all optional arguments except <font size="2" face="'Courier New'" color="#000000"><em>weight</em></font>, they are ignored. For weight, you must specify <font size="2" face="'Courier New'" color="#000000">&#45;1.0</font>.</p>
<h4><a name="1052201">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052350">int defwComponent(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>master,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>eeq,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>source,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>status,<dd></em></font>int <font size="2" face="'Courier New'" color="#000000"><em>statusX,</em></font> <dd>int <font size="2" face="'Courier New'" color="#000000"><em>statusY,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>statusOrient,</em></font> <dd>double <font size="2" face="'Courier New'" color="#000000"><em>weight,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>region,</em></font>)</font>
</dl>
<h4><a name="1052203">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1063254"><font size="2" face="'Courier New'" color="#000000"><em>eeq</em></font></a></strong>
</p>
<blockquote><a name="1068316">Optional argument that specifies that the component being defined should be electrically equivalent to </a><font size="2" face="'Courier New'" color="#000000"><em>eeq</em></font> (a previously defined component). Specify <font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument.</blockquote>
<p>
<strong></strong>
<strong><a name="1063255"><font size="2" face="'Courier New'" color="#000000"><em>master</em></font></a></strong>
</p>
<blockquote><a name="1068323">Specifies the name of a model defined in the library.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1063256"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1068331">Specifies the component name, which is an instance of </a><font size="2" face="'Courier New'" color="#000000"><em>master</em></font>.</blockquote>
<p>
<strong></strong>
<strong><a name="1063257"><font size="2" face="'Courier New'" color="#000000"><em>region</em></font></a></strong>
</p>
<blockquote><a name="1068338">Optional argument that specifies the name of a previously defined region in which the component must lie. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument.</blockquote>
<p>
<strong></strong>
<strong><a name="1063258"><font size="2" face="'Courier New'" color="#000000"><em>status</em></font></a></strong>
</p>
<blockquote><a name="1068355">Optional argument that specifies the component state. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument.<br><font color="#000000"><em>Value:</em></font> Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="645">
<caption>
<tr>
<td cellpadding="4" valign="top" width="200">
<p><a name="1063261">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="133">
<p><a name="1063263"><font size="2" face="'Courier New'" color="#000000">COVER</font></a></p>
</td>
<td cellpadding="4" valign="top" width="312">
<p><a name="1063265">Specifies that the component has a location and is a part of the cover macro. It cannot be moved by automatic tools or interactive commands.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1063267">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1063269"><font size="2" face="'Courier New'" color="#000000">FIXED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1063271">Specifies that the component has a location and cannot be moved by automatic tools, but can me moved using interactive commands.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1063273">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1063275"><font size="2" face="'Courier New'" color="#000000">PLACED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1063277">Specifies that the component has a location, but can be moved using automatic layout tools.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1063279">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1063281"><font size="2" face="'Courier New'" color="#000000">UNPLACED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1063283">Specifies that the component does not have a location.</a></p>
</td>
</tr>
</table>
<p>
<strong></strong>
<strong><a name="1063321"><font size="2" face="'Courier New'" color="#000000"><em>statusOrient</em></font></a></strong>
</p>
<blockquote><a name="1068362">Optional argument that specifies the orientation of the component. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument.<br><font color="#000000"><em>Value:</em></font> <font size="2" face="'Courier New'" color="#000000">N</font>, <font size="2" face="'Courier New'" color="#000000">W</font>, <font size="2" face="'Courier New'" color="#000000">S</font>, <font size="2" face="'Courier New'" color="#000000">E</font>, <font size="2" face="'Courier New'" color="#000000">FN</font>, <font size="2" face="'Courier New'" color="#000000">FW</font>, <font size="2" face="'Courier New'" color="#000000">FS</font>, or <font size="2" face="'Courier New'" color="#000000">FE </font></blockquote>
<p>
<strong></strong>
<strong><a name="1063288"><font size="2" face="'Courier New'" color="#000000"><em>statusX</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>statusY</em></font></strong>
</p>
<blockquote><a name="1068370">Optional arguments that specify the location of the component. Specify </a><font size="2" face="'Courier New'" color="#000000">0</font> to ignore these arguments.</blockquote>
<p>
<strong></strong>
<strong><a name="1063289"><font size="2" face="'Courier New'" color="#000000"><em>source</em></font></a></strong>
</p>
<blockquote><a name="1068378">Optional argument that specifies the source of the component. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument.<br><font color="#000000"><em>Value:</em></font> Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="648">
<caption>
<tr>
<td cellpadding="4" valign="top" width="199">
<p><a name="1063292">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="101">
<p><a name="1063294"><font size="2" face="'Courier New'" color="#000000">DIST</font></a></p>
</td>
<td cellpadding="4" valign="top" width="348">
<p><a name="1063296">Component is a physical component (that is, it only connects to power or ground nets), such as filler cells, well&#45;taps, and decoupling caps.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1063298">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1063300"><font size="2" face="'Courier New'" color="#000000">NETLIST</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1063302">Component is specified in the original netlist. This is the default value, and is normally not written out in the DEF file.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1063304">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1063306"><font size="2" face="'Courier New'" color="#000000">TIMING</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1063308">Component is a logical rather than physical change to the netlist, and is typically used as a buffer for a clock&#45;tree, or to improve timing on long nets.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1063310">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1063312"><font size="2" face="'Courier New'" color="#000000">USER</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1063314">Component is generated by the user for some user&#45;defined reason.</a></p>
</td>
</tr>
</table>
<p>
<strong></strong>
<strong><a name="1063315"><font size="2" face="'Courier New'" color="#000000"><em>weight</em></font></a></strong>
</p>
<blockquote><a name="1068385">Optional argument that specifies the weight of the component, which determines if automatic placement attempts to keep the component near the specified location. </a><font size="2" face="'Courier New'" color="#000000"><em>weight</em></font> is only meaningful when the component is placed. All non&#45;zero weights have the same effect during automatic placement. Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument.</blockquote>
<h3><a name="defwComponentHalo"></a><a name="1058828">defwComponentHalo </a></h3>
<p><a name="1060468">Writes a </a><font size="2" face="'Courier New'" color="#000000">HALO</font> statement for a component. The <font size="2" face="'Courier New'" color="#000000">HALO</font> statement creates a placement blockage around the component. The <font size="2" face="'Courier New'" color="#000000">HALO</font> statement is optional and can be used only once for each component in the <font size="2" face="'Courier New'" color="#000000">COMPONENT</font> statement. If you call this routine, you cannot call <font size="2" face="'Courier New'" color="#000000">defwComponentHaloSoft</font>. </p>
<h4><a name="1060473">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1060474">defwComponentHalo( <dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>left</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>bottom</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>right</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>top</em></font>)</font>
</dl>
<h4><a name="1060475">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1060476"><font size="2" face="'Courier New'" color="#000000"><em>left</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>bottom</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>right</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>top</em></font></strong>
</p>
<blockquote><a name="1068393">Specifies the amount the halo extends from the left, bottom, right, and top edges of the LEF macro. </a></blockquote>
<h3><a name="defwComponentHaloSoft"></a><a name="1064305">defwComponentHaloSoft</a></h3>
<p><a name="1064306">Writes a </a><font size="2" face="'Courier New'" color="#000000">HALO SOFT</font> statement. This routine is similar to <font size="2" face="'Courier New'" color="#000000">defwComponentHalo</font>, except that it also writes the <font size="2" face="'Courier New'" color="#000000">SOFT</font> option. The <font size="2" face="'Courier New'" color="#000000">HALO</font> <font size="2" face="'Courier New'" color="#000000">SOFT</font> statement is optional and can be used only once for each component. If you call this routine, you cannot call <font size="2" face="'Courier New'" color="#000000">defwComponentHalo</font>. </p>
<h4><a name="1064309">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1064310"><font color="#000000">int defwComponentHaloSoft(<dd>int </font></a><font size="2" face="'Courier New'" color="#000000"><em>left</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>bottom</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>right</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>top</em></font>)</font>
</dl>
<h4><a name="1064311">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1064332"><font size="2" face="'Courier New'" color="#000000"><em>left</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>bottom</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>right</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>top</em></font></strong>
</p>
<blockquote><a name="1068401">Specifies the amount the halo extends from the left, bottom, right, and top edges of the LEF macro. </a></blockquote>
<h3><a name="defwComponentRouteHalo"></a><a name="1064357">defwComponentRouteHalo</a></h3>
<p><a name="1064358">Writes a </a><font size="2" face="'Courier New'" color="#000000">ROUTEHALO</font> statement. The <font size="2" face="'Courier New'" color="#000000">ROUTEHALO</font> statement is optional and can be used only once for each component. </p>
<h4><a name="1064361">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1064376">int defwComponentRouteHalo(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>haloDist</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>minLayer</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>maxLayer</em></font>)</font>
</dl>
<h4><a name="1064363">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1064359"><font size="2" face="'Courier New'" color="#000000"><em>haloDist</em></font></a></strong>
</p>
<blockquote><a name="1068409">Specifies the halo distance, as an integer in DEF database units.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1064419"><font size="2" face="'Courier New'" color="#000000"><em>minLayer</em></font></a></strong>
</p>
<blockquote><a name="1068416">Specifies the minimum layer. The routing halo exists for the routing layers between </a><font size="2" face="'Courier New'" color="#000000"><em>minLayer</em></font> and <font size="2" face="'Courier New'" color="#000000"><em>maxLayer</em></font>. <font size="2" face="'Courier New'" color="#000000"><em>minLayer</em></font> must be a lower routing layer than <font size="2" face="'Courier New'" color="#000000"><em>maxLayer</em></font>. <font size="2" face="'Courier New'" color="#000000"><em>minLayer</em></font> must be a string that matches a LEF routing layer name.</blockquote>
<p>
<strong></strong>
<strong><a name="1064420"><font size="2" face="'Courier New'" color="#000000"><em>maxLayer</em></font></a></strong>
</p>
<blockquote><a name="1068423">Specifies the maximum layer. The routing halo exists for the routing layers between </a><font size="2" face="'Courier New'" color="#000000"><em>minLayer</em></font> and <font size="2" face="'Courier New'" color="#000000"><em>maxLayer</em></font>. <font size="2" face="'Courier New'" color="#000000"><em>maxLayer</em></font> must be a string that matches a LEF routing layer name. </blockquote>
<h4><a name="1047557">Components Example</a></h4>
<p><a name="1047830">The following example shows a callback routine with the type </a><font size="2" face="'Courier New'" color="#000000">defwComponentCbkType</font>. This example only shows the usage of some functions related to component.</p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050016">int componentCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd><dd> int res;<dd> const char** foreigns;<dd> int *foreignX, *foreignY, *foreignOrient;<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047904"> &#47;&#47; Check if the type is correct<dd> if (type != defwComponentCbkType) {<dd> printf(&#34;Type is not defwComponentCbkType, terminate<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writing.\n&#34;);<dd> return 1;<dd> }<dd> foreigns = (const char**)malloc(sizeof(char*)*1);<dd> foreignX = (int*)malloc(sizeof(int)*1);<dd> foreignY = (int*)malloc(sizeof(int)*1);<dd> foreignOrient = (int*)malloc(sizeof(int)*1);<dd> res = defwStartComponents(2);<dd> CHECK_RES(res);<dd> res = defwComponent(&#34;Z38A01&#34;, &#34;DFF3&#34;, 0, NULL, NULL, NULL,<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL, NULL, 0, NULL, NULL, NULL, NULL,<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#34;PLACED&#34;, 18592, 5400, 6, 0, NULL, 0, 0, 0,<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0);<dd> CHECK_RES(res);<dd> foreigns[0] = strdup(&#34;gds2name&#34;);<dd> foreignX[0] = &#45;500;<dd> foreignY[0] = &#45;500;<dd> foreignOrient[0] = 3;<dd> res = defwComponent(&#34;cell3&#34;, &#34;CHM6A&#34;, 0, NULL, NULL, NULL,<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL, &#34;TIMING&#34;, 1, foreigns, foreignX,<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreignY, foreignOrient, &#34;PLACED&#34;, 240, 10,<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0, 0, &#34;region1&#34;, 0, 0, 0, 0);<dd> CHECK_RES(res);<dd> res = defwStringProperty(&#34;cc&#34;, &#34;This is the copy list&#34;);<dd> CHECK_RES(res);<dd> res = defwIntProperty(&#34;index&#34;, 9);<dd> CHECK_RES(res);<dd> res = defwRealProperty(&#34;size&#34;, 7.8);<dd> CHECK_RES(res);<dd> res = defwEndComponents();<dd> CHECK_RES(res);<dd> free((char*)foreigns[0]);<dd> free((char*)foreigns);<dd> free((char*)foreignX);<dd> free((char*)foreignY);<dd> free((char*)foreignOrient);<dd> return 0;}</a></font>
</dl>
<h2><a name="1058513">Design Name </a></h2>
<p><a name="1058539">The Design routine writes a DEF </a><font size="2" face="'Courier New'" color="#000000">DESIGN</font> statement. The <font size="2" face="'Courier New'" color="#000000">DESIGN</font> statement is required and can be used only once in a DEF file. For syntax information about the <font size="2" face="'Courier New'" color="#000000">DESIGN</font> statement, see <a href="../lefdefref/DEFSyntax.html#Design" target="external_window"><font color="#0000ff"><u>"Design"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1058548">This routine returns </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="defwDesignName"></a><a name="1058549">defwDesignName</a></h3>
<p><a name="1058558">Writes a </a><font size="2" face="'Courier New'" color="#000000">DESIGN</font> statement.</p>
<h4><a name="1058559">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1058560">int defwDesignName(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name</em></font>)</font>
</dl>
<h4><a name="1058561">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1058562"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1068430">Specifies a name for the design. </a></blockquote>
<h2><a name="1059998">Die Area</a></h2>
<p><a name="1059999">Die Area routines write a DEF </a><font size="2" face="'Courier New'" color="#000000">DIEAREA</font> statement. The <font size="2" face="'Courier New'" color="#000000">DIEAREA</font> statement is optional and can be used only once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">DIEAREA</font> statement, see <a href="../lefdefref/DEFSyntax.html#DieArea" target="external_window"><font color="#0000ff"><u>"Die Area"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1060001">If the DEF file contains a </a><font size="2" face="'Courier New'" color="#000000">PROPERTYDEFINITIONS</font> statement, the <font size="2" face="'Courier New'" color="#000000">DIEAREA</font> statement must follow it. For more information about the DEF <font size="2" face="'Courier New'" color="#000000">PROPERTYDEFINITIONS</font> statement, see <a href="#1048676" title="6"><font color="Blue"><u>"Property Definitions"</u></font></a><a href="#1048676" title="6"></a>.</p>
<p><a name="1029575">This routine returns </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="1025188">defwDieArea</a></h3>
<p><a name="1050996">Writes a </a><font size="2" face="'Courier New'" color="#000000">DIEAREA</font> statement. </p>
<h4><a name="1039379">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1039358">int defwDieArea (<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>xh</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>yh</em></font> )</font>
</dl>
<h4><a name="1039369">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1039388"><font size="2" face="'Courier New'" color="#000000"><em>xl, yl, xh, yh</em></font></a></strong>
</p>
<blockquote><a name="1068437">Specifies the points of two corners of the bounding rectangle for the design. Geometric shapes (such as blockages, pins, and special net routing) can be outside of the die area, to allow proper modeling of pushed down routing from top&#45;level designs into sub blocks. However, routing tracks should still be inside the die area. </a></blockquote>
<h3><a name="defwDieAreaList"></a><a name="1059985">defwDieAreaList</a></h3>
<p><a name="1059986">Writes a </a><font size="2" face="'Courier New'" color="#000000">DIEAREA</font> statement that includes more than two points. </p>
<h4><a name="1060007">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1060008">defwDieAreaList( <dd>int num_points, <dd>int* xl, <dd>int*yh)</a></font>
</dl>
<h4><a name="1060009">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1060010"><font size="2" face="'Courier New'" color="#000000"><em>num_points</em></font></a></strong>
</p>
<blockquote><a name="1068447">Specifies the number of points specified.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1060012"><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yh</em></font></strong>
</p>
<blockquote><a name="1068455">Specifies the points of a polygon that forms the die area. Geometric shapes (such as blockages, pins, and special net routing) can be outside of the die area, to allow proper modeling of pushed down routing from top&#45;level designs into sub blocks. However, routing tracks should still be inside the die area.</a></blockquote>
<h3><a name="1047560">Die Area Example</a></h3>
<p><a name="1047990">The following example shows a callback routine with the type </a><font size="2" face="'Courier New'" color="#000000">defwDieAreaCbkType</font>.</p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050024">int dieareaCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd><dd> &#47;&#47; Check if the type is correct<dd> if (type != defwDieAreaCbkType) {<dd> printf(&#34;Type is not defwDieAreaCbkType, terminate<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writing.\n&#34;);<dd> return 1;<dd> }<dd> res = defwDieArea(&#45;190000, &#45;120000, 190000, 70000);<dd> CHECK_RES(res);<dd> return 0;}</a></font>
</dl>
<h2><a name="1058485">Divider Character</a></h2>
<p><a name="1058486">The Divider Character routine writes a DEF </a><font size="2" face="'Courier New'" color="#000000">DIVIDERCHAR</font> statement. The <font size="2" face="'Courier New'" color="#000000">DIVIDERCHAR</font> statement is required and can be used only once in a DEF file. For syntax information about the <font size="2" face="'Courier New'" color="#000000">DIVIDERCHAR</font> statement, see <a href="../lefdefref/DEFSyntax.html#DividerCharacter" target="external_window"><font color="#0000ff"><u>"Divider Character"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1058492">This routine returns </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="defwDividerChar"></a><a name="1058493">defwDividerChar</a></h3>
<p><a name="1058494">Writes a </a><font size="2" face="'Courier New'" color="#000000">DIVIDERCHAR</font> statement.</p>
<h4><a name="1058495">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1058496">int defwDividerChar(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>dividerChar</em></font>)</font>
</dl>
<h4><a name="1058497">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1058498"><font size="2" face="'Courier New'" color="#000000"><em>dividerChar</em></font></a></strong>
</p>
<blockquote><a name="1068478">Specifies the character used to express hierarchy when DEF names are mapped to or from other databases. The character must be enclosed in double quotation marks. <br>If the divider character appears in a DEF name as a regular character, you must use a backslash (\) before the character to prevent the DEF reader from interpreting the character as a hierarchy delimiter.</a></blockquote>
<h2><a name="1024021">Extensions</a></h2>
<p><a name="1030816">The Extension routines write a series of statements that define the </a><font size="2" face="'Courier New'" color="#000000">EXTENSIONS</font> statement in the DEF file. The <font size="2" face="'Courier New'" color="#000000">EXTENSIONS</font> statement is optional and can be used only once in a DEF file. For syntax information about the <font size="2" face="'Courier New'" color="#000000">EXTENSIONS</font> statement, see <a href="../lefdefref/DEFSyntax.html#Extensions" target="external_window"><font color="#0000ff"><u>"Extensions"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>. </p>
<p><a name="1030862">You must use the </a><font size="2" face="'Courier New'" color="#000000">defwStartBeginext</font> and <font size="2" face="'Courier New'" color="#000000">defwEndBeginext</font> routines to create an <font size="2" face="'Courier New'" color="#000000">EXTENSIONS</font> statement. You must define all extensions between these routines.</p>
<p><a name="1051010">For examples of the routines described here, see </a><a href="#1047561" title="6"><font color="Blue"><u>"Extensions Example"</u></font></a><a href="#1047561" title="6"></a>.</p>
<p><a name="1030822">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="1025198">defwStartBeginext</a></h3>
<p><a name="1039433">Starts the </a><font size="2" face="'Courier New'" color="#000000">EXTENSIONS</font> statement.</p>
<h4><a name="1039411">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1039412">int defwStartBeginext(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name</em></font>)</font>
</dl>
<h4><a name="1039423">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1039424"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1068489">Specifies the extension name. </a></blockquote>
<h3><a name="1024031">defwEndBeginext</a></h3>
<p><a name="1039474">Ends the </a><font size="2" face="'Courier New'" color="#000000">BEGINEXT</font> statement.</p>
<h4><a name="1039452">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1039453">int defwEndBeginext()</a></font>
</dl>
<h3><a name="1024041">defwBeginextCreator</a></h3>
<p><a name="1039501">Writes a </a><font size="2" face="'Courier New'" color="#000000">CREATOR</font> statement. The <font size="2" face="'Courier New'" color="#000000">CREATOR</font> statement is optional and can be used only once in an <font size="2" face="'Courier New'" color="#000000">EXTENSIONS</font> statement.</p>
<h4><a name="1039486">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1039487">int defwBeginextCreator(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>creatorName</em></font>)</font>
</dl>
<h4><a name="1039494">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1045774"><font size="2" face="'Courier New'" color="#000000"><em>creatorName</em></font></a></strong>
</p>
<blockquote><a name="1068497">Specifies a string value that defines the creator value.</a></blockquote>
<h3><a name="1024051">defwBeginextDate</a></h3>
<p><a name="1039538">Writes a </a><font size="2" face="'Courier New'" color="#000000">DATE</font> statement that specifies the current system time and date. The <font size="2" face="'Courier New'" color="#000000">DATE</font> statement is optional and can be used only once in an <font size="2" face="'Courier New'" color="#000000">EXTENSIONS</font> statement.</p>
<h4><a name="1039526">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1039527">int defwBeginextDate()</a></font>
</dl>
<h3><a name="1024059">defwBeginextRevision</a></h3>
<p><a name="1039574">Writes a </a><font size="2" face="'Courier New'" color="#000000">REVISION</font> statement. The <font size="2" face="'Courier New'" color="#000000">REVISION</font> statement is optional and can be used only once in an <font size="2" face="'Courier New'" color="#000000">EXTENSIONS</font> statement.</p>
<h4><a name="1039555">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1039556">int defwBeginextRevision(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>vers1</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>vers2</em></font>)</font>
</dl>
<h4><a name="1039567">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1045786"><font size="2" face="'Courier New'" color="#000000"><em>vers1</em></font></a>, <font size="2" face="'Courier New'" color="#000000"><em>vers2</em></font></strong>
</p>
<blockquote><a name="1068504">Specifies the values used for the revision number string.</a></blockquote>
<h3><a name="defwBeginextSyntax"></a><a name="1059369">defwBeginextSyntax</a></h3>
<p><a name="1059372">Adds customized syntax to the DEF file. This routine is optional and can be used more than once in an </a><font size="2" face="'Courier New'" color="#000000">EXTENSIONS</font> statement.</p>
<h4><a name="1059381">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1059382">int lefwBeginextSyntax(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>title</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>string</em></font>)</font>
</dl>
<h4><a name="1059383">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1059384"><font size="2" face="'Courier New'" color="#000000"><em>title</em></font></a>, <font size="2" face="'Courier New'" color="#000000"><em>string</em></font></strong>
</p>
<blockquote><a name="1068511">Specify any values you need.</a></blockquote>
<h3><a name="1047561">Extensions Example</a></h3>
<p><a name="1048013">The following example shows a callback routine with the type </a><font size="2" face="'Courier New'" color="#000000">defwExtCbkType</font>. This example only shows the usage of some functions related to extensions.</p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050025">int extensionCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd><dd> &#47;&#47; Check if the type is correct<dd> if (type != defwExtCbkType) {<dd> printf(&#34;Type is not defwExtCbkType, terminate<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writing.\n&#34;);<dd> return 1;<dd> }<dd> res = defwStartBeginext(&#34;tag&#34;);<dd> CHECK_RES(res);<dd> res = defwBeginextCreator(&#34;CADENCE&#34;);<dd> CHECK_RES(res);<dd> res = defwBeginextDate();<dd> CHECK_RES(res);<dd> res = defwBeginextSyntax(&#34;OTTER&#34;, &#34;furry&#34;);<dd> CHECK_RES(res);<dd> res = defwStringProperty(&#34;arrg&#34;, &#34;later&#34;);<dd> CHECK_RES(res);<dd> res = defwBeginextSyntax(&#34;SEAL&#34;, &#34;cousin to WALRUS&#34;);<dd> CHECK_RES(res);<dd> res = defwEndBeginext();<dd> CHECK_RES(res);<dd> return 0;}</a></font>
</dl>
<h2><a name="1052847">Fills</a></h2>
<p><a name="1053501">Fills routines write a DEF </a><font size="2" face="'Courier New'" color="#000000">FILLS</font> statement. The <font size="2" face="'Courier New'" color="#000000">FILLS</font> statement is optional and can be used only once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">FILLS</font> statement, see <a href="../lefdefref/DEFSyntax.html#Fills" target="external_window"><font color="#0000ff"><u>"Fills"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1053481">The DEF </a><font size="2" face="'Courier New'" color="#000000">FILLS</font> statement must start and end with the <font size="2" face="'Courier New'" color="#000000">defwStartFills</font> and <font size="2" face="'Courier New'" color="#000000">defwEndFills</font> routines. All fills must be defined between these routines. </p>
<p><a name="1053539">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="defwStartFills"></a><a name="1052862">defwStartFills</a></h3>
<p><a name="1052863">Starts a </a><font size="2" face="'Courier New'" color="#000000">FILLS</font> statement. </p>
<h4><a name="1052864">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052865">int defwStartFills(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>count</em></font>)</font>
</dl>
<h4><a name="1052866">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1052867"><font size="2" face="'Courier New'" color="#000000"><em>count</em></font></a></strong>
</p>
<blockquote><a name="1068518">Specifies the number of fills defined in the </a><font size="2" face="'Courier New'" color="#000000">FILLS</font> statement.</blockquote>
<h3><a name="defwEndFills"></a><a name="1052868">defwEndFills</a></h3>
<p><a name="1052869">Ends the </a><font size="2" face="'Courier New'" color="#000000">FILLS</font> statement.</p>
<h4><a name="1052870">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052871">int defwEndFills()</a></font>
</dl>
<h3><a name="defwFillLayer"></a><a name="1052872">defwFillLayer</a></h3>
<p><a name="1052873">Writes a </a><font size="2" face="'Courier New'" color="#000000">LAYER</font> statement. The <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement is required for each fill and can be used more than once in a <font size="2" face="'Courier New'" color="#000000">FILLS</font> statement.</p>
<h4><a name="1052874">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052875">int defwFillLayer(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>)</font>
</dl>
<h4><a name="1052876">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1052877"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a> Specifies the layer on which to create the fill.</strong>
</p>
<h3><a name="defwFillLayerOPC"></a><a name="1052878">defwFillLayerOPC</a></h3>
<p><a name="1065317">Writes an </a><font size="2" face="'Courier New'" color="#000000">OPC</font> keyword for a <font size="2" face="'Courier New'" color="#000000">FILLS LAYER</font> statement, which specifies that FILL shapes require OPC correction during mask generation. <font size="2" face="'Courier New'" color="#000000">defwFillLayer</font> must be called before this routine. This routine is optional and can be called only once after the <font size="2" face="'Courier New'" color="#000000">defwFillLayer</font> or <font size="2" face="'Courier New'" color="#000000">defwFillVia</font> routine. </p>
<h4><a name="1065318">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1065319"><font color="#000000">int defwFillLayerOPC()</font></a></font>
</dl>
<h3><a name="defwFillPoints"></a><a name="1065278">defwFillPoints</a></h3>
<p><a name="1065371">Specifies the points for a </a><font size="2" face="'Courier New'" color="#000000">FILLS VIA</font> statement. This routine is required after <font size="2" face="'Courier New'" color="#000000">defwFillVia</font> and can be called more than once.</p>
<h4><a name="1065326">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1065327"><font color="#000000">int defwFillPoints(<dd>int </font></a><font size="2" face="'Courier New'" color="#000000"><em>num_points</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>)</font>
</dl>
<h4><a name="1065328">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1065329"><font size="2" face="'Courier New'" color="#000000"><em>num_points</em></font></a></strong>
</p>
<blockquote><a name="1068526">Specifies the number of points provided.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1065384"><font size="2" face="'Courier New'" color="#000000"><em>x1 y1</em></font></a></strong>
</p>
<blockquote><a name="1068533">Specify the placement locations (x y points) for the via. </a></blockquote>
<h3><a name="defwFillPolygon"></a><a name="1065277">defwFillPolygon</a></h3>
<p><a name="1061755">Writes a </a><font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement. Either a <font size="2" face="'Courier New'" color="#000000">POLYGON</font> or a <font size="2" face="'Courier New'" color="#000000">RECT</font> statement is required with a <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement. The <font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement is required and can be used more than once for each fill in the <font size="2" face="'Courier New'" color="#000000">FILLS</font> statement.</p>
<h4><a name="1061770">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1061771">defwFillPolygon(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>num_polys</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>)</font>
</dl>
<h4><a name="1061772">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1061773"><font size="2" face="'Courier New'" color="#000000"><em>num_polys</em></font></a></strong>
</p>
<blockquote><a name="1068540">Specifies the number of polygon sides.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1061798"><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yl</em></font></strong>
</p>
<blockquote><a name="1068548">Specifies a sequence of points to generate a polygon geometry. The polygon edges must be parallel to the x axis, the y axis, or at a 45&#45;degree angle.</a></blockquote>
<h3><a name="defwFillRect"></a><a name="1061754">defwFillRect</a></h3>
<p><a name="1052879">Writes a </a><font size="2" face="'Courier New'" color="#000000">RECT</font> statement. Either a <font size="2" face="'Courier New'" color="#000000">POLYGON</font> or a <font size="2" face="'Courier New'" color="#000000">RECT</font> statement is required with a LAYER statement. The <font size="2" face="'Courier New'" color="#000000">RECT</font> statement is required and can be used more than once for each fill in the <font size="2" face="'Courier New'" color="#000000">FILLS</font> statement.</p>
<h4><a name="1052880">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052881">int defwFillRect(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>xh</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>yh</em></font>)</font>
</dl>
<h4><a name="1052882">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1052883"><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font></a>, <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>, <font size="2" face="'Courier New'" color="#000000"><em>xh</em></font>, <font size="2" face="'Courier New'" color="#000000"><em>yh</em></font></strong>
</p>
<blockquote><a name="1068556">Specifies the coordinates of the fill. </a></blockquote>
<h3><a name="defwFillVia"></a><a name="1065279">defwFillVia</a></h3>
<p><a name="1065303">Writes a </a><font size="2" face="'Courier New'" color="#000000">FILLS VIA</font> statement. The <font size="2" face="'Courier New'" color="#000000">FILLS VIA</font> statement is optional and can be used more than once. Call <font size="2" face="'Courier New'" color="#000000">defwFillPoints</font> after this routine. </p>
<h4><a name="1065293">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1065294"><font color="#000000">int defwFillVia(<dd>const char* </font></a><font size="2" face="'Courier New'" color="#000000"><em>viaName</em></font>)</font>
</dl>
<h4><a name="1065295">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1065290"><font size="2" face="'Courier New'" color="#000000"><em>viaName</em></font></a></strong>
</p>
<blockquote><a name="1068564">The name of the via, which must be previously defined in the DEF VIA or LEF VIA section. </a></blockquote>
<h3><a name="defwFillViaOPC"></a><a name="1065280">defwFillViaOPC</a></h3>
<p><a name="1065309">Writes the </a><font size="2" face="'Courier New'" color="#000000">OPC</font> keyword for a <font size="2" face="'Courier New'" color="#000000">FILLS VIA</font> statement, which specifies that FILL shapes require OPC correction during mask generation. This routine is optional and can only be called after <font size="2" face="'Courier New'" color="#000000">defwFillVia</font>. </p>
<h4><a name="1065310">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1065311"><font color="#000000">int defwFillViaOPC()</font></a></font>
</dl>
<h2><a name="1045795">GCell Grid</a></h2>
<p><a name="1030311">The Gcell Grid routine writes a DEF </a><font size="2" face="'Courier New'" color="#000000">GCELLGRID</font> statement. The <font size="2" face="'Courier New'" color="#000000">GCELLGRID</font> statement is optional and can be used only once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">GCELLGRID</font> statement, see <a href="../lefdefref/DEFSyntax.html#GCellGrid" target="external_window"><font color="#0000ff"><u>GCell Grid</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1030315">If the DEF file contains a </a><font size="2" face="'Courier New'" color="#000000">TRACKS</font> statement, the <font size="2" face="'Courier New'" color="#000000">GCELLGRID</font> statement must follow it. For more information about the DEF <font size="2" face="'Courier New'" color="#000000">TRACKS</font> statement, see <a href="#1045530" title="6"><font color="Blue"><u>"Tracks"</u></font></a><a href="#1045530" title="6"></a>.</p>
<p><a name="1030319">This routine returns </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="1030329">defwGcellGrid</a></h3>
<p><a name="1039693">Writes a </a><font size="2" face="'Courier New'" color="#000000">GCELLGRID</font> statement. </p>
<h4><a name="1039668">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1039669">int defwGcellGrid(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>master,<dd></em></font>int <font size="2" face="'Courier New'" color="#000000"><em>doStart</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>doCount,<dd></em></font>int <font size="2" face="'Courier New'" color="#000000"><em>doStep</em></font>) </font>
</dl>
<h4><a name="1052853">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1055906"><font size="2" face="'Courier New'" color="#000000"><em>doCount</em></font></a></strong>
</p>
<blockquote><a name="1068571">Specifies the number of columns or rows in the grid.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1055931"><font size="2" face="'Courier New'" color="#000000"><em>doStart</em></font></a></strong>
</p>
<blockquote><a name="1068579">Specifies the starting location of the grid (that is, the first column or row).</a></blockquote>
<p>
<strong></strong>
<strong><a name="1055927"><font size="2" face="'Courier New'" color="#000000"><em>doStep</em></font></a></strong>
</p>
<blockquote><a name="1068587">Specifies the step spacing between the grid units.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1055902"><font size="2" face="'Courier New'" color="#000000"><em>master</em></font></a></strong>
</p>
<blockquote><a name="1068594">Specifies the direction of the tracks for the global router grid that overlays the array. <br>Value: Specify one of the following: </a></blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="648">
<caption>
<tr>
<td cellpadding="4" valign="top" width="204">
<p><a name="1058755">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="108">
<p><a name="1058757"><font size="2" face="'Courier New'" color="#000000">X</font></a></p>
</td>
<td cellpadding="4" valign="top" width="336">
<p><a name="1058759">Specifies a vertical grid.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1058761">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1058763"><font size="2" face="'Courier New'" color="#000000">Y</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1058765">Specifies a horizontal grid.</a></p>
</td>
</tr>
</table>
<h3><a name="1047566">Gcell Grid Example</a></h3>
<p><a name="1048053">The following example shows a callback routine with the type </a><font size="2" face="'Courier New'" color="#000000">defwGcellGridCbkType</font>.</p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050035">int gcellgridCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd><dd> &#47;&#47; Check if the type is correct<dd> if (type != defwGcellGridCbkType) {<dd> printf(&#34;Type is not defwGcellGridCbkType, terminate<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writing.\n&#34;);<dd> return 1;<dd> }<dd> res = defwGcellGrid(&#34;X&#34;, 0, 100, 600);<dd> CHECK_RES(res);<dd> return 0;}</a></font>
</dl>
<h2><a name="1025201">Groups</a></h2>
<p><a name="1030938">The Groups routines write a DEF </a><font size="2" face="'Courier New'" color="#000000">GROUPS</font> statement. The <font size="2" face="'Courier New'" color="#000000">GROUPS</font> statement is optional and can be used only once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">GROUPS</font> statement, see <a href="../lefdefref/DEFSyntax.html#Groups" target="external_window"><font color="#0000ff"><u>Groups</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>. </p>
<p><a name="1030942">You must begin and end a DEF </a><font size="2" face="'Courier New'" color="#000000">GROUPS</font> statement with the <font size="2" face="'Courier New'" color="#000000">defwStartGroups</font> and <font size="2" face="'Courier New'" color="#000000">defwEndGroups</font> routines. You must define all groups between these routines.</p>
<p><a name="1051049">For examples of the routines described here, see </a><a href="#1047567" title="6"><font color="Blue"><u>"Groups Example"</u></font></a><a href="#1047567" title="6"></a>.</p>
<p><font color="#000000"><strong>Note: </strong></font><a name="1039741">To write a </a><font size="2" face="'Courier New'" color="#000000">PROPERTY</font> statement for the component, you must use one of the property routines immediately following the <font size="2" face="'Courier New'" color="#000000">defwGroup*</font> routines that define the group. For more information, see <a href="#1032848" title="6"><font color="Blue"><u>"Property Statements"</u></font></a><a href="#1032848" title="6"></a>.</p>
<p><a name="1030943">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="1025205">defwStartGroups</a></h3>
<p><a name="1039853">Starts the </a><font size="2" face="'Courier New'" color="#000000">GROUPS</font> statement. </p>
<h4><a name="1039830">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1039831">int defwStartGroups(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>count</em></font>) </font>
</dl>
<h4><a name="1039846">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1039848"><font size="2" face="'Courier New'" color="#000000"><em>count</em></font></a></strong>
</p>
<blockquote><a name="1068601">Specifies the number of groups defined in the </a><font size="2" face="'Courier New'" color="#000000">GROUPS</font> statement.</blockquote>
<h3><a name="1024088">defwEndGroups</a></h3>
<p><a name="1039892">Ends the </a><font size="2" face="'Courier New'" color="#000000">GROUPS</font> statement.</p>
<h4><a name="1039880">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1039881">int defwEndGroups()</a></font>
</dl>
<h3><a name="1024095">defwGroup</a></h3>
<p><a name="1039927">Writes a series of statements that define the specified group. This routine is required and can be used more than once in a </a><font size="2" face="'Courier New'" color="#000000">GROUPS</font> statement.</p>
<h4><a name="1039907">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1039908">int defwGroup(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>groupName</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>numExpr,<dd></em></font>const char** <font size="2" face="'Courier New'" color="#000000"><em>groupExpr</em></font>)</font>
</dl>
<h4><a name="1039919">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1055965"><font size="2" face="'Courier New'" color="#000000"><em>groupExpr</em></font></a></strong>
</p>
<blockquote><a name="1068608">Specifies a component name, a list of component names, or a regular expression for a set of components.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1055963"><font size="2" face="'Courier New'" color="#000000"><em>groupName</em></font></a></strong>
</p>
<blockquote><a name="1068615">Specifies the name for a group of components.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1055962"><font size="2" face="'Courier New'" color="#000000"><em>numExpr</em></font></a></strong>
</p>
<blockquote><a name="1068622">Specifies the number of components in the group.</a></blockquote>
<h3><a name="1039967">defwGroupRegion</a></h3>
<p><a name="1039995">Writes a </a><font size="2" face="'Courier New'" color="#000000">REGION</font> statement for the group defined. This statement is optional and can be used only once per group name.</p>
<h4><a name="1039975">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1040020">int defwGroupRegion(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>xh</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>yh</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>regionName</em></font>)</font>
</dl>
<h4><a name="1039987">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1055992"><font size="2" face="'Courier New'" color="#000000"><em>regionName</em></font></a></strong>
</p>
<blockquote><a name="1068629">Specifies the name of a previously defined region in which the group must lie. </a></blockquote>
<p>
<strong></strong>
<strong><a name="1055988"><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>xh</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yl</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yh</em></font></strong>
</p>
<blockquote><a name="1068636">Specifies the coordinates of a rectangular region in which the group must lie. Specify the coordinates or </a><font size="2" face="'Courier New'" color="#000000"><em>regionName</em></font>; do not specify both. </blockquote>
<h4><a name="1047567">Groups Example</a></h4>
<p><a name="1048076">The following example shows a callback routine with the type </a><font size="2" face="'Courier New'" color="#000000">defwGroupCbkType</font>.</p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050036">int dividerCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd> const char **groupExpr;<dd><dd> &#47;&#47; Check if the type is correct<dd> if (type != defwGroupCbkType) {<dd> printf(&#34;Type is not defwGroupCbkType, terminate<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writing.\n&#34;);<dd> return 1;<dd> }<dd> groupExpr = (const char**)malloc(sizeof(char*)*2);<dd> res = defwStartGroups(2);<dd> CHECK_RES(res);<dd> groupExpr[0] = strdup(&#34;cell2&#34;);<dd> groupExpr[1] = strdup(&#34;cell3&#34;);<dd> res = defwGroup(&#34;group1&#34;, 2, groupExpr);<dd> CHECK_RES(res);<dd> free((char*)groupExpr[0]);<dd> free((char*)groupExpr[1]);<dd> res = defwGroupRegion(0, 0, 0, 0, &#34;region1&#34;);<dd> CHECK_RES(res);<dd> res = defwStringProperty(&#34;ggrp&#34;, &#34;xx&#34;);<dd> CHECK_RES(res);<dd> res = defwIntProperty(&#34;side&#34;, 2);<dd> CHECK_RES(res);<dd> res = defwRealProperty(&#34;maxarea&#34;, 5.6);<dd> CHECK_RES(res);<dd> groupExpr[0] = strdup(&#34;cell1&#34;);<dd> res = defwGroup(&#34;group2&#34;, 1, groupExpr);<dd> CHECK_RES(res);<dd> free((char*)groupExpr[0]);<dd> res = defwGroupRegion(0, 10, 1000, 1010, NULL);<dd> CHECK_RES(res);<dd> res = defwGroupSoft(&#34;MAXHALFPERIMETER&#34;, 4000, &#34;MAXX&#34;, 10000,<dd> &nbsp;&nbsp;&nbsp;&nbsp;NULL, NULL);<dd> CHECK_RES(res);<dd> res = defwEndGroups();<dd> CHECK_RES(res);<dd> free((char*)groupExpr);<dd> &#47;&#47; Write a new line<dd> res = defwNewLine();<dd> CHECK_RES(res);<dd> return 0;}</a></font>
</dl>
<h2><a name="1025497">History</a></h2>
<p><a name="1031163">The History routine writes a DEF </a><font size="2" face="'Courier New'" color="#000000">HISTORY</font> statement. The <font size="2" face="'Courier New'" color="#000000">HISTORY</font> statement is optional and can be used more than once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">HISTORY</font> statement, see <a href="../lefdefref/DEFSyntax.html#History" target="external_window"><font color="#0000ff"><u>History</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>. </p>
<p><a name="1031171">This routine returns </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="1025511">defwHistory</a></h3>
<p><a name="1040139">Writes a </a><font size="2" face="'Courier New'" color="#000000">HISTORY</font> statement. </p>
<h4><a name="1040120">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1040121">int defwHistory(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>string</em></font>)</font>
</dl>
<h4><a name="1040132">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1040133"><font size="2" face="'Courier New'" color="#000000"><em>string</em></font></a></strong>
</p>
<blockquote><a name="1068643">Lists a historical record about the design. Each line indicates one historical record. Any text excluding a semicolon (;) can be included. </a><font size="2" face="'Courier New'" color="#000000">Linefeed</font> and <font size="2" face="'Courier New'" color="#000000">Return</font> do not terminate the statement. </blockquote>
<h4><a name="1047568">History Example</a></h4>
<p><a name="1048140">The following example shows a callback routine with the type </a><font size="2" face="'Courier New'" color="#000000">defwHistoryCbkType</font>.</p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050037">int historyCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd><dd> &#47;&#47; Check if the type is correct<dd> if (type != defwHistoryCbkType) {<dd> printf(&#34;Type is not defwHistoryCbkType, terminate<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writing.\n&#34;);<dd> return 1;<dd> }<dd> res = defwHistory(&#34;DEF version 5.3&#34;);<dd> CHECK_RES(res);<dd> return 0;}</a></font>
</dl>
<h2><a name="Nets"></a><a name="1024180">Nets</a></h2>
<p><a name="1031371">Nets routines write a DEF </a><font size="2" face="'Courier New'" color="#000000">NETS</font> statement. The <font size="2" face="'Courier New'" color="#000000">NETS</font> statement is optional and can be used only once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">NETS</font> statement, see <a href="../lefdefref/DEFSyntax.html#Nets" target="external_window"><font color="#0000ff"><u>"Nets"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>. </p>
<p><a name="1031375">A </a><font size="2" face="'Courier New'" color="#000000">NETS</font> statement must start and end with the <font size="2" face="'Courier New'" color="#000000">defwStartNets</font> and <font size="2" face="'Courier New'" color="#000000">defwEndNets</font> routines. All nets must be defined between these routines. Each individual net must start and end with either <font size="2" face="'Courier New'" color="#000000">defwNet</font> or <font size="2" face="'Courier New'" color="#000000">defwNetMustjoinConnection</font>, and <font size="2" face="'Courier New'" color="#000000">defwNetEndOneNet</font>. </p>
<p><a name="1051075">For examples of the routines described here, see </a><a href="#1050045" title="6"><font color="Blue"><u>"Nets Example"</u></font></a><a href="#1050045" title="6"></a>.</p>
<p><a name="1031450">In addition to the routines in this section, you can also include routines that form a </a><font color="#000000"><em>regularWiring</em></font> statement, a <font size="2" face="'Courier New'" color="#000000">SUBNET</font> statement, and a <font size="2" face="'Courier New'" color="#000000">PROPERTY</font> statement. For information about these routines, see <a href="#1031995" title="6"><font color="Blue"><u>"Regular Wiring"</u></font></a><a href="#1031995" title="6"> </a>, <a href="#1048341" title="6"><font color="Blue"><u>"Subnet"</u></font></a><a href="#1048341" title="6"> </a>, and <a href="#1032848" title="6"><font color="Blue"><u>"Property Statements"</u></font></a><a href="#1032848" title="6"></a>.</p>
<p><a name="1031376">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="1025206">defwStartNets</a></h3>
<p><a name="1040664">Starts a </a><font size="2" face="'Courier New'" color="#000000">NETS</font> statement. A <font size="2" face="'Courier New'" color="#000000">NET</font> statement must start and end with <font size="2" face="'Courier New'" color="#000000">defwStartNets</font> and <font size="2" face="'Courier New'" color="#000000">defwEndNets</font>. </p>
<h4><a name="1040641">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1040642">int defwStartNets(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>count</em></font>)</font>
</dl>
<h4><a name="1040657">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1040659"><font size="2" face="'Courier New'" color="#000000"><em>count</em></font></a></strong>
</p>
<blockquote><a name="1068650">Specifies the number of nets defined in the </a><font size="2" face="'Courier New'" color="#000000">NETS</font> statement.</blockquote>
<h3><a name="1024196">defwEndNets</a></h3>
<p><a name="1040701">Ends the </a><font size="2" face="'Courier New'" color="#000000">NETS</font> statement. A <font size="2" face="'Courier New'" color="#000000">NET</font> statement must start and end with <font size="2" face="'Courier New'" color="#000000">defwStartNets</font> and <font size="2" face="'Courier New'" color="#000000">defwEndNets</font>. </p>
<h4><a name="1040689">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1040690">int defwEndNets()</a></font>
</dl>
<h3><a name="1024204">defwNet</a></h3>
<p><a name="1040734">Starts a net description in the </a><font size="2" face="'Courier New'" color="#000000">NETS</font> statement. Each net description must start with either <font size="2" face="'Courier New'" color="#000000">defwNet</font> or <font size="2" face="'Courier New'" color="#000000">defwNetMustJoinConnection</font>, and end with <font size="2" face="'Courier New'" color="#000000">defwNetEndOneNet</font>.</p>
<p><a name="1060858">If you specify this routine, you can optionally specify the following routine:</a></p>
<div>
<table border="0" cellspacing="0" cellpadding="3" summary="">
<tr valign="baseline">
<td width="31.999679999999998">
<div>
<nobr>
<font color="#000000"><img src="images/b_bullet.gif" alt="ParagraphBullet" border="0"></font>
</nobr>
</div>
</td>
<td><a href="#1031492" title="6" name="1060859"><font color="Blue"><u>defwNetConnection</u></font></a><a href="#1031492" title="6"> </a></td>
</tr>
</table>
</div>
<h4><a name="1040715">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1040716">int defwNet(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>netName</em></font>)</font>
</dl>
<h4><a name="1040727">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1047494"><font size="2" face="'Courier New'" color="#000000"><em>netName</em></font></a></strong>
</p>
<blockquote><a name="1068657">Specifies the name of the net.</a></blockquote>
<h3><a name="1058156">defwNetMustjoinConnection</a></h3>
<p><a name="1047508">Writes a </a><font size="2" face="'Courier New'" color="#000000">MUSTJOIN</font> statement in the <font size="2" face="'Courier New'" color="#000000">NETS</font> statement. Each net description must start with either <font size="2" face="'Courier New'" color="#000000">defwNet</font> or <font size="2" face="'Courier New'" color="#000000">defwNetMustJoinConnection</font>, and end with <font size="2" face="'Courier New'" color="#000000">defwNetEndOneNet</font>. </p>
<h4><a name="1047509">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047515">int defwNetMustjoinConnection( <dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>compName,</em></font> <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pinName</em></font>) </font>
</dl>
<h4><a name="1047521">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1047522"><font size="2" face="'Courier New'" color="#000000"><em>compName</em></font></a><font color="#000000"><em>, </em></font><font size="2" face="'Courier New'" color="#000000"><em>pinName</em></font></strong>
</p>
<blockquote><a name="1068664">Identifies the net as a mustjoin by specifying one of its pins, using a component name and pin name.</a></blockquote>
<h3><a name="1047507">defwNetEndOneNet</a></h3>
<p><a name="1047496">Ends a net description in the </a><font size="2" face="'Courier New'" color="#000000">NETS</font> statement. Each net description must start with either <font size="2" face="'Courier New'" color="#000000">defwNet</font> or <font size="2" face="'Courier New'" color="#000000">defwNetMustJoinConnection</font>, and end with <font size="2" face="'Courier New'" color="#000000">defwNetEndOneNet</font>.</p>
<h4><a name="1040809">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1040810">int defwNetEndOneNet()</a></font>
</dl>
<h3><a name="1031492">defwNetConnection</a></h3>
<p><a name="1056175">Defines the net specified in </a><font size="2" face="'Courier New'" color="#000000">defwNet</font>. This routine can be used more than once for each net in a <font size="2" face="'Courier New'" color="#000000">NETS</font> statement.</p>
<p><a name="1040857">Syntax</a></p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1040837">int defwNetConnection(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>compName,</em></font> <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pinName,</em></font> <dd>int <font size="2" face="'Courier New'" color="#000000"><em>synthesized</em></font>) </font>
</dl>
<h4><a name="1040848">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1040851"><font size="2" face="'Courier New'" color="#000000"><em>compName</em></font></a></strong>
</p>
<blockquote><a name="1068671">Specifies the name of a regular component pin on the net. If you omit this value, the DEF writer writes the </a><font size="2" face="'Courier New'" color="#000000">PIN</font> statement.</blockquote>
<p>
<strong></strong>
<strong><a name="1045955"><font size="2" face="'Courier New'" color="#000000"><em>pinName</em></font></a></strong>
</p>
<blockquote><a name="1068678">Specifies the name of an I&#47;O pin on the net.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1059136"><font size="2" face="'Courier New'" color="#000000"><em>synthesized</em></font></a></strong>
</p>
<blockquote><a name="1068685">Optional argument that marks the pin as part of a synthesized scan chain. <br></a><font color="#000000"><em>Value: </em></font>Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="648">
<caption>
<tr>
<td cellpadding="4" valign="top" width="204">
<p><a name="1059139">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="96">
<p><a name="1059141"><font size="2" face="'Courier New'" color="#000000">0</font></a></p>
</td>
<td cellpadding="4" valign="top" width="348">
<p><a name="1059143">Argument is ignored.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1059145">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1059147"><font size="2" face="'Courier New'" color="#000000">1</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1059149">Writes a </a><font size="2" face="'Courier New'" color="#000000">SYNTHESIZED</font> statement.</p>
</td>
</tr>
</table>
<h3><a name="1059534">defwNetEstCap</a></h3>
<p><a name="1059535">Writes an </a><font size="2" face="'Courier New'" color="#000000">ESTCAP</font> statement. The <font size="2" face="'Courier New'" color="#000000">ESTCAP</font> statement is optional and can be used only once for each net in the <font size="2" face="'Courier New'" color="#000000">NETS</font> statement.</p>
<h4><a name="1059536">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1059537">int defwNetEstCap(<dd>double </a><font size="2" face="'Courier New'" color="#000000"><em>wireCap</em></font>)</font>
</dl>
<h4><a name="1059538">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1059539"><font size="2" face="'Courier New'" color="#000000"><em>wireCap</em></font></a></strong>
</p>
<blockquote><a name="1068692">Specifies the estimated wire capacitance for the net. </a><font size="2" face="'Courier New'" color="#000000">ESTCAP</font> can be loaded with simulation data to generate net constraints for timing&#45;driven layout.</blockquote>
<h3><a name="defwNetFixedBump"></a><a name="1059532">defwNetFixedBump</a></h3>
<p><a name="1059118">Writes a </a><font size="2" face="'Courier New'" color="#000000">FIXEDBUMP</font> statement that indicates a bump cannot be assigned to a different pin. The <font size="2" face="'Courier New'" color="#000000">FIXEDBUMP</font> statement is optional and can be used only once for a net.</p>
<h4><a name="1059119">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1059120">int defwNetFixedBump()</a></font>
</dl>
<h3><a name="defwNetFrequency"></a><a name="1059121">defwNetFrequency</a></h3>
<p><a name="1059122">Writes a </a><font size="2" face="'Courier New'" color="#000000">FREQUENCY</font> statement. The <font size="2" face="'Courier New'" color="#000000">FREQUENCY</font> statement is optional and can be used only once for a net.</p>
<h4><a name="1059123">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1059124">int defwNetFrequency(<dd>double </a><font size="2" face="'Courier New'" color="#000000"><em>frequency</em></font>)</font>
</dl>
<h4><a name="1059125">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1059126"><font size="2" face="'Courier New'" color="#000000"><em>frequency</em></font></a></strong>
</p>
<blockquote><a name="1068699">Specifies the frequency of the net, in hertz. The frequency value is used by the router to choose the correct number of via cuts required for a given net, and by validation tools to verify that the AC current density rules are met.</a></blockquote>
<h3><a name="1024234">defwNetNondefaultRule</a></h3>
<p><a name="1040967">Writes a </a><font size="2" face="'Courier New'" color="#000000">NONDEFAULTRULE</font> statement. The <font size="2" face="'Courier New'" color="#000000">NONDEFAULTRULE</font> statement is optional and can be used only once for a net. </p>
<h4><a name="1040945">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1040946">int defwNetNondefaultRule(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>ruleName</em></font>)</font>
</dl>
<h4><a name="1040957">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1040958"><font size="2" face="'Courier New'" color="#000000"><em>ruleName</em></font></a></strong>
</p>
<blockquote><a name="1068707">Specifies that the net and wiring are created according to the specified nondefault rule defined in LEF.</a></blockquote>
<h3><a name="1024245">defwNetOriginal</a></h3>
<p><a name="1041036">Writes an </a><font size="2" face="'Courier New'" color="#000000">ORIGINAL</font> statement. The <font size="2" face="'Courier New'" color="#000000">ORIGINAL</font> statement is optional and can be used only once for a net.</p>
<h4><a name="1040997">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1041014">int defwNetOriginal(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>netName</em></font>)</font>
</dl>
<h4><a name="1041029">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1041030"><font size="2" face="'Courier New'" color="#000000"><em>netName</em></font></a></strong>
</p>
<blockquote><a name="1068714">Specifies the name of the original net partitioned to create multiple nets, including the net being defined.</a></blockquote>
<h3><a name="1041024">defwNetPattern</a></h3>
<p><a name="1041085">Writes a </a><font size="2" face="'Courier New'" color="#000000">PATTERN</font> statement. The <font size="2" face="'Courier New'" color="#000000">PATTERN</font> statement is optional and can be used only once for a net.</p>
<h4><a name="1041065">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1041066">int defwNetPattern(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name</em></font>)</font>
</dl>
<h4><a name="1041077">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1041080"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1068725">Specifies the routing pattern used for the net. <br></a><font color="#000000"><em>Value:</em></font> Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="648">
<caption>
<tr>
<td cellpadding="4" valign="top" width="199">
<p><a name="1056210">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="129">
<p><a name="1056212"><font size="2" face="'Courier New'" color="#000000">BALANCED</font></a></p>
</td>
<td cellpadding="4" valign="top" width="320">
<p><a name="1056214">Used to minimize skews in timing delays for clock nets.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056216">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056218"><font size="2" face="'Courier New'" color="#000000">STEINER</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056220">Used to minimize net length.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056222">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056224"><font size="2" face="'Courier New'" color="#000000">TRUNK</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056226">Used to minimize delay for global nets.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056244">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056246"><font size="2" face="'Courier New'" color="#000000">WIREDLOGIC</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056248">Used in ECL designs to connect output and mustjoin pins before routing to the remaining pins.</a></p>
</td>
</tr>
</table>
<h3><a name="1024262">defwNetSource</a></h3>
<p><a name="1041138">Writes a </a><font size="2" face="'Courier New'" color="#000000">SOURCE</font> statement. The <font size="2" face="'Courier New'" color="#000000">SOURCE</font> statement is optional and can be used only once for a net.</p>
<h4><a name="1041118">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1041119">int defwNetSource(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name</em></font>)</font>
</dl>
<h4><a name="1041130">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1041133"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1068732">Specifies the source of the net. <br></a><font color="#000000"><em>Value:</em></font> Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="648">
<caption>
<tr>
<td cellpadding="4" valign="top" width="199">
<p><a name="1056270">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="113">
<p><a name="1056272"><font size="2" face="'Courier New'" color="#000000">DIST</font></a></p>
</td>
<td cellpadding="4" valign="top" width="336">
<p><a name="1056274">Net is the result of adding physical components (that is, components that only connect to power or ground nets), such as filler cells, well&#45;taps, tie&#45;high and tie&#45;low cells, and decoupling caps.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056276">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056278"><font size="2" face="'Courier New'" color="#000000">NETLIST</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056280">Net is defined in the original netlist. This is the default value, and is not normally written out in the DEF file.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056282">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056284"><font size="2" face="'Courier New'" color="#000000">TEST</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056286">Net is part of a scanchain. </a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056312">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056314"><font size="2" face="'Courier New'" color="#000000">TIMING</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056316">Net represents a logical rather than physical change to netlist, and is used typically as a buffer for a clock&#45;tree, or to improve timing on long nets.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056306">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056308"><font size="2" face="'Courier New'" color="#000000">USER</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056310">Net is user defined. </a></p>
</td>
</tr>
</table>
<h3><a name="1056351">defwNetUse</a></h3>
<p><a name="1056352">Writes a </a><font size="2" face="'Courier New'" color="#000000">USE</font> statement. The <font size="2" face="'Courier New'" color="#000000">USE</font> statement is optional and can be used only once for a net.</p>
<h4><a name="1056353">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1041171">int defwNetUse(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name</em></font>)</font>
</dl>
<h4><a name="1041182">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1041185"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1068739">Specifies how the net is used.<br></a><font color="#000000"><em>Value:</em></font> Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="645">
<caption>
<tr>
<td cellpadding="4" valign="top" width="197">
<p><a name="1056364">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="125">
<p><a name="1056366"><font size="2" face="'Courier New'" color="#000000">ANALOG</font></a></p>
</td>
<td cellpadding="4" valign="top" width="322">
<p><a name="1056368">Used as a analog signal net.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056370">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056372"><font size="2" face="'Courier New'" color="#000000">CLOCK</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056374">Used as a clock net.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056376">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056378"><font size="2" face="'Courier New'" color="#000000">GROUND</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056380">Used as a ground net.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056422">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056424"><font size="2" face="'Courier New'" color="#000000">POWER</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056426">Used as a power net.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056416">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056418"><font size="2" face="'Courier New'" color="#000000">RESET</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056420">Used as a reset net.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056410">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056412"><font size="2" face="'Courier New'" color="#000000">SCAN</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056414">Used as a scan net.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056404">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056406"><font size="2" face="'Courier New'" color="#000000">SIGNAL</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056408">Used as digital signal net.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056441">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056443"><font size="2" face="'Courier New'" color="#000000">TIEOFF</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056445">Used as a tie&#45;high or tie&#45;low net.</a></p>
</td>
</tr>
</table>
<h3><a name="1024281">defwNetVpin</a></h3>
<p><a name="1041258">Writes a </a><font size="2" face="'Courier New'" color="#000000">VPIN</font> statement. The <font size="2" face="'Courier New'" color="#000000">VPIN</font> statement is optional and can be used more than once for a net.</p>
<h4><a name="1041229">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1041230">int defwNetVpin(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>vpinName</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>layerXl</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>layerYl</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>layerXh</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>layerYh</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>status</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>statusX</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>statusY</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>orient</em></font>) </font>
</dl>
<h4><a name="1041241">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1047210"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1068747">Optional argument that specifies the layer on which the virtual pin lies. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument. </blockquote>
<p>
<strong></strong>
<strong><a name="1056499"><font size="2" face="'Courier New'" color="#000000"><em>layerXl</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>layerYl</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>layerXh</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>layerYh</em></font></strong>
</p>
<blockquote><a name="1068755">Specifies the physical geometry of the virtual pin.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1056493"><font size="2" face="'Courier New'" color="#000000"><em>orient</em></font></a></strong>
</p>
<blockquote><a name="1068762">Optional argument that specifies the orientation of the virtual pin. Specify </a><font size="2" face="'Courier New'" color="#000000">&#45;1</font> to ignore this argument. <br><font color="#000000"><em>Value:</em></font> <font size="2" face="'Courier New'" color="#000000">0</font> to <font size="2" face="'Courier New'" color="#000000">7</font>. For more information, see <a href="ch1Intro.html#1019049" title="1"><font color="Blue"><u>"Orientation Codes"</u></font></a><a href="ch1Intro.html#1019049" title="1"></a>.</blockquote>
<p>
<strong></strong>
<strong><a name="1056489"><font size="2" face="'Courier New'" color="#000000"><em>status</em></font></a></strong>
</p>
<blockquote><a name="1068769">Optional argument that specifies the placement status of the virtual pin. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument. <br>Value: specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="647">
<caption>
<tr>
<td cellpadding="4" valign="top" width="196">
<p><a name="1056517">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="152">
<p><a name="1056519"><font size="2" face="'Courier New'" color="#000000">COVER</font></a></p>
</td>
<td cellpadding="4" valign="top" width="298">
<p><a name="1056521">Specifies that the pin has a location and is a part of the cover macro. It cannot be moved by automatic tools or interactive commands.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056523">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056525"><font size="2" face="'Courier New'" color="#000000">FIXED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056527">Specifies that the pin has a location and cannot be moved by automatic tools but can be moved by interactive commands.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056529">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056531"><font size="2" face="'Courier New'" color="#000000">PLACED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056533">Specifies that the pin has a location, but can be moved during automatic layout.</a></p>
</td>
</tr>
</table>
<p>
<strong></strong>
<strong><a name="1041326"><font size="2" face="'Courier New'" color="#000000"><em>statusX</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>statusY</em></font></strong>
</p>
<blockquote><a name="1068776">Optional arguments that specify the placement location of the virtual pin. If you specify </a><font size="2" face="'Courier New'" color="#000000"><em>status</em></font>, you must specify these arguments. Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore these arguments.</blockquote>
<p>
<strong></strong>
<strong><a name="1056484"><font size="2" face="'Courier New'" color="#000000"><em>vpinName</em></font></a></strong>
</p>
<blockquote><a name="1068783">Specifies the name of the virtual pin to define.</a></blockquote>
<h3><a name="1054682">defwNetVpinStr</a></h3>
<p><a name="1054683">Also writes a </a><font size="2" face="'Courier New'" color="#000000">VPIN</font> statement. This routine is the same as the <font size="2" face="'Courier New'" color="#000000">defwNetVpin</font> routine, with the exception of the <font size="2" face="'Courier New'" color="#000000"><em>orient</em></font> argument, which takes a string instead of an integer. The <font size="2" face="'Courier New'" color="#000000">VPIN</font> statement is optional and can be used more than once for a net.</p>
<h4><a name="1052525">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052713">int defwNetVpin(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>vpinName,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>layerName,<dd></em></font>int <font size="2" face="'Courier New'" color="#000000"><em>layerXl,<dd></em></font>int <font size="2" face="'Courier New'" color="#000000"><em>layerYl,<dd></em></font>int <font size="2" face="'Courier New'" color="#000000"><em>layerXh,<dd></em></font>int <font size="2" face="'Courier New'" color="#000000"><em>layerYh,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>status,<dd></em></font>int <font size="2" face="'Courier New'" color="#000000"><em>statusX,<dd></em></font>int <font size="2" face="'Courier New'" color="#000000"><em>statusY,</em></font> <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>orient</em></font>) </font>
</dl>
<h4><a name="1052527">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1056568"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1068793">Optional argument that specifies the layer on which the virtual pin lies. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument.</blockquote>
<p>
<strong></strong>
<strong><a name="1056569"><font size="2" face="'Courier New'" color="#000000"><em>layerXl</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>layerYl</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>layerXh</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>layerYh</em></font></strong>
</p>
<blockquote><a name="1068801">Specifies the physical geometry of the virtual pin.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1056570"><font size="2" face="'Courier New'" color="#000000"><em>orient</em></font></a></strong>
</p>
<blockquote><a name="1068808">Optional argument that specifies the orientation of the virtual pin. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument.<br><font color="#000000"><em>Value:</em></font> <font size="2" face="'Courier New'" color="#000000">N</font>, <font size="2" face="'Courier New'" color="#000000">W</font>, <font size="2" face="'Courier New'" color="#000000">S</font>, <font size="2" face="'Courier New'" color="#000000">E</font>, <font size="2" face="'Courier New'" color="#000000">FN</font>, <font size="2" face="'Courier New'" color="#000000">FW</font>, <font size="2" face="'Courier New'" color="#000000">FS</font>, or <font size="2" face="'Courier New'" color="#000000">FE </font></blockquote>
<p>
<strong></strong>
<strong><a name="1056574"><font size="2" face="'Courier New'" color="#000000"><em>status</em></font></a></strong>
</p>
<blockquote><a name="1068815">Optional argument that specifies the placement status of the virtual pin. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument.<br>Value: specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="647">
<caption>
<tr>
<td cellpadding="4" valign="top" width="196">
<p><a name="1056577">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="152">
<p><a name="1056579"><font size="2" face="'Courier New'" color="#000000">COVER</font></a></p>
</td>
<td cellpadding="4" valign="top" width="298">
<p><a name="1056581">Specifies that the pin has a location and is a part of the cover macro. It cannot be moved by automatic tools or interactive commands.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056583">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056585"><font size="2" face="'Courier New'" color="#000000">FIXED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056587">Specifies that the pin has a location and cannot be moved by automatic tools but can be moved by interactive commands.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056589">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056591"><font size="2" face="'Courier New'" color="#000000">PLACED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056593">Specifies that the pin has a location, but can be moved during automatic layout.</a></p>
</td>
</tr>
</table>
<p>
<strong></strong>
<strong><a name="1056594"><font size="2" face="'Courier New'" color="#000000"><em>statusX</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>statusY</em></font></strong>
</p>
<blockquote><a name="1068822">Optional arguments that specify the placement location of the virtual pin. If you specify </a><font size="2" face="'Courier New'" color="#000000"><em>status</em></font>, you must specify these arguments. Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore these arguments.</blockquote>
<p>
<strong></strong>
<strong><a name="1056595"><font size="2" face="'Courier New'" color="#000000"><em>vpinName</em></font></a></strong>
</p>
<blockquote><a name="1068829">Specifies the name of the virtual pin to define.</a></blockquote>
<h3><a name="1024287">defwNetWeight</a></h3>
<p><a name="1041355">Writes a </a><font size="2" face="'Courier New'" color="#000000">WEIGHT</font> statement. The <font size="2" face="'Courier New'" color="#000000">WEIGHT</font> statement is optional and can be used only once for a net.</p>
<h4><a name="1041336">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1041337">int defwNetWeight(<dd>double </a><font size="2" face="'Courier New'" color="#000000"><em>weight</em></font>)</font>
</dl>
<h4><a name="1041348">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1064282"><font size="2" face="'Courier New'" color="#000000"><em>weight</em></font></a></strong>
</p>
<blockquote><a name="1068836">Specifies the weight of the net. Automatic layout tools attempt to shorten the lengths of nets with high weights. A value of </a><font size="2" face="'Courier New'" color="#000000">0</font> indicates that the net length for that net can be ignored. A value of <font size="2" face="'Courier New'" color="#000000">1</font> specifies that the net should be treated normally. A larger weight specifies that the tool should try harder to minimize the net length of that net. <br>For normal use, timing constraints are generally a better method to use for controlling net length than net weights. For the best results, you should typically limit the maximum weight to 10, and not add weights to more than 3 percent of the nets. </blockquote>
<h3><a name="1024292">defwNetXtalk</a></h3>
<p><a name="1041398">Writes a </a><font size="2" face="'Courier New'" color="#000000">XTALK</font> statement. The <font size="2" face="'Courier New'" color="#000000">XTALK</font> statement is optional and can be used only once for a net.</p>
<h4><a name="1041378">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1041379">int defwNetXtalk(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>num</em></font>)</font>
</dl>
<h4><a name="1041391">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1041392"><font size="2" face="'Courier New'" color="#000000"><em>num</em></font></a></strong>
</p>
<blockquote><a name="1068857">Specifies the crosstalk class number for the net. If you specify the default value (</a><font size="2" face="'Courier New'" color="#000000">0</font>), the <font size="2" face="'Courier New'" color="#000000">XTALK</font> statement will not be written to the DEF file.<br><font color="#000000"><em>Value:</em></font> <font size="2" face="'Courier New'" color="#000000">0</font> to <font size="2" face="'Courier New'" color="#000000">200</font></blockquote>
<h3><a name="1050045">Nets Example</a></h3>
<p><a name="1050046">The following example shows a callback routine with the type </a><font size="2" face="'Courier New'" color="#000000">defwNetCbkType</font>. This example only shows the usage of some functions related to net.</p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050039">int netCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd> const char **coorX, **coorY;<dd> const char **coorValue;<dd><dd> &#47;&#47; Check if the type is correct<dd> if (type != defwNetCbkType) {<dd> printf(&#34;Type is not defwNetCbkType, terminate<dd>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writing.\n&#34;);<dd> return 1;<dd> }<dd><dd> res = defwStartNets(3);<dd> CHECK_RES(res);<dd><dd> coorX = (const char**)malloc(sizeof(char*)*5);<dd> coorY = (const char**)malloc(sizeof(char*)*5);<dd> coorValue = (const char**)malloc(sizeof(char*)*5);<dd> res = defwNet(&#34;my_net&#34;);<dd> CHECK_RES(res);<dd> res = defwNetConnection(&#34;I1&#34;, &#34;A&#34;, 0);<dd> CHECK_RES(res);<dd> res = defwNetConnection(&#34;BUF&#34;, &#34;Z&#34;, 0);<dd> CHECK_RES(res);<dd> res = defwNetNondefaultRule(&#34;RULE1&#34;);<dd> CHECK_RES(res);<dd> res = defwNetShieldnet(&#34;VSS&#34;);<dd> CHECK_RES(res);<dd> res = defwNetPathStart(&#34;ROUTED&#34;);<dd> CHECK_RES(res);<dd> ...<dd> = defwNetNoshieldStart(&#34;M2&#34;);<dd> CHECK_RES(res);<dd> coorX[0] = strdup(&#34;14100&#34;);<dd> coorY[0] = strdup(&#34;341440&#34;);<dd> coorX[1] = strdup(&#34;14000&#34;);<dd> coorY[1] = strdup(&#34;*&#34;);<dd> res = defwNetNoshieldPoint(2, coorX, coorY);<dd> CHECK_RES(res);<dd> res = defwNetNoshieldEnd();<dd> CHECK_RES(res);<dd> res = defwNetEndOneNet();<dd> CHECK_RES(res);<dd><dd> res = defwNet(&#34;MUSTJOIN&#34;);<dd> CHECK_RES(res);<dd> res = defwNetConnection(&#34;cell4&#34;, &#34;PA1&#34;, 0);<dd> CHECK_RES(res);<dd> res = defwNetEndOneNet();<dd> CHECK_RES(res);<dd><dd> res = defwNet(&#34;XX100&#34;);<dd> CHECK_RES(res);<dd> res = defwNetConnection(&#34;Z38A05&#34;, &#34;G&#34;, 0);<dd> CHECK_RES(res);<dd> res = defwNetConnection(&#34;Z38A03&#34;, &#34;G&#34;, 0);<dd> CHECK_RES(res);<dd> res = defwNetConnection(&#34;Z38A01&#34;, &#34;G&#34;, 0);<br> CHECK_RES(res);<br> res = defwNetVpin(&#34;V_SUB3_XX100&#34;, NULL, &#45;333, &#45;333, 333,<br> 333, &#34;PLACED&#34;, 189560, 27300, 0);<br> CHECK_RES(res);<br> res = defwNetSubnetStart(&#34;SUB1_XX100&#34;);<br> CHECK_RES(res);<br> ...<br> &#47;&#47; An example for Regular Wiring can be found in the<br> &#47;&#47; Regular Wiring section.<br><br> res = defwNetPathEnd();<br> CHECK_RES(res);<br> res = defwNetNoshieldStart(&#34;M2&#34;);<br> CHECK_RES(res);<br> coorX[0] = strdup(&#34;14100&#34;);<br> coorY[0] = strdup(&#34;341440&#34;);<br> coorX[1] = strdup(&#34;14000&#34;);<br> coorY[1] = strdup(&#34;*&#34;);<br> res = defwNetNoshieldPoint(2, coorX, coorY);<br> CHECK_RES(res);<br> res = defwNetNoshieldEnd();<br> CHECK_RES(res);<br> res = defwNetEndOneNet();<br> CHECK_RES(res);<br><br> res = defwNet(&#34;MUSTJOIN&#34;);<br> CHECK_RES(res);<br> res = defwNetConnection(&#34;cell4&#34;, &#34;PA1&#34;, 0);<br> CHECK_RES(res);<br> res = defwNetEndOneNet();<br> CHECK_RES(res);<br><br> res = defwNet(&#34;XX100&#34;);<br> CHECK_RES(res);<br> res = defwNetConnection(&#34;Z38A05&#34;, &#34;G&#34;, 0);<br> CHECK_RES(res);<br> res = defwNetConnection(&#34;Z38A03&#34;, &#34;G&#34;, 0);<br> CHECK_RES(res);<br> res = defwNetConnection(&#34;Z38A01&#34;, &#34;G&#34;, 0);<br> CHECK_RES(res);<br> res = defwNetVpin(&#34;V_SUB3_XX100&#34;, NULL, &#45;333, &#45;333, 333,<br> 333, &#34;PLACED&#34;, 189560, 27300, 0);<br> CHECK_RES(res);<br> res = defwNetSubnetStart(&#34;SUB1_XX100&#34;);<br> CHECK_RES(res);<br> ...<br> &#47;&#47; An example for Subnet can be found in the Subnet section<br><br> CHECK_RES(res);<br> res = defwNetSubnetEnd();<br> CHECK_RES(res);<br> res = defwEndNets();<br> CHECK_RES(res);<br> return 0;}</a></font>
</dl>
<h2><a name="1031995">Regular Wiring</a></h2>
<p><a name="1056668">Routines described in this section form a </a><font color="#000000"><em>regularWiring</em></font> statement that can be used to define regular wiring for a net or subnet. The <font color="#000000"><em>regularWiring</em></font> statement is optional and can be used more than once in a <font size="2" face="'Courier New'" color="#000000">NETS</font> statement. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">NETS</font> statement, see <a href="../lefdefref/DEFSyntax.html#Nets" target="external_window"><font color="#0000ff"><u>"Nets"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>. </p>
<p><a name="1032077">A </a><font color="#000000"><em>regularWiring</em></font> statement must start and end with the <font size="2" face="'Courier New'" color="#000000">defwNetPathStart</font> and <font size="2" face="'Courier New'" color="#000000">defwNetPathEnd</font> routines. All regular wiring must be defined between these routines.</p>
<p><a name="1051106">For examples of the routines described here, see </a><a href="#1047571" title="6"><font color="Blue"><u>"Regular Wiring Example"</u></font></a><a href="#1047571" title="6"></a>.</p>
<p><a name="1051105">The regular wiring routines can be included between the following pairs of routines:</a></p>
<div>
<table border="0" cellspacing="0" cellpadding="3" summary="">
<tr valign="baseline">
<td width="31.999679999999998">
<div>
<nobr>
<font color="#000000"><img src="images/b_bullet.gif" alt="ParagraphBullet" border="0"></font>
</nobr>
</div>
</td>
<td><a name="1032100"><font size="2" face="'Courier New'" color="#000000">defwNet</font></a> and <font size="2" face="'Courier New'" color="#000000">defwEndOneNet</font></td>
</tr>
</table>
</div>
<div>
<table border="0" cellspacing="0" cellpadding="3" summary="">
<tr valign="baseline">
<td width="31.999679999999998">
<div>
<nobr>
<font color="#000000"><img src="images/b_bullet.gif" alt="ParagraphBullet" border="0"></font>
</nobr>
</div>
</td>
<td><a name="1047540"><font size="2" face="'Courier New'" color="#000000">defwNetMustjoinConnection</font></a> and <font size="2" face="'Courier New'" color="#000000">defwEndOneNet</font></td>
</tr>
</table>
</div>
<div>
<table border="0" cellspacing="0" cellpadding="3" summary="">
<tr valign="baseline">
<td width="31.999679999999998">
<div>
<nobr>
<font color="#000000"><img src="images/b_bullet.gif" alt="ParagraphBullet" border="0"></font>
</nobr>
</div>
</td>
<td><a name="1032103"><font size="2" face="'Courier New'" color="#000000">defwNetSubnetStart</font></a> and <font size="2" face="'Courier New'" color="#000000">defwSubnetEnd</font></td>
</tr>
</table>
</div>
<p><a name="1032120">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="1032006">defwNetPathStart</a></h3>
<p><a name="1041444">Starts a </a><font color="#000000"><em>regularWiring</em></font> statement. </p>
<h4><a name="1041425">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1041426">int defwNetPathStart(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>type</em></font>)</font>
</dl>
<h4><a name="1041437">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1041439"><font size="2" face="'Courier New'" color="#000000"><em>type</em></font></a></strong>
</p>
<blockquote><a name="1068864">Specifies the regular wiring type. <br></a><font color="#000000"><em>Value:</em></font> Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="647">
<caption>
<tr>
<td cellpadding="4" valign="top" width="196">
<p><a name="1056683">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="122">
<p><a name="1056685"><font size="2" face="'Courier New'" color="#000000">COVER</font></a></p>
</td>
<td cellpadding="4" valign="top" width="328">
<p><a name="1056687">Specifies that the wiring cannot be moved by either automatic layout or interactive commands. </a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056689">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056691"><font size="2" face="'Courier New'" color="#000000">FIXED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056693">Specifies that the wiring cannot be moved by automatic layout, but can be changed by interactive commands.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056695">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056697"><font size="2" face="'Courier New'" color="#000000">ROUTED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056699">Specifies that the wiring can be moved by the automatic layout tools. </a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1059176">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1059178"><font size="2" face="'Courier New'" color="#000000">NOSHIELD</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1059180">Specifies that the last wide segment of the net is not shielded. </a></p>
</td>
</tr>
</table>
<h3><a name="1032014">defwNetPathEnd</a></h3>
<p><a name="1041488">Ends the </a><font color="#000000"><em>regularWiring</em></font> statement.</p>
<h4><a name="1041476">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1041477">int defwNetPathEnd()</a></font>
</dl>
<h3><a name="1041541">defwNetPathLayer</a></h3>
<p><a name="1041542">Writes a </a><font size="2" face="'Courier New'" color="#000000">LAYER</font> statement. The <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement is required and can be used more than once in the <font color="#000000"><em>regularWiring</em></font> statement.</p>
<h4><a name="1041502">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1041503">int defwNetPathLayer(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>isTaper</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>rulename</em></font>)</font>
</dl>
<h4><a name="1041518">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1041583"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1068871">Specifies the layer name on which the wire lies.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1041589"><font size="2" face="'Courier New'" color="#000000"><em>isTaper</em></font></a></strong>
</p>
<blockquote><a name="1068878">Optional argument that writes the keyword </a><font size="2" face="'Courier New'" color="#000000">TAPER</font>, which specifies that the next contiguous wire segment is created using the default rule.<br>Value: Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="647">
<caption>
<tr>
<td cellpadding="4" valign="top" width="196">
<p><a name="1063789">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="122">
<p><a name="1063791"><font size="2" face="'Courier New'" color="#000000">0</font></a></p>
</td>
<td cellpadding="4" valign="top" width="328">
<p><a name="1063793">Ignores the argument.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1063795">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1063797"><font size="2" face="'Courier New'" color="#000000">1</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1063799">Writes the keyword </a><font size="2" face="'Courier New'" color="#000000">TAPER</font>. If you specify 1, you must specify <font size="2" face="'Courier New'" color="#000000">NULL</font> for the <font size="2" face="'Courier New'" color="#000000"><em>rulename</em></font> argument.</p>
</td>
</tr>
</table>
<p>
<strong></strong>
<strong><a name="1041606"><font size="2" face="'Courier New'" color="#000000"><em>ruleName</em></font></a></strong>
</p>
<blockquote><a name="1068885">Optional argument that specifies that the next contiguous wire segment is created using the specified nondefault rule (</a><font size="2" face="'Courier New'" color="#000000"><em>ruleName</em></font>). Specify <font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument. If you specify a <font size="2" face="'Courier New'" color="#000000"><em>rulename</em></font>, you must specify <font size="2" face="'Courier New'" color="#000000">0</font> for the <font size="2" face="'Courier New'" color="#000000"><em>isTaper</em></font> argument.</blockquote>
<h3><a name="1032031">defwNetPathPoint</a></h3>
<p><a name="1041650">Defines the center line coordinates of the route on the layer specified with </a><font size="2" face="'Courier New'" color="#000000">defwNetPathLayer</font>. This routine is required and can be used only once for each layer in the <font size="2" face="'Courier New'" color="#000000"><em>regularWiring</em></font> statement. </p>
<h4><a name="1041638">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1041639">int defwNetPathPoint(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>numPts</em></font>,<dd>const char** <font size="2" face="'Courier New'" color="#000000"><em>pointX</em></font>,<dd>const char** <font size="2" face="'Courier New'" color="#000000"><em>pointY</em></font>,<dd>const char** <font size="2" face="'Courier New'" color="#000000"><em>value</em></font>) </font>
</dl>
<h4><a name="1041656">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1053633"><font size="2" face="'Courier New'" color="#000000"><em>numPts</em></font></a></strong>
</p>
<blockquote><a name="1068892">Specifies the number of points in the wire path (route)</a></blockquote>
<p>
<strong></strong>
<strong><a name="1041629"><font size="2" face="'Courier New'" color="#000000"><em>pointX</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>pointY</em></font></strong>
</p>
<blockquote><a name="1068900">Specifies the coordinates of the path points.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1041661"><font size="2" face="'Courier New'" color="#000000"><em>value</em></font></a></strong>
</p>
<blockquote><a name="1068907">Optional argument that specifies the amount by which the wire is extended past the end point of the segment. This value must be greater than or equal to </a><font size="2" face="'Courier New'" color="#000000">0</font> (zero). Specify <font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument.</blockquote>
<h3><a name="defwNetPathStyle"></a><a name="1032039">defwNetPathStyle </a></h3>
<p><a name="1060901">Writes a </a><font size="2" face="'Courier New'" color="#000000">STYLE</font> statement for the layer specified with <font size="2" face="'Courier New'" color="#000000">defwNetPathLayer</font>. The <font size="2" face="'Courier New'" color="#000000">STYLE</font> statement is optional and can be used only once for each layer in the <font size="2" face="'Courier New'" color="#000000"><em>regularWiring</em></font> statement. </p>
<h4><a name="1060908">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1060909">defwNetPathStyle( <dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>styleNum</em></font>)</font>
</dl>
<h4><a name="1060910">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1060911"><font size="2" face="'Courier New'" color="#000000"><em>styleNum</em></font></a></strong>
</p>
<blockquote><a name="1068914">Specifies a previously defined style from the STYLES section in this DEF file. If a style is specified, the wire's shape is defined by the center line coordinates and the style. </a></blockquote>
<h3><a name="1060900">defwNetPathVia</a></h3>
<p><a name="1041687">Specifies a via to place at the last point on the layer specified with </a><font size="2" face="'Courier New'" color="#000000">defwNetPathLayer</font>. This routine is optional and can be used only once for each layer in the <font color="#000000"><em>regularWiring</em></font> statement.</p>
<h4><a name="1041667">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1041668">int defwNetPathVia(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>viaName</em></font>)</font>
</dl>
<h4><a name="1041680">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1041681"><font size="2" face="'Courier New'" color="#000000"><em>viaName</em></font></a></strong>
</p>
<blockquote><a name="1068922">Specifies the via to place at the last specified path coordinate.</a></blockquote>
<h3><a name="defwNetPathViaWithOrient"></a><a name="1060966">defwNetPathViaWithOrient </a></h3>
<p><a name="1060967">Specifies the orientation of the via specified with </a><font size="2" face="'Courier New'" color="#000000">defwNetPathVia</font>. This routine is optional and can be used only once for each via in the <font size="2" face="'Courier New'" color="#000000"><em>regularWiring</em></font> statement. </p>
<h4><a name="1060970">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1060971">defwNetPathViaWithOrient( <dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>orient</em></font>)</font>
</dl>
<h4><a name="1060972">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1060973"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1068929">Specifies the via. </a></blockquote>
<p>
<strong></strong>
<strong><a name="1060975"><font size="2" face="'Courier New'" color="#000000"><em>orient</em></font></a></strong>
</p>
<blockquote><a name="1068937">Specifies the orientation. <br></a><font color="#000000"><em>Value:</em></font> <font size="2" face="'Courier New'" color="#000000">0</font> to <font size="2" face="'Courier New'" color="#000000">7</font>. For more information, see <a href="ch1Intro.html#1019049" title="1"><font color="Blue"><u>"Orientation Codes"</u></font></a><a href="ch1Intro.html#1019049" title="1"></a> </blockquote>
<h3><a name="defwNetPathViaWithOrientStr"></a><a name="1060984">defwNetPathViaWithOrientStr</a></h3>
<p><a name="1061005">Also specifies the orientation of the via specified with </a><font size="2" face="'Courier New'" color="#000000">defwNetPathVia</font>. This routine is the same as the <font size="2" face="'Courier New'" color="#000000">defwNetPathViaWithOrient</font> routine, with the exception of the <font size="2" face="'Courier New'" color="#000000"><em>orient</em></font> argument, which takes a string instead of an integer. The <font size="2" face="'Courier New'" color="#000000">defwNetPathViaWithOrientStr</font> is optional and can be used only once for each via in the <font size="2" face="'Courier New'" color="#000000"><em>regularWiring</em></font> statement. </p>
<h4><a name="1061006">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1061007">defwNetPathViaWithOrient( <dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>orient</em></font>)</font>
</dl>
<h4><a name="1061008">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1061009"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1068945">Specifies the via. </a></blockquote>
<p>
<strong></strong>
<strong><a name="1061002"><font size="2" face="'Courier New'" color="#000000"><em>orient</em></font></a></strong>
</p>
<blockquote><a name="1068953">Specifies the orientation. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument. <br><font color="#000000"><em>Value:</em></font> <font size="2" face="'Courier New'" color="#000000">N</font>, <font size="2" face="'Courier New'" color="#000000">W</font>, <font size="2" face="'Courier New'" color="#000000">S</font>, <font size="2" face="'Courier New'" color="#000000">E</font>, <font size="2" face="'Courier New'" color="#000000">FN</font>, <font size="2" face="'Courier New'" color="#000000">FW</font>, <font size="2" face="'Courier New'" color="#000000">FS</font>, or <font size="2" face="'Courier New'" color="#000000">FE </font></blockquote>
<h3><a name="1047571">Regular Wiring Example</a></h3>
<p><a name="1048342">The following example only shows the usage of some functions related to regular wiring in a net. This example is part of the net callback routine.</a></p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050058">int netCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd> const char **coorX, **coorY;<dd> const char **coorValue;<dd><dd> ...<dd> res = defwNetPathStart(&#34;NEW&#34;);<dd> CHECK_RES(res);<dd> res = defwNetPathLayer(&#34;M1&#34;, 1, NULL);<dd> CHECK_RES(res);<dd> coorX[0] = strdup(&#34;2400&#34;);<dd> coorY[0] = strdup(&#34;282400&#34;);<dd> coorValue[0] = NULL;<dd> coorX[1] = strdup(&#34;240&#34;);<dd> coorY[1] = strdup(&#34;*&#34;);<dd> coorValue[1] = NULL;<dd> res = defwNetPathPoint(2, coorX, coorY, coorValue);<dd> CHECK_RES(res);<dd> free((char*)coorX[0]);<dd> free((char*)coorY[0]);<dd> free((char*)coorX[1]);<dd> free((char*)coorY[1]);<dd> res = defwNetPathEnd();<dd> CHECK_RES(res);<dd> ...<dd><dd> return 0;}</a></font>
</dl>
<h2><a name="1048341">Subnet</a></h2>
<p><a name="1031906">The Subnet routines write a </a><font size="2" face="'Courier New'" color="#000000">SUBNET</font> statement which further defines a net. A <font size="2" face="'Courier New'" color="#000000">SUBNET</font> statement is optional and can be used more than once in a <font size="2" face="'Courier New'" color="#000000">NETS</font> statement. For information about the DEF <font size="2" face="'Courier New'" color="#000000">NETS</font> statement, see <a href="../lefdefref/DEFSyntax.html#Nets" target="external_window"><font color="#0000ff"><u>"Nets"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1031910">You must begin and end a </a><font size="2" face="'Courier New'" color="#000000">SUBNET</font> statement with the <font size="2" face="'Courier New'" color="#000000">defwNetSubnetStart</font> and <font size="2" face="'Courier New'" color="#000000">defwSubnetEnd</font> routines. You must define all subnets between these routines. </p>
<p><a name="1051111">For examples of the routines described here, see </a><a href="#1047572" title="6"><font color="Blue"><u>"Subnet Example"</u></font></a><a href="#1047572" title="6"></a>.</p>
<p><a name="1031911">In addition to the routines described in this section, you can include a </a><font size="2" face="'Courier New'" color="#000000">NONDEFAULTRULE </font>statement and a <font color="#000000"><em>regularWiring</em></font> statement within a <font size="2" face="'Courier New'" color="#000000">SUBNET</font> statement. For more information about these routines, see <a href="#1024234" title="6"><font color="Blue"><u>defwNetNondefaultRule</u></font></a><a href="#1024234" title="6"> </a>, or <a href="#1031995" title="6"><font color="Blue"><u>"Regular Wiring"</u></font></a><a href="#1031995" title="6"></a>.</p>
<p><a name="1031915">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="1025209">defwNetSubnetStart</a></h3>
<p><a name="1041732">Starts a </a><font size="2" face="'Courier New'" color="#000000">SUBNET</font> statement. This statement is optional and can be used only once in a <font size="2" face="'Courier New'" color="#000000">NETS</font> statement.</p>
<h4><a name="1041715">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1041716">int defwNetSubnetStart(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name</em></font>)</font>
</dl>
<h4><a name="1041737">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1041738"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1068961">Specifies the name of the subnet. </a></blockquote>
<h3><a name="1024537">defwNetSubnetEnd</a></h3>
<p><a name="1041776">Ends a </a><font size="2" face="'Courier New'" color="#000000">SUBNET</font> statement.</p>
<h4><a name="1041764">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1041765">int defwNetSubnetEnd()</a></font>
</dl>
<h3><a name="1024544">defwNetSubnetPin</a></h3>
<p><a name="1041811">Specifies a component for the </a><font size="2" face="'Courier New'" color="#000000">SUBNET</font> statement. This routine is optional and can be used more than once in a <font size="2" face="'Courier New'" color="#000000">SUBNET</font> statement.</p>
<h4><a name="1041790">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1041791">int defwNetSubnetPin(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>component</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>name</em></font>)</font>
</dl>
<h4><a name="1041802">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1041805"><font size="2" face="'Courier New'" color="#000000"><em>component</em></font></a></strong>
</p>
<blockquote><a name="1068968">Specifies either a component name, or the value </a><font size="2" face="'Courier New'" color="#000000">PIN</font> or <font size="2" face="'Courier New'" color="#000000">VPIN</font>.</blockquote>
<p>
<strong></strong>
<strong><a name="1041806"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1068976">Specifies either a pin name if </a><font size="2" face="'Courier New'" color="#000000"><em>component</em></font> is set to <font size="2" face="'Courier New'" color="#000000">PIN</font>, or a virtual pin name if <font size="2" face="'Courier New'" color="#000000"><em>component</em></font> is set to <font size="2" face="'Courier New'" color="#000000">VPIN</font>.</blockquote>
<h3><a name="1047572">Subnet Example</a></h3>
<p><a name="1048570">The following example only shows the usage of some functions related to subnet in a net. This example is part of the net callback routine.</a></p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050067">int netCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd> const char **coorX, **coorY;<dd> const char **coorValue;<dd><dd> ...<dd> res = defwNetSubnetStart(&#34;SUB1_XX100&#34;);<dd> CHECK_RES(res);<dd> res = defwNetSubnetPin(&#34;Z38A05&#34;, &#34;G&#34;);<dd> CHECK_RES(res);<dd> res = defwNetSubnetPin(&#34;VPIN&#34;, &#34;V_SUB1_XX100&#34;);<dd> CHECK_RES(res);<dd> res = defwNetPathStart(&#34;ROUTED&#34;);<dd> CHECK_RES(res);<dd> res = defwNetPathLayer(&#34;M1&#34;, 0, &#34;RULE1&#34;);<dd> CHECK_RES(res);<dd> coorX[0] = strdup(&#34;54040&#34;);<dd> coorY[0] = strdup(&#34;30300&#34;);<dd> coorValue[0] = strdup(&#34;0&#34;);<dd> coorX[1] = strdup(&#34;*&#34;);<dd> coorY[1] = strdup(&#34;30900&#34;);<dd> coorValue[1] = NULL;<dd> res = defwNetPathPoint(2, coorX, coorY, coorValue);<dd> CHECK_RES(res);<dd> free((char*)coorX[0]);<dd> free((char*)coorY[0]);<dd> free((char*)coorValue[0]);<dd> free((char*)coorX[1]);<dd> free((char*)coorY[1]);<dd> res = defwNetPathVia(&#34;nd1VIA12&#34;);<dd> CHECK_RES(res);<dd> ...<dd> res = defwNetPathEnd();<dd> CHECK_RES(res);<dd> res = defwNetSubnetEnd();<dd> ...<dd><dd> return 0;}</a></font>
</dl>
<h2><a name="1061879">Nondefault Rules</a></h2>
<p><a name="1061883">Nondefault rule routines write a DEF </a><font size="2" face="'Courier New'" color="#000000">NONDEFAULTRULES</font> statement. The <font size="2" face="'Courier New'" color="#000000">NONDEFAULTRULES</font> statement is optional and can be used only once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">NONDEFAULTRULES</font> statement, see <a href="../lefdefref/DEFSyntax.html#NondefaultRules" target="external_window"><font color="#0000ff"><u>"Nondefault Rules"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1061892">The </a><font size="2" face="'Courier New'" color="#000000">NONDEFAULTRULES</font> statement must start and end with the <font size="2" face="'Courier New'" color="#000000">defwStartNonDefaultRules</font> and <font size="2" face="'Courier New'" color="#000000">defwEndNonDefaultRules</font> routines. All nondefault rules must be defined between these two routines. Each individual nondefault rule must start with <font size="2" face="'Courier New'" color="#000000">defwNonDefaultRule</font>.</p>
<p><font color="#000000"><strong>Note: </strong></font><a name="1062162">To write a </a><font size="2" face="'Courier New'" color="#000000">PROPERTY</font> statement for the nondefault rule, you must use one of the property routines immediately following the <font size="2" face="'Courier New'" color="#000000">defwNonDefaultRule</font> routine. For more information, see <a href="#1032848" title="6"><font color="Blue"><u>"Property Statements"</u></font></a><a href="#1032848" title="6"></a>.</p>
<p><a name="1062166">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="defwStartNonDefaultRules"></a><a name="1063459">defwStartNonDefaultRules</a></h3>
<p><a name="1063460">Starts a </a><font size="2" face="'Courier New'" color="#000000">NONDEFAULTRULES</font> statement.</p>
<h4><a name="1063471">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1063472">defwStartNonDefaultRules(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>count</em></font>)</font>
</dl>
<h4><a name="1063474">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1063475"><font size="2" face="'Courier New'" color="#000000"><em>count</em></font></a></strong>
</p>
<blockquote><a name="1068984">Specifies the number of rules defined in the </a><font size="2" face="'Courier New'" color="#000000">NONDEFAULTRULES</font> statement.</blockquote>
<h3><a name="defwEndNonDefaultRules"></a><a name="1063489">defwEndNonDefaultRules</a></h3>
<p><a name="1063490">Ends the </a><font size="2" face="'Courier New'" color="#000000">NONDEFAULTRULES</font> statement.</p>
<h4><a name="1063491">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1063492">defwEndNonDefaultRules()</a></font>
</dl>
<h3><a name="defwNonDefaultRule"></a><a name="1063486">defwNonDefaultRule</a></h3>
<p><a name="1061929">Starts a nondefault rule definition. This routine is required for each nondefault rule and can be used more than once in the </a><font size="2" face="'Courier New'" color="#000000">NONDEFAULTRULES</font> statement.</p>
<h4><a name="1061930">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1061936">defwNonDefaultRule( <dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>ruleName</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>hardSpacing</em></font>)</font>
</dl>
<h4><a name="1061937">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1061938"><font size="2" face="'Courier New'" color="#000000"><em>ruleName</em></font></a></strong>
</p>
<blockquote><a name="1068992">Specifies the name for this nondefault rule. This name can be used in the </a><font size="2" face="'Courier New'" color="#000000">NETS</font> section wherever a nondefault rule name is allowed. The reserved name <font size="2" face="'Courier New'" color="#000000">DEFAULT</font> can be used to indicate the default routing rule used in the <font size="2" face="'Courier New'" color="#000000">NETS</font> section. </blockquote>
<p>
<strong></strong>
<strong><a name="1061964"><font size="2" face="'Courier New'" color="#000000"><em>hardSpacing</em></font></a></strong>
</p>
<blockquote><a name="1069000">Optional argument that specifies that any spacing values that exceed the LEF </a><font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">ROUTING</font> spacing requirements are "hard" rules instead of "soft" rules. Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument.</blockquote>
<h3><a name="defwNonDefaultRuleLayer"></a><a name="1061983">defwNonDefaultRuleLayer </a></h3>
<p><a name="1061988">Writes a </a><font size="2" face="'Courier New'" color="#000000">LAYER</font> statement for the nondefault rule. The <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement is required and can be used more than once for each nondefault rule in the <font size="2" face="'Courier New'" color="#000000">NONDEFAULTRULES</font> statement.</p>
<h4><a name="1061998">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1062008">defwNonDefaultRuleLayer( <dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>, <dd>double <font size="2" face="'Courier New'" color="#000000"><em>width</em></font>, <dd>double <font size="2" face="'Courier New'" color="#000000"><em>diagWidth</em></font>, <dd>double <font size="2" face="'Courier New'" color="#000000"><em>spacing</em></font>, <dd>double <font size="2" face="'Courier New'" color="#000000"><em>wireExt</em></font>)</font>
</dl>
<h4><a name="1062009">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1062010"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1069008">`Specifies the layer for the various width and spacing values. </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font> must be a routing layer. </blockquote>
<p>
<strong></strong>
<strong><a name="1062052"><font size="2" face="'Courier New'" color="#000000"><em>width</em></font></a></strong>
</p>
<blockquote><a name="1069016">Specifies the required minimum width allowed for </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>.</blockquote>
<p>
<strong></strong>
<strong><a name="1062053"><font size="2" face="'Courier New'" color="#000000"><em>diagWidth</em></font></a></strong>
</p>
<blockquote><a name="1069024">Optional argument that specifies the diagonal width for </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>, when 45&#45;degree routing is used. Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument.</blockquote>
<p>
<strong></strong>
<strong><a name="1062054"><font size="2" face="'Courier New'" color="#000000"><em>spacing</em></font></a></strong>
</p>
<blockquote><a name="1069032">Optional argument that specifies the minimum spacing for </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>. The LEF <font size="2" face="'Courier New'" color="#000000">LAYER</font> <font size="2" face="'Courier New'" color="#000000">SPACING</font> or <font size="2" face="'Courier New'" color="#000000">SPACINGTABLE</font> definitions always apply; therefore it is only necessary to add a <font size="2" face="'Courier New'" color="#000000">SPACING</font> value if the desired spacing is larger than the <font size="2" face="'Courier New'" color="#000000">LAYER</font> rules already require. Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument.</blockquote>
<p>
<strong></strong>
<strong><a name="1062055"><font size="2" face="'Courier New'" color="#000000"><em>wireExt</em></font></a></strong>
</p>
<blockquote><a name="1069040">Optional argument that specifies the distance by which wires are extended at vias on </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>. Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument.</blockquote>
<h3><a name="defwNonDefaultRuleMinCuts"></a><a name="1062231">defwNonDefaultRuleMinCuts </a></h3>
<p><a name="1062235">Writes a </a><font size="2" face="'Courier New'" color="#000000">MINCUTS</font> statement. The <font size="2" face="'Courier New'" color="#000000">MINCUTS</font> statement is optional and can be used more than once for each nondefault rule in the <font size="2" face="'Courier New'" color="#000000">NONDEFAULTRULES</font> statement. </p>
<h4><a name="1062254">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1062255">defwNonDefaultRuleMinCuts( <dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>cutLayerName</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>numCuts</em></font>)</font>
</dl>
<h4><a name="1062256">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1062257"><font size="2" face="'Courier New'" color="#000000"><em>cutLayerName</em></font></a></strong>
</p>
<blockquote><a name="1069048">Specifies the cut layer.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1062278"><font size="2" face="'Courier New'" color="#000000"><em>numCuts</em></font></a></strong>
</p>
<blockquote><a name="1069056">Specifies the minimum number of cuts allowed for any via using </a><font size="2" face="'Courier New'" color="#000000"><em>cutLayerName</em></font>. All vias (generated or fixed vias) used for this nondefault rule must have at least <font size="2" face="'Courier New'" color="#000000"><em>numCuts</em></font> cuts in the via.</blockquote>
<h3><a name="defwNonDefaultRuleVia"></a><a name="1061987">defwNonDefaultRuleVia </a></h3>
<p><a name="1062108">Writes a </a><font size="2" face="'Courier New'" color="#000000">VIA</font> statement for the nondefault rule. The <font size="2" face="'Courier New'" color="#000000">VIA</font> statement is optional and can be used more than once for each nondefault rule in the <font size="2" face="'Courier New'" color="#000000">NONDEFAULTRULES</font> statement.</p>
<h4><a name="1062109">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1062128">defwNonDefaultRuleVia( <dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>viaName</em></font>)</font>
</dl>
<h4><a name="1062129">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1062130"><font size="2" face="'Courier New'" color="#000000"><em>viaName</em></font></a></strong>
</p>
<blockquote><a name="1069064">Specifies a previously defined LEF or DEF via to use with this rule.</a></blockquote>
<h3><a name="defwNonDefaultRuleViaRule"></a><a name="1062131">defwNonDefaultRuleViaRule </a></h3>
<p><a name="1062180">Writes a </a><font size="2" face="'Courier New'" color="#000000">VIARULE</font> statement. The <font size="2" face="'Courier New'" color="#000000">VIARULE</font> statement is optional and can be used more than once for each nondefault rule in the <font size="2" face="'Courier New'" color="#000000">NONDEFAULTRULES</font> statement.</p>
<h4><a name="1062181">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1062202">defwNonDefaultRuleViaRule( <dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>viaRuleName</em></font>)</font>
</dl>
<h4><a name="1062203">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1062204"><font size="2" face="'Courier New'" color="#000000"><em>viaRuleName</em></font></a></strong>
</p>
<blockquote><a name="1069072">Specifies a previously defined LEF </a><font size="2" face="'Courier New'" color="#000000">VIARULE</font> <font size="2" face="'Courier New'" color="#000000">GENERATE</font> to use with this routing rule. If no via or via rule is specified for a given routing&#45;cut&#45;routing layer combination, then a <font size="2" face="'Courier New'" color="#000000">VIARULE</font> <font size="2" face="'Courier New'" color="#000000">GENERATE</font> <font size="2" face="'Courier New'" color="#000000">DEFAULT</font> via rule must exist for that combination, and it is implicitly inherited.</blockquote>
<h2><a name="1024550">Pins</a></h2>
<p><a name="1032229">Pin routines write a DEF </a><font size="2" face="'Courier New'" color="#000000">PINS</font> statement. The <font size="2" face="'Courier New'" color="#000000">PINS</font> statement is optional and can be used only once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">PINS</font> statement, see <a href="../lefdefref/DEFSyntax.html#Pins" target="external_window"><font color="#0000ff"><u>"Pins"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1032233">A </a><font size="2" face="'Courier New'" color="#000000">PINS</font> statement must start and end with the <font size="2" face="'Courier New'" color="#000000">defwStartPins</font> and <font size="2" face="'Courier New'" color="#000000">defwEndPins</font> routines. All pins must be defined between these routines. Each individual pin must start with a <font size="2" face="'Courier New'" color="#000000">defwPin</font> routine.</p>
<p><a name="1056815">If the DEF file contains a </a><font size="2" face="'Courier New'" color="#000000">COMPONENTS</font> statement, the <font size="2" face="'Courier New'" color="#000000">PINS</font> statement must follow it. For more information about DEF <font size="2" face="'Courier New'" color="#000000">COMPONENTS</font> routines, see <a href="#Components" title="6"><font color="Blue"><u>"Components"</u></font></a><a href="#Components" title="6"></a>.</p>
<p><a name="1051119">For examples of the routines described here, see </a><a href="#1047573" title="6"><font color="Blue"><u>"Pins Example"</u></font></a><a href="#1047573" title="6"></a>.</p>
<p><font color="#000000"><strong>Note: </strong></font><a name="1039753">To write a </a><font size="2" face="'Courier New'" color="#000000">PROPERTY</font> statement for the pin, you must use one of the property routines immediately following the <font size="2" face="'Courier New'" color="#000000">defwPin</font> routine. For more information, see <a href="#1032848" title="6"><font color="Blue"><u>"Property Statements"</u></font></a><a href="#1032848" title="6"></a>.</p>
<p><a name="1032244">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="defwStartPins"></a><a name="1024554">defwStartPins</a></h3>
<p><a name="1041916">Starts a </a><font size="2" face="'Courier New'" color="#000000">PINS</font> statement. </p>
<h4><a name="1041896">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1041897">int defwStartPins(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>count</em></font>)</font>
</dl>
<h4><a name="1041908">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1041982"><font size="2" face="'Courier New'" color="#000000"><em>count</em></font></a></strong>
</p>
<blockquote><a name="1069080">Specifies the number of pins defined in the </a><font size="2" face="'Courier New'" color="#000000">PINS</font> statement.</blockquote>
<h3><a name="defwEndPins"></a><a name="1024567">defwEndPins</a></h3>
<p><a name="1041969">Ends the </a><font size="2" face="'Courier New'" color="#000000">PINS</font> statement. If <font size="2" face="'Courier New'" color="#000000"><em>count</em></font> is not the same as the actual number of <font size="2" face="'Courier New'" color="#000000">defwPin</font> routines used, <font size="2" face="'Courier New'" color="#000000">defwEndPins</font> returns <font size="2" face="'Courier New'" color="#000000">DEFW_BAD_DATA</font>. </p>
<h4><a name="1041950">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1041951">int defwEndPins(void)</a></font>
</dl>
<h3><a name="defwPin"></a><a name="1024579">defwPin</a></h3>
<p><a name="1042051">Starts a pin description in the </a><font size="2" face="'Courier New'" color="#000000">PINS</font> statement. Each pin description must start with <font size="2" face="'Courier New'" color="#000000">defwPin</font>. This routine is required and can be used more than once in a <font size="2" face="'Courier New'" color="#000000">PINS</font> statement. </p>
<h4><a name="1042013">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1042014">int defwPin(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>pinName,</em></font> <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>netName,</em></font> <dd>int <font size="2" face="'Courier New'" color="#000000"><em>special,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>direction,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>use,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>status,</em></font> <dd>int <font size="2" face="'Courier New'" color="#000000"><em>statusX,<dd></em></font>int <font size="2" face="'Courier New'" color="#000000"><em>statusY,<dd></em></font>int <font size="2" face="'Courier New'" color="#000000"><em>orient</em></font>)</font>
</dl>
<h4><a name="1042030">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1056865"><font size="2" face="'Courier New'" color="#000000"><em>direction</em></font></a></strong>
</p>
<blockquote><a name="1069087">Optional argument that specifies the pin type. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument. <br><font color="#000000"><em>Value:</em></font> Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="648">
<caption>
<tr>
<td cellpadding="4" valign="top" width="199">
<p><a name="1056915">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="100">
<p><a name="1056917"><font size="2" face="'Courier New'" color="#000000">FEEDTHRU</font></a></p>
</td>
<td cellpadding="4" valign="top" width="349">
<p><a name="1056919">Pin that goes completely across the cell.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056921">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056923"><font size="2" face="'Courier New'" color="#000000">INPUT</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056925">Pin that accepts signals coming into the cell.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056927">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056929"><font size="2" face="'Courier New'" color="#000000">INOUT</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056931">Pin that drives signals out of the cell.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1056937">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056939"><font size="2" face="'Courier New'" color="#000000">OUTPUT</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1056941">Pin that can accept signals going either in or out of the cell.</a></p>
</td>
</tr>
</table>
<p>
<strong></strong>
<strong><a name="1056889"><font size="2" face="'Courier New'" color="#000000"><em>netName</em></font></a></strong>
</p>
<blockquote><a name="1069094">Specifies the corresponding internal net name.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1056895"><font size="2" face="'Courier New'" color="#000000"><em>orient</em></font></a></strong>
</p>
<blockquote><a name="1069101">Optional argument that specifies the orientation for the pin. Specify </a><font size="2" face="'Courier New'" color="#000000">&#45;1</font> to ignore this argument. <br><font color="#000000"><em>Value:</em></font> <font size="2" face="'Courier New'" color="#000000">0</font> to <font size="2" face="'Courier New'" color="#000000">7</font>. For more information, see <a href="ch1Intro.html#1019049" title="1"><font color="Blue"><u>"Orientation Codes"</u></font></a><a href="ch1Intro.html#1019049" title="1"></a>.</blockquote>
<p>
<strong></strong>
<strong><a name="1056861"><font size="2" face="'Courier New'" color="#000000"><em>pinName</em></font></a></strong>
</p>
<blockquote><a name="1069108">Specifies the name for the external pin.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1042033"><font size="2" face="'Courier New'" color="#000000"><em>special</em></font></a></strong>
</p>
<blockquote><a name="1069115">Optional argument that identifies the pin as a special pin</a><font color="#000000"><em>. </em></font>Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument. <br><font color="#000000"><em>Value:</em></font> Specify one of the following:<font color="#000000"><em> </em></font>I</blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="648">
<caption>
<tr>
<td cellpadding="4" valign="top" width="204">
<p><a name="1058854">&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="120">
<p><a name="1058856"><font size="2" face="'Courier New'" color="#000000">0</font></a></p>
</td>
<td cellpadding="4" valign="top" width="324">
<p><a name="1058858">Argument is ignored.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1058860">&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1058862"><font size="2" face="'Courier New'" color="#000000">1</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1058864">Writes a </a><font size="2" face="'Courier New'" color="#000000">SPECIAL</font> statement.</p>
</td>
</tr>
</table>
<p>
<strong></strong>
<strong><a name="1069127"><font size="2" face="'Courier New'" color="#000000"><em>status</em></font></a></strong>
</p>
<blockquote><a name="1069128">Optional argument that specifies the placement status of the pin. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument. <br><font color="#000000"><em>Value:</em></font> Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="649">
<caption>
<tr>
<td cellpadding="4" valign="top" width="195">
<p><a name="1069131">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="156">
<p><a name="1069133"><font size="2" face="'Courier New'" color="#000000">COVER</font></a></p>
</td>
<td cellpadding="4" valign="top" width="298">
<p><a name="1069135">Specifies that the pin has location and is a part of a cover macro. It cannot be moved by automatic layout tools or by interactive commands.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1069137">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1069139"><font size="2" face="'Courier New'" color="#000000">FIXED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1069141">Specifies that the pin has a location and cannot be moved by automatic tools, but can be moved by interactive commands.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1069143">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1069145"><font size="2" face="'Courier New'" color="#000000">PLACED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1069147">Specifies that the pin has a location, but can be moved during automatic layout.</a></p>
</td>
</tr>
</table>
<p>
<strong></strong>
<strong><a name="1057035"><font size="2" face="'Courier New'" color="#000000"><em>statusX</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>statusY</em></font></strong>
</p>
<blockquote><a name="1069154">Optional arguments that specify the placement location of the pin. If you specify </a><font size="2" face="'Courier New'" color="#000000"><em>status</em></font>, you must specify these arguments.Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore these arguments. </blockquote>
<p>
<strong></strong>
<strong><a name="1056908"><font size="2" face="'Courier New'" color="#000000"><em>use</em></font></a></strong>
</p>
<blockquote><a name="1069165">Optional argument that specifies how the pin is used. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument. <br><font color="#000000"><em>Value: </em></font>Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="647">
<caption>
<tr>
<td cellpadding="4" valign="top" width="196">
<p><a name="1057047">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="129">
<p><a name="1057049"><font size="2" face="'Courier New'" color="#000000">ANALOG</font></a></p>
</td>
<td cellpadding="4" valign="top" width="321">
<p><a name="1057051">Pin is used for analog connectivity.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1057053">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057055"><font size="2" face="'Courier New'" color="#000000">CLOCK</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057057">Pin is used for clock net connectivity.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1057083">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057085"><font size="2" face="'Courier New'" color="#000000">GROUND</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057087">Pin is used for connectivity to the chip&#45;level ground distribution network.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1057077">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057079"><font size="2" face="'Courier New'" color="#000000">POWER</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057081">Pin is used for connectivity to the chip&#45;level power distribution network.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1057071">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057073"><font size="2" face="'Courier New'" color="#000000">RESET</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057075">Pin is used as reset pin.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1057065">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057067"><font size="2" face="'Courier New'" color="#000000">SCAN</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057069">Pin is used as scan pin.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1057059">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057061"><font size="2" face="'Courier New'" color="#000000">SIGNAL</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057063">Pin is used for regular net connectivity.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1057119">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057121"><font size="2" face="'Courier New'" color="#000000">TIEOFF</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057123">Pin is used as tie&#45;high or tie&#45;low pin.</a></p>
</td>
</tr>
</table>
<h3><a name="defwPinStr"></a><a name="1052586">defwPinStr</a></h3>
<p><a name="1052587">Also starts a pin description in the </a><font size="2" face="'Courier New'" color="#000000">PINS</font> statement. This routine is the same as the <font size="2" face="'Courier New'" color="#000000">defwPin</font> routine, with the exception of the <font size="2" face="'Courier New'" color="#000000"><em>orient</em></font> argument, which takes a string instead of an integer. Each pin description must start with <font size="2" face="'Courier New'" color="#000000">defwPin</font>. This routine is required and can be used more than once in a <font size="2" face="'Courier New'" color="#000000">PINS</font> statement. </p>
<h4><a name="1052602">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052625">int defwPin(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>pinName,</em></font> <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>netName,</em></font> <dd>int <font size="2" face="'Courier New'" color="#000000"><em>special,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>direction,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>use,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>status,</em></font> <dd>int <font size="2" face="'Courier New'" color="#000000"><em>statusX,<dd></em></font>int <font size="2" face="'Courier New'" color="#000000"><em>statusY,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>orient</em></font>)</font>
</dl>
<h4><a name="1052604">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1057173"><font size="2" face="'Courier New'" color="#000000"><em>direction</em></font></a></strong>
</p>
<blockquote><a name="1069172">Optional argument that specifies the pin type. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument. <br><font color="#000000"><em>Value:</em></font> Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="648">
<caption>
<tr>
<td cellpadding="4" valign="top" width="199">
<p><a name="1057176">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="100">
<p><a name="1057178"><font size="2" face="'Courier New'" color="#000000">FEEDTHRU</font></a></p>
</td>
<td cellpadding="4" valign="top" width="349">
<p><a name="1057180">Pin that goes completely across the cell.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1057182">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057184"><font size="2" face="'Courier New'" color="#000000">INPUT</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057186">Pin that accepts signals coming into the cell.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1057188">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057190"><font size="2" face="'Courier New'" color="#000000">INOUT</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057192">Pin that drives signals out of the cell.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1057194">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057196"><font size="2" face="'Courier New'" color="#000000">OUTPUT</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057198">Pin that can accept signals going either in or out of the cell.</a></p>
</td>
</tr>
</table>
<p>
<strong></strong>
<strong><a name="1057201"><font size="2" face="'Courier New'" color="#000000"><em>netName</em></font></a></strong>
</p>
<blockquote><a name="1069186">Specifies the corresponding internal net name.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1057202"><font size="2" face="'Courier New'" color="#000000"><em>orient</em></font></a></strong>
</p>
<blockquote><a name="1069193">Optional argument that specifies the orientation for the pin. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument.<br><font color="#000000"><em>Value:</em></font> <font size="2" face="'Courier New'" color="#000000">N</font>, <font size="2" face="'Courier New'" color="#000000">W</font>, <font size="2" face="'Courier New'" color="#000000">S</font>, <font size="2" face="'Courier New'" color="#000000">E</font>, <font size="2" face="'Courier New'" color="#000000">FN</font>, <font size="2" face="'Courier New'" color="#000000">FW</font>, <font size="2" face="'Courier New'" color="#000000">FS</font>, or <font size="2" face="'Courier New'" color="#000000">FE </font></blockquote>
<p>
<strong></strong>
<strong><a name="1057206"><font size="2" face="'Courier New'" color="#000000"><em>pinName</em></font></a></strong>
</p>
<blockquote><a name="1069200">Specifies the name for the external pin.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1058882"><font size="2" face="'Courier New'" color="#000000"><em>special</em></font></a></strong>
</p>
<blockquote><a name="1069207">Optional argument that identifies the pin as a special pin</a><font color="#000000"><em>. </em></font>Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument. <br><font color="#000000"><em>Value:</em></font> Specify one of the following:<font color="#000000"><em> </em></font>I</blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="648">
<caption>
<tr>
<td cellpadding="4" valign="top" width="204">
<p><a name="1058885">&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="120">
<p><a name="1058887"><font size="2" face="'Courier New'" color="#000000">0</font></a></p>
</td>
<td cellpadding="4" valign="top" width="324">
<p><a name="1058889">Argument is ignored.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1058891">&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1058893"><font size="2" face="'Courier New'" color="#000000">1</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1058895">Writes a </a><font size="2" face="'Courier New'" color="#000000">SPECIAL</font> statement.</p>
</td>
</tr>
</table>
<p>
<strong></strong>
<strong><a name="1057207"><font size="2" face="'Courier New'" color="#000000"><em>status</em></font></a></strong>
</p>
<blockquote><a name="1069214">Optional argument that specifies the placement status of the pin. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument. <br><font color="#000000"><em>Value:</em></font> Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="649">
<caption>
<tr>
<td cellpadding="4" valign="top" width="195">
<p><a name="1057211">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="156">
<p><a name="1057213"><font size="2" face="'Courier New'" color="#000000">COVER</font></a></p>
</td>
<td cellpadding="4" valign="top" width="298">
<p><a name="1057215">Specifies that the pin has location and is a part of a cover macro. It cannot be moved by automatic layout tools or by interactive commands.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1057217">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057219"><font size="2" face="'Courier New'" color="#000000">FIXED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057221">Specifies that the pin has a location and cannot be moved by automatic tools, but can be moved by interactive commands.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1057223">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057225"><font size="2" face="'Courier New'" color="#000000">PLACED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057227">Specifies that the pin has a location, but can be moved during automatic layout.</a></p>
</td>
</tr>
</table>
<p>
<strong></strong>
<strong><a name="1057228"><font size="2" face="'Courier New'" color="#000000"><em>statusX</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>statusY</em></font></strong>
</p>
<blockquote><a name="1069221">Optional arguments that specify the placement location of the pin. If you specify </a><font size="2" face="'Courier New'" color="#000000"><em>status</em></font>, you must specify these arguments.Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore these arguments. </blockquote>
<p>
<strong></strong>
<strong><a name="1057229"><font size="2" face="'Courier New'" color="#000000"><em>use</em></font></a></strong>
</p>
<blockquote><a name="1069228">Optional argument that specifies how the pin is used. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument.<br><font color="#000000"><em>Value: </em></font>Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="647">
<caption>
<tr>
<td cellpadding="4" valign="top" width="196">
<p><a name="1057232">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="129">
<p><a name="1057234"><font size="2" face="'Courier New'" color="#000000">ANALOG</font></a></p>
</td>
<td cellpadding="4" valign="top" width="321">
<p><a name="1057236">Pin is used for analog connectivity.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1057238">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057240"><font size="2" face="'Courier New'" color="#000000">CLOCK</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057242">Pin is used for clock net connectivity.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1057244">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057246"><font size="2" face="'Courier New'" color="#000000">GROUND</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057248">Pin is used for connectivity to the chip&#45;level ground distribution network.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1057250">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057252"><font size="2" face="'Courier New'" color="#000000">POWER</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057254">Pin is used for connectivity to the chip&#45;level power distribution network.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1057256">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057258"><font size="2" face="'Courier New'" color="#000000">RESET</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057260">Pin is used as reset pin.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1057262">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057264"><font size="2" face="'Courier New'" color="#000000">SCAN</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057266">Pin is used as scan pin.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1057268">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057270"><font size="2" face="'Courier New'" color="#000000">SIGNAL</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057272">Pin is used for regular net connectivity.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1057274">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057276"><font size="2" face="'Courier New'" color="#000000">TIEOFF</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1057278">Pin is used as tie&#45;high or tie&#45;low pin.</a></p>
</td>
</tr>
</table>
<h3><a name="defwPinAntennaModel"></a><a name="1058160">defwPinAntennaModel</a></h3>
<p><a name="1058161">Writes an </a><font size="2" face="'Courier New'" color="#000000">ANTENNAMODEL</font> statement. The <font size="2" face="'Courier New'" color="#000000">ANTENNAMODEL</font> statement is optional and can be used more than once in a pin definition.</p>
<h4><a name="1058188">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1058189">int defwPinAntennaModel(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>oxide</em></font>)</font>
</dl>
<h4><a name="1058190">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1058191"><font size="2" face="'Courier New'" color="#000000"><em>oxide</em></font></a></strong>
</p>
<blockquote><a name="1069235">Specifies the oxide model for the pin. Each model can be specified once per layer. If you specify an </a><font size="2" face="'Courier New'" color="#000000">ANTENNAMODEL</font> statement, that value affects all <font size="2" face="'Courier New'" color="#000000">ANTENNAGATEAREA</font> and <font size="2" face="'Courier New'" color="#000000">ANTENNA*CAR</font> statements for the pin that follow it until you specify another <font size="2" face="'Courier New'" color="#000000">ANTENNAMODEL</font> statement.<br><font color="#000000"><em>Value:</em></font> <font size="2" face="'Courier New'" color="#000000">OXIDE1</font>, <font size="2" face="'Courier New'" color="#000000">OXIDE2</font>, <font size="2" face="'Courier New'" color="#000000">OXIDE3</font>, or <font size="2" face="'Courier New'" color="#000000">OXIDE4<br></font><font color="#000000"><strong><br>Note:</strong></font> <font size="2" face="'Courier New'" color="#000000">OXIDE3</font> and <font size="2" face="'Courier New'" color="#000000">OXIDE4</font> are currently not supported. If you specify either of these models, the tool parses and ignores it.</blockquote>
<h3><a name="defwPinAntennaPinDiffArea"></a><a name="1052389">defwPinAntennaPinDiffArea</a></h3>
<p><a name="1052444">Writes an </a><font size="2" face="'Courier New'" color="#000000">ANTENNAPINDIFFAREA</font> statement. The <font size="2" face="'Courier New'" color="#000000">ANTENNAPINDIFFAREA</font> statement is optional and can be used more than once in a <font size="2" face="'Courier New'" color="#000000">PIN</font> section.</p>
<h4><a name="1052449">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052450">int defwPinAntennaPinDiffArea(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>value,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>)</font>
</dl>
<h4><a name="1052451">Argument</a></h4>
<p>
<strong></strong>
<strong><a name="1052452"><font size="2" face="'Courier New'" color="#000000"><em>value</em></font></a></strong>
</p>
<blockquote><a name="1069257">Specifies the diffusion (diode) area to which the pin is connected on a layer.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1052457"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1069265">Optional argument that specifies the layer. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument. </blockquote>
<h3><a name="defwPinAntennaPinGateArea"></a><a name="1052443">defwPinAntennaPinGateArea</a></h3>
<p><a name="1052421">Writes an </a><font size="2" face="'Courier New'" color="#000000">ANTENNAPINGATEAREA</font> statement. The <font size="2" face="'Courier New'" color="#000000">ANTENNAPINGATEAREA</font> statement is optional, and can be used once after each <font size="2" face="'Courier New'" color="#000000">defwPinAntennaModel</font> routine in a <font size="2" face="'Courier New'" color="#000000">PINS</font> section.</p>
<h4><a name="1052426">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052427">int defwPinAntennaPinGateArea(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>value,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>)</font>
</dl>
<h4><a name="1052428">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1052433"><font size="2" face="'Courier New'" color="#000000"><em>value</em></font></a></strong>
</p>
<blockquote><a name="1069273">Specifies the gate area to which the pin is connected on a layer.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1052436"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1069281">Optional argument that specifies the layer. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument. </blockquote>
<h3><a name="defwPinAntennaPinMaxAreaCar"></a><a name="1052458">defwPinAntennaPinMaxAreaCar</a></h3>
<p><a name="1058951">Writes an </a><font size="2" face="'Courier New'" color="#000000">ANTENNAPINMAXAREACAR</font> statement. The <font size="2" face="'Courier New'" color="#000000">ANTENNAPINMAXAREACAR</font> statement is optional, and can be used once after each <font size="2" face="'Courier New'" color="#000000">defwPinAntennaModel</font> routine in a <font size="2" face="'Courier New'" color="#000000">PINS</font> section.</p>
<h4><a name="1052461">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052464">int defwPinAntennaPinMaxAreaCar(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>value,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>)</font>
</dl>
<h4><a name="1052465">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1052466"><font size="2" face="'Courier New'" color="#000000"><em>value</em></font></a></strong>
</p>
<blockquote><a name="1069289">Specifies the maximum cumulative antenna ratio, using the metal area below the current pin layer.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1052467"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1069297">Specifies the pin layer.</a></blockquote>
<h3><a name="defwPinAntennaPinMaxCutCar"></a><a name="1052420">defwPinAntennaPinMaxCutCar</a></h3>
<p><a name="1052508">Writes an </a><font size="2" face="'Courier New'" color="#000000">ANTENNAPINMAXCUTCAR</font> statement. The <font size="2" face="'Courier New'" color="#000000">ANTENNAPINMAXCUTCAR</font> statement is optional, and can be used once after each <font size="2" face="'Courier New'" color="#000000">defwPinAntennaModel</font> routine in a <font size="2" face="'Courier New'" color="#000000">PINS</font> section.</p>
<h4><a name="1052506">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052511">int defwPinAntennaPinMaxCutCar(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>value,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>)</font>
</dl>
<h4><a name="1052512">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1052513"><font size="2" face="'Courier New'" color="#000000"><em>value</em></font></a></strong>
</p>
<blockquote><a name="1069305">Specifies the maximum cumulative antenna ratio, using the cut area below the current pin layer.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1052514"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1069313">Specifies the pin layer.</a></blockquote>
<h3><a name="defwPinAntennaPinMaxSideAreaCar"></a><a name="1052505">defwPinAntennaPinMaxSideAreaCar</a></h3>
<p><a name="1052476">Writes an </a><font size="2" face="'Courier New'" color="#000000">ANTENNAPINMAXSIDEAREACAR</font> statement. The <font size="2" face="'Courier New'" color="#000000">ANTENNAPINMAXSIDEAREACAR</font> statement is optional, and can be used once after each <font size="2" face="'Courier New'" color="#000000">defwPinAntennaModel</font> routine in a <font size="2" face="'Courier New'" color="#000000">PINS</font> section.</p>
<h4><a name="1052474">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052479">int defwPinAntennaPinMaxSideAreaCar(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>value,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>)</font>
</dl>
<h4><a name="1052480">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1052481"><font size="2" face="'Courier New'" color="#000000"><em>value</em></font></a></strong>
</p>
<blockquote><a name="1069321">Specifies the maximum cumulative antenna ratio, using the metal side wall area below the current pin layer.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1052482"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1069329">Specifies the pin layer.</a></blockquote>
<h3><a name="defwPinAntennaPinPartialCutArea"></a><a name="1052473">defwPinAntennaPinPartialCutArea</a></h3>
<p><a name="1052488">Writes an </a><font size="2" face="'Courier New'" color="#000000">ANTENNAPINPARTIALCUTAREA</font> statement. The <font size="2" face="'Courier New'" color="#000000">ANTENNAPINPARTIALCUTAREA</font> statement is optional and can be used more than once in a <font size="2" face="'Courier New'" color="#000000">PINS</font> section.</p>
<h4><a name="1052486">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052491">int defwPinAntennaPinPartialCutArea(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>value,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>)</font>
</dl>
<h4><a name="1052492">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1052493"><font size="2" face="'Courier New'" color="#000000"><em>value</em></font></a></strong>
</p>
<blockquote><a name="1069337">Specifies the partial cut area, which is above the current pin layer and inside (or outside) the macro on a layer.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1052498"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1069345">Optional argument that specifies the layer. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument. </blockquote>
<h3><a name="defwPinAntennaPinPartialMetalArea"></a><a name="1052485">defwPinAntennaPinPartialMetalArea</a></h3>
<p><a name="1052390">Writes an </a><font size="2" face="'Courier New'" color="#000000">ANTENNAPINPARTIALMETALAREA</font> statement. The <font size="2" face="'Courier New'" color="#000000">ANTENNAPINPARTIALMETALAREA</font> statement is optional and can be used more than once in a <font size="2" face="'Courier New'" color="#000000">PINS</font> section.</p>
<h4><a name="1052395">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052396">int defwPinAntennaPinPartialMetalArea(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>value,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>)</font>
</dl>
<h4><a name="1052397">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1052398"><font size="2" face="'Courier New'" color="#000000"><em>value</em></font></a></strong>
</p>
<blockquote><a name="1069353">Specifies the partial metal area, which is connected directly to the I&#47;O pin and the inside (or outside) of the macro on a layer.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1052401"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1069361">Optional argument that specifies the layer. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument. </blockquote>
<h3><a name="defwPinAntennaPinPartialMetalSideArea"></a><a name="1052404">defwPinAntennaPinPartialMetalSideArea</a></h3>
<p><a name="1052405">Writes an </a><font size="2" face="'Courier New'" color="#000000">ANTENNAPINPARTIALMETALSIDEAREA</font> statement. The <font size="2" face="'Courier New'" color="#000000">ANTENNAPINPARTIALMETALSIDEAREA</font> statement is optional and can be used more than once for each pin in a <font size="2" face="'Courier New'" color="#000000">PINS</font> statement.</p>
<h4><a name="1052414">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052415">int defwPinAntennaPinPartialMetalSideArea(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>value,<dd></em></font>const char* <font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>)</font>
</dl>
<h4><a name="1052416">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1052417"><font size="2" face="'Courier New'" color="#000000"><em>value</em></font></a></strong>
</p>
<blockquote><a name="1069369">Specifies the partial metal side wall area, which is connected directly to the I&#47;O pin and the inside (or outside) of the macro on a layer.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1052418"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1069377">Optional argument that specifies the layer. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument. </blockquote>
<h3><a name="defwPinGroundSensitivity"></a><a name="1060536">defwPinGroundSensitivity </a></h3>
<p><a name="1060685">Writes a </a><font size="2" face="'Courier New'" color="#000000">GROUNDSENSITIVITY</font> statement for a pin in the <font size="2" face="'Courier New'" color="#000000">PINS</font> statement. The <font size="2" face="'Courier New'" color="#000000">GROUNDSENSITIVITY</font> statement is optional and can be used only once for each pin in the <font size="2" face="'Courier New'" color="#000000">PINS</font> statement. </p>
<h4><a name="1060688">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1060689">defwPinGroundSensitivity( <dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>pinName</em></font>)</font>
</dl>
<h4><a name="1060694">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1060695"><font size="2" face="'Courier New'" color="#000000"><em>pinName</em></font></a></strong>
</p>
<blockquote><a name="1069385">Specifies that if this pin is connected to a tie&#45;low connection (such as </a><font size="2" face="'Courier New'" color="#000000">1'b0</font> in Verilog), it should connect to the same net to which <font size="2" face="'Courier New'" color="#000000"><em>pinName</em></font> is connected. </blockquote>
<h3><a name="defwPinLayer"></a><a name="1060684">defwPinLayer</a></h3>
<p><a name="1063534">Writes a </a><font size="2" face="'Courier New'" color="#000000">LAYER</font> statement for a pin in the PINS statement. Either a <font size="2" face="'Courier New'" color="#000000">LAYER</font> or a <font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement can be specified for a pin. The <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement is optional and can be used more than once for each pin in the <font size="2" face="'Courier New'" color="#000000">PINS</font> statement.</p>
<h4><a name="1063545">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1063565">defwPinLayer(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>spacing</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>designRuleWidth</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>xh</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>yh</em></font>)</font>
</dl>
<h4><a name="1063566">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1063567"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1069393">Specifies the routing layer used for the pin.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1063569"><font size="2" face="'Courier New'" color="#000000"><em>spacing</em></font></a></strong>
</p>
<blockquote><a name="1069401">Optional argument that specifies the minimum spacing allowed between this pin and any other routing shape. If you specify a minimum spacing, you must specify </a><font size="2" face="'Courier New'" color="#000000">0</font> for <font size="2" face="'Courier New'" color="#000000"><em>designRuleWidth</em></font>. Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument.</blockquote>
<p>
<strong></strong>
<strong><a name="1063570"><font size="2" face="'Courier New'" color="#000000"><em>designRuleWidth</em></font></a></strong>
</p>
<blockquote><a name="1069409">Optional argument that specifies that this pin has a width of designRuleWidth for the purpose of spacing calculations. If you specify a </a><font size="2" face="'Courier New'" color="#000000"><em>designRuleWidth</em></font> value, you must specify <font size="2" face="'Courier New'" color="#000000">0</font> for <font size="2" face="'Courier New'" color="#000000"><em>spacing</em></font>. Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument.</blockquote>
<p>
<strong></strong>
<strong><a name="1063571"><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yl</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>xh</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yh</em></font></strong>
</p>
<blockquote><a name="1069417">Specifies the physical geometry for the pin on the specified layer. </a></blockquote>
<h3><a name="defwPinNetExpr"></a><a name="1063533">defwPinNetExpr </a></h3>
<p><a name="1060617">Writes a </a><font size="2" face="'Courier New'" color="#000000">NETEXPR</font> statement for a pin in the <font size="2" face="'Courier New'" color="#000000">PINS</font> statement. The <font size="2" face="'Courier New'" color="#000000">NETEXPR</font> statement is optional and can be used only once for each pin in the <font size="2" face="'Courier New'" color="#000000">PINS</font> statement.</p>
<h4><a name="1060620">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1060621">defwPinNetExpr( <dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>pinExpr</em></font>)</font>
</dl>
<h4><a name="1060622">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1060623"><font size="2" face="'Courier New'" color="#000000"><em>pinExpr</em></font></a></strong>
</p>
<blockquote><a name="1069425">Specifies a net expression property name (such as power1 or power2). If </a><font size="2" face="'Courier New'" color="#000000"><em>pinExpr</em></font> matches a net expression property higher up in the netlist (for example, in Verilog, VHDL, or OpenAccess), then the property is evaluated, and the software identifies a net to which to connect this pin. </blockquote>
<h3><a name="defwPinPolygon"></a><a name="1060616">defwPinPolygon </a></h3>
<p><a name="1060554">Writes a </a><font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement for a pin in the <font size="2" face="'Courier New'" color="#000000">PINS</font> statement. Either a <font size="2" face="'Courier New'" color="#000000">LAYER</font> or a <font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement can be specified for a pin. The <font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement is optional and can be used more than once for each pin in the <font size="2" face="'Courier New'" color="#000000">PINS</font> statement. </p>
<h4><a name="1060558">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1060563">defwPinPolygon( <dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>spacing</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>designRuleWidth</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>num_polys</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>)</font>
</dl>
<h4><a name="1060564">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1060565"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1069433">Specifies the layer on which to generate a polygon.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1063525"><font size="2" face="'Courier New'" color="#000000"><em>spacing</em></font></a></strong>
</p>
<blockquote><a name="1069441">Optional argument that specifies the minimum spacing allowed between this pin and any other routing shape. If you specify a minimum spacing, you must specify </a><font size="2" face="'Courier New'" color="#000000">0</font> for <font size="2" face="'Courier New'" color="#000000"><em>designRuleWidth</em></font>. Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument.</blockquote>
<p>
<strong></strong>
<strong><a name="1063521"><font size="2" face="'Courier New'" color="#000000"><em>designRuleWidth</em></font></a></strong>
</p>
<blockquote><a name="1069449">Optional argument that specifies that this pin has a width of designRuleWidth for the purpose of spacing calculations. If you specify a </a><font size="2" face="'Courier New'" color="#000000"><em>designRuleWidth</em></font> value, you must specify <font size="2" face="'Courier New'" color="#000000">0</font> for <font size="2" face="'Courier New'" color="#000000"><em>spacing</em></font>. Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument.</blockquote>
<p>
<strong></strong>
<strong><a name="1063520"><font size="2" face="'Courier New'" color="#000000"><em>num_polys</em></font></a></strong>
</p>
<blockquote><a name="1069457">Specifies the number of polygon sides.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1060575"><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yl</em></font></strong>
</p>
<blockquote><a name="1069465">Specifies a sequence of points to generate a polygon for the pin. The polygon edges must be parallel to the x axis, the y axis, or at a 45&#45;degree angle. </a></blockquote>
<h3><a name="defwPinPort"></a><a name="1060673">defwPinPort</a></h3>
<p><a name="1064811">Writes a </a><font size="2" face="'Courier New'" color="#000000">PORT</font> statement for a pin in the <font size="2" face="'Courier New'" color="#000000">PINS</font> statement. The <font size="2" face="'Courier New'" color="#000000">PORT</font> statement is optional and can be used more than once in a <font size="2" face="'Courier New'" color="#000000">PINS</font> statement. </p>
<h4><a name="1064469">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1064470"><font color="#000000">int defwPinPort()</font></a></font>
</dl>
<h3><a name="defwPinPortLayer"></a><a name="1064443">defwPinPortLayer</a></h3>
<p><a name="1064488">Writes a </a><font size="2" face="'Courier New'" color="#000000">LAYER</font> statement for a <font size="2" face="'Courier New'" color="#000000">PINS PORT</font> statement. Either a <font size="2" face="'Courier New'" color="#000000">LAYER,</font> <font size="2" face="'Courier New'" color="#000000">POLYGON</font>, or <font size="2" face="'Courier New'" color="#000000">VIA </font>statement can be specified for a pin port. This routine is optional and is called after <font size="2" face="'Courier New'" color="#000000">defwPinPort</font>. </p>
<h4><a name="1064489">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1064564">int defwPinPortLayer(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>spacing</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>designRuleWidth</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>xh</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>yh</em></font>)</font>
</dl>
<h4><a name="1064491">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1064492"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1069473">Specifies the layer name. </a></blockquote>
<p>
<strong></strong>
<strong><a name="1064840"><font size="2" face="'Courier New'" color="#000000"><em>spacing</em></font></a></strong>
</p>
<blockquote><a name="1069480">Optional argument that specifies the minimum spacing allowed between this pin port and any other routing shape. If you specify </a><font size="2" face="'Courier New'" color="#000000"><em>spacing</em></font>, you must specify <font size="2" face="'Courier New'" color="#000000">0</font> for <font size="2" face="'Courier New'" color="#000000"><em>designRuleWidth</em></font>. Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument. </blockquote>
<p>
<strong></strong>
<strong><a name="1064841"><font size="2" face="'Courier New'" color="#000000"><em>designRuleWidth</em></font></a></strong>
</p>
<blockquote><a name="1069488">Optional argument that specifies that this pin port has a width of </a><font size="2" face="'Courier New'" color="#000000"><em>designRuleWidth</em></font> for the purpose of spacing calculations. If you specify <font size="2" face="'Courier New'" color="#000000"><em>designRuleWidth</em></font>, you must specify <font size="2" face="'Courier New'" color="#000000">0</font> for <font size="2" face="'Courier New'" color="#000000"><em>spacing</em></font>. Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument.</blockquote>
<p>
<strong></strong>
<strong><a name="1064838"><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yl</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>xh</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yh</em></font></strong>
</p>
<blockquote><a name="1069496">Specifies the physical geometry for the pin port on the specified layer.</a></blockquote>
<h3><a name="defwPinPortLocation"></a><a name="1064450">defwPinPortLocation</a></h3>
<p><a name="1064979">Writes a </a><font size="2" face="'Courier New'" color="#000000">FIXED</font>, <font size="2" face="'Courier New'" color="#000000">PLACED</font>, or <font size="2" face="'Courier New'" color="#000000">COVER</font> statement for a <font size="2" face="'Courier New'" color="#000000">PINS PORT</font> statement. This routine is optional and is called after <font size="2" face="'Courier New'" color="#000000">defwPinPort</font>. </p>
<h4><a name="1064502">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1064636">int defwPinPortLocation(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>status</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>statusX</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>statusY</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>orient</em></font>)</font>
</dl>
<h4><a name="1064504">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1065024"><font size="2" face="'Courier New'" color="#000000"><em>status</em></font></a></strong>
</p>
<blockquote><a name="1069503">Specifies the placement status of the pin. <br>Value: specify one of the following: </a></blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="647">
<caption>
<tr>
<td cellpadding="4" valign="top" width="196">
<p><a name="1065027">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="152">
<p><a name="1065029"><font size="2" face="'Courier New'" color="#000000">COVER</font></a></p>
</td>
<td cellpadding="4" valign="top" width="298">
<p><a name="1065031">Specifies that the pin has a location and is a part of the cover macro. It cannot be moved by automatic tools or interactive commands.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1065033">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1065035"><font size="2" face="'Courier New'" color="#000000">FIXED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1065037">Specifies that the pin has a location and cannot be moved by automatic tools but can be moved by interactive commands.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1065039">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1065041"><font size="2" face="'Courier New'" color="#000000">PLACED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1065043">Specifies that the pin has a location, but can be moved during automatic layout.</a></p>
</td>
</tr>
</table>
<p>
<strong></strong>
<strong><a name="1065068"><font size="2" face="'Courier New'" color="#000000"><em>statusX</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>statusY</em></font></strong>
</p>
<blockquote><a name="1069510">Specifies the placement location of the pin. If you specify </a><font size="2" face="'Courier New'" color="#000000"><em>status</em></font>, you must specify these arguments. </blockquote>
<p>
<strong></strong>
<strong><a name="1065069"><font size="2" face="'Courier New'" color="#000000"><em>orient</em></font></a></strong>
</p>
<blockquote><a name="1069517">Specifies the orientation of the pin.<br></a><font color="#000000"><em>Value:</em></font> <font size="2" face="'Courier New'" color="#000000">0</font> to <font size="2" face="'Courier New'" color="#000000">7</font>. For more information, see <a href="ch1Intro.html#1019049" title="1"><font color="Blue"><u>"Orientation Codes"</u></font></a><a href="ch1Intro.html#1019049" title="1"></a>.</blockquote>
<h3><a name="defwPinPortPolygon"></a><a name="1064444">defwPinPortPolygon</a></h3>
<p><a name="1064876">Writes a </a><font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement for a <font size="2" face="'Courier New'" color="#000000">PINS PORT</font> statement. Either a <font size="2" face="'Courier New'" color="#000000">LAYER,</font> <font size="2" face="'Courier New'" color="#000000">POLYGON</font>, or <font size="2" face="'Courier New'" color="#000000">VIA </font>statement can be specified for a pin port. This routine is optional and is called after <font size="2" face="'Courier New'" color="#000000">defwPinPort</font>. </p>
<h4><a name="1064515">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1064696">int defwPinPortPolygon(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>spacing</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>designRuleWidth</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>num_polys</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>)</font>
</dl>
<h4><a name="1064517">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1064518"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1069524">Specifies the layer name. </a></blockquote>
<p>
<strong></strong>
<strong><a name="1064903"><font size="2" face="'Courier New'" color="#000000"><em>spacing</em></font></a></strong>
</p>
<blockquote><a name="1069531">Optional argument that specifies the minimum spacing allowed between this pin port and any other routing shape. If you specify a minimum spacing, you must specify </a><font size="2" face="'Courier New'" color="#000000">0</font> for <font size="2" face="'Courier New'" color="#000000"><em>designRuleWidth</em></font>. Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument.</blockquote>
<p>
<strong></strong>
<strong><a name="1064904"><font size="2" face="'Courier New'" color="#000000"><em>designRuleWidth</em></font></a></strong>
</p>
<blockquote><a name="1069539">Optional argument that specifies that this pin port has a width of </a><font size="2" face="'Courier New'" color="#000000"><em>designRuleWidth</em></font> for the purpose of spacing calculations. If you specify <font size="2" face="'Courier New'" color="#000000"><em>designRuleWidth</em></font>, you must specify <font size="2" face="'Courier New'" color="#000000">0</font> for <font size="2" face="'Courier New'" color="#000000"><em>spacing</em></font>. Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument.</blockquote>
<p>
<strong></strong>
<strong><a name="1064905"><font size="2" face="'Courier New'" color="#000000"><em>num_polys</em></font></a></strong>
</p>
<blockquote><a name="1069547">Specifies the number of polygon sides.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1064906"><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yl</em></font></strong>
</p>
<blockquote><a name="1069555">Specifies a sequence of points to generate a polygon for the pin port. The polygon edges must be parallel to the x axis, the y axis, or at a 45&#45;degree angle. </a></blockquote>
<h3><a name="defwPinPortVia"></a><a name="1064445">defwPinPortVia</a></h3>
<p><a name="1064932">Writes a </a><font size="2" face="'Courier New'" color="#000000">VIA</font> statement for a <font size="2" face="'Courier New'" color="#000000">PINS PORT</font> statement. Either a <font size="2" face="'Courier New'" color="#000000">LAYER,</font> <font size="2" face="'Courier New'" color="#000000">POLYGON</font>, or <font size="2" face="'Courier New'" color="#000000">VIA </font>statement can be specified for a pin port. This routine is optional and is called after <font size="2" face="'Courier New'" color="#000000">defwPinPort</font>. </p>
<h4><a name="1064524">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1064525"><font color="#000000">int defwPinPortVia(<dd>const char* </font></a><font size="2" face="'Courier New'" color="#000000"><em>viaName</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>)</font>
</dl>
<h4><a name="1064526">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1064968"><font size="2" face="'Courier New'" color="#000000"><em>viaName</em></font></a></strong>
</p>
<blockquote><a name="1069563">Specifies the via name. The via name must have been defined in the associated LEF files or this DEF file before this function is called. </a></blockquote>
<p>
<strong></strong>
<strong><a name="1064969"><font size="2" face="'Courier New'" color="#000000"><em>x1 y1</em></font></a></strong>
</p>
<blockquote><a name="1069570">Specifies the point at which the via is to be placed. </a></blockquote>
<h3><a name="defwPinSupplySensitivity"></a><a name="1064442">defwPinSupplySensitivity </a></h3>
<p><a name="1060675">Writes a </a><font size="2" face="'Courier New'" color="#000000">SUPPLYSENSITIVITY</font> statement for a pin in the <font size="2" face="'Courier New'" color="#000000">PINS</font> statement. The <font size="2" face="'Courier New'" color="#000000">SUPPLYSENSITIVITY</font> statement is optional and can be used only once for each pin in the <font size="2" face="'Courier New'" color="#000000">PINS</font> statement. </p>
<h4><a name="1060679">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1060680">defwPinSupplySensitivity( <dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>pinName</em></font>)</font>
</dl>
<h4><a name="1060681">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1060682"><font size="2" face="'Courier New'" color="#000000"><em>pinName</em></font></a></strong>
</p>
<blockquote><a name="1069577">Specifies that if this pin is connected to a tie&#45;high connection (such as </a><font size="2" face="'Courier New'" color="#000000">1'b1</font> in Verilog), it should connect to the same net to which <font size="2" face="'Courier New'" color="#000000"><em>pinName</em></font> is connected.</blockquote>
<h3><a name="defwPinVia"></a><a name="1064530">defwPinVia</a></h3>
<p><a name="1064533">Writes a </a><font size="2" face="'Courier New'" color="#000000">VIA</font> statement for a pin in the <font size="2" face="'Courier New'" color="#000000">PINS</font> statement. The <font size="2" face="'Courier New'" color="#000000">VIA</font> statement is optional and can be used more than once for a pin. </p>
<h4><a name="1064534">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1064535"><font color="#000000">int defwPinVia(<dd>const char* </font></a><font size="2" face="'Courier New'" color="#000000"><em>viaName</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>)</font>
</dl>
<h4><a name="1064536">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1064537"><font size="2" face="'Courier New'" color="#000000"><em>viaName</em></font></a></strong>
</p>
<blockquote><a name="1069584">Specifies the via name. The via name must have been defined in the associated LEF files or this DEF file before this function is called. </a></blockquote>
<p>
<strong></strong>
<strong><a name="1064773"><font size="2" face="'Courier New'" color="#000000"><em>x1 y1</em></font></a></strong>
</p>
<blockquote><a name="1069591">Specifies the point at which the via is to be placed. </a></blockquote>
<h3><a name="1047573">Pins Example</a></h3>
<p><a name="1048660">The following example shows a callback routine with the type </a><font size="2" face="'Courier New'" color="#000000">defwPinCbkType</font>.</p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052688">int pinCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd><dd> &#47;&#47; Check if the type is correct<dd> if (type != defwPinCbkType) {<dd> printf(&#34;Type is not defwPinCbkType, terminate<dd>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writing.\n&#34;);<dd> return 1;<dd> }<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052689"> &nbsp;&nbsp;&nbsp;&nbsp;res = defwStartPins(1);<dd> CHECK_RES(res);<dd> res = defwPin(&#34;scanpin&#34;, &#34;SCAN&#34;, 0, &#34;INPUT&#34;, NULL, NULL, 0,<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0, &#45;1, NULL, 0, 0, 0, 0);<dd> CHECK_RES(res);<dd> res = defwEndPins();<dd> CHECK_RES(res);<dd> return 0;}</a></font>
</dl>
<h2><a name="1024591">Pin Properties</a></h2>
<p><a name="1032579">The Pin Properties routines write a DEF </a><font size="2" face="'Courier New'" color="#000000">PINPROPERTIES</font> statement. The <font size="2" face="'Courier New'" color="#000000">PINPROPERTIES</font> statement is optional and can be used only once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">PINPROPERTIES</font> statement, see <a href="../lefdefref/DEFSyntax.html#PinProperties" target="external_window"><font color="#0000ff"><u>"Pin Properties"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>. </p>
<p><a name="1032587">You must begin and end a DEF </a><font size="2" face="'Courier New'" color="#000000">PINPROPERTIES</font> statement with the <font size="2" face="'Courier New'" color="#000000">defwStartPinProperties</font> and <font size="2" face="'Courier New'" color="#000000">defwEndPinProperties</font> routines. You must define all pin properties between these routines. Each property definition must start with a <font size="2" face="'Courier New'" color="#000000">defwPinProperty</font> routine.</p>
<p><a name="1057416">If the DEF file contains a </a><font size="2" face="'Courier New'" color="#000000">PINS</font> statement, the <font size="2" face="'Courier New'" color="#000000">PINPROPERTIES</font> statement must follow it. For more information about the DEF <font size="2" face="'Courier New'" color="#000000">PINS</font> writer routines, see <a href="#1024550" title="6"><font color="Blue"><u>"Pins"</u></font></a><a href="#1024550" title="6"></a>.</p>
<p><a name="1051149">For examples of the routines described here, see</a><a href="#1048674" title="6"><font color="Blue"><u>"Pin Properties Example"</u></font></a><a href="#1048674" title="6"></a>.</p>
<p><font color="#000000"><strong>Note: </strong></font><a name="1039761">To write a </a><font size="2" face="'Courier New'" color="#000000">PROPERTY</font> statement for a pin, you must use one of the property routines immediately following the <font size="2" face="'Courier New'" color="#000000">defwPinProperty</font> routine, which specifies the pin name. For more information, see <a href="#1032848" title="6"><font color="Blue"><u>"Property Statements"</u></font></a><a href="#1032848" title="6"></a>.</p>
<p><a name="1032592">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="1025210">defwStartPinProperties</a></h3>
<p><a name="1042148">Starts a </a><font size="2" face="'Courier New'" color="#000000">PINPROPERTIES</font> statement. </p>
<h4><a name="1042162">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1042130">int defwStartPinProperties(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>count</em></font>)</font>
</dl>
<h4><a name="1042141">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1042227"><font size="2" face="'Courier New'" color="#000000"><em>count</em></font></a></strong>
</p>
<blockquote><a name="1069605">Specifies the number of pin properties defined in the </a><font size="2" face="'Courier New'" color="#000000">PINPROPERTIES</font> statement.</blockquote>
<h3><a name="1024605">defwEndPinProperties</a></h3>
<p><a name="1042204">Ends the </a><font size="2" face="'Courier New'" color="#000000">PINPROPERTIES</font> statement. If <font size="2" face="'Courier New'" color="#000000"><em>count</em></font> specified in <font size="2" face="'Courier New'" color="#000000">defwStartPinProperties</font> is not the same as the actual number of <font size="2" face="'Courier New'" color="#000000">defwPinProperty</font> routines used, <font size="2" face="'Courier New'" color="#000000">defwEndPinProperties</font> returns <font size="2" face="'Courier New'" color="#000000">DEFW_BAD_DATA</font>. This routine does not require any arguments.</p>
<h4><a name="1042181">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1042182">int defwEndPinProperties(void)</a></font>
</dl>
<h3><a name="1024617">defwPinProperty</a></h3>
<p><a name="1042265">Begins a property definition. This routine is required and can be used more than once in a </a><font size="2" face="'Courier New'" color="#000000">PINPROPERTIES</font> statement.</p>
<h4><a name="1042240">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1042241">int defwPinProperty(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>component</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pinName</em></font>)</font>
</dl>
<h4><a name="1042256">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1047575"><font size="2" face="'Courier New'" color="#000000"><em>component</em></font></a></strong>
</p>
<blockquote><a name="1069616">Specifies either the string to use for the component pin name, or the keyword </a><font size="2" face="'Courier New'" color="#000000">PIN</font>.</blockquote>
<p>
<strong></strong>
<strong><a name="1048673"><font size="2" face="'Courier New'" color="#000000"><em>pinName</em></font></a></strong>
</p>
<blockquote><a name="1069624">Specifies the I&#47;O pin name. Specify this value only when </a><font size="2" face="'Courier New'" color="#000000"><em>component</em></font> is set to <font size="2" face="'Courier New'" color="#000000">PIN</font>.</blockquote>
<h3><a name="1048674">Pin Properties Example</a></h3>
<p><a name="1048679">The following example shows a callback routine with the type </a><font size="2" face="'Courier New'" color="#000000">defwPinPropCbkType</font>.</p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050078">int pinpropCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd><dd> &#47;&#47; Check if the type is correct<dd> if (type != defwPinPropCbkType) {<dd> printf(&#34;Type is not defwPinPropCbkType, terminate<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writing.\n&#34;);<dd> return 1;<dd> }<dd><dd> res = defwStartPinProperties(2);<dd> CHECK_RES(res);<dd> res = defwPinProperty(&#34;cell1&#34;, &#34;PB1&#34;);<dd> CHECK_RES(res);<dd> res = defwStringProperty(&#34;dpBit&#34;, &#34;1&#34;);<dd> CHECK_RES(res);<dd> res = defwRealProperty(&#34;realProperty&#34;, 3.4);<dd> CHECK_RES(res);<dd> res = defwPinProperty(&#34;cell2&#34;, &#34;vdd&#34;);<dd> CHECK_RES(res);<dd> res = defwIntProperty(&#34;dpIgnoreTerm&#34;, 2);<dd> CHECK_RES(res);<dd> res = defwEndPinProperties();<dd> CHECK_RES(res);<dd> return 0;}</a></font>
</dl>
<h2><a name="1048676">Property Definitions</a></h2>
<p><a name="1032670">The Property Definitions routines write a DEF </a><font size="2" face="'Courier New'" color="#000000">PROPERTYDEFINITIONS</font> statement. The <font size="2" face="'Courier New'" color="#000000">PROPERTYDEFINITIONS</font> statement is optional and can be used only once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">PROPERTYDEFINITIONS</font> statement, see <font color="#0000ff"><u>Property </u></font><a href="../lefdefref/DEFSyntax.html#PropertyDefinitions" target="external_window"><font color="#0000ff"><u>Definitions</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1032678">You must begin and end a DEF </a><font size="2" face="'Courier New'" color="#000000">PROPERTYDEFINITIONS</font> statement with the <font size="2" face="'Courier New'" color="#000000">defwStartPropDef</font> and <font size="2" face="'Courier New'" color="#000000">defwEndPropDef</font> routines. You must define all properties between these routines.</p>
<p><a name="1057465">If the DEF file contains a </a><font size="2" face="'Courier New'" color="#000000">HISTORY</font> statement, the <font size="2" face="'Courier New'" color="#000000">PROPERTYDEFINITIONS</font> statement must follow it. For more information about the DEF <font size="2" face="'Courier New'" color="#000000">HISTORY</font> routine, see <a href="#1025497" title="6"><font color="Blue"><u>"History"</u></font></a><a href="#1025497" title="6"></a>.</p>
<p><a name="1051159">For examples of the routines described here, see </a><a href="#1047582" title="6"><font color="Blue"><u>"Property Definitions Example"</u></font></a><a href="#1047582" title="6"></a>.</p>
<p><a name="1032683">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="1025211">defwStartPropDef</a></h3>
<p><a name="1042366">Starts a </a><font size="2" face="'Courier New'" color="#000000">PROPERTYDEFINITIONS</font> statement. This routine does not require any arguments.</p>
<h4><a name="1042343">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1042344">int defwStartPropDef(void)</a></font>
</dl>
<h3><a name="1024640">defwEndPropDef</a></h3>
<p><a name="1042396">Ends the </a><font size="2" face="'Courier New'" color="#000000">PROPERTYDEFINITIONS</font> statement. This routine does not require any arguments.</p>
<h4><a name="1042384">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1042385">int defwEndPropDef(void)</a></font>
</dl>
<h3><a name="1047335">defwIntPropDef</a></h3>
<p><a name="1047336">Writes an integer property definition. This routine is optional and can be used more than once in a </a><font size="2" face="'Courier New'" color="#000000">PROPERTYDEFINITIONS</font> statement.</p>
<h4><a name="1047337">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047338">int defwIntPropDef(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>objType</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>propName</em></font>,<dd>double <font size="2" face="'Courier New'" color="#000000"><em>leftRange</em></font>,<dd>double <font size="2" face="'Courier New'" color="#000000"><em>rightRange</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>value</em></font>) </font>
</dl>
<h4><a name="1047339">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1047340"><font size="2" face="'Courier New'" color="#000000"><em>objType</em></font></a></strong>
</p>
<blockquote><a name="1069631">Specifies the type of object for which you can define properties.<br></a><font color="#000000"><em>Value:</em></font> <font size="2" face="'Courier New'" color="#000000">DESIGN</font>, <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">NET</font>, <font size="2" face="'Courier New'" color="#000000">SPECIALNET</font>, <font size="2" face="'Courier New'" color="#000000">GROUP</font>, <font size="2" face="'Courier New'" color="#000000">ROW</font>, <font size="2" face="'Courier New'" color="#000000">COMPONENTPIN</font>, <font size="2" face="'Courier New'" color="#000000">NONDEFAULTRULE</font>, or <font size="2" face="'Courier New'" color="#000000">REGION</font></blockquote>
<p>
<strong></strong>
<strong><a name="1047341"><font size="2" face="'Courier New'" color="#000000"><em>propName</em></font></a></strong>
</p>
<blockquote><a name="1069638">Specifies a unique property name for the object type.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1047343"><font size="2" face="'Courier New'" color="#000000"><em>leftRange</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>rightRange</em></font></strong>
</p>
<blockquote><a name="1069645">Optional arguments that limit integer property values to a specified range. That is, the value must be greater than or equal to </a><font size="2" face="'Courier New'" color="#000000"><em>leftRange</em></font> and less than or equal to <font size="2" face="'Courier New'" color="#000000"><em>rightRange</em></font>. Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore these arguments.</blockquote>
<p>
<strong></strong>
<strong><a name="1047344"><font size="2" face="'Courier New'" color="#000000"><em>value</em></font></a></strong>
</p>
<blockquote><a name="1069652">Optional argument that specifies a numeric value for an object. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument. </blockquote>
<h3><a name="1047352">defwRealPropDef</a></h3>
<p><a name="1047412">Writes a real property definition. This routine is optional and can be used more than once in a </a><font size="2" face="'Courier New'" color="#000000">PROPERTYDEFINITIONS</font> statement.</p>
<h4><a name="1047354">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047355">int defwRealPropDef(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>objType</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>propName</em></font>,<dd>double <font size="2" face="'Courier New'" color="#000000"><em>leftRange</em></font>,<dd>double <font size="2" face="'Courier New'" color="#000000"><em>rightRange</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>value</em></font>) </font>
</dl>
<h4><a name="1047356">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1057509"><font size="2" face="'Courier New'" color="#000000"><em>objType</em></font></a></strong>
</p>
<blockquote><a name="1069659">Specifies the type of object for which you can define properties.<br></a><font color="#000000"><em>Value:</em></font> Specify <font size="2" face="'Courier New'" color="#000000">DESIGN</font>, <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">NET</font>, <font size="2" face="'Courier New'" color="#000000">SPECIALNET</font>, <font size="2" face="'Courier New'" color="#000000">GROUP</font>, <font size="2" face="'Courier New'" color="#000000">ROW</font>, <font size="2" face="'Courier New'" color="#000000">COMPONENTPIN</font>, <font size="2" face="'Courier New'" color="#000000">NONDEFAULTRULE</font>, or <font size="2" face="'Courier New'" color="#000000">REGION</font></blockquote>
<p>
<strong></strong>
<strong><a name="1057517"><font size="2" face="'Courier New'" color="#000000"><em>propName</em></font></a></strong>
</p>
<blockquote><a name="1069684">Specifies a unique property name for the object type.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1057521"><font size="2" face="'Courier New'" color="#000000"><em>leftRange rightRange</em></font></a></strong>
</p>
<blockquote><a name="1069691">Optional arguments that limit real number property values to a specified range. That is, the value must be greater than or equal to </a><font size="2" face="'Courier New'" color="#000000"><em>leftRange</em></font> and less than or equal to <font size="2" face="'Courier New'" color="#000000"><em>rightRange</em></font>. Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore these arguments.</blockquote>
<p>
<strong></strong>
<strong><a name="1047357"><font size="2" face="'Courier New'" color="#000000"><em>value</em></font></a></strong>
</p>
<blockquote><a name="1069698">Optional argument that specifies a numeric value for an object. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument.</blockquote>
<h3><a name="1047369">defwStringPropDef</a></h3>
<p><a name="1047416">Writes a string property definition. This routine is optional and can be used more than once in a </a><font size="2" face="'Courier New'" color="#000000">PROPERTYDEFINITIONS</font> statement.</p>
<h4><a name="1047371">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1047372">int defwStringPropDef(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>objType</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>propName</em></font>,<dd>double <font size="2" face="'Courier New'" color="#000000"><em>leftRange</em></font>,<dd>double <font size="2" face="'Courier New'" color="#000000"><em>rightRange</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>value</em></font>) </font>
</dl>
<h4><a name="1047373">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1069710"><font size="2" face="'Courier New'" color="#000000"><em>objType</em></font></a></strong>
</p>
<blockquote><a name="1069718">Specifies the type of object for which you can define properties.<br></a><font color="#000000"><em>Value:</em></font> <font size="2" face="'Courier New'" color="#000000">DESIGN</font>, <font size="2" face="'Courier New'" color="#000000">COMPONENT</font>, <font size="2" face="'Courier New'" color="#000000">NET</font>, <font size="2" face="'Courier New'" color="#000000">SPECIALNET</font>, <font size="2" face="'Courier New'" color="#000000">GROUP</font>, <font size="2" face="'Courier New'" color="#000000">ROW</font>, <font size="2" face="'Courier New'" color="#000000">COMPONENTPIN</font>, <font size="2" face="'Courier New'" color="#000000">NONDEFAULTRULE</font>, or <font size="2" face="'Courier New'" color="#000000">REGION</font></blockquote>
<p>
<strong></strong>
<strong><a name="1057537"><font size="2" face="'Courier New'" color="#000000"><em>propName</em></font></a></strong>
</p>
<blockquote><a name="1069725">Specifies a unique property name for the object type.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1057546"><font size="2" face="'Courier New'" color="#000000"><em>leftRange</em></font></a> <font size="2" face="'Courier New'" color="#000000"><em>rightRange</em></font></strong>
</p>
<blockquote><a name="1069732">Optional arguments that limit string property values to a specified range. That is, the value must be greater than or equal to </a><font size="2" face="'Courier New'" color="#000000"><em>leftRange</em></font> and less than or equal to <font size="2" face="'Courier New'" color="#000000"><em>rightRange</em></font>. Specify <font size="2" face="'Courier New'" color="#000000">0</font> to ignore these arguments.</blockquote>
<p>
<strong></strong>
<strong><a name="1057538"><font size="2" face="'Courier New'" color="#000000"><em>value</em></font></a></strong>
</p>
<blockquote><a name="1069739">Optional argument that specifies a character value for an object. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument.</blockquote>
<h3><a name="1047582">Property Definitions Example</a></h3>
<p><a name="1048717">The following example shows a callback routine with the type </a><font size="2" face="'Courier New'" color="#000000">defwPropDefCbkType</font>.</p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050081">int pinCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd><dd> &#47;&#47; Check if the type is correct<dd> if (type != defwPropDefCbkType) {<dd> printf(&#34;Type is not defwPropDefCbkType, terminate<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writing.\n&#34;);<dd> return 1;<dd> }<dd><dd> res = defwStartPropDef();<dd> check_res(res);<dd> defwAddComment(&#34;defwPropDef is broken into 3 routines,<dd> &nbsp;&nbsp;&nbsp;&nbsp;defwStringPropDef&#34;);<dd> defwAddComment(&#34;defwIntPropDef, and defwRealPropDef&#34;);<dd> res = defwStringPropDef(&#34;REGION&#34;, &#34;scum&#34;, 0, 0, NULL);<dd> CHECK_RES(res);<dd> res = defwIntPropDef(&#34;REGION&#34;, &#34;center&#34;, 0, 0, NULL);<dd> CHECK_RES(res);<dd> res = defwRealPropDef(&#34;REGION&#34;, &#34;area&#34;, 0, 0, NULL);<dd> CHECK_RES(res);<dd> res = defwStringPropDef(&#34;GROUP&#34;, &#34;ggrp&#34;, 0, 0, NULL);<dd> CHECK_RES(res);<dd> res = defwEndPropDef();<dd> CHECK_RES(res);<dd> return 0;}</a></font>
</dl>
<h2><a name="1032848">Property Statements</a></h2>
<p><a name="1032862">The Property Statements routines write </a><font size="2" face="'Courier New'" color="#000000">PROPERTY</font> statements when used after the <font size="2" face="'Courier New'" color="#000000">defwRow</font>, <font size="2" face="'Courier New'" color="#000000">defwRegion</font>, <font size="2" face="'Courier New'" color="#000000">defwComponent</font>, <font size="2" face="'Courier New'" color="#000000">defwPin</font>, defwPinProperty, <font size="2" face="'Courier New'" color="#000000">defwSpecialNet</font>, <font size="2" face="'Courier New'" color="#000000">defwNet</font>, <font size="2" face="'Courier New'" color="#000000">defwNonDefaultRule</font>, or <font size="2" face="'Courier New'" color="#000000">defwGroup</font> routines. </p>
<p><a name="1051173">For examples of the routines described here, see </a><a href="#1050379" title="6"><font color="Blue"><u>"Property Statements Example"</u></font></a><a href="#1050379" title="6"></a>.</p>
<h3><a name="1032857">defwIntProperty</a></h3>
<p><a name="1042489">Writes a </a><font size="2" face="'Courier New'" color="#000000">PROPERTY</font> statement with an integer value<font color="#000000"><em>. </em></font>This statement is optional and can be used more than once.</p>
<h4><a name="1042469">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1042470">int defwIntProperty(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>propName</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>propValue</em></font>)</font>
</dl>
<h4><a name="1042481">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1042567"><font size="2" face="'Courier New'" color="#000000"><em>propName</em></font></a></strong>
</p>
<blockquote><a name="1069746">Specifies a unique property name for the object.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1042568"><font size="2" face="'Courier New'" color="#000000"><em>propValue</em></font></a></strong>
</p>
<blockquote><a name="1069753">Specifies an integer value for the object.</a></blockquote>
<h3><a name="1042569">defwRealProperty</a></h3>
<p><a name="1042538">Writes a </a><font size="2" face="'Courier New'" color="#000000">PROPERTY</font> statement with a real number value<font color="#000000"><em>. </em></font>This statement is optional and can be used more than once.</p>
<h4><a name="1042515">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1042516">int defwRealProperty(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>propName</em></font>,<dd>double <font size="2" face="'Courier New'" color="#000000"><em>propValue</em></font>)</font>
</dl>
<h4><a name="1042531">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1042553"><font size="2" face="'Courier New'" color="#000000"><em>propName</em></font></a></strong>
</p>
<blockquote><a name="1069760">Specifies a unique property name for the object.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1042554"><font size="2" face="'Courier New'" color="#000000"><em>propValue</em></font></a></strong>
</p>
<blockquote><a name="1069767">Specifies a real value for the object.</a></blockquote>
<h3><a name="1024686">defwStringProperty</a></h3>
<p><a name="1042593">Writes a </a><font size="2" face="'Courier New'" color="#000000">PROPERTY</font> statement with a string value. This statement is optional and can be used more than once.</p>
<h4><a name="1042581">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1042582">int defwStringProperty(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>propName</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>propValue</em></font>)</font>
</dl>
<p>
<strong></strong>
<strong><a name="1042606"><font size="2" face="'Courier New'" color="#000000"><em>propName</em></font></a></strong>
</p>
<blockquote><a name="1069774">Specifies a unique property name for the object.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1042607"><font size="2" face="'Courier New'" color="#000000"><em>propValue</em></font></a></strong>
</p>
<blockquote><a name="1069781">Specifies a string value for the object.</a></blockquote>
<h3><a name="1050379">Property Statements Example</a></h3>
<p><a name="1050380">The following example shows how to create a property inside a Rows callback routine.</a></p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050084">int rowCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd><dd> ...<dd> res = defwRealProperty(&#34;minlength&#34;, 50.5);<dd> CHECK_RES(res);<dd> res = defwStringProperty(&#34;firstName&#34;, &#34;Only&#34;);<dd> CHECK_RES(res);<dd> res = defwIntProperty(&#34;idx&#34;, 1);<dd> CHECK_RES(res);<dd> ...<dd><dd> return 0;}</a></font>
</dl>
<h2><a name="1035438">Regions</a></h2>
<p><a name="1035439">The Regions routines write a DEF </a><font size="2" face="'Courier New'" color="#000000">REGIONS</font> statement. The <font size="2" face="'Courier New'" color="#000000">REGIONS</font> statement is optional and can be used only once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">REGIONS</font> statement, see <a href="../lefdefref/DEFSyntax.html#Regions" target="external_window"><font color="#0000ff"><u>"Regions"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1051185">You must begin and end a DEF </a><font size="2" face="'Courier New'" color="#000000">REGIONS</font> statement with the <font size="2" face="'Courier New'" color="#000000">defwStartRegions</font> and <font size="2" face="'Courier New'" color="#000000">defwEndRegions</font> routines. You must define all regions between these routines. Each region definition must start with a <font size="2" face="'Courier New'" color="#000000">defwRegions</font> routine.</p>
<p><a name="1057585">If the DEF file contains a </a><font size="2" face="'Courier New'" color="#000000">VIAS</font> statement, the <font size="2" face="'Courier New'" color="#000000">REGIONS</font> statement must follow it. For more information about the DEF <font size="2" face="'Courier New'" color="#000000">VIAS</font> routines, see <a href="#1024881" title="6"><font color="Blue"><u>"Vias"</u></font></a><a href="#1024881" title="6"></a>.</p>
<p><a name="1051192">For examples of the routines described here, see </a><a href="#1047584" title="6"><font color="Blue"><u>"Regions Example"</u></font></a><a href="#1047584" title="6"></a>.</p>
<p><font color="#000000"><strong>Note: </strong></font><a name="1051186">To write a </a><font size="2" face="'Courier New'" color="#000000">PROPERTY</font> statement for the region, you must use one of the property routines immediately following the <font size="2" face="'Courier New'" color="#000000">defwRegion</font> routines. For more information, see <a href="#1032848" title="6"><font color="Blue"><u>"Property Statements"</u></font></a><a href="#1032848" title="6"></a>.</p>
<p><a name="1032931">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="1029887">defwStartRegions</a></h3>
<p><a name="1042675">Starts a </a><font size="2" face="'Courier New'" color="#000000">REGIONS</font> statement. </p>
<h4><a name="1042656">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1042657">int defwStartRegions(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>count</em></font>)</font>
</dl>
<h4><a name="1042668">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1042670"><font size="2" face="'Courier New'" color="#000000"><em>count</em></font></a></strong>
</p>
<blockquote><a name="1069788">Specifies the number of regions defined in the </a><font size="2" face="'Courier New'" color="#000000">REGIONS</font> statement. </blockquote>
<h3><a name="1029901">defwEndRegions</a></h3>
<p><a name="1042721">Ends the </a><font size="2" face="'Courier New'" color="#000000">REGIONS</font> statement. If <font size="2" face="'Courier New'" color="#000000"><em>count</em></font> specified in <font size="2" face="'Courier New'" color="#000000">defwStartRegions</font> is not the same as the actual number of <font size="2" face="'Courier New'" color="#000000">defwRegionName</font> routines used, this routine returns <font size="2" face="'Courier New'" color="#000000">DEFW_BAD_DATA</font>. This routine does not require any arguments.</p>
<h4><a name="1042702">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1042703">int defwEndRegions(void)</a></font>
</dl>
<h3><a name="1042792">defwRegionName</a></h3>
<p><a name="1042793">Starts a region description. This routine must be called the number of times specified in the </a><font size="2" face="'Courier New'" color="#000000">defwStartRegions</font> <font size="2" face="'Courier New'" color="#000000"><em>count</em></font> argument.</p>
<h4><a name="1042794">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1042755">int defwRegionName(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>regionName</em></font>)</font>
</dl>
<h4><a name="1042818">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1042819"><font size="2" face="'Courier New'" color="#000000"><em>regionName</em></font></a></strong>
</p>
<blockquote><a name="1069795">Specifies the name of the region.</a></blockquote>
<h3><a name="1029926">defwRegionPoints</a></h3>
<p><a name="1042850">Specifies the set of points bounding the region. This routine is required and can be used more than once to define a region.</a></p>
<h4><a name="1042830">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1042831">int defwRegionPoints(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>xh</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>yh</em></font>)</font>
</dl>
<h4><a name="1042842">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1059444"><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yl</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>xh</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yh</em></font></strong>
</p>
<blockquote><a name="1069802">Specifies the corner points of the region.</a></blockquote>
<h3><a name="defwRegionType"></a><a name="1059445">defwRegionType</a></h3>
<p><a name="1059446">Writes a </a><font size="2" face="'Courier New'" color="#000000">TYPE</font> statement. The <font size="2" face="'Courier New'" color="#000000">TYPE</font> statement is optional and can be used only once per region.</p>
<h4><a name="1058094">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1058095">int defwRegionType(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>type</em></font>)</font>
</dl>
<h4><a name="1058096">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1058097"><font size="2" face="'Courier New'" color="#000000"><em>type</em></font></a></strong>
</p>
<blockquote><a name="1069809">Specifies the region type. <br></a><font color="#000000"><em>Value:</em></font> Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="648">
<caption>
<tr>
<td cellpadding="4" valign="top" width="192">
<p><a name="1058100">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="132">
<p><a name="1058102"><font size="2" face="'Courier New'" color="#000000">FENCE</font></a></p>
</td>
<td cellpadding="4" valign="top" width="324">
<p><a name="1058104">All instances assigned to this type of region must be exclusively placed inside the region boundaries. No other instances are allowed inside this region.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1058106">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1058108"><font size="2" face="'Courier New'" color="#000000">GUIDE</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1058110">All instances assigned to this type of region should be placed inside this region, but it is a preference, not a hard constraint. Other constraints, such as wire length and timing can override it.</a></p>
</td>
</tr>
</table>
<h3><a name="1047584">Regions Example</a></h3>
<p><a name="1048826">The following example shows a callback routine with the type </a><font size="2" face="'Courier New'" color="#000000">defwRegionCbkType</font>.</p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050097">int regionCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd><dd> &#47;&#47; Check if the type is correct<dd> if (type != defwRegionCbkType) {<dd> printf(&#34;Type is not defwRegionCbkType, terminate<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writing.\n&#34;);<dd> return 1;<dd> }<dd><dd> res = defwStartRegions(1);<dd> CHECK_RES(res);<dd> res = defwRegionName(&#34;region2&#34;);<dd> CHECK_RES(res);<dd> res = defwRegionPoints(4000, 0, 5000, 1000);<dd> CHECK_RES(res);<dd> res = defwStringProperty(&#34;scum&#34;, &#34;on bottom&#34;);<dd> CHECK_RES(res);<dd> res = defwEndRegions();<dd> CHECK_RES(res);<dd><dd> return 0;}</a></font>
</dl>
<h2><a name="1030184">Rows</a></h2>
<p><a name="1030185">The Row routines write a DEF </a><font size="2" face="'Courier New'" color="#000000">ROWS</font> statement. The <font size="2" face="'Courier New'" color="#000000">ROWS</font> statement is optional and can be used more than once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">ROWS</font> statement, see <a href="../lefdefref/DEFSyntax.html#Rows" target="external_window"><font color="#0000ff"><u>"Rows"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1030189">If the DEF file contains a </a><font size="2" face="'Courier New'" color="#000000">DIEAREA</font> statement, the <font size="2" face="'Courier New'" color="#000000">ROWS</font> statement must follow it. For more information about the DEF <font size="2" face="'Courier New'" color="#000000">DIEAREA</font> writer routines, see <a href="#1059998" title="6"><font color="Blue"><u>"Die Area"</u></font></a><a href="#1059998" title="6"></a>.</p>
<p><font color="#000000"><strong>Note: </strong></font><a name="1039781">To write a </a><font size="2" face="'Courier New'" color="#000000">PROPERTY</font> statement for the row, you must use one of the property routines immediately following the <font size="2" face="'Courier New'" color="#000000">defwRow</font> routine. For more information, see <a href="#1032848" title="6"><font color="Blue"><u>"Property Statements"</u></font></a><a href="#1032848" title="6"></a>.</p>
<p><a name="1052049">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="1030204">defwRow</a></h3>
<p><a name="1042919">Writes a </a><font size="2" face="'Courier New'" color="#000000">ROWS</font> statement. </p>
<h4><a name="1042906">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1042907">int defwRow(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>rowName</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>rowType</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>origX</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>origY</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>orient</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>do_count</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>do_increment</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>xstep</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>ystep</em></font>)</font>
</dl>
<h4><a name="1042925">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1057719"><font size="2" face="'Courier New'" color="#000000"><em>do_count</em></font></a></strong>
</p>
<blockquote><a name="1069817">Optional argument that specifies the number of columns in the array pattern. Specify </a><font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument.</blockquote>
<p>
<strong></strong>
<strong><a name="1057720"><font size="2" face="'Courier New'" color="#000000"><em>do_increment</em></font></a></strong>
</p>
<blockquote><a name="1069825">Optional argument that specifies the number of rows in the array pattern. Specify </a><font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument.</blockquote>
<p>
<strong></strong>
<strong><a name="1069838"><font size="2" face="'Courier New'" color="#000000"><em>orient</em></font></a></strong>
</p>
<blockquote><a name="1069839">Specifies the orientation of all sites in the row. <br></a><font color="#000000"><em>Value:</em></font> 0 to 7. For more information, see <a href="ch1Intro.html#1019049" title="1"><font color="Blue"><u>"Orientation Codes"</u></font></a><a href="ch1Intro.html#1019049" title="1"> </a></blockquote>
<p>
<strong></strong>
<strong><a name="1057725"><font size="2" face="'Courier New'" color="#000000"><em>rowName</em></font></a></strong>
</p>
<blockquote><a name="1069847">Specifies the row name for this row.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1057726"><font size="2" face="'Courier New'" color="#000000"><em>rowType</em></font></a></strong>
</p>
<blockquote><a name="1069854">Specifies the site to use for the row. </a></blockquote>
<p>
<strong></strong>
<strong><a name="1057727"><font size="2" face="'Courier New'" color="#000000"><em>stepX</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>stepY</em></font></strong>
</p>
<blockquote><a name="1069861">Optional arguments that specify the spacing between the columns and rows. Specify </a><font size="2" face="'Courier New'" color="#000000">0</font> to ignore these arguments.</blockquote>
<p>
<strong></strong>
<strong><a name="1057729"><font size="2" face="'Courier New'" color="#000000"><em>x_orig y_orig</em></font></a></strong>
</p>
<blockquote><a name="1069869">Specifies the location in the design of the first site in the row.</a></blockquote>
<h3><a name="1052043">defwRowStr</a></h3>
<p><a name="1052044">Also writes a </a><font size="2" face="'Courier New'" color="#000000">ROWS</font> statement. This routine is the same as the <font size="2" face="'Courier New'" color="#000000">defwRow</font> routine, with the exception of the <font size="2" face="'Courier New'" color="#000000"><em>orient</em></font> argument, which takes a string instead of an integer.</p>
<h4><a name="1052052">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052053">int defwRowStr (<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>rowName</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>rowType</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>x_orig</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>y_orig</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>orient</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>do_count</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>do_increment</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>xstep</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>ystep</em></font>)</font>
</dl>
<h4><a name="1052059">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1060044"><font size="2" face="'Courier New'" color="#000000"><em>do_count</em></font></a></strong>
</p>
<blockquote><a name="1069876">Optional argument that specifies the number of columns in the array pattern. Specify </a><font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument.</blockquote>
<p>
<strong></strong>
<strong><a name="1060045"><font size="2" face="'Courier New'" color="#000000"><em>do_increment</em></font></a></strong>
</p>
<blockquote><a name="1069884">Optional argument that specifies the number of rows in the array pattern. Specify </a><font size="2" face="'Courier New'" color="#000000">0</font> to ignore this argument.</blockquote>
<p>
<strong></strong>
<strong><a name="1060046"><font size="2" face="'Courier New'" color="#000000"><em>orient</em></font></a></strong>
</p>
<blockquote><a name="1069892">Specifies the orientation of all sites in the row. <br></a><font color="#000000"><em>Value:</em></font> <font size="2" face="'Courier New'" color="#000000">N</font>, <font size="2" face="'Courier New'" color="#000000">W</font>, <font size="2" face="'Courier New'" color="#000000">S</font>, <font size="2" face="'Courier New'" color="#000000">E</font>, <font size="2" face="'Courier New'" color="#000000">FN</font>, <font size="2" face="'Courier New'" color="#000000">FW</font>, <font size="2" face="'Courier New'" color="#000000">FS</font>, or <font size="2" face="'Courier New'" color="#000000">FE </font></blockquote>
<p>
<strong></strong>
<strong><a name="1060050"><font size="2" face="'Courier New'" color="#000000"><em>rowName</em></font></a></strong>
</p>
<blockquote><a name="1069899">Specifies the row name for this row.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1060051"><font size="2" face="'Courier New'" color="#000000"><em>rowType</em></font></a></strong>
</p>
<blockquote><a name="1069906">Specifies the site to use for the row. </a></blockquote>
<p>
<strong></strong>
<strong><a name="1060052"><font size="2" face="'Courier New'" color="#000000"><em>stepX</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>stepY</em></font></strong>
</p>
<blockquote><a name="1069913">Optional argument that specifies the spacing between the columns and rows. Specify </a><font size="2" face="'Courier New'" color="#000000">0</font> to ignore these arguments.</blockquote>
<p>
<strong></strong>
<strong><a name="1060053"><font size="2" face="'Courier New'" color="#000000"><em>x_orig y_orig</em></font></a></strong>
</p>
<blockquote><a name="1069921">Specifies the location in the design of the first site in the row.</a></blockquote>
<h3><a name="1047585">Rows Example</a></h3>
<p><a name="1048833">The following example shows a callback routine with the type </a><font size="2" face="'Courier New'" color="#000000">defwRowCbkType</font>.</p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050100">int rowCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd><dd> nt regionCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd>&nbsp;&nbsp;&nbsp;&nbsp;&#47;&#47; Check if the type is correct<dd> if (type != defwRowCbkType) {<dd> printf(&#34;Type is not defwRowCbkType, terminate<dd>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writing.\n&#34;);<dd> return 1;<dd> }<dd><dd> res = defwRow(&#34;ROW_9&#34;, &#34;CORE&#34;, &#45;177320, &#45;111250, 5, 911, 1,<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;360, 0);<dd> CHECK_RES(res);<dd> res = defwRealProperty(&#34;minlength&#34;, 50.5);<dd> CHECK_RES(res);<dd> res = defwStringProperty(&#34;firstName&#34;, &#34;Only&#34;);<dd> CHECK_RES(res);<dd> res = defwIntProperty(&#34;idx&#34;, 1);<dd> CHECK_RES(res);<dd> res = defwRow(&#34;ROW_10&#34;, &#34;CORE1&#34;, &#45;19000, &#45;11000, 6, 1, 100,<dd>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0, 600);<dd> CHECK_RES(res);<dd><dd> return 0;}</a></font>
</dl>
<h2><a name="1024695">Scan Chains</a></h2>
<p><a name="1033027">The Scan Chain routines write a DEF </a><font size="2" face="'Courier New'" color="#000000">SCANCHAINS</font> statement. The <font size="2" face="'Courier New'" color="#000000">SCANCHAINS</font> statement is optional and can be used only once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">SCANCHAINS</font> statement, see <a href="../lefdefref/DEFSyntax.html#ScanChains" target="external_window"><font color="#0000ff"><u>"Scan Chains"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>. </p>
<p><a name="1033035">You must begin and end a DEF </a><font size="2" face="'Courier New'" color="#000000">SCANCHAINS</font> statement with the <font size="2" face="'Courier New'" color="#000000">defwStartScanchains</font> and <font size="2" face="'Courier New'" color="#000000">defwEndScanchains</font> routines. You must define all scan chains between these routines. Each scan chain specification must start with a <font size="2" face="'Courier New'" color="#000000">defwScanchains</font> routine.</p>
<p><a name="1051209">For examples of the routines described here, see </a><a href="#1048984" title="6"><font color="Blue"><u>"Scan Chain Example"</u></font></a><a href="#1048984" title="6"></a>.</p>
<p><font color="#000000"><strong>Note: </strong></font><a name="1039789">To write a </a><font size="2" face="'Courier New'" color="#000000">PROPERTY</font> statement for the region, you must use one of the property routines following <font size="2" face="'Courier New'" color="#000000">defwScanchains</font>. For more information, see <a href="#1032848" title="6"><font color="Blue"><u>"Property Statements"</u></font></a><a href="#1032848" title="6"></a>.</p>
<p><a name="1033040">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful. </p>
<h3><a name="1025213">defwStartScanchains</a></h3>
<p><a name="1043038">Starts the </a><font size="2" face="'Courier New'" color="#000000">SCANCHAINS</font> statement. </p>
<h4><a name="1043019">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1043020">int defwStartScanchains(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>count</em></font>)</font>
</dl>
<h4><a name="1043093">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1069933"><font size="2" face="'Courier New'" color="#000000"><em>count</em></font></a></strong>
</p>
<blockquote><a name="1069934">Specifies the number of scan chains defined in the </a><font size="2" face="'Courier New'" color="#000000">SCANCHAINS</font> statement. </blockquote>
<h3><a name="1069935">defwEndScanchains</a></h3>
<p><a name="1043078">Ends the </a><font size="2" face="'Courier New'" color="#000000">SCANCHAINS</font> statement. If <font size="2" face="'Courier New'" color="#000000"><em>count</em></font> specified in the <font size="2" face="'Courier New'" color="#000000">defwStartScanChains</font> routine is not the same as the actual number of <font size="2" face="'Courier New'" color="#000000">defwScanChain</font> routines used, this routine returns <font size="2" face="'Courier New'" color="#000000">DEFW_BAD_DATA</font>.</p>
<h4><a name="1043065">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1043066">int defwEndScanchains()</a></font>
</dl>
<h3><a name="1024714">defwScanchain</a></h3>
<p><a name="1043132">Starts a scan chain specification. This routine must be used the number of times specified in the </a><font size="2" face="'Courier New'" color="#000000">defwStartScanchains</font> <font size="2" face="'Courier New'" color="#000000"><em>count</em></font> argument.</p>
<h4><a name="1043113">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1043114">int defwScanchain(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>chainName</em></font>)</font>
</dl>
<h4><a name="1043125">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1043126"><font size="2" face="'Courier New'" color="#000000"><em>chainName</em></font></a></strong>
</p>
<blockquote><a name="1069940">Specifies the name of the scan chain.</a></blockquote>
<h3><a name="1024720">defwScanchainCommonscanpins</a></h3>
<p><a name="1043192">Writes a </a><font size="2" face="'Courier New'" color="#000000">COMMONSCANPINS</font> statement. The <font size="2" face="'Courier New'" color="#000000">COMMONSCANPINS</font> statement is optional and can be used only once for each scan chain. </p>
<h4><a name="1043165">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1043166">int defwScanchainCommonscanpins(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pin2</em></font>) </font>
</dl>
<h4><a name="1043177">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1043595"><font size="2" face="'Courier New'" color="#000000"><em>inst1 inst2</em></font></a></strong>
</p>
<blockquote><a name="1069947">Optional arguments that specify the common scan&#45;in and scan&#45;out pins. The </a><font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font> argument can have the value <font size="2" face="'Courier New'" color="#000000">IN</font> or <font size="2" face="'Courier New'" color="#000000">OUT</font>. The <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font> argument can have the remaining <font size="2" face="'Courier New'" color="#000000">IN</font> or <font size="2" face="'Courier New'" color="#000000">OUT</font> value not specified in the <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font> argument. Specify <font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore either of these arguments.</blockquote>
<p>
<strong></strong>
<strong><a name="1069956"><font size="2" face="'Courier New'" color="#000000"><em>pin1 pin2</em></font></a></strong>
</p>
<blockquote><a name="1069985">Specifies the names of the scan&#45;in and scan&#45;out pins that correspond with the value of </a><font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font> and <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font>. Specify <font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore either of these arguments. </blockquote>
<p><font color="#000000"><strong>Note: </strong></font><a name="1069986">The </a><font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font><font color="#000000"><em>&#47;</em></font><font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font> and <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font><font color="#000000"><em>&#47;</em></font><font size="2" face="'Courier New'" color="#000000"><em>pin2</em></font><font color="#000000"><em> </em></font>arguments must be used as pairs. If you specify <font size="2" face="'Courier New'" color="#000000">NULL</font> for either <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font> or <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font>, you must also specify <font size="2" face="'Courier New'" color="#000000">NULL</font> for the corresponding <font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font> or <font size="2" face="'Courier New'" color="#000000"><em>pin2</em></font>. Similarly, if you specify <font size="2" face="'Courier New'" color="#000000">IN</font> or <font size="2" face="'Courier New'" color="#000000">OUT</font> for <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font> or <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font>, you must specify a pin name for the corresponding <font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font> or <font size="2" face="'Courier New'" color="#000000"><em>pin2</em></font>. </p>
<h3><a name="1024725">defwScanchainFloating</a></h3>
<p><a name="1043289">Writes a </a><font size="2" face="'Courier New'" color="#000000">FLOATING</font> statement. The <font size="2" face="'Courier New'" color="#000000">FLOATING</font> statement is optional and can be used more than once for each scan chain.</p>
<h4><a name="1043267">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1043268">int defwScanchainFloating(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>floatingComp,</em></font> <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pin2</em></font>) </font>
</dl>
<h4><a name="1043279">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1043605"><font size="2" face="'Courier New'" color="#000000"><em>floatingComp</em></font></a></strong>
</p>
<blockquote><a name="1069991">Specifies the floating component name.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1053734"><font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font></strong>
</p>
<blockquote><a name="1069999">Optional arguments that specify the in and out pins for the component. The </a><font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font> argument can have the value <font size="2" face="'Courier New'" color="#000000">IN</font> or <font size="2" face="'Courier New'" color="#000000">OUT</font>. The <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font> argument can have the remaining <font size="2" face="'Courier New'" color="#000000">IN</font> or <font size="2" face="'Courier New'" color="#000000">OUT</font> value not specified in the <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font> argument. Specify <font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore either of these arguments.</blockquote>
<p>
<strong></strong>
<strong><a name="1057809"><font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>pin2</em></font></strong>
</p>
<blockquote><a name="1070006">Specifies the names of the in and out pins that correspond with the value of </a><font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font> and <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font>. Specify <font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore either of these arguments.</blockquote>
<p><font color="#000000"><strong>Note: </strong></font><a name="1043606">The </a><font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font><font color="#000000"><em>&#47;</em></font><font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font> and <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font><font color="#000000"><em>&#47;</em></font><font size="2" face="'Courier New'" color="#000000"><em>pin2</em></font><font color="#000000"><em> </em></font>arguments must be used as pairs. If you specify <font size="2" face="'Courier New'" color="#000000">NULL</font> for either <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font> or <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font>, you must also specify <font size="2" face="'Courier New'" color="#000000">NULL</font> for the corresponding <font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font> or <font size="2" face="'Courier New'" color="#000000"><em>pin2</em></font>. Similarly, if you specify <font size="2" face="'Courier New'" color="#000000">IN</font> or <font size="2" face="'Courier New'" color="#000000">OUT</font> for <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font> or <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font>, you must specify a pin name for the corresponding <font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font> or <font size="2" face="'Courier New'" color="#000000"><em>pin2</em></font>. </p>
<h3><a name="defwScanchainFloatingBits"></a><a name="1059480">defwScanchainFloatingBits</a></h3>
<p><a name="1059199">Writes a </a><font size="2" face="'Courier New'" color="#000000">FLOATING</font> statement that contains <font size="2" face="'Courier New'" color="#000000">BITS</font> information. The <font size="2" face="'Courier New'" color="#000000">FLOATING</font> statement is optional and can be used more than once for each scan chain.</p>
<h4><a name="1059200">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1059201">int defwScanchainFloatingBits(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>floatingComp,</em></font> <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pin2,<dd></em></font>int <font size="2" face="'Courier New'" color="#000000"><em>bits</em></font>) </font>
</dl>
<h4><a name="1059202">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1059203"><font size="2" face="'Courier New'" color="#000000"><em>floatingComp</em></font></a></strong>
</p>
<blockquote><a name="1070013">Specifies the floating component name.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1059204"><font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font></strong>
</p>
<blockquote><a name="1070021">Optional arguments that specify the in and out pins for the component. The </a><font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font> argument can have the value <font size="2" face="'Courier New'" color="#000000">IN</font> or <font size="2" face="'Courier New'" color="#000000">OUT</font>. The <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font> argument can have the remaining <font size="2" face="'Courier New'" color="#000000">IN</font> or <font size="2" face="'Courier New'" color="#000000">OUT</font> value not specified in the <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font> argument. Specify <font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore either of these arguments.</blockquote>
<p>
<strong></strong>
<strong><a name="1059205"><font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>pin2</em></font></strong>
</p>
<blockquote><a name="1070028">Specifies the names of the in and out pins that correspond with the value of </a><font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font> and <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font>. Specify <font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore either of these arguments.<br><br> <font color="#000000"><strong>Note:</strong></font> The <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font><font color="#000000"><em>&#47;</em></font><font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font> and <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font><font color="#000000"><em>&#47;</em></font><font size="2" face="'Courier New'" color="#000000"><em>pin2</em></font><font color="#000000"><em> </em></font>arguments must be used as pairs. If you specify <font size="2" face="'Courier New'" color="#000000">NULL</font> for either <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font> or <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font>, you must also specify <font size="2" face="'Courier New'" color="#000000">NULL</font> for the corresponding <font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font> or <font size="2" face="'Courier New'" color="#000000"><em>pin2</em></font>. Similarly, if you specify <font size="2" face="'Courier New'" color="#000000">IN</font> or <font size="2" face="'Courier New'" color="#000000">OUT</font> for <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font> or <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font>, you must specify a pin name for the corresponding <font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font> or <font size="2" face="'Courier New'" color="#000000"><em>pin2</em></font>. </blockquote>
<p>
<strong></strong>
<strong><a name="1059489"><font size="2" face="'Courier New'" color="#000000"><em>bits</em></font></a></strong>
</p>
<blockquote><a name="1070053">Optional argument that specifies the sequential bit length of any chain element. Specify </a><font size="2" face="'Courier New'" color="#000000">&#45;1</font> to ignore this argument.</blockquote>
<h3><a name="1059196">defwScanchainOrdered</a></h3>
<p><a name="1043365">Writes an </a><font size="2" face="'Courier New'" color="#000000">ORDERED</font> statement. The <font size="2" face="'Courier New'" color="#000000">ORDERED</font> statement specifies an ordered list of scan chains. The <font size="2" face="'Courier New'" color="#000000">ORDERED</font> statement is optional and can be used more than once for each scan chain. </p>
<h4><a name="1043352">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1043353">int defwScanchainOrdered(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name1</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pin2</em></font>, <dd>const char* name2,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>inst3</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pin3</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>inst4</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pin4</em></font>)</font>
</dl>
<h4><a name="1043374">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1063969"><font size="2" face="'Courier New'" color="#000000"><em>name1 name2</em></font></a></strong>
</p>
<blockquote><a name="1070061">Specifies the fixed component names. You must specify both </a><font size="2" face="'Courier New'" color="#000000"><em>name1</em></font> and <font size="2" face="'Courier New'" color="#000000"><em>name2</em></font> the first time you call this routine within a scanchain. If you call this routine multiple times within a scanchain, you only need to specify <font size="2" face="'Courier New'" color="#000000"><em>name1</em></font>. </blockquote>
<p>
<strong></strong>
<strong><a name="1063970"><font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>inst3</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>inst4</em></font></strong>
</p>
<blockquote><a name="1070068">Optional arguments that specify the scan&#45;in and scan&#45;out pins for the components. The </a><font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font> and <font size="2" face="'Courier New'" color="#000000"><em>inst3</em></font> arguments can have the value <font size="2" face="'Courier New'" color="#000000">IN</font> or <font size="2" face="'Courier New'" color="#000000">OUT</font>. The <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font> and <font size="2" face="'Courier New'" color="#000000"><em>inst4</em></font> arguments can have the remaining <font size="2" face="'Courier New'" color="#000000">IN</font> or <font size="2" face="'Courier New'" color="#000000">OUT</font> not specified in the <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font> or <font size="2" face="'Courier New'" color="#000000"><em>inst3</em></font> arguments. Specify <font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore any of these arguments. </blockquote>
<p>
<strong></strong>
<strong><a name="1057844"><font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>pin2</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>pin3</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>pin4</em></font></strong>
</p>
<blockquote><a name="1070075">Specifies the names of the scan&#45;in and scan&#45;out pins that correspond with the </a><font size="2" face="'Courier New'" color="#000000"><em>inst*</em></font> values. Specify <font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore any of these arguments. <br><font color="#000000"><strong>Note:</strong></font> The <font size="2" face="'Courier New'" color="#000000"><em>inst*</em></font><font color="#000000"><em>&#47;</em></font><font size="2" face="'Courier New'" color="#000000"><em>pin*</em></font> arguments must be used as pairs. If you specify <font size="2" face="'Courier New'" color="#000000">NULL</font> for <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font>, you must also specify <font size="2" face="'Courier New'" color="#000000">NULL</font> for the corresponding <font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font>. Similarly, if you specify <font size="2" face="'Courier New'" color="#000000">IN</font> or <font size="2" face="'Courier New'" color="#000000">OUT</font> for <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font>, you must specify a pin name for the corresponding <font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font>. </blockquote>
<h3><a name="defwScanchainOrderedBits"></a><a name="1043458">defwScanchainOrderedBits</a></h3>
<p><a name="1058223">Writes an </a><font size="2" face="'Courier New'" color="#000000">ORDERED</font> statement that contains <font size="2" face="'Courier New'" color="#000000">BITS</font> information. The <font size="2" face="'Courier New'" color="#000000">ORDERED</font> statement specifies an ordered list of scan chains. The <font size="2" face="'Courier New'" color="#000000">ORDERED</font> statement is optional and can be used more than once for each scan chain.</p>
<h4><a name="1058240">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1058251">int defwScanchainOrderedBits(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name1</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pin2</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>bits1</em></font>,<dd>const char* name2,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>inst3</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pin3</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>inst4</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pin4</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>bits2</em></font>)</font>
</dl>
<h4><a name="1058242">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1058267"><font size="2" face="'Courier New'" color="#000000"><em>name1</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>name2</em></font></strong>
</p>
<blockquote><a name="1070094">Specifies the fixed component names. You must specify both </a><font size="2" face="'Courier New'" color="#000000"><em>name1</em></font> and <font size="2" face="'Courier New'" color="#000000"><em>name2</em></font> the first time you call this routine within a scanchain. If you call this routine multiple times within a scanchain, you only need to specify <font size="2" face="'Courier New'" color="#000000"><em>name1</em></font>.</blockquote>
<p>
<strong></strong>
<strong><a name="1058258"><font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>inst3</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>inst4</em></font></strong>
</p>
<blockquote><a name="1070105">Optional arguments that specify the scan&#45;in and scan&#45;out pins for the components. The </a><font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font> and <font size="2" face="'Courier New'" color="#000000"><em>inst3</em></font> arguments can have the value <font size="2" face="'Courier New'" color="#000000">IN</font> or <font size="2" face="'Courier New'" color="#000000">OUT</font>. The <font size="2" face="'Courier New'" color="#000000"><em>inst2</em></font> and <font size="2" face="'Courier New'" color="#000000"><em>inst4</em></font> arguments can have the remaining <font size="2" face="'Courier New'" color="#000000">IN</font> or <font size="2" face="'Courier New'" color="#000000">OUT</font> not specified in the <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font> or <font size="2" face="'Courier New'" color="#000000"><em>inst3</em></font> arguments. Specify <font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore any of these arguments.</blockquote>
<p>
<strong></strong>
<strong><a name="1063984"><font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>pin2</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>pin3</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>pin4</em></font></strong>
</p>
<blockquote><a name="1070112">Specifies the names of the scan&#45;in and scan&#45;out pins that correspond with the </a><font size="2" face="'Courier New'" color="#000000"><em>inst*</em></font> values. Specify <font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore any of these arguments. <br><font color="#000000"><strong>Note:</strong></font> The <font size="2" face="'Courier New'" color="#000000"><em>inst*</em></font><font color="#000000"><em>&#47;</em></font><font size="2" face="'Courier New'" color="#000000"><em>pin*</em></font> arguments must be used as pairs. If you specify <font size="2" face="'Courier New'" color="#000000">NULL</font> for <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font>, you must also specify <font size="2" face="'Courier New'" color="#000000">NULL</font> for the corresponding <font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font>. Similarly, if you specify <font size="2" face="'Courier New'" color="#000000">IN</font> or <font size="2" face="'Courier New'" color="#000000">OUT</font> for <font size="2" face="'Courier New'" color="#000000"><em>inst1</em></font>, you must specify a pin name for the corresponding <font size="2" face="'Courier New'" color="#000000"><em>pin1</em></font>. </blockquote>
<p>
<strong></strong>
<strong><a name="1059498"><font size="2" face="'Courier New'" color="#000000"><em>bits*</em></font></a></strong>
</p>
<blockquote><a name="1070127">Optional argument that specifies the sequential bit length of any chain element. Specify </a><font size="2" face="'Courier New'" color="#000000">&#45;1</font> to ignore this argument.</blockquote>
<h3><a name="defwScanchainPartition"></a><a name="1058222">defwScanchainPartition</a></h3>
<p><a name="1058212">Writes a </a><font size="2" face="'Courier New'" color="#000000">PARTITION</font> statement. The <font size="2" face="'Courier New'" color="#000000">PARTITION</font> statement is optional and can be used only once to define a scan chain. </p>
<h4><a name="1058213">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1058214">int defwScanchainPartition(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>maxBits</em></font>)</font>
</dl>
<h4><a name="1058215">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1059517"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1070135">Specifies a partition name. A partition name associates each chain with a partition group, which determines their compatibility for repartitioning by swapping elements between them. Chains with matching </a><font size="2" face="'Courier New'" color="#000000">PARTITION</font> names constitute a swap&#45;compatible group.</blockquote>
<p>
<strong></strong>
<strong><a name="1059513"><font size="2" face="'Courier New'" color="#000000"><em>maxBits</em></font></a></strong>
</p>
<blockquote><a name="1070143">Optional argument that specifies the maximum bit length that the chain can grow to in the partition. Specify </a><font size="2" face="'Courier New'" color="#000000">&#45;1</font> to ignore this argument. </blockquote>
<h3><a name="1058211">defwScanchainStart</a></h3>
<p><a name="1043486">Writes a </a><font size="2" face="'Courier New'" color="#000000">START</font> statement. The <font size="2" face="'Courier New'" color="#000000">START</font> statement is required and can be used only once to define a scan chain.</p>
<h4><a name="1043473">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1043474">int defwScanchainStart(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>inst</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pin</em></font>)</font>
</dl>
<h4><a name="1043491">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1046450"><font size="2" face="'Courier New'" color="#000000"><em>inst</em></font></a></strong>
</p>
<blockquote><a name="1070151">Specifies the start of the scan chain. You can specify a component name, or the keyword </a><font size="2" face="'Courier New'" color="#000000">PIN</font> to specify an I&#47;O pin.</blockquote>
<p>
<strong></strong>
<strong><a name="1046451"><font size="2" face="'Courier New'" color="#000000"><em>pin</em></font></a></strong>
</p>
<blockquote><a name="1070158">Specifies the out pin name. If you do not specify the out pin, DEF uses the out pin specified for common scan pins. If the scan chain starts at an I&#47;O pin, you must specify the I&#47;O pin name as the out pin.</a></blockquote>
<h3><a name="1024745">defwScanchainStop</a></h3>
<p><a name="1043541">Writes a </a><font size="2" face="'Courier New'" color="#000000">STOP</font> statement. The <font size="2" face="'Courier New'" color="#000000">STOP</font> statement is required and can be used only once to define a scan chain.</p>
<h4><a name="1043522">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1043523">int defwScanchainStop(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>inst</em></font>,<dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pin</em></font>) </font>
</dl>
<h4><a name="1043534">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1046437"><font size="2" face="'Courier New'" color="#000000"><em>inst</em></font></a></strong>
</p>
<blockquote><a name="1070165">Specifies the end point of the scan chain. You can specify a component name, or the keyword </a><font size="2" face="'Courier New'" color="#000000">PIN</font> to specify an I&#47;O pin.</blockquote>
<p>
<strong></strong>
<strong><a name="1048983"><font size="2" face="'Courier New'" color="#000000"><em>pin</em></font></a></strong>
</p>
<blockquote><a name="1070172">Specifies the in pin name. If you do not specify the in pin, DEF uses the in pin specified for common scan pins. If the scan chain starts at an I&#47;O pin, you must specify the I&#47;O pin name as the in pin.</a></blockquote>
<h3><a name="1048984">Scan Chain Example</a></h3>
<p><a name="1048989">The following example shows a callback routine with the type </a><font size="2" face="'Courier New'" color="#000000">defwScanchainCbkType</font>.</p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050103">int scanchainCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd><dd> &#47;&#47; Check if the type is correct<dd> if (type != defwScanchainCbkType) {<dd> printf(&#34;Type is not defwScanchainCbkType, terminate<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writing.\n&#34;);<dd> return 1;<dd> }<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1049002"> &nbsp;&nbsp;&nbsp;&nbsp;res = defwStartScanchains(1);<dd> CHECK_RES(res);<dd> res = defwScanchain(&#34;the_chain&#34;);<dd> CHECK_RES(res);<dd> res = defwScanchainCommonscanpins(&#34;IN&#34;, &#34;PA1&#34;, &#34;OUT&#34;, &#34;PA2&#34;)<dd> CHECK_RES(res);<dd> res = defwScanchainStart(&#34;PIN&#34;, &#34;scanpin&#34;);<dd> CHECK_RES(res);<dd> res = defwScanchainStop(&#34;cell4&#34;, &#34;PA2&#34;);<dd> CHECK_RES(res);<dd> res = defwScanchainOrdered(&#34;cell2&#34;, &#34;IN&#34;, &#34;PA0&#34;, NULL<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL, &#34;cell1&#34;, &#34;OUT&#34;, &#34;P10&#34;, NULL,<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL);<dd> CHECK_RES(res);<dd> res = defwScanchainFloating(&#34;scancell1&#34;, &#34;IN&#34;, &#34;PA0&#34;,<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL, NULL)<dd> CHECK_RES(res);<dd> res = defwEndScanchain();<dd> CHECK_RES(res);<dd><dd> return 0;}</a></font>
</dl>
<h2><a name="SpecialNets"></a><a name="1048986">Special Nets</a></h2>
<p><a name="1033212">Special Nets routines write a DEF </a><font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement. The <font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement is optional and can be used only once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement, see <a href="../lefdefref/DEFSyntax.html#SpecialNets" target="external_window"><font color="#0000ff"><u>"Special Nets"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>. </p>
<p><a name="1033216">A </a><font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement must start and end with the <font size="2" face="'Courier New'" color="#000000">defwStartSpecialNets</font> and <font size="2" face="'Courier New'" color="#000000">defwEndSpecialNets</font> routines. All special nets must be defined between these routines. Each individual special net must start and end with the <font size="2" face="'Courier New'" color="#000000">defwSpecialNet</font> and <font size="2" face="'Courier New'" color="#000000">defwSpecialNetEndOneNet</font> routines. </p>
<p><a name="1051220">For examples of the routines described here, see </a><a href="#1047591" title="6"><font color="Blue"><u>"Special Nets Example"</u></font></a><a href="#1047591" title="6"></a>.</p>
<p><a name="1033217">In addition to the routines in this section, you can also include routines that form a </a><font color="#000000"><em>specialWiring</em></font> statement and a <font size="2" face="'Courier New'" color="#000000">PROPERTY</font> statement. For information about these routines, see <a href="#1030116" title="6"><font color="Blue"><u>"Special Wiring"</u></font></a><a href="#1030116" title="6"></a> and <a href="#1032848" title="6"><font color="Blue"><u>"Property Statements"</u></font></a><a href="#1032848" title="6"></a>.</p>
<p><a name="1033227">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="1029945">defwStartSpecialNets</a></h3>
<p><a name="1043661">Starts the </a><font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement. </p>
<h4><a name="1043642">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1043643">int defwStartSpecialNets(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>count</em></font>)</font>
</dl>
<h4><a name="1043654">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1043656"><font size="2" face="'Courier New'" color="#000000"><em>count</em></font></a></strong>
</p>
<blockquote><a name="1070179">Specifies the number of special nets defined in the </a><font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement.</blockquote>
<h3><a name="1029962">defwEndSpecialNets</a></h3>
<p><a name="1043708">Ends the </a><font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement. If <font size="2" face="'Courier New'" color="#000000"><em>count</em></font> specified in <font size="2" face="'Courier New'" color="#000000">defwStartSpecialNets</font> is not the same as the actual number of <font size="2" face="'Courier New'" color="#000000">defwSpecialNet</font> routines used, this routine returns <font size="2" face="'Courier New'" color="#000000">DEFW_BAD_DATA</font>.</p>
<h4><a name="1043689">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1043690">int defwEndSpecialNets()</a></font>
</dl>
<h3><a name="1029971">defwSpecialNet</a></h3>
<p><a name="1043764">Starts a special net description. Each special net in the </a><font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement must start and end with <font size="2" face="'Courier New'" color="#000000">defwSpecialNet</font> and <font size="2" face="'Courier New'" color="#000000">defwSpecialNetEndOneNet</font>. </p>
<h4><a name="1043745">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1043746">int defwSpecialNet(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>netName</em></font>)</font>
</dl>
<h4><a name="1043757">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1043758"><font size="2" face="'Courier New'" color="#000000"><em>netName</em></font></a></strong>
</p>
<blockquote><a name="1070186">Specifies the name of the net to define.</a></blockquote>
<h3><a name="1029991">defwSpecialNetEndOneNet</a></h3>
<p><a name="1043826">Ends the special net description started with </a><font size="2" face="'Courier New'" color="#000000">defwSpecialNet</font>. Each special net in the <font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement must start and end with <font size="2" face="'Courier New'" color="#000000">defwSpecialNet</font> and <font size="2" face="'Courier New'" color="#000000">defwSpecialNetEndOneNet</font>.</p>
<h4><a name="1043807">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1043808">int defwSpecialNetEndOneNet()</a></font>
</dl>
<h3><a name="1032173">defwSpecialNetConnection</a></h3>
<p><a name="1043882">Specifies the special pin and component information for the special net. This routine is optional and can be used only once for each special net in the </a><font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement.</p>
<h4><a name="1043862">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1043863">int defwSpecialNetConnection(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>compNameRegExpr,</em></font> <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>pinName,</em></font> <dd>int <font size="2" face="'Courier New'" color="#000000"><em>synthesized</em></font>) </font>
</dl>
<h4><a name="1043874">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1046470"><font size="2" face="'Courier New'" color="#000000"><em>compNameRegExpr</em></font></a></strong>
</p>
<blockquote><a name="1070193">Specifies a component name or a regular expression that specifies a set of component names. </a></blockquote>
<p>
<strong></strong>
<strong><a name="1046471"><font size="2" face="'Courier New'" color="#000000"><em>pinName</em></font></a></strong>
</p>
<blockquote><a name="1070200">Specifies the name of the special pin on the net that corresponds to the component. During evaluation of the regular expression, components that match the expression but do not have a pin named </a><font size="2" face="'Courier New'" color="#000000"><em>pinName</em></font> are ignored.</blockquote>
<p>
<strong></strong>
<strong><a name="1055117"><font size="2" face="'Courier New'" color="#000000"><em>synthesized</em></font></a></strong>
</p>
<blockquote><a name="1070207">Optional argument that marks the pin as part of a synthesized scan chain. <br></a><font color="#000000"><em>Value: </em></font>Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="648">
<caption>
<tr>
<td cellpadding="4" valign="top" width="204">
<p><a name="1059018">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="96">
<p><a name="1059020"><font size="2" face="'Courier New'" color="#000000">0</font></a></p>
</td>
<td cellpadding="4" valign="top" width="348">
<p><a name="1059022">Argument is ignored.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1059024">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1059026"><font size="2" face="'Courier New'" color="#000000">1</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1059028">Writes a </a><font size="2" face="'Courier New'" color="#000000">SYNTHESIZED</font> statement.</p>
</td>
</tr>
</table>
<h3><a name="1059550">defwSpecialNetEstCap</a></h3>
<p><a name="1059551">Writes an </a><font size="2" face="'Courier New'" color="#000000">ESTCAP</font> statement. The <font size="2" face="'Courier New'" color="#000000">ESTCAP</font> statement is optional and can be used only once for each special net in the <font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement.</p>
<h4><a name="1059552">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1059553">int defwSpecialNetEstCap(<dd>double </a><font size="2" face="'Courier New'" color="#000000"><em>wireCap</em></font>)</font>
</dl>
<h4><a name="1059554">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1059555"><font size="2" face="'Courier New'" color="#000000"><em>wireCap</em></font></a></strong>
</p>
<blockquote><a name="1070214">Specifies the estimated wire capacitance for the net. </a><font size="2" face="'Courier New'" color="#000000">ESTCAP</font> can be loaded with simulation data to generate net constraints for timing&#45;driven layout.</blockquote>
<h3><a name="defwSpecialNetFixedBump"></a><a name="1059548">defwSpecialNetFixedBump</a></h3>
<p><a name="1058117">Writes a </a><font size="2" face="'Courier New'" color="#000000">FIXEDBUMP</font> statement that indicates the bump cannot be assigned to a different pin. The <font size="2" face="'Courier New'" color="#000000">FIXEDBUMP</font> statement is optional and can be used only once for each special net in the <font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement.</p>
<h4><a name="1058118">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1058119">defwSpecialNetFixedBump()</a></font>
</dl>
<h3><a name="1058062">defwSpecialNetOriginal</a></h3>
<p><a name="1043998">Writes an </a><font size="2" face="'Courier New'" color="#000000">ORIGINAL</font> statement. The <font size="2" face="'Courier New'" color="#000000">ORIGINAL</font> statement is optional and can be used only once for each special net in the <font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement.</p>
<h4><a name="1043981">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1043982">int defwSpecialNetOriginal(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>netName</em></font>)</font>
</dl>
<h4><a name="1044003">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1044004"><font size="2" face="'Courier New'" color="#000000"><em>netName</em></font></a></strong>
</p>
<blockquote><a name="1070221">Specifies the original net partitioned to create multiple nets, including the current net.</a></blockquote>
<h3><a name="1058295">defwSpecialNetPattern</a></h3>
<p><a name="1044050">Writes a </a><font size="2" face="'Courier New'" color="#000000">PATTERN</font> statement. The <font size="2" face="'Courier New'" color="#000000">PATTERN</font> statement is optional and can be used only once for each special net in the <font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement.</p>
<h4><a name="1044030">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1044031">int defwSpecialNetPattern(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name</em></font>)</font>
</dl>
<h4><a name="1044042">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1044045"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1070228">Specifies the routing pattern used for the net. <br></a><font color="#000000"><em>Value:</em></font> Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="648">
<caption>
<tr>
<td cellpadding="4" valign="top" width="200">
<p><a name="1055141">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="130">
<p><a name="1055143"><font size="2" face="'Courier New'" color="#000000">BALANCED</font></a></p>
</td>
<td cellpadding="4" valign="top" width="317">
<p><a name="1055145">Used to minimize skews in timing delays for clock nets.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1055147">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055149"><font size="2" face="'Courier New'" color="#000000">STEINER</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055151">Used to minimize net length.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1055153">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055155"><font size="2" face="'Courier New'" color="#000000">TRUNK</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055157">Used to minimize delay for global nets.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1055186">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055188"><font size="2" face="'Courier New'" color="#000000">WIREDLOGIC</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055190">Used in ECL designs to connect output and mustjoin pins before routing to the remaining pins.</a></p>
</td>
</tr>
</table>
<h3><a name="1030056">defwSpecialNetSource</a></h3>
<p><a name="1062613">Writes a </a><font size="2" face="'Courier New'" color="#000000">SOURCE</font> statement. The <font size="2" face="'Courier New'" color="#000000">SOURCE</font> statement is optional and can only be used once for each special net in the <font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement.</p>
<h4><a name="1062614">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1044083">int defwSpecialNetSource(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name</em></font>)</font>
</dl>
<h4><a name="1044094">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1046579"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1070235">Specifies the source of the net. <br></a><font color="#000000"><em>Value:</em></font> Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="648">
<caption>
<tr>
<td cellpadding="4" valign="top" width="199">
<p><a name="1059826">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="113">
<p><a name="1059828"><font size="2" face="'Courier New'" color="#000000">DIST</font></a></p>
</td>
<td cellpadding="4" valign="top" width="336">
<p><a name="1059830">Net is the result of adding physical components (that is, components that only connect to power or ground nets), such as filler cells, well&#45;taps, tie&#45;high and tie&#45;low cells, and decoupling caps.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1059832">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1059834"><font size="2" face="'Courier New'" color="#000000">NETLIST</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1059836">Net is defined in the original netlist. This is the default value, and is not normally written out in the DEF file.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1059838">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1059840"><font size="2" face="'Courier New'" color="#000000">TEST</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1059842">Net is part of a scanchain. </a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1059844">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1059846"><font size="2" face="'Courier New'" color="#000000">TIMING</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1059848">Net represents a logical rather than physical change to netlist, and is used typically as a buffer for a clock&#45;tree, or to improve timing on long nets.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1059850">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1059852"><font size="2" face="'Courier New'" color="#000000">USER</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1059854">Net is user defined. </a></p>
</td>
</tr>
</table>
<h3><a name="1030084">defwSpecialNetUse</a></h3>
<p><a name="1044212">Writes a </a><font size="2" face="'Courier New'" color="#000000">USE</font> statement. The <font size="2" face="'Courier New'" color="#000000">USE</font> statement is optional and can be used only once for each special net in the <font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement.</p>
<h4><a name="1044192">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1044193">int defwSpecialNetUse(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name</em></font>)</font>
</dl>
<h4><a name="1050146">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1050147"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1070242">Specifies how the net is used.<br></a><font color="#000000"><em>Value:</em></font> Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="647">
<caption>
<tr>
<td cellpadding="4" valign="top" width="201">
<p><a name="1055335">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="154">
<p><a name="1055337"><font size="2" face="'Courier New'" color="#000000">ANALOG</font></a></p>
</td>
<td cellpadding="4" valign="top" width="290">
<p><a name="1055339">Used as a analog signal net.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1055341">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055343"><font size="2" face="'Courier New'" color="#000000">CLOCK</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055345">Used as a clock net.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1055347">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055349"><font size="2" face="'Courier New'" color="#000000">GROUND</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055351">Used as a ground net.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1055391">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055393"><font size="2" face="'Courier New'" color="#000000">POWER</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055395">Used as a power net.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1055385">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055387"><font size="2" face="'Courier New'" color="#000000">RESET</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055389">Used as a reset net.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1055379">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055381"><font size="2" face="'Courier New'" color="#000000">SCAN</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055383">Used as a scan net.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1055422">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055424"><font size="2" face="'Courier New'" color="#000000">SIGNAL</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055426">Used as digital signal net.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1055416">&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055418"><font size="2" face="'Courier New'" color="#000000">TIEOFF</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055420">Used as a tie&#45;high or tie&#45;low net.</a></p>
</td>
</tr>
</table>
<h3><a name="1030094">defwSpecialNetVoltage</a></h3>
<p><a name="1044269">Writes a </a><font size="2" face="'Courier New'" color="#000000">VOLTAGE</font> statement. The <font size="2" face="'Courier New'" color="#000000">VOLTAGE</font> statement is optional and can be used only once for each special net in the <font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement.</p>
<h4><a name="1044250">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050150">int defwSpecialNetVoltage(<dd>double </a><font size="2" face="'Courier New'" color="#000000"><em>volts</em></font>)</font>
</dl>
<h4><a name="1050151">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1044264"><font size="2" face="'Courier New'" color="#000000"><em>volts</em></font></a></strong>
</p>
<blockquote><a name="1070250">Specifies the voltage for the net as an integer in units of .001 volts. For Example, 1.5 v is equal to 1500 in DEF.</a></blockquote>
<h3><a name="1030103">defwSpecialNetWeight</a></h3>
<p><a name="1044320">Writes a </a><font size="2" face="'Courier New'" color="#000000">WEIGHT</font> statement. The <font size="2" face="'Courier New'" color="#000000">WEIGHT</font> statement is optional and can be used only once for each special net in the <font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement.</p>
<h4><a name="1044301">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1044302">int defwSpecialNetWeight(<dd>double </a><font size="2" face="'Courier New'" color="#000000"><em>weight</em></font>)</font>
</dl>
<h4><a name="1050154">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1050155"><font size="2" face="'Courier New'" color="#000000"><em>weight</em></font></a></strong>
</p>
<blockquote><a name="1070257">Specifies the weight of the net. Automatic layout tools attempt to shorten the lengths of nets with high weights. Do not specify a net weight larger than </a><font size="2" face="'Courier New'" color="#000000">10</font>, or assign weights to more than <font size="2" face="'Courier New'" color="#000000">3</font> percent of the nets in a design.</blockquote>
<h3><a name="1047591">Special Nets Example</a></h3>
<p><a name="1049040">The following example shows a callback routine with the type </a><font size="2" face="'Courier New'" color="#000000">defwSNetCbkType</font>. This example only shows the usage of some functions related to special net.</p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1053852">int snetCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd> const char **coorX, **coorY;<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1053853"> &#47;&#47; Check if the type is correct<dd>if (type != defwSNetCbkType) {<dd>printf(&#34;Type is not defwSNetCbkType, terminate<dd> &nbsp;&nbsp;&nbsp;&nbsp;writing.\n&#34;);<dd>return 1;<dd>}<dd><dd>&nbsp;&nbsp;&nbsp;&nbsp;res = defwStartSpecialNets(2);<dd> CHECK_RES(res);<dd> res = defwSpecialNet(&#34;net1&#34;);<dd> CHECK_RES(res);<dd> res = defwSpecialNetConnection(&#34;cell1&#34;, &#34;VDD&#34;, 0);<dd> CHECK_RES(res);<dd> res = defwSpecialNetWidth(&#34;M1&#34;, 200);<dd> CHECK_RES(res);<dd> res = defwSpecialNetVoltage(3.2);<dd> CHECK_RES(res);<dd> res = defwSpecialNetSpacing(&#34;M1&#34;, 200, 190, 210);<dd> CHECK_RES(res);<dd> res = defwSpecialNetSource(&#34;TIMING&#34;);<dd> CHECK_RES(res);<dd> res = defwSpecialNetOriginal(&#34;VDD&#34;);<dd> CHECK_RES(res);<dd> res = defwSpecialNetUse(&#34;POWER&#34;);<dd> CHECK_RES(res);<dd> res = defwSpecialNetWeight(30);<dd> CHECK_RES(res);<dd> res = defwStringProperty(&#34;contype&#34;, &#34;star&#34;);<dd> CHECK_RES(res);<dd> res = defwIntProperty(&#34;ind&#34;, 1);<dd> CHECK_RES(res);<dd> res = defwRealProperty(&#34;maxlength&#34;, 12.13);<dd> CHECK_RES(res);<dd> res = defwSpecialNetEndOneNet();<dd> CHECK_RES(res);<dd> res = defwSpecialNet(&#34;VSS&#34;);<dd> CHECK_RES(res);<dd> res = defwSpecialNetConnection(&#34;cell1&#34;, &#34;GND&#34;, 0);<dd> CHECK_RES(res);<dd><dd>&nbsp;&nbsp;&nbsp;&nbsp;...<dd> &#47;&#47; An example on Special Wiring can be found under the<dd> &#47;&#47; Special Wiring section.<dd><dd> ...<dd> &#47;&#47; An example on SpecialNet Shield can be found under the<dd> &#47;&#47; Shielded Routing section.<dd><dd>&nbsp;&nbsp;&nbsp;&nbsp;res = defwSpecialNetPattern(&#34;STEINER&#34;);<dd> CHECK_RES(res);<dd> res = defwSpecialNetEstCap(100);<dd> CHECK_RES(res);<dd> res = defwSpecialNetEndOneNet();<dd> CHECK_RES(res);<dd> res = defwEndSpecialNets();<dd> CHECK_RES(res);<dd> return 0;}</a></font>
</dl>
<h2><a name="1030116">Special Wiring</a></h2>
<p><a name="1046732">Special wiring routines form a </a><font color="#000000"><em>specialWiring</em></font> statement that can be used to define the wiring for both routed and shielded nets.The <font color="#000000"><em>specialWiring</em></font> statement is optional and can be used more than once in a <font size="2" face="'Courier New'" color="#000000">SPECIALNET</font> statement. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement, see <a href="../lefdefref/DEFSyntax.html#SpecialNets" target="external_window"><font color="#0000ff"><u>"Special Nets"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1033507">A </a><font color="#000000"><em>specialWiring </em></font>statement can include routines to define either rectangles, polygons, or a path of points to create the routing for the nets. Each path of points must start and end with the <font size="2" face="'Courier New'" color="#000000">defwSpecialNetPathStart</font> and <font size="2" face="'Courier New'" color="#000000">defwSpecialNetPathEnd</font> routines. If defined, a <font size="2" face="'Courier New'" color="#000000"><em>specialWiring</em></font> statement must be included between the <font size="2" face="'Courier New'" color="#000000">defwSpecialNet</font> and <font size="2" face="'Courier New'" color="#000000">defwEndOneNet</font> routines.</p>
<p><a name="1051228">For examples of the routines described here, see </a><a href="#1047592" title="6"><font color="Blue"><u>"Special Wiring Example"</u></font></a><a href="#1047592" title="6"></a>.</p>
<p><a name="1051229">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="1030124">defwSpecialNetPathStart</a></h3>
<p><a name="1044759">Starts a </a><font color="#000000"><em>specialWiring</em></font> statement. Each <font size="2" face="'Courier New'" color="#000000"><em>specialWiring</em></font> statement must start and end with <font size="2" face="'Courier New'" color="#000000">defwSpecialNetPathStart</font> and <font size="2" face="'Courier New'" color="#000000">defwSpecialNetPathEnd</font>. </p>
<h4><a name="1044740">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1044741">int defwSpecialNetPathStart(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>type</em></font>)</font>
</dl>
<h4><a name="1044752">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1044754"><font size="2" face="'Courier New'" color="#000000"><em>type</em></font></a></strong>
</p>
<blockquote><a name="1070264">Specifies the special wiring type. If no wiring is specified for a particular net, the net is unrouted. <br></a><font color="#000000"><em>Value:</em></font> Specify one of the following:</blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="647">
<caption>
<tr>
<td cellpadding="4" valign="top" width="197">
<p><a name="1054986"><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></a></p>
</td>
<td cellpadding="4" valign="top" width="135">
<p><a name="1054988"><font size="2" face="'Courier New'" color="#000000">COVER</font></a></p>
</td>
<td cellpadding="4" valign="top" width="315">
<p><a name="1054990">Specifies that the wiring cannot be moved by either automatic layout or interactive commands.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1054992">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1054994"><font size="2" face="'Courier New'" color="#000000">FIXED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1054996">Specifies that the wiring cannot be moved by automatic layout, but can be changed by interactive commands.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1054998">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055000"><font size="2" face="'Courier New'" color="#000000">ROUTED</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1055002">Specifies that the wiring can be moved by automatic layout tools.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1058299">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1058301"><font size="2" face="'Courier New'" color="#000000">SHIELD</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1058303">Specifies that the special net being defined shields a regular net. </a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1062705">&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1062707"><font color="#000000">NEW</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1062709">Indicates a new wire segment. </a></p>
</td>
</tr>
</table>
<h3><a name="1030133">defwSpecialNetPathEnd</a></h3>
<p><a name="1044798">Ends the </a><font color="#000000"><em>specialWiring</em></font> statement. Each <font size="2" face="'Courier New'" color="#000000"><em>specialWiring</em></font> statement must start and end with <font size="2" face="'Courier New'" color="#000000">defwSpecialNetPathStart</font> and <font size="2" face="'Courier New'" color="#000000">defwSpecialNetPathEnd</font>. </p>
<h4><a name="1044786">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1044787">int defwSpecialNetPathEnd()</a></font>
</dl>
<h3><a name="1030144">defwSpecialNetPathLayer</a></h3>
<p><a name="1044830">Writes a </a><font size="2" face="'Courier New'" color="#000000">LAYER</font> statement. Either a <font size="2" face="'Courier New'" color="#000000">LAYER</font>, <font size="2" face="'Courier New'" color="#000000">POLYGON</font>, or <font size="2" face="'Courier New'" color="#000000">RECT</font> statement is required for each specialWiring statement.The <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement can be used more than once for each <font size="2" face="'Courier New'" color="#000000"><em>specialWiring</em></font> statement. </p>
<h4><a name="1044813">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1044814">int defwSpecialNetPathLayer(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>) </font>
</dl>
<h4><a name="1044835">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1044836"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1070272">Specifies the layer on which the wire lies.</a></blockquote>
<h3><a name="1062725">defwSpecialNetPathPoint</a></h3>
<p><a name="1062726">Defines the center line coordinates of the route on the layer specified with </a><font size="2" face="'Courier New'" color="#000000">defwSpecialNetPathLayer</font>. Either this routine or <font size="2" face="'Courier New'" color="#000000">defwSpecialNetPathPointWithWireExt</font> is required with a <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement, and can be used only once for each <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement in a <font size="2" face="'Courier New'" color="#000000"><em>specialWiring</em></font> statement.</p>
<h4><a name="1044861">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1044862">int defwSpecialNetPathPoint(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>numPts</em></font>, <dd>const char** <font size="2" face="'Courier New'" color="#000000"><em>pointX</em></font>, <dd>const char** <font size="2" face="'Courier New'" color="#000000"><em>pointY</em></font>) </font>
</dl>
<h4><a name="1044873">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1044889"><font size="2" face="'Courier New'" color="#000000"><em>numPts</em></font></a></strong>
</p>
<blockquote><a name="1070279">Specifies the number of points in the route.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1046821"><font size="2" face="'Courier New'" color="#000000"><em>pointX pointY</em></font></a></strong>
</p>
<blockquote><a name="1070286">Specifies the route coordinates.</a></blockquote>
<h3><a name="defwSpecialNetPathPointWithWireExt"></a><a name="1030160">defwSpecialNetPathPointWithWireExt</a></h3>
<p><a name="1064183">Defines the center line coordinates and wire extension value of the route on the layer specified with </a><font size="2" face="'Courier New'" color="#000000">defwSpecialNetPathLayer</font>. Either this routine or <font size="2" face="'Courier New'" color="#000000">defwSpecialNetPathPoint</font> is required with a <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement, and can be used only once for each <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement in a specialWiring statement.</p>
<h4><a name="1064207">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1064208">defwSpecialNetPathPointWithWireExt( <dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>numPoints</em></font>,<dd>const char** <font size="2" face="'Courier New'" color="#000000"><em>pointX</em></font>,<dd>const char** <font size="2" face="'Courier New'" color="#000000"><em>pointY</em></font>,<dd>const char** <font size="2" face="'Courier New'" color="#000000"><em>value</em></font>)</font>
</dl>
<h4><a name="1064209">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1064210"><font size="2" face="'Courier New'" color="#000000"><em>numPoints</em></font></a></strong>
</p>
<blockquote><a name="1070293">Specifies the number of points in the route.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1064215"><font size="2" face="'Courier New'" color="#000000"><em>pointX</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>pointY</em></font></strong>
</p>
<blockquote><a name="1070301">Specifies the route coordinates.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1064216"><font size="2" face="'Courier New'" color="#000000"><em>value</em></font></a></strong>
</p>
<blockquote><a name="1070309">Optional argument that specifies the amount by which the wire is extended past the endpoint of the segment. Specify </a><font size="2" face="'Courier New'" color="#000000">NULL</font> to ignore this argument.</blockquote>
<h3><a name="1064178">defwSpecialNetPathShape</a></h3>
<p><a name="1044917">Writes a </a><font size="2" face="'Courier New'" color="#000000">SHAPE</font> statement. The <font size="2" face="'Courier New'" color="#000000">SHAPE</font> statement is optional with a <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement, and can be used only once for each <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement in a <font size="2" face="'Courier New'" color="#000000"><em>specialWiring</em></font> statement.</p>
<h4><a name="1044904">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1044905">int defwSpecialNetPathShape(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>shapeType</em></font>)</font>
</dl>
<h4><a name="1044923">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1055074"><font size="2" face="'Courier New'" color="#000000"><em>shapeType</em></font></a></strong>
</p>
<blockquote><a name="1070317">Specifies a wire with special connection requirements because of its shape. <br></a><font color="#000000"><em>Value:</em></font> <font size="2" face="'Courier New'" color="#000000">RING</font>, <font size="2" face="'Courier New'" color="#000000">PADRING</font>, <font size="2" face="'Courier New'" color="#000000">BLOCKRING</font>, <font size="2" face="'Courier New'" color="#000000">STRIPE</font>, <font size="2" face="'Courier New'" color="#000000">FOLLOWPIN</font>, <font size="2" face="'Courier New'" color="#000000">IOWIRE</font>, <font size="2" face="'Courier New'" color="#000000">COREWIRE</font>, <font size="2" face="'Courier New'" color="#000000">BLOCKWIRE</font>, <font size="2" face="'Courier New'" color="#000000">FILLWIRE</font>, <font size="2" face="'Courier New'" color="#000000">BLOCKAGEWIRE</font>, or <font size="2" face="'Courier New'" color="#000000">DRCFILL</font></blockquote>
<h3><a name="defwSpecialNetPathStyle"></a><a name="1044926">defwSpecialNetPathStyle </a></h3>
<p><a name="1063138">Writes a </a><font size="2" face="'Courier New'" color="#000000">STYLE</font> statement. A <font size="2" face="'Courier New'" color="#000000">STYLE</font> statement is optional with a <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement, and can be used only once for each <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement in a <font size="2" face="'Courier New'" color="#000000"><em>specialWiring</em></font> statement.</p>
<h4><a name="1063162">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1063163">defwSpecialNetStyle( <dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>styleNum</em></font>)</font>
</dl>
<h4><a name="1063164">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1063165"><font size="2" face="'Courier New'" color="#000000"><em>styleNum</em></font></a></strong>
</p>
<blockquote><a name="1070324">Specifies a previously defined style number from the </a><font size="2" face="'Courier New'" color="#000000">STYLES</font> section in this DEF file. </blockquote>
<h3><a name="1063137">defwSpecialNetPathVia</a></h3>
<p><a name="1062820">Specifies a via for the special wiring. This routine is optional with a </a><font size="2" face="'Courier New'" color="#000000">LAYER</font> statement, and can be used only once for each <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement in a <font size="2" face="'Courier New'" color="#000000"><em>specialWiring</em></font> statement. </p>
<h4><a name="1062821">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1044962">int defwSpecialNetPathVia(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>viaName</em></font>)</font>
</dl>
<h4><a name="1044973">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1044974"><font size="2" face="'Courier New'" color="#000000"><em>viaName</em></font></a></strong>
</p>
<blockquote><a name="1070332">Specifies a via to place at the last point of the route.</a></blockquote>
<h3><a name="defwSpecialNetPathViaData"></a><a name="1030176">defwSpecialNetPathViaData</a></h3>
<p><a name="1058316">Creates an array of power vias of the via specified with </a><font size="2" face="'Courier New'" color="#000000">defwSpecialNetPathVia</font>. This routine is optional with a <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement, and can be used only once for each <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement in a <font size="2" face="'Courier New'" color="#000000"><em>specialWiring</em></font> statement. </p>
<h4><a name="1058317">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1058318">int defwSpecialNetPathViaData(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>numX</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>numY</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>stepX</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>stepY</em></font>)</font>
</dl>
<h4><a name="1058319">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1058320"><font size="2" face="'Courier New'" color="#000000"><em>numX</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>numY</em></font></strong>
</p>
<blockquote><a name="1070339">Specifies the number of vias to create in the x and y directions.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1058324"><font size="2" face="'Courier New'" color="#000000"><em>stepX</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>stepY</em></font> </strong>
</p>
<blockquote><a name="1070347">Specifies the step distance between vias, in the x and y directions</a></blockquote>
<h3><a name="1058315">defwSpecialNetPathWidth</a></h3>
<p><a name="1045020">Writes a </a><font size="2" face="'Courier New'" color="#000000">WIDTH</font> statement. The <font size="2" face="'Courier New'" color="#000000">WIDTH</font> statement is required with a <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement, and can be used only once for each <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement in a <font size="2" face="'Courier New'" color="#000000"><em>specialWiring</em></font> statement.</p>
<h4><a name="1045001">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1045002">int defwSpecialNetPathWidth(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>width</em></font>)</font>
</dl>
<h4><a name="1045013">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1046836"><font size="2" face="'Courier New'" color="#000000"><em>width</em></font></a></strong>
</p>
<blockquote><a name="1070354">Specifies the width for wires on the layer specified with </a><font size="2" face="'Courier New'" color="#000000">defwSpecialNetPathLayer</font>. </blockquote>
<h3><a name="defwSpecialNetShieldNetName"></a><a name="1058309">defwSpecialNetShieldNetName</a></h3>
<p><a name="1058310">Specifies the name of a regular net to be shielded by the special net being defined. This routine is required if </a><font size="2" face="'Courier New'" color="#000000">SHIELD</font> is specified in the <font size="2" face="'Courier New'" color="#000000">defwSpecialNetPathStart</font> routine and can be used only once for each <font size="2" face="'Courier New'" color="#000000"><em>specialWiring</em></font> statement.</p>
<h4><a name="1058311">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1058312">int defwSpecialNetShieldNetName(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name</em></font>)</font>
</dl>
<h4><a name="1058313">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1058314"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1070361">Specifies the name of the regular net to be shielded.</a></blockquote>
<h3><a name="defwSpecialNetPolygon"></a><a name="1062926">defwSpecialNetPolygon</a></h3>
<p><a name="1062939">Writes a </a><font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement. Either a <font size="2" face="'Courier New'" color="#000000">LAYER</font>, <font size="2" face="'Courier New'" color="#000000">POLYGON</font>, or <font size="2" face="'Courier New'" color="#000000">RECT</font> statement is required for each <font size="2" face="'Courier New'" color="#000000"><em>specialWiring</em></font> statement. The <font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement can be used only once for each <font size="2" face="'Courier New'" color="#000000"><em>specialWiring</em></font> statement.</p>
<h4><a name="1062999">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1063000">defwSpecialNetPolygon( <dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>num_polys</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>)</font>
</dl>
<h4><a name="1063001">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1063002"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1070369">Specifies the layer on which to generate the polygon.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1063029"><font size="2" face="'Courier New'" color="#000000"><em>num_polys</em></font></a></strong>
</p>
<blockquote><a name="1070377">Specifies the number of polygon sides.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1063030"><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yl</em></font></strong>
</p>
<blockquote><a name="1070385">Specifies a sequence of points to generate a polygon geometry on </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>. The polygon edges must be parallel to the x axis, the y axis, or at a 45&#45;degree angle. </blockquote>
<h3><a name="defwSpecialNetRect"></a><a name="1062938">defwSpecialNetRect </a></h3>
<p><a name="1062927">Writes a </a><font size="2" face="'Courier New'" color="#000000">RECT</font> statement. Either a <font size="2" face="'Courier New'" color="#000000">LAYER</font>, <font size="2" face="'Courier New'" color="#000000">POLYGON</font>, or <font size="2" face="'Courier New'" color="#000000">RECT</font> statement is required for each specialWiring statement. The <font size="2" face="'Courier New'" color="#000000">RECT</font> statement can be used only once for each <font size="2" face="'Courier New'" color="#000000"><em>specialWiring</em></font> statement.</p>
<h4><a name="1063071">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1063072">defwSpecialNetRect( <dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>xh</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>yh</em></font>)</font>
</dl>
<h4><a name="1063073">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1063074"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1070393">Specifies the layer on which to create the rectangle. </a></blockquote>
<p>
<strong></strong>
<strong><a name="1063102"><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yl</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>xh</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yh</em></font></strong>
</p>
<blockquote><a name="1070401">Specifies the coordinates of two points which define the opposite corners of the rectangle.</a></blockquote>
<h3><a name="1047592">Special Wiring Example</a></h3>
<p><a name="1049131">The following example only shows the usage of some functions related to special wiring in a special net. This example is part of the special net callback routine.</a></p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050114">int snetCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd> const char **coorX, **coorY;<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1049182"> &nbsp;&nbsp;&nbsp;&nbsp;...<dd> res = defwSpecialNetPathStart(&#34;ROUTED&#34;);<dd> CHECK_RES(res);<dd> res = defwSpecialNetPathLayer(&#34;M1&#34;);<dd> CHECK_RES(res);<dd> res = defwSpecialNetPathWidth(250);<dd> CHECK_RES(res);<dd> res = defwSpecialNetPathShape(&#34;IOWIRE&#34;);<dd> CHECK_RES(res);<dd> coorX = (const char**)malloc(sizeof(char*)*3);<dd> coorY = (const char**)malloc(sizeof(char*)*3);<dd> coorX[0] = strdup(&#34;5&#34;);<dd> coorY[0] = strdup(&#34;15&#34;);<dd> coorX[1] = strdup(&#34;125&#34;);<dd> coorY[1] = strdup(&#34;*&#34;);<dd> coorX[2] = strdup(&#34;245&#34;);<dd> coorY[2] = strdup(&#34;*&#34;);<dd> res = defwSpecialNetPathPoint(3, coorX, coorY);<dd> CHECK_RES(res);<dd> res = defwSpecialNetPathEnd();<dd> free((char*)coorX[0]);<dd> free((char*)coorY[0]);<dd> free((char*)coorX[1]);<dd> free((char*)coorY[1]);<dd> ...<dd><dd> return 0;}</a></font>
</dl>
<h2><a name="1051269">Shielded Routing</a></h2>
<p><a name="1051294">The shielded routing routines form a </a><font color="#000000"><em>shielded routing</em></font> specification<font color="#000000"><em> </em></font>that can be used to define a special net. The <font color="#000000"><em>shielded routing</em></font> specification is optional and can be used more than once in a <font size="2" face="'Courier New'" color="#000000">SPECIALNET</font> statement. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">SPECIALNETS</font> statement, see <a href="../lefdefref/DEFSyntax.html#SpecialNets" target="external_window"><font color="#0000ff"><u>Special Nets</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1057885">You must begin and end a </a><font color="#000000"><em>shielded routing</em></font> specification with the <font size="2" face="'Courier New'" color="#000000">defwSpecialNetShieldStart</font> and <font size="2" face="'Courier New'" color="#000000">defwSpecialNetShieldEnd</font> routines. You must define all shielded routing between these routines. The shielded routing routines must be included between the <font size="2" face="'Courier New'" color="#000000">defwSpecialNet</font> and <font size="2" face="'Courier New'" color="#000000">defwEndOneNet</font> routines.</p>
<p><a name="1051241">For examples of the routines described here, see </a><a href="#1049460" title="6"><font color="Blue"><u>"Shielded Routing Example"</u></font></a><a href="#1049460" title="6"></a>.</p>
<h3><a name="1051238">defwSpecialNetShieldStart</a></h3>
<p><a name="1049380">Starts the shielded routing specification. This routine is optional and can be used only once to define each special net shield.</a></p>
<h4><a name="1049285">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1049455">int defwSpecialNetShieldStart(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name</em></font>)</font>
</dl>
<h4><a name="1049456">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1049289"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1070409">Specifies the net shield name. </a></blockquote>
<h3><a name="1049292">defwSpecialNetShieldEnd</a></h3>
<p><a name="1049294">Ends the shielded routing specification.</a></p>
<h4><a name="1049295">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1049296">int defwSpecialNetShieldEnd()</a></font>
</dl>
<h3><a name="1049299">defwSpecialNetShieldLayer</a></h3>
<p><a name="1049301">Writes a </a><font size="2" face="'Courier New'" color="#000000">LAYER</font> statement. The <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement is required and can be used only once per special net shield.</p>
<h4><a name="1049304">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1049305">int defwSpecialNetShieldLayer(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name</em></font>)</font>
</dl>
<h4><a name="1049307">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1049308"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1070417">Specifies the layer on which the wire lies.</a></blockquote>
<h3><a name="defwSpecialNetShieldPoint"></a><a name="1059067">defwSpecialNetShieldPoint</a></h3>
<p><a name="1059068">Specifies the points of the wire path in the special net shield. This routine is optional and can be used more than once per special net shield.</a></p>
<h4><a name="1059069">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1059070">int defwSpecialNetShieldPoint(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>numPts</em></font>,<dd>const char** <font size="2" face="'Courier New'" color="#000000"><em>pointx</em></font>,<dd>const char** <font size="2" face="'Courier New'" color="#000000"><em>pointy</em></font>)</font>
</dl>
<h4><a name="1059071">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1059072"><font size="2" face="'Courier New'" color="#000000"><em>numPts</em></font></a></strong>
</p>
<blockquote><a name="1070427">Specifies the number of points in the special net shield.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1059073"><font size="2" face="'Courier New'" color="#000000"><em>pointx pointy</em></font></a></strong>
</p>
<blockquote><a name="1070445">Specifies the coordinate locations for the path points.</a></blockquote>
<h3><a name="1049328">defwSpecialNetShieldShape</a></h3>
<p><a name="1049330">Writes a </a><font size="2" face="'Courier New'" color="#000000">SHAPE</font> statement. The <font size="2" face="'Courier New'" color="#000000">SHAPE</font> statement is optional and can be used only once per special net shield.</p>
<h4><a name="1049332">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1049333">int defwSpecialNetShieldShape(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>shapeType</em></font>)</font>
</dl>
<h4><a name="1049335">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1049425"><font size="2" face="'Courier New'" color="#000000"><em>shapeType</em></font></a></strong>
</p>
<blockquote><a name="1070455">Specifies a wire with special connection requirements because of its shape. <br></a><font color="#000000"><em>Value:</em></font> <font size="2" face="'Courier New'" color="#000000">RING</font>, <font size="2" face="'Courier New'" color="#000000">PADRING</font>, <font size="2" face="'Courier New'" color="#000000">BLOCKRING</font>, <font size="2" face="'Courier New'" color="#000000">STRIPE</font>, <font size="2" face="'Courier New'" color="#000000">FOLLOWPIN</font>, <font size="2" face="'Courier New'" color="#000000">IOWIRE</font>, <font size="2" face="'Courier New'" color="#000000">COREWIRE</font>, <font size="2" face="'Courier New'" color="#000000">BLOCKWIRE</font>, <font size="2" face="'Courier New'" color="#000000">FILLWIRE</font>, or <font size="2" face="'Courier New'" color="#000000">BLOCKAGEWIRE</font></blockquote>
<h3><a name="1049362">defwSpecialNetShieldVia</a></h3>
<p><a name="1049364">Specifies a via name for the special net shield. This routine is optional and can be used more than once per special net shield.</a></p>
<h4><a name="1049366">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1049367">int defwSpecialNetShieldVia(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name</em></font>)</font>
</dl>
<h4><a name="1049369">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1049370"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1070465">Specifies the via to place at the last specified path coordinate.</a></blockquote>
<h3><a name="defwSpecialNetShieldViaData"></a><a name="1059080">defwSpecialNetShieldViaData</a></h3>
<p><a name="1059097">Creates an array of power vias of the via specified with the </a><font size="2" face="'Courier New'" color="#000000">defwSpecialNetShieldVia</font> routine. This routine is optional and can be used more than once for a special net.</p>
<h4><a name="1059098">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1059099">int defwSpecialNetShieldViaData(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>numX</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>numY</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>stepX</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>stepY</em></font>)</font>
</dl>
<h4><a name="1059100">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1059101"><font size="2" face="'Courier New'" color="#000000"><em>numX</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>numY</em></font></strong>
</p>
<blockquote><a name="1070475">Specifies the number of vias to create in the x and y directions.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1059102"><font size="2" face="'Courier New'" color="#000000"><em>stepX</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>stepY</em></font></strong>
</p>
<blockquote><a name="1070483">Specifies the step distance in the x and y directions.</a></blockquote>
<h3><a name="defwSpecialNetShieldWidth"></a><a name="1059094">defwSpecialNetShieldWidth</a></h3>
<p><a name="1059081">Writes a </a><font size="2" face="'Courier New'" color="#000000">WIDTH</font> statement. The <font size="2" face="'Courier New'" color="#000000">WIDTH</font> statement is required and can be used only once per special net shield.</p>
<h4><a name="1059082">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1059083">int defwSpecialNetShieldWidth(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>width</em></font>)</font>
</dl>
<h4><a name="1059084">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1059085"><font size="2" face="'Courier New'" color="#000000"><em>width</em></font></a></strong>
</p>
<blockquote><a name="1070491">Specifies the wire width.</a></blockquote>
<h3><a name="1049460">Shielded Routing Example</a></h3>
<p><a name="1049515">The following example only shows the usage of some functions related to shielded routing in a special net. This example is part of the special net callback routine.</a></p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050122">int snetCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd> const char **coorX, **coorY;<dd><dd> ...<dd> res = defwSpecialNetShieldStart(&#34;my_net&#34;);<dd> CHECK_RES(res);<dd> res = defwSpecialNetShieldLayer(&#34;M2&#34;);<dd> CHECK_RES(res);<dd> res = defwSpecialNetShieldWidth(90);<dd> CHECK_RES(res);<dd> coorX[0] = strdup(&#34;14100&#34;);<dd> coorY[0] = strdup(&#34;342440&#34;);<dd> coorX[1] = strdup(&#34;13920&#34;);<dd> coorY[1] = strdup(&#34;*&#34;);<dd> res = defwSpecialNetShieldPoint(2, coorX, coorY);<dd> CHECK_RES(res);<dd> res = defwSpecialNetShieldVia(&#34;M2_TURN&#34;);<dd> CHECK_RES(res);<dd> free((char*)coorX[0]);<dd> free((char*)coorY[0]);<dd> coorX[0] = strdup(&#34;*&#34;);<dd> coorY[0] = strdup(&#34;263200&#34;);<dd> res = defwSpecialNetShieldPoint(1, coorX, coorY);<dd> CHECK_RES(res);<dd> res = defwSpecialNetShieldVia(&#34;M1_M2&#34;);<dd> CHECK_RES(res);<dd> free((char*)coorX[0]);<dd> free((char*)coorY[0]);<dd> coorX[0] = strdup(&#34;2400&#34;);<dd> coorY[0] = strdup(&#34;*&#34;);<dd> res = defwSpecialNetShieldPoint(1, coorX, coorY);<dd> CHECK_RES(res);<dd> res = defwSpecialNetShieldEnd();<dd> ...<dd><dd> return 0;}</a></font>
</dl>
<h2><a name="1052810">Slots</a></h2>
<p><a name="1054016">Slots routines write a DEF </a><font size="2" face="'Courier New'" color="#000000">SLOTS</font> statement. The <font size="2" face="'Courier New'" color="#000000">SLOTS</font> statement is optional and can be used only once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">SLOTS</font> statement, see <a href="../lefdefref/DEFSyntax.html#Slots" target="external_window"><font color="#0000ff"><u>"Slots"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1053995">The </a><font size="2" face="'Courier New'" color="#000000">SLOTS</font> statement must start and end with the <font size="2" face="'Courier New'" color="#000000">defwStartSlots</font> and <font size="2" face="'Courier New'" color="#000000">defwEndSlots</font> routines. All slots must be defined between these routines. </p>
<p><a name="1053996">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="defwStartSlots"></a><a name="1052813">defwStartSlots</a></h3>
<p><a name="1052814">Starts a </a><font size="2" face="'Courier New'" color="#000000">SLOTS</font> statement.</p>
<h4><a name="1052815">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052816">int defwStartSlots(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>count</em></font>)</font>
</dl>
<h4><a name="1052817">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1052818"><font size="2" face="'Courier New'" color="#000000"><em>count</em></font></a></strong>
</p>
<blockquote><a name="1070501">Specifies the number of </a><font size="2" face="'Courier New'" color="#000000">defwSlotLayer</font> routines in the <font size="2" face="'Courier New'" color="#000000">SLOTS</font> statement.</blockquote>
<h3><a name="defwEndSlots"></a><a name="1052819">defwEndSlots</a></h3>
<p><a name="1052824">Ends the </a><font size="2" face="'Courier New'" color="#000000">SLOTS</font> statement.</p>
<h4><a name="1052825">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052826">int defwEndSlots()</a></font>
</dl>
<h3><a name="defwSlotLayer"></a><a name="1052827">defwSlotLayer</a></h3>
<p><a name="1054062">Writes a </a><font size="2" face="'Courier New'" color="#000000">LAYER</font> statement. The <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement is required for each slot and can be used more than once in a <font size="2" face="'Courier New'" color="#000000">SLOTS</font> statement.</p>
<h4><a name="1052829">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052830">int defwSlotLayer(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>)</font>
</dl>
<h4><a name="1052831">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1052832"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1070509">Specifies the layer on which to create the slot.</a></blockquote>
<h3><a name="defwSlotPolygon"></a><a name="1061663">defwSlotPolygon </a></h3>
<p><a name="1061667">Writes a </a><font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement. Either a <font size="2" face="'Courier New'" color="#000000">POLYGON</font> or <font size="2" face="'Courier New'" color="#000000">RECT</font> statement is required with a <font size="2" face="'Courier New'" color="#000000">LAYER</font> statement. The <font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement can be used more than once for each slot in the <font size="2" face="'Courier New'" color="#000000">SLOTS</font> statement.</p>
<h4><a name="1061819">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1061827">defwSlotPolygon( <dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>num_polys</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>)</font>
</dl>
<h4><a name="1061828">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1061829"><font size="2" face="'Courier New'" color="#000000"><em>num_polys</em></font></a></strong>
</p>
<blockquote><a name="1070517">Specifies the number of polygon sides.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1061851"><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yl</em></font></strong>
</p>
<blockquote><a name="1070525">Specifies a sequence of points to generate a polygon geometry. The polygon edges must be parallel to the x axis, the y axis, or at a 45&#45;degree angle.</a></blockquote>
<h3><a name="defwSlotRect"></a><a name="1052833">defwSlotRect</a></h3>
<p><a name="1054072">Writes a </a><font size="2" face="'Courier New'" color="#000000">RECT</font> statement. The <font size="2" face="'Courier New'" color="#000000">RECT</font> statement is required and can be used more than once for each slot in the <font size="2" face="'Courier New'" color="#000000">SLOTS</font> statement.</p>
<h4><a name="1052835">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1052836">int defwSlotRect(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>xh</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>yh</em></font>)</font>
</dl>
<h4><a name="1052837">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1052838"><font size="2" face="'Courier New'" color="#000000"><em>xl yl xh yh</em></font></a></strong>
</p>
<blockquote><a name="1070533">Specifies the coordinates of the slot geometry. </a></blockquote>
<h2><a name="1062343">Styles </a></h2>
<p><a name="1062347">Styles routines write a DEF </a><font size="2" face="'Courier New'" color="#000000">STYLES</font> statement. The <font size="2" face="'Courier New'" color="#000000">STYLES</font> statement is optional and can be used only once in a DEF file. For syntax information about the <font size="2" face="'Courier New'" color="#000000">STYLES</font> statement, see <a href="../lefdefref/DEFSyntax.html#Styles" target="external_window"><font color="#0000ff"><u>"Styles"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>. </p>
<p><a name="1062356">The </a><font size="2" face="'Courier New'" color="#000000">STYLES</font> statement must start and end with the <font size="2" face="'Courier New'" color="#000000">defwStartStyles</font> and <font size="2" face="'Courier New'" color="#000000">defwEndStyles</font> routines. </p>
<p><a name="1062357">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="defwStartStyles"></a><a name="1062358">defwStartStyles </a></h3>
<p><a name="1062387">Starts the </a><font size="2" face="'Courier New'" color="#000000">STYLES</font> statement.</p>
<h4><a name="1062389">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1062390">defwStartStyles(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>count</em></font>)</font>
</dl>
<h4><a name="1062394">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1062401"><font size="2" face="'Courier New'" color="#000000"><em>count</em></font></a></strong>
</p>
<blockquote><a name="1070541">Specifies the number of styles defined in the </a><font size="2" face="'Courier New'" color="#000000">STYLES</font> statement.</blockquote>
<h3><a name="defwEndStyles"></a><a name="1062402">defwEndStyles </a></h3>
<p><a name="1062418">Ends the </a><font size="2" face="'Courier New'" color="#000000">STYLES</font> statement.</p>
<h4><a name="1062423">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1062424">defwEndStyles()</a></font>
</dl>
<h3><a name="defwStyles"></a><a name="1062425">defwStyles </a></h3>
<p><a name="1062440">Defines a style. This routine is required and can be used more than once in the </a><font size="2" face="'Courier New'" color="#000000">STYLES</font> statement.</p>
<h4><a name="1062442">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1062446">defwStyles( <dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>styleNums</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>num_points</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>xp</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>yp</em></font>)</font>
</dl>
<h4><a name="1062447">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1062448"><font size="2" face="'Courier New'" color="#000000"><em>styleNums</em></font></a></strong>
</p>
<blockquote><a name="1070549">Defines a style. </a><font size="2" face="'Courier New'" color="#000000"><em>styleNums</em></font> is a positive integer that is greater than or equal to 0 (zero), and is used to reference the style later in the DEF file. When defining multiple styles, the first <font size="2" face="'Courier New'" color="#000000"><em>styleNums</em></font> must be 0 (zero), and any following <font size="2" face="'Courier New'" color="#000000"><em>styleNums</em></font> should be numbered consecutively so that a table lookup can be used to find them easily.</blockquote>
<p>
<strong></strong>
<strong><a name="1062473"><font size="2" face="'Courier New'" color="#000000"><em>num_points</em></font></a></strong>
</p>
<blockquote><a name="1070557">Specifies the number of points in the style.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1062474"><font size="2" face="'Courier New'" color="#000000"><em>xp</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yp</em></font></strong>
</p>
<blockquote><a name="1070565">Specifies a sequence of points to generate a polygon geometry. The syntax corresponds to a coordinate pair, such as </a><font size="2" face="'Courier New'" color="#000000"><em>x</em></font> <font size="2" face="'Courier New'" color="#000000"><em>y</em></font>. Specify an asterisk (<font size="2" face="'Courier New'" color="#000000">*</font>) to repeat the same value as the previous <font size="2" face="'Courier New'" color="#000000"><em>x</em></font> or <font size="2" face="'Courier New'" color="#000000"><em>y</em></font> value from the last point. The polygon must be convex. The polygon edges must be parallel to the x axis, the y axis, or at a 45&#45;degree angle, and must enclose the point (<font size="2" face="'Courier New'" color="#000000">0</font> <font size="2" face="'Courier New'" color="#000000">0</font>).</blockquote>
<h2><a name="1058605">Technology </a></h2>
<p><a name="1058606">The Technology routine writes a DEF </a><font size="2" face="'Courier New'" color="#000000">TECHNOLOGY</font> statement. The <font size="2" face="'Courier New'" color="#000000">TECHNOLOGY</font> statement is optional and can be used only once in a DEF file. For syntax information about the <font size="2" face="'Courier New'" color="#000000">TECHNOLOGY</font> statement, see <a href="../lefdefref/DEFSyntax.html#Technology" target="external_window"><font color="#0000ff"><u>"Technology"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1058612">This routine returns </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="defwTechnology"></a><a name="1058613">defwTechnology</a></h3>
<p><a name="1058614">Writes a </a><font size="2" face="'Courier New'" color="#000000">TECHNOLOGY</font> statement.</p>
<h4><a name="1058615">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1058616">int defwTechnology(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>technology</em></font>)</font>
</dl>
<h4><a name="1058621">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1058622"><font size="2" face="'Courier New'" color="#000000"><em>technology</em></font></a></strong>
</p>
<blockquote><a name="1070573">Specifies a technology name for the design in the database. </a></blockquote>
<h2><a name="1045530">Tracks</a></h2>
<p><a name="1051328">The Tracks routine writes a DEF </a><font size="2" face="'Courier New'" color="#000000">TRACKS</font> statement. The <font size="2" face="'Courier New'" color="#000000">TRACKS</font> statement is optional and can be used only once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">TRACKS</font> statement, see <a href="../lefdefref/DEFSyntax.html#Tracks" target="external_window"><font color="#0000ff"><u>Tracks</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1029859">If the DEF file contains a </a><font size="2" face="'Courier New'" color="#000000">ROWS</font> statement, the <font size="2" face="'Courier New'" color="#000000">TRACKS</font> statement must follow it. For more information about the DEF <font size="2" face="'Courier New'" color="#000000">ROWS</font> writer routine, see <a href="#1030184" title="6"><font color="Blue"><u>"Rows"</u></font></a><a href="#1030184" title="6"></a>.</p>
<p><a name="1051342">For examples of the routines described here, see </a><a href="#1047593" title="6"><font color="Blue"><u>"Tracks Example"</u></font></a><a href="#1047593" title="6"></a>.</p>
<p><a name="1029863">This routine returns </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="1029872">defwTracks</a></h3>
<p><a name="1045068">Writes a </a><font size="2" face="'Courier New'" color="#000000">TRACKS</font> statement. </p>
<h4><a name="1045047">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1045048">int defwTracks(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>master</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>doStart</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>doCount</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>doStep</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>numLayers</em></font>,<dd>const char** <font size="2" face="'Courier New'" color="#000000"><em>layers</em></font>)</font>
</dl>
<h4><a name="1045059">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1054862"><font size="2" face="'Courier New'" color="#000000"><em>doCount</em></font></a></strong>
</p>
<blockquote><a name="1070596">Specifies the number of tracks to create.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1070597"><font size="2" face="'Courier New'" color="#000000"><em>doStep</em></font></a></strong>
</p>
<blockquote><a name="1070598">Specifies the step spacing between the tracks.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1046866"><font size="2" face="'Courier New'" color="#000000"><em>doStart</em></font></a></strong>
</p>
<blockquote><a name="1070603">Specifies the coordinate of the first line.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1045102"><font size="2" face="'Courier New'" color="#000000"><em>layers</em></font></a></strong>
</p>
<blockquote><a name="1070610">Specifies the routing layers used for the tracks.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1054876"><font size="2" face="'Courier New'" color="#000000"><em>master</em></font></a></strong>
</p>
<blockquote><a name="1070617">Specifies the direction for the first track defined. <br></a><font color="#000000"><em>Value: </em></font>Specify one of the following: </blockquote>
<table summary="" border="0" cellpadding="4" cellspacing="0" bordercolor="#D3D3D3" width="648">
<caption>
<tr>
<td cellpadding="4" valign="top" width="204">
<p><a name="1058720">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top" width="84">
<p><a name="1058722"><font size="2" face="'Courier New'" color="#000000">X</font></a></p>
</td>
<td cellpadding="4" valign="top" width="360">
<p><a name="1058724">Indicates vertical lines.</a></p>
</td>
</tr>
<tr>
<td cellpadding="4" valign="top">
<p><a name="1058726">&nbsp;&nbsp;&nbsp;</a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1058728"><font size="2" face="'Courier New'" color="#000000">Y</font></a></p>
</td>
<td cellpadding="4" valign="top">
<p><a name="1058730">Indicates horizontal lines.</a></p>
</td>
</tr>
</table>
<p>
<strong></strong>
<strong><a name="1054872"><font size="2" face="'Courier New'" color="#000000"><em>numLayers</em></font></a></strong>
</p>
<blockquote><a name="1070624">Specifies the number of routing layers to use for tracks.</a></blockquote>
<h3><a name="1047593">Tracks Example</a></h3>
<p><a name="1049190">The following example shows a callback routine with the type </a><font size="2" face="'Courier New'" color="#000000">defwTrackCbkType</font>.</p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050130">int trackCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd> const char** layers;<dd><dd> &#47;&#47; Check if the type is correct<dd> if (type != defwTrackCbkType) {<dd> printf(&#34;Type is not defwTrackCbkType, terminate<dd> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writing.\n&#34;);<dd> return 1;<dd> }<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1049204"> &nbsp;&nbsp;&nbsp;&nbsp;layers = (const char**)malloc(sizeof(char*)*1);<dd> layers[0] = strdup(&#34;M1&#34;);<dd> res = defwTracks(&#34;X&#34;, 3000, 40, 120, 1, layers);<dd> CHECK_RES(res);<dd> free((char*)layers[0]);<dd> layers[0] = strdup(&#34;M2&#34;);<dd> res = defwTracks(&#34;Y&#34;, 5000, 10, 20, 1,layers);<dd> CHECK_RES(res);<dd> free((char*)layers[0]);<dd> free((char*)layers);<dd> res = defwNewLine();<dd> CHECK_RES(res);<dd><dd> return 0;}</a></font>
</dl>
<h2><a name="1058627">Units</a></h2>
<p><a name="1058628">The Units routine writes a DEF </a><font size="2" face="'Courier New'" color="#000000">UNITS</font> statement. The <font size="2" face="'Courier New'" color="#000000">UNITS</font> statement is optional and can be used only once in a DEF file. For syntax information about the <font size="2" face="'Courier New'" color="#000000">UNITS</font> statement, see <a href="../lefdefref/DEFSyntax.html#Units" target="external_window"><font color="#0000ff"><u>"Units"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>.</p>
<p><a name="1058633">This routine returns </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="defwUnits"></a><a name="1058634">defwUnits</a></h3>
<p><a name="1058636">Writes a </a><font size="2" face="'Courier New'" color="#000000">UNITS</font> statement.</p>
<h4><a name="1058637">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1058638">int defwUnits(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>units</em></font>)</font>
</dl>
<h4><a name="1058639">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1058640"><font size="2" face="'Courier New'" color="#000000"><em>units</em></font></a></strong>
</p>
<blockquote><a name="1070632">Specifies the convert factor used to convert DEF distance units into LEF distance units. </a></blockquote>
<h2><a name="1058387">Version </a></h2>
<p><a name="1058388">The Version routine writes a DEF </a><font size="2" face="'Courier New'" color="#000000">VERSION</font> statement. The <font size="2" face="'Courier New'" color="#000000">VERSION</font> statement is required and can be used only once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">VERSION</font> statement, see <a href="../lefdefref/DEFSyntax.html#Version" target="external_window"><font color="#0000ff"><u>"Version"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>. </p>
<p><a name="1058398">This routine returns </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful.</p>
<h3><a name="defwVersion"></a><a name="1058399">defwVersion</a></h3>
<p><a name="1058400">Writes a </a><font size="2" face="'Courier New'" color="#000000">VERSION</font> statement.</p>
<h4><a name="1058401">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1058402">int defwVersion(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>vers1</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>vers2</em></font>)</font>
</dl>
<h4><a name="1058403">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1058407"><font size="2" face="'Courier New'" color="#000000"><em>version1</em></font></a></strong>
</p>
<blockquote><a name="1070640">Specifies the major number. </a></blockquote>
<p>
<strong></strong>
<strong><a name="1058405"><font size="2" face="'Courier New'" color="#000000"><em>version2</em></font></a></strong>
</p>
<blockquote><a name="1070648">Specifies the minor number.</a></blockquote>
<h2><a name="1024881">Vias</a></h2>
<p><a name="1033664">Vias routines write a DEF </a><font size="2" face="'Courier New'" color="#000000">VIAS</font> statement. The <font size="2" face="'Courier New'" color="#000000">VIAS</font> statement is optional and can be used only once in a DEF file. For syntax information about the DEF <font size="2" face="'Courier New'" color="#000000">VIAS</font> statement, see <a href="../lefdefref/DEFSyntax.html#Vias" target="external_window"><font color="#0000ff"><u>"Vias"</u></font></a> in the <font color="#000000"><em>LEF&#47;DEF Language Reference</em></font>. </p>
<p><a name="1033668">The </a><font size="2" face="'Courier New'" color="#000000">VIAS</font> statement must start and end with the <font size="2" face="'Courier New'" color="#000000">defwStartVias</font> and <font size="2" face="'Courier New'" color="#000000">defwEndVias</font> routines. All vias must be defined between these routines. Each individual via must start and end with the <font size="2" face="'Courier New'" color="#000000">defwViaName</font> and <font size="2" face="'Courier New'" color="#000000">defwOneViaEnd</font> routines. </p>
<p><a name="1051350">For examples of the routines described here, see </a><a href="#1060298" title="6"><font color="Blue"><u>"Vias Example"</u></font></a><a href="#1060298" title="6"></a>.</p>
<p><a name="1051349">All routines return </a><font size="2" face="'Courier New'" color="#000000">0</font> if successful. </p>
<h3><a name="1025215">defwStartVias</a></h3>
<p><a name="1045159">Starts a </a><font size="2" face="'Courier New'" color="#000000">VIAS</font> statement. </p>
<h4><a name="1045140">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1045141">int defwStartVias(<dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>count</em></font>)</font>
</dl>
<h4><a name="1045152">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1045154"><font size="2" face="'Courier New'" color="#000000"><em>count</em></font></a></strong>
</p>
<blockquote><a name="1070656">Specifies the number of vias defined in the </a><font size="2" face="'Courier New'" color="#000000">VIAS</font> statement.</blockquote>
<h3><a name="1024891">defwEndVias</a></h3>
<p><a name="1045203">Ends the </a><font size="2" face="'Courier New'" color="#000000">VIAS</font> statement. </p>
<p><a name="1060078">If the </a><font size="2" face="'Courier New'" color="#000000"><em>count</em></font> specified in <font size="2" face="'Courier New'" color="#000000">defwStartVias</font> is not the same as the actual number of <font size="2" face="'Courier New'" color="#000000">defwViaName</font> routines used, this routine returns <font size="2" face="'Courier New'" color="#000000">DEFW_BAD_DATA</font>. </p>
<h4><a name="1045191">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1045192">int defwEndVias(void)</a></font>
</dl>
<h3><a name="1033722">defwViaName</a></h3>
<p><a name="1045235">Starts a via description in the </a><font size="2" face="'Courier New'" color="#000000">VIAS</font> statement. Each via in the <font size="2" face="'Courier New'" color="#000000">VIAS</font> statement must start and end with <font size="2" face="'Courier New'" color="#000000">defwViaName</font> and <font size="2" face="'Courier New'" color="#000000">defwOneViaEnd</font>. This routine must be used the exact number of times specified with <font size="2" face="'Courier New'" color="#000000"><em>count</em></font> in <font size="2" face="'Courier New'" color="#000000">defwStartVias</font>.</p>
<p><a name="1060104">Each via can include one of the following routines:</a></p>
<div>
<table border="0" cellspacing="0" cellpadding="3" summary="">
<tr valign="baseline">
<td width="31.999679999999998">
<div>
<nobr>
<font color="#000000"><img src="images/b_bullet.gif" alt="ParagraphBullet" border="0"></font>
</nobr>
</div>
</td>
<td><a href="#defwViaPolygon" title="6" name="1060105"><font color="#0000ff"><u>defwViaPolygon</u></font></a></td>
</tr>
</table>
</div>
<div>
<table border="0" cellspacing="0" cellpadding="3" summary="">
<tr valign="baseline">
<td width="31.999679999999998">
<div>
<nobr>
<font color="#000000"><img src="images/b_bullet.gif" alt="ParagraphBullet" border="0"></font>
</nobr>
</div>
</td>
<td><a href="#1024821" title="6" name="1064245"><font color="Blue"><u>defwViaRect</u></font></a><a href="#1024821" title="6"> </a></td>
</tr>
</table>
</div>
<div>
<table border="0" cellspacing="0" cellpadding="3" summary="">
<tr valign="baseline">
<td width="31.999679999999998">
<div>
<nobr>
<font color="#000000"><img src="images/b_bullet.gif" alt="ParagraphBullet" border="0"></font>
</nobr>
</div>
</td>
<td><a href="#defwViaViarule" title="6" name="1060110"><font color="Blue"><u>defwViaViarule</u></font></a><a href="#defwViaViarule" title="6"> </a></td>
</tr>
</table>
</div>
<h4><a name="1045222">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1045223">int defwViaName(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>name</em></font>)</font>
</dl>
<h4><a name="1045240">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1045241"><font size="2" face="'Courier New'" color="#000000"><em>name</em></font></a></strong>
</p>
<blockquote><a name="1070663">Specifies the name of the via. Via names are generated by appending a number after the rule name. Vias are numbered in the order in which they are created.</a></blockquote>
<h3><a name="1033824">defwOneViaEnd</a></h3>
<p><a name="1045281">Ends a via description in the </a><font size="2" face="'Courier New'" color="#000000">VIAS</font> statement. Each via in the <font size="2" face="'Courier New'" color="#000000">VIAS</font> statement must start and end with <font size="2" face="'Courier New'" color="#000000">defwViaName</font> and <font size="2" face="'Courier New'" color="#000000">defwOneViaEnd</font>. This routine must be used the exact number of times specified with <font size="2" face="'Courier New'" color="#000000"><em>count</em></font> in <font size="2" face="'Courier New'" color="#000000">defwStartVias</font>.</p>
<h4><a name="1045269">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1045270">int defwOneViaEnd()</a></font>
</dl>
<h3><a name="defwViaPolygon"></a><a name="1064221">defwViaPolygon</a></h3>
<p><a name="1064222">Writes a </a><font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement for a via in the VIAS statement. Either a <font size="2" face="'Courier New'" color="#000000">POLYGON</font>, <font size="2" face="'Courier New'" color="#000000">RECT</font>, or <font size="2" face="'Courier New'" color="#000000">VIARULE</font> statement can be specified for a via. The <font size="2" face="'Courier New'" color="#000000">POLYGON</font> statement is optional and can be used more than once for each via in the <font size="2" face="'Courier New'" color="#000000">VIAS</font> statement. </p>
<h4><a name="1064252">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1064240">int defwViaPolygon( <dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>num_polys</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>, <dd>double* <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>)</font>
</dl>
<h4><a name="1064251">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1064253"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1070670">Specifies the layer on which to generate a polygon.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1064254"><font size="2" face="'Courier New'" color="#000000"><em>num_polys</em></font></a></strong>
</p>
<blockquote><a name="1070678">Specifies the number of polygon sides.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1064255"><font size="2" face="'Courier New'" color="#000000"><em>xl</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yl</em></font></strong>
</p>
<blockquote><a name="1070686">Specifies a sequence of points to generate a polygon geometry. The polygon edges must be parallel to the x axis, to the y axis, or at a 45&#45;degree angle.</a></blockquote>
<h3><a name="1024821">defwViaRect</a></h3>
<p><a name="1045361">Writes a </a><font size="2" face="'Courier New'" color="#000000">RECT</font> statement for a via in the <font size="2" face="'Courier New'" color="#000000">VIAS</font> statement. Either a <font size="2" face="'Courier New'" color="#000000">POLYGON</font>, <font size="2" face="'Courier New'" color="#000000">RECT</font>, or <font size="2" face="'Courier New'" color="#000000">VIARULE</font> statement can be specified for a via. The <font size="2" face="'Courier New'" color="#000000">RECT</font> statement is optional and can be used more than once for each via in the <font size="2" face="'Courier New'" color="#000000">VIAS</font> statement. </p>
<h4><a name="1045344">Syntax</a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1045345">int defwViaRect(<dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>xl</em></font>,<dd>int <font size="2" face="'Courier New'" color="#000000"><em>yl</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>xh</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>yh</em></font>) </font>
</dl>
<h4><a name="1045385">Arguments</a></h4>
<p>
<strong></strong>
<strong><a name="1045386"><font size="2" face="'Courier New'" color="#000000"><em>layerName</em></font></a></strong>
</p>
<blockquote><a name="1070694">Specifies the layer on which the via geometry lies. All geometries for the via, including the cut layers, are output by the DEF writer.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1046981"><font size="2" face="'Courier New'" color="#000000"><em>xl yl xh yh</em></font></a></strong>
</p>
<blockquote><a name="1070701">Defines the via geometry for the specified layer. The points are specified with respect to the via origin. In most cases, the via origin is the center of the via bounding box.</a></blockquote>
<h3><a name="defwViaViarule"></a><a name="1060125">defwViaViarule</a></h3>
<p><a name="1060126">Writes a </a><font size="2" face="'Courier New'" color="#000000">VIARULE</font> statement for a via in the <font size="2" face="'Courier New'" color="#000000">VIAS</font> statement. Either a <font size="2" face="'Courier New'" color="#000000">POLYGON</font>, <font size="2" face="'Courier New'" color="#000000">RECT</font>, or <font size="2" face="'Courier New'" color="#000000">VIARULE</font> statement can be specified for a via. The <font size="2" face="'Courier New'" color="#000000">VIARULE</font> statement is optional and can be used only once for each via in the <font size="2" face="'Courier New'" color="#000000">VIAS</font> statement.</p>
<p><a name="1060206">If you specify this routine, you can optionally specify the following routines:</a></p>
<div>
<table border="0" cellspacing="0" cellpadding="3" summary="">
<tr valign="baseline">
<td width="31.999679999999998">
<div>
<nobr>
<font color="#000000"><img src="images/b_bullet.gif" alt="ParagraphBullet" border="0"></font>
</nobr>
</div>
</td>
<td><a href="#defwViaViaruleRowCol" title="6" name="1060210"><font color="Blue"><u>defwViaViaruleRowCol</u></font></a><a href="#defwViaViaruleRowCol" title="6"> </a></td>
</tr>
</table>
</div>
<div>
<table border="0" cellspacing="0" cellpadding="3" summary="">
<tr valign="baseline">
<td width="31.999679999999998">
<div>
<nobr>
<font color="#000000"><img src="images/b_bullet.gif" alt="ParagraphBullet" border="0"></font>
</nobr>
</div>
</td>
<td><a href="#defwViaViaruleOrigin" title="6" name="1060388"><font color="Blue"><u>defwViaViaruleOrigin</u></font></a><a href="#defwViaViaruleOrigin" title="6"> </a></td>
</tr>
</table>
</div>
<div>
<table border="0" cellspacing="0" cellpadding="3" summary="">
<tr valign="baseline">
<td width="31.999679999999998">
<div>
<nobr>
<font color="#000000"><img src="images/b_bullet.gif" alt="ParagraphBullet" border="0"></font>
</nobr>
</div>
</td>
<td><a href="#defwViaViaruleOffset" title="6" name="1060393"><font color="Blue"><u>defwViaViaruleOffset</u></font></a><a href="#defwViaViaruleOffset" title="6"> </a></td>
</tr>
</table>
</div>
<div>
<table border="0" cellspacing="0" cellpadding="3" summary="">
<tr valign="baseline">
<td width="31.999679999999998">
<div>
<nobr>
<font color="#000000"><img src="images/b_bullet.gif" alt="ParagraphBullet" border="0"></font>
</nobr>
</div>
</td>
<td><a href="#defwViaViarulePattern" title="6" name="1060398"><font color="Blue"><u>defwViaViarulePattern</u></font></a><a href="#defwViaViarulePattern" title="6"> </a></td>
</tr>
</table>
</div>
<h4><a name="1060138">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1060139">defwViaViarule( <dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>viaRuleName</em></font>, <dd>double <font size="2" face="'Courier New'" color="#000000"><em>xCutSize</em></font>, <dd>double <font size="2" face="'Courier New'" color="#000000"><em>yCutSize</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>botMetalLayer</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>cutLayer</em></font>, <dd>const char* <font size="2" face="'Courier New'" color="#000000"><em>topMetalLayer</em></font>,<dd>double <font size="2" face="'Courier New'" color="#000000"><em>xCutSpacing</em></font>, <dd>double <font size="2" face="'Courier New'" color="#000000"><em>yCutSpacing</em></font>, <dd>double <font size="2" face="'Courier New'" color="#000000"><em>xBotEnc</em></font>, <dd>double <font size="2" face="'Courier New'" color="#000000"><em>yBotEnc</em></font>, <dd>double <font size="2" face="'Courier New'" color="#000000"><em>xTopEnc</em></font>, <dd>double <font size="2" face="'Courier New'" color="#000000"><em>yTopEnc</em></font>)</font>
</dl>
<h4><a name="1060140">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1060141"><font size="2" face="'Courier New'" color="#000000"><em>viaRuleName</em></font></a></strong>
</p>
<blockquote><a name="1070708">Specifies the name of the LEF </a><font size="2" face="'Courier New'" color="#000000">VIARULE</font> that produced this via. The <font size="2" face="'Courier New'" color="#000000">VIARULE</font> must be a <font size="2" face="'Courier New'" color="#000000">VIARULE</font> <font size="2" face="'Courier New'" color="#000000">GENERATE</font> via rule; it cannot refer to a <font size="2" face="'Courier New'" color="#000000">VIARULE</font> without a <font size="2" face="'Courier New'" color="#000000">GENERATE</font> keyword.</blockquote>
<p>
<strong></strong>
<strong><a name="1060143"><font size="2" face="'Courier New'" color="#000000"><em>xCutSize</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yCutSize</em></font></strong>
</p>
<blockquote><a name="1070716">Specifies the required width (</a><font size="2" face="'Courier New'" color="#000000"><em>xCutSize</em></font>) and height (<font size="2" face="'Courier New'" color="#000000"><em>yCutSize</em></font>) of the cut layer rectangles.</blockquote>
<p>
<strong></strong>
<strong><a name="1060144"><font size="2" face="'Courier New'" color="#000000"><em>botMetalLayer</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>cutLayer</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>topMetalLayer</em></font></strong>
</p>
<blockquote><a name="1070724">Specifies the required names of the bottom routing layer, cut layer, and top routing layer. These layer names must be previously defined in layer definitions, and must match the layer names defined in the specified LEF </a><font size="2" face="'Courier New'" color="#000000"><em>viaRuleName</em></font>. </blockquote>
<p>
<strong></strong>
<strong><a name="1060145"><font size="2" face="'Courier New'" color="#000000"><em>xCutSpacing</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yCutSpacing</em></font></strong>
</p>
<blockquote><a name="1070732">Specifies the required x and y spacing between cuts. The spacing is measured form one cut edge to the next cut edge.</a></blockquote>
<p>
<strong></strong>
<strong><a name="1060146"><font size="2" face="'Courier New'" color="#000000"><em>xBotEnc</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yBotEnc</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>xTopEnc</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yTopEnc</em></font></strong>
</p>
<blockquote><a name="1070740">Specifies the required x and y enclosure values for the bottom and top metal layers. The enclosure measures the distance from the cut array edge to the metal edge that encloses the cut array.</a></blockquote>
<h3><a name="defwViaViaruleRowCol"></a><a name="1060215">defwViaViaruleRowCol </a></h3>
<p><a name="1060217">Writes a </a><font size="2" face="'Courier New'" color="#000000">ROWCOL</font> statement in the <font size="2" face="'Courier New'" color="#000000">VIARULE</font> for a via. The <font size="2" face="'Courier New'" color="#000000">ROWCOL</font> statement is optional and can be used only once for each via in the <font size="2" face="'Courier New'" color="#000000">VIAS</font> statement.</p>
<h4><a name="1060223">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1060224">defwViaViaruleRowCol( <dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>numCutRows</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>numCutCols</em></font>)</font>
</dl>
<h4><a name="1060229">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1060230"><font size="2" face="'Courier New'" color="#000000"><em>numCutRows</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>numCutCols</em></font></strong>
</p>
<blockquote><a name="1070748">Specifies the number of cut rows and columns that make up the cut array. </a></blockquote>
<h3><a name="defwViaViaruleOrigin"></a><a name="1060247">defwViaViaruleOrigin </a></h3>
<p><a name="1060248">Writes an </a><font size="2" face="'Courier New'" color="#000000">ORIGIN</font> statement in a <font size="2" face="'Courier New'" color="#000000">VIARULE</font> statement for a via. The <font size="2" face="'Courier New'" color="#000000">ORIGIN</font> statement is optional and can be used only once for each via in the <font size="2" face="'Courier New'" color="#000000">VIAS</font> statement.</p>
<h4><a name="1060252">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1060253">defwViaViaruleOrigin( <dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>xOffset</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>yOffset</em></font>)</font>
</dl>
<h4><a name="1060254">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1060292"><font size="2" face="'Courier New'" color="#000000"><em>xOffset</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yOffset</em></font></strong>
</p>
<blockquote><a name="1070755">Specifies the x and y offset for all of the via shapes. By default, the </a><font size="2" face="'Courier New'" color="#000000">0,0</font> origin of the via is the center of the cut array and the enclosing metal rectangles. After the non&#45;shifted via is computed, all cut and metal rectangles are offset by adding these values.</blockquote>
<h3><a name="defwViaViaruleOffset"></a><a name="1060294">defwViaViaruleOffset </a></h3>
<p><a name="1060300">Writes an </a><font size="2" face="'Courier New'" color="#000000">OFFSET</font> statement in a <font size="2" face="'Courier New'" color="#000000">VIARULE</font> statement for a via. The <font size="2" face="'Courier New'" color="#000000">OFFSET</font> statement is optional and can be used only once for each via in the <font size="2" face="'Courier New'" color="#000000">VIAS</font> statement.</p>
<h4><a name="1060304">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1060305">defwViaViaruleOffset( <dd>int </a><font size="2" face="'Courier New'" color="#000000"><em>xBotOffset</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>yBotOffset</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>xTopOffset</em></font>, <dd>int <font size="2" face="'Courier New'" color="#000000"><em>yTopOffset</em></font>)</font>
</dl>
<h4><a name="1060306">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1060307"><font size="2" face="'Courier New'" color="#000000"><em>xBotOffset</em></font></a><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yBotOffset</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>xTopOffset</em></font><font size="2" face="'Courier New'" color="#000000"> </font><font size="2" face="'Courier New'" color="#000000"><em>yTopOffset</em></font></strong>
</p>
<blockquote><a name="1070763">Specifies the x and y offset for the bottom and top metal layers. These values allow each metal layer to be offset independently.<br>By default, the </a><font size="2" face="'Courier New'" color="#000000">0,0</font> origin of the via is the center of the cut array and the enclosing metal rectangles. After the non&#45;shifted via is computed, the metal layer rectangles are offset by adding the appropriate values&#45;&#45;the x&#47;y <font size="2" face="'Courier New'" color="#000000"><em>BotOffset</em></font> values to the metal layer below the cut layer, and the x&#47;y <font size="2" face="'Courier New'" color="#000000"><em>TopOffset</em></font> values to the metal layer above the cut layer. </blockquote>
<h3><a name="defwViaViarulePattern"></a><a name="1060374">defwViaViarulePattern </a></h3>
<p><a name="1060375">Writes a </a><font size="2" face="'Courier New'" color="#000000">PATTERN</font> statement in a <font size="2" face="'Courier New'" color="#000000">VIARULE</font> statement for a via. The <font size="2" face="'Courier New'" color="#000000">PATTERN</font> statement is optional and can be used only once for each via in the <font size="2" face="'Courier New'" color="#000000">VIAS</font> statement.</p>
<h4><a name="1060379">Syntax </a></h4>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1060380">defwViaViarulePattern( <dd>const char* </a><font size="2" face="'Courier New'" color="#000000"><em>cutPattern</em></font>)</font>
</dl>
<h4><a name="1060381">Arguments </a></h4>
<p>
<strong></strong>
<strong><a name="1060382"><font size="2" face="'Courier New'" color="#000000"><em>cutPattern</em></font></a></strong>
</p>
<blockquote><a name="1070779">Specifies the cut pattern encoded as an ASCII string. </a></blockquote>
<h3><a name="1060298">Vias Example</a></h3>
<p><a name="1060295">The following example shows a callback routine with the type </a><font size="2" face="'Courier New'" color="#000000">defwViaCbkType</font>.</p>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1050139">int viaCB (defwCallbackType_e type,<dd> defiUserData userData) {<dd> int res;<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1049234"> &#47;&#47; Check if the type is correct<dd>if (type != defwViaCbkType) {<dd>&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;Type is not defwViaCbkType, terminate<dd> &nbsp;&nbsp;&nbsp;&nbsp;writing.\n&#34;);<dd> return 1;<dd> }<dd></a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1054827"> &nbsp;&nbsp;&nbsp;&nbsp;res = defwStartVias(1);<dd> CHECK_RES(res);<dd> res = defwViaName(&#34;VIA_ARRAY&#34;);<dd> CHECK_RES(res);<dd> res = defwViaRect(&#34;M1&#34;, &#45;40, &#45;40, 40, 40);<dd> CHECK_RES(res);<dd> res = defwViaRect(&#34;V1&#34;, &#45;40, &#45;40, 40, 40);<dd> CHECK_RES(res);<dd> res = defwViaRect(&#34;M2&#34;, &#45;50, &#45;50, 50, 50);<dd> CHECK_RES(res);<dd> res = defwOneViaEnd();<dd> CHECK_RES(res);<dd> res = defwEndVias();<dd> CHECK_RES(res);<dd><dd>return 0;}</a></font>
</dl>
<dl>
<font size="2" face="'Courier New'" color="#000000"><a name="1046972">&nbsp;</a></font>
</dl>
</div>
<br>
<a href="#pagetop">Return to top of page</a>
<hr>
<hr align="left">
<div style="text-align: left;">
<!-- Begin Buttons -->
<table width="650" cellpadding="0" cellspacing="0" border="0">
<tr>
<td height="20" width="59">
<a href="javascript:openLibrary()"><img src="../support/nav2_library.gif" border="0" alt="View Library" height="20" width="59"></a>
</td>
<td height="20" width="73">
<a href="defapiTOC.html"><img src="../support/nav2_toc.gif" alt="Table of Contents" border="0"></a>
</td>
<td height="20" width="46">
<img src="../support/nav2_index_b.gif" border="0">
</td>
<td>
<a href="ch5DEFwritercallback.html"><img src="images/nav2_previous.gif" alt="Previous" border="0"></a>
</td>
<td>
<a href="ch7DEFcompressed.html"><img src="images/nav_next.gif" alt="Next" border="0"></a>
</td>
<td>
<a>
<a href="defapi.pdf"><img src="../support/nav2_print.gif" border="0" alt="Open PDF to print book" height="20" width="114"></a>
</a>
</td>
<td height="20" width="61">
<img src="../support/nav2_black.gif" border="0" height="20" width="76">
</td>
<td height="20" width="76">
<a href="/feedback.htm"><img src="../support/nav2_feedback.gif" border="0" alt="Email Comments" height="20" width="76"></a>
</td>
<td height="20" width="43">
<a href="../cdsuser/help.html"><img src="../support/nav2_help.gif" border="0" alt="Help Using Documentation" height="20" width="43"></a>
</td>
<td height="20" width="37">
<a href="/exitsearch.htm"><img src="../support/nav2_exit.gif" border="0" alt="Shut Down Cadence Documentation Server" height="20" width="37"></a>
</td>
</tr>
</table>
<!-- End Buttons -->
</div>
<br>
<font size="-1" >
For support, see <a href="http://support.cadence.com" target="_blank">Cadence Online Support</a> service.</font>
<br>
<br>
<font size="-1" >
<font size="-1"><i>Copyright &#169; 2016, <a href ="http://www.cadence.com">Cadence Design Systems, Inc.</a></i></font>
</font>
<br>
<font size="-1" >
All rights reserved.</font>
<br>
<br>
</body>
</html>