blob: d880c8b7a956f082c17652331640da31253a45c3 [file] [log] [blame]
/* ************************************************************************** */
/* ************************************************************************** */
/* ATTENTION: THIS IS AN AUTO-GENERATED FILE. DO NOT CHANGE IT! */
/* ************************************************************************** */
/* ************************************************************************** */
/* Copyright 2013, Cadence Design Systems */
/* */
/* This file is part of the Cadence LEF/DEF Open Source */
/* Distribution, Product Version 5.8. */
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); */
/* you may not use this file except in compliance with the License. */
/* You may obtain a copy of the License at */
/* */
/* http://www.apache.org/licenses/LICENSE-2.0 */
/* */
/* Unless required by applicable law or agreed to in writing, software */
/* distributed under the License is distributed on an "AS IS" BASIS, */
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
/* implied. See the License for the specific language governing */
/* permissions and limitations under the License. */
/* */
/* For updates, support, or to become part of the LEF/DEF Community, */
/* check www.openeda.org for details. */
/* */
/* $Author: dell $ */
/* $Revision: #1 $ */
/* $Date: 2017/06/06 $ */
/* $State: $ */
/* ************************************************************************** */
/* ************************************************************************** */
#ifndef CDEFWWRITER_H
#define CDEFWWRITER_H
#include <stdio.h>
#include "defiTypedefs.h"
/* Return codes for writing functions: */
#define DEFW_OK 0
#define DEFW_UNINITIALIZED 1
#define DEFW_BAD_ORDER 2
#define DEFW_BAD_DATA 3
#define DEFW_ALREADY_DEFINED 4
#define DEFW_WRONG_VERSION 5
#define DEFW_OBSOLETE 6
#define DEFW_TOO_MANY_STMS 7
/* section is smaller than the actual numbe */
/* of statements defined in that section */
/* orient
0 = N
1 = W
2 = S
3 = E
4 = FN
5 = FW
6 = FS
7 = FE
*/
/* This routine will write a new line */
EXTERN int defwNewLine ();
/* The DEF writer initialization. Must be called first.
* Either this routine or defwInitCbk should be call only.
* Can't call both routines in one program.
* This routine is for user who does not want to use the callback machanism.
* Returns 0 if successful. */
EXTERN int defwInit (FILE* f, int vers1, int version2, const char* caseSensitive, const char* dividerChar, const char* busBitChars, const char* designName, const char* technology, const char* array, const char* floorplan, double units);
/* The DEF writer initialization. Must be called first.
* Either this routine or defwInit should be call only.
* Can't call both routines in one program.
* This routine is for user who choose to use the callback machanism.
* If user uses the callback for the writer, they need to provide
* callbacks for Version, NamesCaseSensitive, BusBitChars and DividerChar.
* These sections are required by the def. If any of these callbacks
* are missing, defaults will be used.
* Returns 0 if successful. */
EXTERN int defwInitCbk (FILE* f);
/* This routine must be called after the defwInit.
* This routine is required.
* Returns 0 if successful.
* The routine can be called only once. */
EXTERN int defwVersion (int vers1, int vers2);
/* This routine must be called after the defwInit.
* This routine is required.
* Returns 0 if successful.
* The routine can be called only once. */
EXTERN int defwCaseSensitive (const char* caseSensitive);
/* This routine must be called after the defwInit.
* This routine is required.
* Returns 0 if successful.
* The routine can be called only once. */
EXTERN int defwBusBitChars (const char* busBitChars);
/* This routine must be called after the defwInit.
* This routine is required.
* Returns 0 if successful.
* The routine can be called only once. */
EXTERN int defwDividerChar (const char* dividerChar);
/* This routine must be called after the defwInit.
* This routine is required.
* Returns 0 if successful.
* The routine can be called only once. */
EXTERN int defwDesignName (const char* name);
/* This routine must be called after the defwInit.
* This routine is optional.
* Returns 0 if successful.
* The routine can be called only once. */
EXTERN int defwTechnology (const char* technology);
/* This routine must be called after the defwInit.
* This routine is optional.
* Returns 0 if successful.
* The routine can be called only once. */
EXTERN int defwArray (const char* array);
/* This routine must be called after the defwInit.
* This routine is optional.
* Returns 0 if successful.
* The routine can be called only once. */
EXTERN int defwFloorplan (const char* floorplan);
/* This routine must be called after the defwInit.
* This routine is optional.
* Returns 0 if successful.
* The routine can be called only once. */
EXTERN int defwUnits (int units);
/* This routine must be called after the defwInit.
* This routine is optional.
* Returns 0 if successful.
* The routine can be called 0 to many times. */
EXTERN int defwHistory (const char* string);
/* This routine must be called after the history routines (if any).
* This routine is optional.
* Returns 0 if successful.
* The routine can be called only once. */
EXTERN int defwStartPropDef ();
/* This routine must be called after defwStartPropDef.
* This routine can be called multiple times.
* It adds integer property definition to the statement.
* Returns 0 if successfull.
* The objType can be LIBRARY or VIA or MACRO or PIN. */
/* NONDEFAULTRULE | MACRO | PIN */
EXTERN int defwIntPropDef (const char* objType, const char* propName, double leftRange, double rightRange, int propValue);
/* This routine must be called after defwStartPropDef.
* This routine can be called multiple times.
* It adds real property definition to the statement.
* Returns 0 if successfull.
* The objType can be LIBRARY or VIA or MACRO or PIN. */
/* NONDEFAULTRULE | MACRO | PIN */
EXTERN int defwRealPropDef (const char* objType, const char* propName, double leftRange, double rightRange, double propValue);
/* This routine must be called after defwStartPropDef.
* This routine can be called multiple times.
* It adds string property definition to the statement.
* Returns 0 if successfull.
* The objType can be LIBRARY or VIA or MACRO or PIN. */
/* NONDEFAULTRULE | MACRO | PIN */
EXTERN int defwStringPropDef (const char* objType, const char* propName, double leftRange, double rightRange, const char* propValue);
/* This routine must be called after all the properties have been
* added to the file.
* If you called defwPropertyDefinitions then this routine is NOT optional.
* Returns 0 if successful.
* The routine can be called only once. */
EXTERN int defwEndPropDef ();
/* This routine can be called after defwRow, defwRegion, defwComponent,
* defwPin, defwSpecialNet, defwNet, and defwGroup
* This routine is optional, it adds string property to the statement.
* Returns 0 if successful.
* This routine can be called 0 to many times */
EXTERN int defwStringProperty (const char* propName, const char* propValue);
/* This routine can be called after defwRow, defwRegion, defwComponent,
* defwPin, defwSpecialNet, defwNet, and defwGroup
* This routine is optional, it adds real property to the statement.
* Returns 0 if successful.
* This routine can be called 0 to many times */
EXTERN int defwRealProperty (const char* propName, double propValue);
/* This routine can be called after defwRow, defwRegion, defwComponent,
* defwPin, defwSpecialNet, defwNet, and defwGroup
* This routine is optional, it adds int property to the statement.
* Returns 0 if successful.
* This routine can be called 0 to many times */
EXTERN int defwIntProperty (const char* propName, int propValue);
/* This routine must be called after the property definitions (if any).
* This routine is optional.
* Returns 0 if successful.
* The routine can be called only once. */
EXTERN int defwDieArea (int xl, int yl, int xh, int yh);
/* This routine must be called after the property definitions (if any).
* This routine is optional.
* This routine is the same as defwDieArea, but accept more than 2 points
* This is a 5.6 syntax
* Returns 0 if successful.
* The routine can be called only once. */
EXTERN int defwDieAreaList (int num_points, int* xl, int* yh);
/* This routine must be called after the Die Area (if any).
* This routine is optional.
* Returns 0 if successful.
* The integer "orient" and operation of the do is explained in
* the documentation.
* In 5.6, the DO syntax is optional and the STEP syntax is optional in DO */
EXTERN int defwRow (const char* rowName, const char* rowType, int x_orig, int y_orig, int orient, int do_count, int do_increment, int xstep, int ystep);
/* This routine must be called after the Die Area (if any).
* This routine is optional.
* Returns 0 if successful.
* This routine is the same as defwRow, excpet orient is a char* */
EXTERN 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);
/* This routine must be called after the defwRow (if any).
* This routine is optional.
* Returns 0 if successful.
* The operation of the do is explained in the documentation. */
EXTERN int defwTracks (const char* master, int doStart, int doCount, int doStep, int numLayers, const char** layers, int mask, int sameMask);
/* This routine must be called after the defwTracks (if any).
* This routine is optional.
* Returns 0 if successful.
* The operation of the do is explained in the documentation. */
EXTERN int defwGcellGrid (const char* master, int doStart, int doCount, int doStep);
/* This routine must be called after the defwTracks (if any).
* This section of routines is optional.
* Returns 0 if successful.
* The routine starts the default capacitance section. All of the
* capacitances must follow.
* The count is the number of defwDefaultCap calls to follow.
* The routine can be called only once.
* This api is obsolete in 5.4. */
EXTERN int defwStartDefaultCap (int count);
/* This routine is called once for each default cap. The calls must
* be preceeded by a call to defwStartDefaultCap and must be
* terminated by a call to defwEndDefaultCap.
* Returns 0 if successful.
* This api is obsolete in 5.4. */
EXTERN int defwDefaultCap (int pins, double cap);
/* This routine must be called after the defwDefaultCap calls (if any).
* Returns 0 if successful.
* If the count in StartDefaultCap is not the same as the number of
* calls to DefaultCap then DEFW_BAD_DATA will return returned.
* The routine can be called only once.
* This api is obsolete in 5.4. */
EXTERN int defwEndDefaultCap ();
/* This routine must be called after the defwDefaultCap calls (if any).
* The operation of the do is explained in the documentation.
* This routine is optional.
* Returns 0 if successful.
* The routine can be called many times. */
EXTERN int defwCanPlace (const char* master, int xOrig, int yOrig, int orient, int doCnt, int doInc, int xStep, int yStep);
/* This routine must be called after the defwDefaultCap calls (if any).
* The operation of the do is explained in the documentation.
* This routine is optional.
* Returns 0 if successful.
* The routine can be called many times.
* This routine is the same as defwCanPlace, except orient is a char* */
EXTERN int defwCanPlaceStr (const char* master, int xOrig, int yOrig, const char* orient, int doCnt, int doInc, int xStep, int yStep);
/* This routine must be called after the defwCanPlace calls (if any).
* The operation of the do is explained in the documentation.
* This routine is optional.
* Returns 0 if successful.
* The routine can be called many times. */
EXTERN int defwCannotOccupy (const char* master, int xOrig, int yOrig, int orient, int doCnt, int doInc, int xStep, int yStep);
/* This routine must be called after the defwCanPlace calls (if any).
* The operation of the do is explained in the documentation.
* This routine is optional.
* Returns 0 if successful.
* The routine can be called many times.
* This routine is the same as defwCannotOccupy, except orient is a char* */
EXTERN int defwCannotOccupyStr (const char* master, int xOrig, int yOrig, const char* orient, int doCnt, int doInc, int xStep, int yStep);
/* This routine must be called after defwCannotOccupy (if any).
* This section of routines is optional.
* Returns 0 if successful.
* The routine starts the via section. All of the vias must follow.
* The count is the number of defwVia calls to follow.
* The routine can be called only once. */
EXTERN int defwStartVias (int count);
/* These routines enter each via into the file.
* These routines must be called after the defwStartVias call.
* defwViaName should be called first, follow either by defwViaPattern or
* defwViaLayer. At the end of each via, defwOneViaEnd should be called
* These routines are for [- viaName [+ PATTERNNAME patternName + RECT layerName
* pt pt]...;]...
* Returns 0 if successful.
* The routines can be called many times. */
EXTERN int defwViaName (const char* name);
EXTERN int defwViaPattern (const char* patternName);
/* This routine can be called multiple times. */
/* mask is 5.8 syntax */
EXTERN int defwViaRect (const char* layerName, int xl, int yl, int xh, int yh, int mask);
/* This is a 5.6 syntax
* This routine can be called multiple times. */
/* mask is 5.8 syntax */
EXTERN int defwViaPolygon (const char* layerName, int num_polys, double* xl, double* yl, int mask);
/* These routine must be called after defwViaName.
* Either this routine or defwViaPattern can be called after each
* defwViaName is called.
* This is a 5.6 syntax
* Returns 0 if successful
* The routine can be called only once per defwViaName called. */
EXTERN int 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);
/* This routine can call only after defwViaViarule.
* It can only be called once.
* This is a 5.6 syntax.
* Returns 0 if successful. */
EXTERN int defwViaViaruleRowCol (int numCutRows, int numCutCols);
/* This routine can call only after defwViaViarule.
* It can only be called once.
* This is a 5.6 syntax.
* Returns 0 if successful. */
EXTERN int defwViaViaruleOrigin (int xOffset, int yOffset);
/* This routine can call only after defwViaViarule.
* It can only be called once.
* This is a 5.6 syntax.
* Returns 0 if successful. */
EXTERN int defwViaViaruleOffset (int xBotOffset, int yBotOffset, int xTopOffset, int yTopOffset);
/* This routine can call only after defwViaViarule.
* It can only be called once.
* This is a 5.6 syntax.
* Returns 0 if successful. */
EXTERN int defwViaViarulePattern (const char* cutPattern);
EXTERN int defwOneViaEnd ();
/* This routine must be called after the defwVia calls.
* Returns 0 if successful.
* If the count in StartVias is not the same as the number of
* calls to Via or ViaPattern then DEFW_BAD_DATA will return returned.
* The routine can be called only once. */
EXTERN int defwEndVias ();
/* This routine must be called after via section (if any).
* This section of routines is optional.
* Returns 0 if successful.
* The routine starts the region section. All of the regions must follow.
* The count is the number of defwRegion calls to follow.
* The routine can be called only once. */
EXTERN int defwStartRegions (int count);
/* This routine enter each region into the file.
* This routine must be called after the defwStartRegions call.
* Returns 0 if successful.
* The routine can be called many times. */
EXTERN int defwRegionName (const char* name);
/* This routine enter the region point to the region name.
* This routine must be called after the defwRegionName call.
* Returns 0 if successful.
* The routine can be called many times. */
EXTERN int defwRegionPoints (int xl, int yl, int xh, int yh);
/* This routine enter the region type, FENCE | GUIDE.
* This routine must be called after the defwRegionName call.
* This is a 5.4.1 syntax.
* Returns 0 if successful.
* The routine can be called only once. */
EXTERN int defwRegionType (const char* type);
/* This routine must be called after the defwRegion calls.
* Returns 0 if successful.
* If the count in StartRegions is not the same as the number of
* calls to Region or RegionPattern then DEFW_BAD_DATA will return returned.
* The routine can be called only once. */
EXTERN int defwEndRegions ();
/* This is a 5.8 syntax.
* Returns 0 if successful.
* The routine can be called only once. */
EXTERN int defwComponentMaskShiftLayers (const char** layerNames, int numLayerName);
/* This routine must be called after the regions section (if any).
* This section of routines is NOT optional.
* Returns 0 if successful.
* The routine starts the components section. All of the components
* must follow.
* The count is the number of defwComponent calls to follow.
* The routine can be called only once. */
EXTERN int defwStartComponents (int count);
/* This routine enter each component into the file.
* This routine must be called after the defwStartComponents call.
* The optional fields will be ignored if they are set to zero
* (except for weight which must be set to -1.0).
* Returns 0 if successful.
* The routine can be called many times. */
/* USER | TIMING */
/* foreignx, foreigny & orients */
/* PLACED | UNPLACED */
/* xh, yh or region */
EXTERN int defwComponent (const char* instance, const char* master, int numNetName, const char** netNames, const char* eeq, const char* genName, const char* genParemeters, const char* source, int numForeign, const char** foreigns, int* foreignX, int* foreignY, int* foreignOrients, const char* status, int statusX, int statusY, int statusOrient, double weight, const char* region, int xl, int yl, int xh, int yh);
/* This routine enter each component into the file.
* This routine must be called after the defwStartComponents call.
* The optional fields will be ignored if they are set to zero
* (except for weight which must be set to -1.0).
* Returns 0 if successful.
* The routine can be called many times.
* This routine is the same as defwComponent, except orient is a char** */
/* */
/* USER | TIMING */
/* foreignx, foreigny & orients */
/* PLACED | UNPLACED */
/* xh, yh or region */
EXTERN int defwComponentStr (const char* instance, const char* master, int numNetName, const char** netNames, const char* eeq, const char* genName, const char* genParemeters, const char* source, int numForeign, const char** foreigns, int* foreignX, int* foreignY, const char** foreignOrients, const char* status, int statusX, int statusY, const char* statusOrient, double weight, const char* region, int xl, int yl, int xh, int yh);
/* This is a 5.8 syntax.
* Returns 0 if successful.
* The routine can be called only once. */
EXTERN int defwComponentMaskShift (int shiftLayerMasks);
/* This routine must be called after either the defwComponent or
* defwComponentStr.
* This routine can only called once per component.
* Either this routine or defwComponentHaloSoft can be called, but not both
* This routine is optional.
* This is a 5.6 syntax.
* Returns 0 if successful. */
EXTERN int defwComponentHalo (int left, int bottom, int right, int top);
/* This routine must be called after either the defwComponent or
* defwComponentStr.
* This routine can only called once per component.
* This routine is just like defwComponentHalo, except it writes the option SOFT
* Either this routine or defwComponentHalo can be called, but not both
* This routine is optional.
* This is a 5.7 syntax.
* Returns 0 if successful. */
EXTERN int defwComponentHaloSoft (int left, int bottom, int right, int top);
/* This routine must be called after either the defwComponent or
* defwComponentStr.
* This routine can only called once per component.
* This routine is optional.
* This is a 5.7 syntax.
* Returns 0 if successful. */
EXTERN int defwComponentRouteHalo (int haloDist, const char* minLayer, const char* maxLayer);
/* This routine must be called after the defwComponent calls.
* Returns 0 if successful.
* If the count in StartComponents is not the same as the number of
* calls to Component then DEFW_BAD_DATA will return returned.
* The routine can be called only once. */
EXTERN int defwEndComponents ();
/* This routine must be called after the components section (if any).
* This section of routines is optional.
* Returns 0 if successful.
* The routine starts the pins section. All of the pins must follow.
* The count is the number of defwPin calls to follow.
* The routine can be called only once. */
EXTERN int defwStartPins (int count);
/* This routine enter each pin into the file.
* This routine must be called after the defwStartPins call.
* The optional fields will be ignored if they are set to zero.
* Returns 0 if successful.
* The routine can be called many times.
* NOTE: Use defwPinLayer to write out layer with SPACING or DESIGNRULEWIDTH */
/* INOUT | FEEDTHRU */
/* GROUND | CLOCK | TIEOFF | ANALOG */
/* COVER */
EXTERN int defwPin (const char* name, const char* net, int special, const char* direction, const char* use, const char* status, int statusX, int statusY, int orient, const char* layer, int xl, int yl, int xh, int yh);
/* This routine enter each pin into the file.
* This routine must be called after the defwStartPins call.
* The optional fields will be ignored if they are set to zero.
* Returns 0 if successful.
* The routine can be called many times.
* This routine is the same as defwPin, except orient is a char*
* NOTE: Use defwPinLayer to write out layer with SPACING or DESIGNRULEWIDTH */
/* INOUT | FEEDTHRU */
/* GROUND | CLOCK | TIEOFF | ANALOG */
/* COVER */
EXTERN int defwPinStr (const char* name, const char* net, int special, const char* direction, const char* use, const char* status, int statusX, int statusY, const char* orient, const char* layer, int xl, int yl, int xh, int yh);
/* This routine should be called if the layer has either SPACING or
* DESIGNRULEWIDTH. If this routine is used and the pin has only one
* layer, the layer in defwPin or defwPinStr has to be null, otherwise
* the layer will be written out twice.
* This routine must be called after defwPin or defwPinStr.
* This is a 5.6 syntax.
* This routine is optional.
* Returns 0 if successful.
* This routine can be called multiple times within a pin. */
EXTERN int defwPinLayer (const char* layerName, int spacing, int designRuleWidth, int xl, int yl, int xh, int yh, int mask);
/* This routine must be called after defwPin or defwPinStr.
* This routine is to write out layer with polygon.
* This is a 5.6 syntax.
* This routine is optional.
* Returns 0 if successful.
* The routine can be called multiple times within a pin. */
EXTERN int defwPinPolygon (const char* layerName, int spacing, int designRuleWidth, int num_polys, double* xl, double* yl, int mask);
/* This routine must be called after defwPin or defwPinStr.
* This routine is to write out layer with via.
* This is a 5.7 syntax.
* This routine is optional.
* Returns 0 if successful.
* The routine can be called multiple times within a pin. */
EXTERN int defwPinVia (const char* viaName, int xl, int yl, int mask);
/* This routine must be called after defwPin or defwPinStr.
* This routine is to write out pin with port.
* This is a 5.7 syntax.
* This routine is optional.
* Returns 0 if successful.
* The routine can be called multiple times within a pin. */
EXTERN int defwPinPort ();
/* This routine is called after defwPinPort.
* This is a 5.7 syntax.
* This routine is optional.
* Returns 0 if successful.
* This routine can be called multiple times within a pin. */
EXTERN int defwPinPortLayer (const char* layerName, int spacing, int designRuleWidth, int xl, int yl, int xh, int yh, int mask);
/* This routine must be called after defwPinPort.
* This is a 5.7 syntax.
* This routine is optional.
* Returns 0 if successful.
* The routine can be called multiple times within a pin. */
EXTERN int defwPinPortPolygon (const char* layerName, int spacing, int designRuleWidth, int num_polys, double* xl, double* yl, int mask);
/* This routine must be called after defwPinPort.
* This is a 5.7 syntax.
* This routine is optional.
* Returns 0 if successful.
* The routine can be called multiple times within a pin. */
EXTERN int defwPinPortVia (const char* viaName, int xl, int yl, int mask);
/* This routine must be called after defwPinPort.
* This is a 5.7 syntax.
* This routine is optional.
* Returns 0 if successful.
* The routine can be called many times.
* NOTE: Use defwPinLayer to write out layer with SPACING or DESIGNRULEWIDTH */
EXTERN int defwPinPortLocation (const char* status, int statusX, int statusY, const char* orient);
/* This routine must be called after defwPin.
* Returns 0 if successful.
* This is a 5.6 syntax.
* The routine can be called only once per pin. */
EXTERN int defwPinNetExpr (const char* pinExpr);
/* This routine must be called after defwPin.
* Returns 0 if successful.
* This is a 5.6 syntax.
* The routine can be called only once per pin. */
EXTERN int defwPinSupplySensitivity (const char* pinName);
/* This routine must be called after defwPin.
* Returns 0 if successful.
* This is a 5.6 syntax.
* The routine can be called only once per pin. */
EXTERN int defwPinGroundSensitivity (const char* pinName);
/* This routine must be called after defwPin.
* Returns 0 if successful.
* This is a 5.4 syntax.
* The routine can be called multiple times. */
EXTERN int defwPinAntennaPinPartialMetalArea (int value, const char* layerName);
/* This routine must be called after defwPin.
* Returns 0 if successful.
* This is a 5.4 syntax.
* The routine can be called multiple times. */
EXTERN int defwPinAntennaPinPartialMetalSideArea (int value, const char* layerName);
/* This routine must be called after defwPin.
* Returns 0 if successful.
* This is a 5.4 syntax.
* The routine can be called multiple times. */
EXTERN int defwPinAntennaPinPartialCutArea (int value, const char* layerName);
/* This routine must be called after defwPin.
* Returns 0 if successful.
* This is a 5.4 syntax.
* The routine can be called multiple times. */
EXTERN int defwPinAntennaPinDiffArea (int value, const char* layerName);
/* This routine must be called after defwPin.
* Returns 0 if successful.
* This is a 5.5 syntax.
* The oxide can be either OXIDE1, OXIDE2, OXIDE3, or OXIDE4.
* Each oxide value can be called only once after defwPin. */
EXTERN int defwPinAntennaModel (const char* oxide);
/* This routine must be called after defwPin.
* Returns 0 if successful.
* This is a 5.4 syntax.
* The routine can be called multiple times. */
EXTERN int defwPinAntennaPinGateArea (int value, const char* layerName);
/* This routine must be called after defwPin.
* Returns 0 if successful.
* This is a 5.4 syntax.
* The routine can be called multiple times. */
EXTERN int defwPinAntennaPinMaxAreaCar (int value, const char* layerName);
/* This routine must be called after defwPin.
* Returns 0 if successful.
* This is a 5.4 syntax.
* The routine can be called multiple times. */
EXTERN int defwPinAntennaPinMaxSideAreaCar (int value, const char* layerName);
/* This routine must be called after defwPin.
* Returns 0 if successful.
* This is a 5.4 syntax.
* The routine can be called multiple times. */
EXTERN int defwPinAntennaPinMaxCutCar (int value, const char* layerName);
/* This routine must be called after the defwPin calls.
* Returns 0 if successful.
* If the count in StartPins is not the same as the number of
* calls to Pin then DEFW_BAD_DATA will return returned.
* The routine can be called only once. */
EXTERN int defwEndPins ();
/* This routine must be called after the pin section (if any).
* This section of routines is optional.
* Returns 0 if successful.
* The routine starts the pinproperties section. All of the pinproperties
* must follow.
* The count is the number of defwPinProp calls to follow.
* The routine can be called only once. */
EXTERN int defwStartPinProperties (int count);
/* This routine enter each pinproperty into the file.
* This routine must be called after the defwStartPinProperties call.
* The optional fields will be ignored if they are set to zero.
* Returns 0 if successful.
* The routine can be called many times. */
EXTERN int defwPinProperty (const char* name, const char* pinName);
/* This routine must be called after the defwPinProperty calls.
* Returns 0 if successful.
* If the count in StartPins is not the same as the number of
* calls to Pin then DEFW_BAD_DATA will return returned.
* The routine can be called only once. */
EXTERN int defwEndPinProperties ();
/* Routines to enter a special net or nets into the file.
* You must first call defwStartSpecialNets with the number of
* nets. This section is required, even if you do not have any nets.
* For each net you should call defwSpecialNet followed by
* one or more defwSpecialNetConnection calls.
* After the connections come the options. Options are
* NOT required.
* Each net is completed by calling defwSpecialNetEndOneNet().
* The nets section is finished by calling defwEndNets(). */
EXTERN int defwStartSpecialNets (int count);
/* This routine must be called after the defwStartSpecialNets it is for
* - netName */
EXTERN int defwSpecialNet (const char* name);
/* This routine is for compNameRegExpr, pinName, and SYNTHESIZED */
/* It can be called multiple times */
EXTERN int defwSpecialNetConnection (const char* inst, const char* pin, int synthesized);
/* This routine is for + FIXEDBUMP
* This is a 5.4.1 syntax */
EXTERN int defwSpecialNetFixedbump ();
/* This routine is for + VOLTAGE volts */
EXTERN int defwSpecialNetVoltage (double v);
/* This routine is for + SPACING layerName spacing [RANGE minwidth maxwidth */
EXTERN int defwSpecialNetSpacing (const char* layer, int spacing, double minwidth, double maxwidth);
/* This routine is for + WIDTH layerName width */
EXTERN int defwSpecialNetWidth (const char* layer, int width);
/* This routine is for + SOURCE {NETLIST | DIST | USER | TIMING} */
EXTERN int defwSpecialNetSource (const char* name);
/* This routine is for + ORIGINAL netName */
EXTERN int defwSpecialNetOriginal (const char* name);
/* This routine is for + PATTERN {STEINER | BALANCED | WIREDLOGIC | TRUNK} */
EXTERN int defwSpecialNetPattern (const char* name);
/* This routine is for + USE {SIGNAL | POWER | GROUND | CLOCK | TIEOFF |
ANALOG | SCAN | RESET} */
EXTERN int defwSpecialNetUse (const char* name);
/* This routine is for + WEIGHT weight */
EXTERN int defwSpecialNetWeight (double value);
/* This routine is for + ESTCAP wireCapacitance */
EXTERN int defwSpecialNetEstCap (double value);
/* Paths are a special type of option. A path must begin
* with a defwSpecialNetPathStart and end with a defwSpecialNetPathEnd().
* The individual parts of the path can be entered in
* any order. */
EXTERN int defwSpecialNetPathStart (const char* typ);
/* SHIELD | NEW */
EXTERN int defwSpecialNetShieldNetName (const char* name);
EXTERN int defwSpecialNetPathLayer (const char* name);
EXTERN int defwSpecialNetPathWidth (int width);
/* This routine is optional.
* This is a 5.6 syntax. */
EXTERN int defwSpecialNetPathStyle (int styleNum);
EXTERN int defwSpecialNetPathShape (const char* shapeType);
/* FOLLOWPIN | IOWIRE | COREWIRE | BLOCKWIRE | FILLWIRE | BLOCKAGEWIR */
/* This routine is optional.
This is a 5.8 syntax.
* Returns 0 if successful. */
EXTERN int defwSpecialNetPathMask (int colorMask);
/* x and y location of the path */
EXTERN int defwSpecialNetPathPoint (int numPts, double* pointx, double* pointy);
EXTERN int defwSpecialNetPathVia (const char* name);
/* This routine is called after defwSpecialNetPath
* This is a 5.4.1 syntax */
EXTERN int defwSpecialNetPathViaData (int numX, int numY, int stepX, int stepY);
/* x and y location of the path */
EXTERN int defwSpecialNetPathPointWithWireExt (int numPts, double* pointx, double* pointy, double* optValue);
EXTERN int defwSpecialNetPathEnd ();
/* This is a 5.6 syntax
* This routine can be called multiple times. */
EXTERN int defwSpecialNetPolygon (const char* layerName, int num_polys, double* xl, double* yl);
/* This is a 5.6 syntax
* This routine can be called multiple times. */
EXTERN int defwSpecialNetRect (const char* layerName, int xl, int yl, int xh, int yh);
EXTERN int defwSpecialNetVia (const char* layerName);
EXTERN int defwSpecialNetViaWithOrient (const char* layerName, int orient);
EXTERN int defwSpecialNetViaPoints (int num_points, double* xl, double* yl);
/* This routine is called at the end of each net */
EXTERN int defwSpecialNetEndOneNet ();
/* 5.3 for special net */
/* Shields are a special type of option. A shield must begin
* with a defwSpecialNetShieldStart and end with a defwSpecialNetShieldEnd().
* The individual parts of the shield can be entered in
* any order. */
EXTERN int defwSpecialNetShieldStart (const char* name);
EXTERN int defwSpecialNetShieldLayer (const char* name);
EXTERN int defwSpecialNetShieldWidth (int width);
EXTERN int defwSpecialNetShieldShape (const char* shapeType);
/* FOLLOWPIN | IOWIRE | COREWIRE | BLOCKWIRE | FILLWIRE | BLOCKAGEWIR */
/* x and y location of the path */
EXTERN int defwSpecialNetShieldPoint (int numPts, double* pointx, double* pointy);
EXTERN int defwSpecialNetShieldVia (const char* name);
/* A 5.4.1 syntax */
EXTERN int defwSpecialNetShieldViaData (int numX, int numY, int stepX, int stepY);
EXTERN int defwSpecialNetShieldEnd ();
/* end 5.3 */
/* This routine is called at the end of the special net section */
EXTERN int defwEndSpecialNets ();
/* Routines to enter a net or nets into the file.
* You must first call defwNets with the number of nets.
* This section is required, even if you do not have any nets.
* For each net you should call defwNet followed by one or
* more defwNetConnection calls.
* After the connections come the options. Options are
* NOT required.
* Each net is completed by calling defwNetEndOneNet().
* The nets section is finished by calling defwEndNets(). */
EXTERN int defwStartNets (int count);
/* This routine must be called after the defwStartNets, it is for - netName */
EXTERN int defwNet (const char* name);
/* This routine is for { compName | PIN } pinName [+ SYNTHESIZED] */
/* It can be called multiple times */
EXTERN int defwNetConnection (const char* inst, const char* pin, int synthesized);
/* This routine is for MUSTJOIN, compName, pinName */
EXTERN int defwNetMustjoinConnection (const char* inst, const char* pin);
/* This routine is for + VPIN vpinName [LAYER layerName pt pt
* [{ PLACED | FIXED | COVER } pt orient] */
EXTERN 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);
/* This routine is for + VPIN vpinName [LAYER layerName pt pt
* [{ PLACED | FIXED | COVER } pt orient]
* This routine is the same as defwNetVpin, except orient is a char* */
EXTERN int defwNetVpinStr (const char* vpinName, const char* layerName, int layerXl, int layerYl, int layerXh, int layerYh, const char* status, int statusX, int statusY, const char* orient);
/* This routine can be called either within net or subnet.
* it is for NONDEFAULTRULE rulename */
EXTERN int defwNetNondefaultRule (const char* name);
/* This routine is for + XTALK num */
EXTERN int defwNetXtalk (int xtalk);
/* This routine is for + FIXEDBUMP
* This is a 5.4.1 syntax */
EXTERN int defwNetFixedbump ();
/* This routine is for + FREQUENCY
* This is a 5.4.1 syntax */
EXTERN int defwNetFrequency (double frequency);
/* This routine is for + SOURCE {NETLIST | DIST | USER | TEST | TIMING} */
EXTERN int defwNetSource (const char* name);
/* This routine is for + ORIGINAL netname */
EXTERN int defwNetOriginal (const char* name);
/* This routine is for + USE {SIGNAL | POWER | GROUND | CLOCK | TIEOFF |
* ANALOG} */
EXTERN int defwNetUse (const char* name);
/* This routine is for + PATTERN {STEINER | BALANCED | WIREDLOGIC} */
EXTERN int defwNetPattern (const char* name);
/* This routine is for + ESTCAP wireCapacitance */
EXTERN int defwNetEstCap (double value);
/* This routine is for + WEIGHT weight */
EXTERN int defwNetWeight (double value);
/* 5.3 for net */
/* This routine is for + SHIELDNET weight */
EXTERN int defwNetShieldnet (const char* name);
/* Noshield are a special type of option. A noshield must begin
* with a defwNetNoshieldStart and end with a defwNetNoshieldEnd().
* The individual parts of the noshield can be entered in
* any order. */
EXTERN int defwNetNoshieldStart (const char* name);
/* x and y location of the path */
EXTERN int defwNetNoshieldPoint (int numPts, const char** pointx, const char** pointy);
EXTERN int defwNetNoshieldVia (const char* name);
EXTERN int defwNetNoshieldEnd ();
/* end 5.3 */
/* Subnet are a special type of option. A subnet must begin
* with a defwNetSubnetStart and end with a defwNetSubnetEnd().
* Routines to call within the subnet are: defwNetSubnetPin,
* defwNetNondefaultRule and defwNetPathStart... */
EXTERN int defwNetSubnetStart (const char* name);
/* This routine is called after the defwNetSubnet, it is for
* [({compName | PIN} pinName) | (VPIN vpinName)]... */
EXTERN int defwNetSubnetPin (const char* compName, const char* pinName);
EXTERN int defwNetSubnetEnd ();
/* Paths are a special type of option. A path must begin
* with a defwNetPathStart and end with a defwPathEnd().
* The individual parts of the path can be entered in
* any order. */
EXTERN int defwNetPathStart (const char* typ);
/* NOSHIELD | NEW */
EXTERN int defwNetPathWidth (int w);
EXTERN int defwNetPathLayer (const char* name, int isTaper, const char* rulename);
/*rulename can be assigned */
/* This routine is optional.
* This is a 5.6 syntax. */
EXTERN int defwNetPathStyle (int styleNum);
/* This routine is optional.
* This is a 5.8 syntax. */
EXTERN int defwNetPathMask (int maskNum);
EXTERN int defwNetPathRect (int deltaX1, int deltaY1, int deltaX2, int deltaY2);
EXTERN int defwNetPathVirtual (int x, int y);
/* x and y location of the path */
EXTERN int defwNetPathPoint (int numPts, double* pointx, double* pointy);
EXTERN int defwNetPathPointWithExt (int numPts, double* pointx, double* pointy, double* optValue);
EXTERN int defwNetPathVia (const char* name);
EXTERN int defwNetPathViaWithOrient (const char* name, int orient);
EXTERN int defwNetPathViaWithOrientStr (const char* name, const char* orient);
EXTERN int defwNetPathEnd ();
/* This routine is called at the end of each net */
EXTERN int defwNetEndOneNet ();
/* This routine is called at the end of the net section */
EXTERN int defwEndNets ();
/* This section of routines is optional.
* Returns 0 if successful.
* The routine starts the I/O Timing section. All of the iotimings options
* must follow.
* The count is the number of defwIOTiming calls to follow.
* The routine can be called only once.
* This api is obsolete in 5.4. */
EXTERN int defwStartIOTimings (int count);
/* This routine can be called after defwStaratIOTiming
* It is for - - {(comp pin) | (PIN name)}
* This api is obsolete in 5.4. */
EXTERN int defwIOTiming (const char* inst, const char* pin);
/* This routine is for + { RISE | FALL } VARIABLE min max
* This api is obsolete in 5.4. */
EXTERN int defwIOTimingVariable (const char* riseFall, int num1, int num2);
/* This routine is for + { RISE | FALL } SLEWRATE min max
* This api is obsolete in 5.4. */
EXTERN int defwIOTimingSlewrate (const char* riseFall, int num1, int num2);
/* This routine is for + DRIVECELL macroName [[FROMPIN pinName] TOPIN pinName]
* [PARALLEL numDrivers]
* This api is obsolete in 5.4. */
EXTERN int defwIOTimingDrivecell (const char* name, const char* fromPin, const char* toPin, int numDrivers);
/* This routine is for + CAPACITANCE capacitance
* This api is obsolete in 5.4. */
EXTERN int defwIOTimingCapacitance (double num);
/* This api is obsolete in 5.4. */
EXTERN int defwEndIOTimings ();
/* Routines to enter scan chains. This section is optional
* The section must start with a defwStartScanchains() call and
* end with a defwEndScanchain() call.
* Each scan chain begins with a defwScanchain() call.
* The rest of the calls follow. */
EXTERN int defwStartScanchains (int count);
/* This routine can be called after defwStartScanchains
* It is for - chainName */
EXTERN int defwScanchain (const char* name);
/* This routine is for + COMMONSCANPINS [IN pin] [OUT pin] */
EXTERN int defwScanchainCommonscanpins (const char* inst1, const char* pin1, const char* inst2, const char* pin2);
/* This routine is for + PARTITION paratitionName [MAXBITS maxBits] */
/* This is 5.4.1 syntax */
EXTERN int defwScanchainPartition (const char* name, int maxBits);
/* This routine is for + START {fixedInComp | PIN } [outPin] */
EXTERN int defwScanchainStart (const char* inst, const char* pin);
/* This routine is for + STOP {fixedOutComp | PIN } [inPin] */
EXTERN int defwScanchainStop (const char* inst, const char* pin);
/* This routine is for + FLOATING {floatingComp [IN pin] [OUT pin]}
* This is a 5.4.1 syntax */
EXTERN int defwScanchainFloating (const char* name, const char* inst1, const char* pin1, const char* inst2, const char* pin2);
/* This routine is for + FLOATING {floatingComp [IN pin] [OUT pin]}
* This is a 5.4.1 syntax.
* This routine is the same as defwScanchainFloating. But also added
* the option BITS. */
EXTERN int defwScanchainFloatingBits (const char* name, const char* inst1, const char* pin1, const char* inst2, const char* pin2, int bits);
/* This routine is for + ORDERED {fixedComp [IN pin] [OUT pin]
* fixedComp [IN pin] [OUT pin].
* When this routine is called for the 1st time within a scanchain,
* both name1 and name2 are required. Only name1 is required is the
* routine is called more than once. */
EXTERN 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);
/* This routine is for + ORDERED {fixedComp [IN pin] [OUT pin]
* fixedComp [IN pin] [OUT pin].
* When this routine is called for the 1st time within a scanchain,
* both name1 and name2 are required. Only name1 is required is the
* routine is called more than once.
* This is a 5.4.1 syntax.
* This routine is the same as defwScanchainOrdered. But also added
* the option BITS */
EXTERN 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);
EXTERN int defwEndScanchain ();
/* Routines to enter constraints. This section is optional
* The section must start with a defwStartConstrains() call and
* end with a defwEndConstraints() call.
* Each contraint will call the defwConstraint...().
* This api is obsolete in 5.4. */
EXTERN int defwStartConstraints (int count);
/* The following routines are for - {operand [+ RISEMAX time] [+ FALLMAX time]
* [+ RISEMIN time] [+ FALLMIN time] | WIREDLOGIC netName MAXDIST distance };}
* operand - NET netName | PATH comp fromPin comp toPin | SUM (operand, ...)
* The following apis are obsolete in 5.4. */
EXTERN int defwConstraintOperand ();
EXTERN int defwConstraintOperandNet (const char* netName);
EXTERN int defwConstraintOperandPath (const char* comp1, const char* fromPin, const char* comp2, const char* toPin);
EXTERN int defwConstraintOperandSum ();
EXTERN int defwConstraintOperandSumEnd ();
EXTERN int defwConstraintOperandTime (const char* timeType, int time);
EXTERN int defwConstraintOperandEnd ();
/* This routine is for - WIRELOGIC netName MAXDIST distance */
EXTERN int defwConstraintWiredlogic (const char* netName, int distance);
EXTERN int defwEndConstraints ();
/* Routines to enter groups. This section is optional
* The section must start with a defwStartGroups() call and
* end with a defwEndGroups() call.
* Each group will call the defwGroup...(). */
EXTERN int defwStartGroups (int count);
/* This routine is for - groupName compNameRegExpr ... */
EXTERN int defwGroup (const char* groupName, int numExpr, const char** groupExpr);
/* This routine is for + SOFT [MAXHALFPERIMETER value] [MAXX value]
* [MAXY value] */
EXTERN int defwGroupSoft (const char* type1, double value1, const char* type2, double value2, const char* type3, double value3);
/* This routine is for + REGION {pt pt | regionName} */
EXTERN int defwGroupRegion (int xl, int yl, int xh, int yh, const char* regionName);
EXTERN int defwEndGroups ();
/* Routines to enter Blockages. This section is optional
* The section must start with a defwStartBlockages() call and
* end with a defwEndBlockages() call.
* Each blockage will call the defwBlockages...().
* This is a 5.4 syntax. */
EXTERN int defwStartBlockages (int count);
/* This routine is for - layerName
* This routine is called per entry within a blockage for layer.
* This is a 5.4 syntax. */
EXTERN int defwBlockagesLayer (const char* layerName);
/* This routine is for - slots
* This routine is called per entry within a blockage layer, can't be more then one.
* This is a 5.4 syntax. */
EXTERN int defwBlockagesLayerSlots ();
/* This routine is for - fills
* This routine is called per entry within a blockage layer, can't be more then one.
* This is a 5.4 syntax. */
EXTERN int defwBlockagesLayerFills ();
/* This routine is for - pushdown
* This routine is called per entry within a blockage layer, can't be more then one.
* This is a 5.4 syntax. */
EXTERN int defwBlockagesLayerPushdown ();
/* This routine is for - exceptpgnet
* This routine is called per entry within a blockage layer, can't be more then one.
* This is a 5.7 syntax. */
EXTERN int defwBlockagesLayerExceptpgnet ();
/* This routine is for - component
* This routine called per entry within a blockage layer, can't be more than one.
* This is a 5.6 syntax. */
EXTERN int defwBlockagesLayerComponent (const char* compName);
/* This routine is for - spacing
* Either this routine or defwBlockagesDesignRuleWidth is called per entry
* within a blockage layer, can't be more than one.
* This is a 5.6 syntax. */
EXTERN int defwBlockagesLayerSpacing (int minSpacing);
/* This routine is for - designrulewidth
* Either this routine or defwBlockagesSpacing is called per entry
* within a blockage layer, can't be more than one.
* This is a 5.6 syntax. */
EXTERN int defwBlockagesLayerDesignRuleWidth (int effectiveWidth);
/* This routine is for - mask.
* This routine called per entry within a blockage layer, can't be more than one.
* This is a 5.8 syntax. */
EXTERN int defwBlockagesLayerMask (int maskColor);
/* This routine is for - layerName & compName
* Either this routine, defBlockageLayerSlots, defBlockageLayerFills,
* or defwBlockagePlacement is called per entry within
* a blockage, can't be more then one.
* This is a 5.4 syntax. */
EXTERN int defwBlockageLayer (const char* layerName, const char* compName);
/* This routine is for - layerName & slots
* Either this routine, defBlockageLayer, defBlockageLayerFills,
* defwBlockagePlacement, or defwBlockagePushdown is called per entry within
* a blockage, can't be more then one.
* This is a 5.4 syntax. */
EXTERN int defwBlockageLayerSlots (const char* layerName);
/* This routine is for - layerName & fills
* Either this routine, defBlockageLayer, defBlockageLayerSlots,
* defwBlockagePlacement, or defwBlockagePushdown is called per entry within
* a blockage, can't be more then one.
* This is a 5.4 syntax. */
EXTERN int defwBlockageLayerFills (const char* layerName);
/* This routine is for - layerName & pushdown
* Either this routine, defBlockageLayer, defBlockageLayerSlots,
* defwBlockagePlacement, or defwBlockageFills is called per entry within
* a blockage, can't be more then one.
* This is a 5.4 syntax. */
EXTERN int defwBlockageLayerPushdown (const char* layerName);
/* This routine is for - exceptpgnet
* Either this routine, defBlockageLayer, defBlockageLayerSlots,
* defwBlockagePlacement, or defwBlockageFills is called per entry within
* a blockage, can't be more then one.
* This is a 5.7 syntax. */
EXTERN int defwBlockageLayerExceptpgnet (const char* layerName);
/* This routine is for - spacing
* Either this routine or defwBlockageDesignRuleWidth is called per entry
* within a blockage, can't be more than one.
* This is a 5.6 syntax. */
EXTERN int defwBlockageSpacing (int minSpacing);
/* This routine is for - designrulewidth
* Either this routine or defwBlockageSpacing is called per entry
* within a blockage, can't be more than one.
* This is a 5.6 syntax. */
EXTERN int defwBlockageDesignRuleWidth (int effectiveWidth);
/* This routine is for - placement
* This routine is called per entry within blockage for placement.
* This is a 5.4 syntax.
* 11/25/2002 - bug fix: submitted by Craig Files (cfiles@ftc.agilent.com)
* this routine allows to call blockage without a component. */
EXTERN int defwBlockagesPlacement ();
/* This routine is for - component
* This routine is called per entry within blockage placement, can't be more then one.
* This is a 5.4 syntax. */
EXTERN int defwBlockagesPlacementComponent (const char* compName);
/* This routine is for - Pushdown
* This routine is called per entry within blockage placement, can't be more then one.
* This is a 5.4 syntax. */
EXTERN int defwBlockagesPlacementPushdown ();
/* This routine is for - soft
* Either this routine or defwBlockagesPlacementPartial
* is called per entry within blockage placement, can't be more then one.
* This is a 5.7 syntax. */
EXTERN int defwBlockagesPlacementSoft ();
/* This routine is for - Partial
* Either this routine or defwBlockagesPlacementSoft
* is called per entry within blockage placement, can't be more then one.
* This is a 5.7 syntax. */
EXTERN int defwBlockagesPlacementPartial (double maxDensity);
/* This routine is for rectangle.
* This routine is optional and can be called multiple time.
* This is a 5.4 syntax. */
EXTERN int defwBlockagesRect (int xl, int yl, int xh, int yh);
/* This routine is for polygon.
* This routine is optional and can be called multiple time.
* This is a 5.6 syntax. */
EXTERN int defwBlockagesPolygon (int num_polys, int* xl, int* yl);
/* This routine is for - placement
* Either this routine or defBlockageLayer
* is called per entry within blockage, can't be more then one.
* This is a 5.4 syntax.
* 11/25/2002 - bug fix: submitted by Craig Files (cfiles@ftc.agilent.com)
* this routine allows to call blockage without a component. */
EXTERN int defwBlockagePlacement ();
/* This routine is for - placement & component
* Either this routine or defwBlockagePlacementPushdown
* is called per entry within blockage, can't be more then one.
* This is a 5.4 syntax. */
EXTERN int defwBlockagePlacementComponent (const char* compName);
/* This routine is for - placement & Pushdown
* Either this routine or defwBlockagePlacementComponent
* is called per entry within blockage, can't be more then one.
* This is a 5.4 syntax. */
EXTERN int defwBlockagePlacementPushdown ();
/* This routine is for - placement & soft
* Either this routine or defwBlockagePlacementPushdown
* is called per entry within blockage, can't be more then one.
* This is a 5.7 syntax. */
EXTERN int defwBlockagePlacementSoft ();
/* This routine is for - placement & Partial
* Either this routine or defwBlockagePlacementComponent
* is called per entry within blockage, can't be more then one.
* This is a 5.7 syntax. */
EXTERN int defwBlockagePlacementPartial (double maxDensity);
/* This routine is optional.
* This is a 5.8 syntax. */
EXTERN int defwBlockageMask (int maskColor);
/* This routine is for rectangle.
* This is a 5.4 syntax. */
EXTERN int defwBlockageRect (int xl, int yl, int xh, int yh);
/* This routine is for polygon.
* This routine is optinal and can be called multiple time.
* This is a 5.6 syntax. */
EXTERN int defwBlockagePolygon (int num_polys, int* xl, int* yl);
/* This is a 5.4 syntax. */
EXTERN int defwEndBlockages ();
/* Routines to enter Slots. This section is optional
* The section must start with a defwStartSlots() call and
* end with a defwEndSlots() call.
* Each slots will call the defwSlots...().
* This is a 5.4 syntax. */
EXTERN int defwStartSlots (int count);
/* This routine is for - layerName & compName
* Either this routine, defSlots, defSlotsLayerFills,
* or defwSlotsPlacement is called per entry within
* a slot, can't be more then one.
* This is a 5.4 syntax. */
EXTERN int defwSlotLayer (const char* layerName);
/* This routine is for rectangle
* This is a 5.4 syntax. */
EXTERN int defwSlotRect (int xl, int yl, int xh, int yh);
/* This routine is for rectangle
* This is a 5.6 syntax and can be called multiple time. */
EXTERN int defwSlotPolygon (int num_polys, double* xl, double* yl);
/* This is a 5.4 syntax. */
EXTERN int defwEndSlots ();
/* Routines to enter Fills. This section is optional
* The section must start with a defwStartFills() call and
* end with a defwEndFills() call.
* Each fills will call the defwFills...().
* This is a 5.4 syntax. */
EXTERN int defwStartFills (int count);
/* This routine is for - layerName & compName
* Either this routine, defFills, defFillsLayerFills,
* or defwFillsPlacement is called per entry within
* a fill, can't be more then one.
* This is a 5.4 syntax. */
EXTERN int defwFillLayer (const char* layerName);
/* This routine is optional.
* This is a 5.8 syntax. */
EXTERN int defwFillLayerMask (int maskColor);
/* This routine has to be called after defwFillLayer
* This routine is optional.
* This is a 5.7 syntax. */
EXTERN int defwFillLayerOPC ();
/* This routine is for rectangle.
* This is a 5.4 syntax. */
EXTERN int defwFillRect (int xl, int yl, int xh, int yh);
/* This routine is for polygon.
* This is a 5.6 syntax and can be called multiple time. */
EXTERN int defwFillPolygon (int num_polys, double* xl, double* yl);
/* This routine is for via.
* This routine is optional.
* This is a 5.7 syntax and can be called multiple time. */
EXTERN int defwFillVia (const char* viaName);
/* This routine is optional.
* This is a 5.8 syntax. */
EXTERN int defwFillViaMask (int colorMask);
/* This routine is for via OPC.
* This routine can only be called after defwFillVia.
* This routine is optional.
* This is a 5.7 syntax and can be called multiple time. */
EXTERN int defwFillViaOPC ();
/* This routine is for via OPC.
* This routine can only be called after defwFillVia.
* This routine is required following defwFillVia.
* This is a 5.7 syntax and can be called multiple time. */
EXTERN int defwFillPoints (int num_points, double* xl, double* yl);
/* This is a 5.4 syntax. */
EXTERN int defwEndFills ();
/* Routines to enter NONDEFAULTRULES. This section is required
* The section must start with a defwStartNonDefaultRules() and
* end with defwEndNonDefaultRules() call.
* This is a 5.6 syntax. */
EXTERN int defwStartNonDefaultRules (int count);
/* This routine is for Layer within the NONDEFAULTRULES
* This routine can be called multiple times. It is required.
* This is a 5.6 syntax.
* Returns 0 if successful. */
EXTERN int defwNonDefaultRule (const char* ruleName, int hardSpacing);
/* Routines to enter NONDEFAULTRULES. This section is required
* This routine must be called after the defwNonDefaultRule.
* This routine can be called multiple times.
* This is a 5.6 syntax.
* Returns 0 if successful. */
EXTERN int defwNonDefaultRuleLayer (const char* layerName, int width, int diagWidth, int spacing, int wireExt);
/* Routines to enter NONDEFAULTRULES. This section is optional.
* This routine must be called after the defwNonDefaultRule.
* This routine can be called multiple times.
* This is a 5.6 syntax.
* Returns 0 if successful. */
EXTERN int defwNonDefaultRuleVia (const char* viaName);
/* Routines to enter NONDEFAULTRULES. This section is optional.
* This routine must be called after the defwNonDefaultRule.
* This routine can be called multiple times.
* This is a 5.6 syntax.
* Returns 0 if successful. */
EXTERN int defwNonDefaultRuleViaRule (const char* viaRuleName);
/* Routines to enter NONDEFAULTRULES. This section is optional.
* This routine must be called after the defwNonDefaultRule.
* This routine can be called multiple times.
* This is a 5.6 syntax.
* Returns 0 if successful. */
EXTERN int defwNonDefaultRuleMinCuts (const char* cutLayerName, int numCutS);
/* This is a 5.4 syntax. */
EXTERN int defwEndNonDefaultRules ();
/* Routines to enter STYLES. This section is required
* The section must start with a defwStartStyles() and
* end with defwEndStyles() call.
* This is a 5.6 syntax. */
EXTERN int defwStartStyles (int count);
/* This routine is for Layer within the NONDEFAULTRULES
* This routine can be called multiple times. It is required.
* This is a 5.6 syntax.
* Returns 0 if successful. */
EXTERN int defwStyles (int styleNums, int num_points, double* xp, double* yp);
/* This is a 5.4 syntax. */
EXTERN int defwEndStyles ();
/* This routine is called after defwInit.
* This routine is optional and it can be called only once.
* Returns 0 if successful. */
EXTERN int defwStartBeginext (const char* name);
/* This routine is called after defwBeginext.
* This routine is optional, it can be called only once.
* Returns 0 if successful. */
EXTERN int defwBeginextCreator (const char* creatorName);
/* This routine is called after defwBeginext.
* This routine is optional, it can be called only once.
* It gets the current system time and date.
* Returns 0 if successful. */
EXTERN int defwBeginextDate ();
/* This routine is called after defwBeginext.
* This routine is optional, it can be called only once.
* Returns 0 if successful. */
EXTERN int defwBeginextRevision (int vers1, int vers2);
/* This routine is called after defwBeginext.
* This routine is optional, it can be called many times.
* It allows user to customize their own syntax.
* Returns 0 if successful. */
EXTERN int defwBeginextSyntax (const char* title, const char* string);
/* This routine is called after defwInit.
* This routine is optional and it can be called only once.
* Returns 0 if successful. */
EXTERN int defwEndBeginext ();
/* End the DEF file.
* This routine IS NOT OPTIONAL.
* The routine must be called LAST. */
EXTERN int defwEnd ();
/* General routines that can be called anytime after the Init is called.
*/
EXTERN int defwCurrentLineNumber ();
/*
* extern void defwError ( const char *, ... );
* extern void defwWarning ( const char *, ... );
* extern void defwVError ( const char *, va_list );
* extern void defwVWarning ( const char *, va_list );
* extern int defwGetCurrentLineNumber (void);
* extern const char *defwGetCurrentFileName (void);
*/
/* This routine will print the error message. */
EXTERN void defwPrintError (int status);
/* This routine will allow user to write their own comemnt. It will
* automactically add a # infront of the line.
*/
EXTERN void defwAddComment (const char* comment);
/* This routine will indent 3 blank spaces */
EXTERN void defwAddIndent ();
#endif