magic/extflat/extflat.h

139 lines
5.2 KiB
C

/*
* extflat.h --
*
* Internal definitions for the procedures to flatten hierarchical
* (.ext) circuit extraction files.
*
* *********************************************************************
* * Copyright (C) 1985, 1990 Regents of the University of California. *
* * Permission to use, copy, modify, and distribute this *
* * software and its documentation for any purpose and without *
* * fee is hereby granted, provided that the above copyright *
* * notice appear in all copies. The University of California *
* * makes no representations about the suitability of this *
* * software for any purpose. It is provided "as is" without *
* * express or implied warranty. Export of this software outside *
* * of the United States of America may require an export license. *
* *********************************************************************
*
* rcsid $Header: /usr/cvsroot/magic-8.0/extflat/extflat.h,v 1.2 2008/12/03 14:12:09 tim Exp $
*/
#ifndef _MAGIC__EXTFLAT__EXTFLAT_H
#define _MAGIC__EXTFLAT__EXTFLAT_H
#include "utils/magic.h"
#include "extflat/EFtypes.h" /* EFCapValue, HierName, EFPerimArea, EFNode */
#include "extflat/EFint.h" /* Def, HierContext, Connection, Distance, CallArg */
extern float EFScale; /* Scale factor to multiply all coords by */
extern char *EFTech; /* Technology of extracted circuit */
extern char *EFStyle; /* Extraction style of extracted circuit */
extern char *EFSearchPath; /* Path to search for .ext files */
extern char *EFLibPath; /* Library search path */
extern char *EFVersion; /* Version of extractor we work with */
extern char *EFArgTech; /* Tech file given as command line argument */
extern bool EFCompat; /* Subtrate backwards-compatibility mode */
/*
* Thresholds used by various extflat clients to filter out
* unwanted resistors and capacitors. Resistance is in milliohms,
* capacitance in attofarads.
*/
extern int EFResistThreshold;
extern EFCapValue EFCapThreshold;
/* Table of transistor types */
extern char *EFDevTypes[];
extern int EFDevNumTypes;
/* Table of Magic layers */
extern char *EFLayerNames[];
extern int EFLayerNumNames;
/* Output control flags */
extern int EFOutputFlags;
/* Behavior regarding disjoint node segments */
extern bool EFSaveLocs;
/* -------------------------- Exported procedures --------------------- */
extern char *EFArgs();
/* HierName manipulation */
extern HashEntry *EFHNLook();
extern HashEntry *EFHNConcatLook();
extern HierName *EFHNConcat();
extern HierName *EFStrToHN();
extern char *EFHNToStr();
extern int EFGetPortMax();
/* C99 compat */
extern void EFHNFree();
extern bool EFHNIsGlob();
extern int EFNodeResist();
extern void efAdjustSubCap();
extern int efBuildAddStr();
extern void efBuildAttr();
extern int efBuildDevice(Def *def, char class, char *type, const Rect *r, int argc, char *argv[]);
extern void efBuildDeviceParams();
extern void efBuildDist();
extern void efBuildEquiv();
extern void efBuildKill();
extern void efBuildPortNode();
extern void efBuildUse();
extern int efFlatCaps();
extern int efFlatDists();
extern int efFlatKills();
extern int efFlatNodes();
extern int efFlatNodesStdCell();
extern void efFreeConn();
extern void efFreeDevTable();
extern void efFreeNodeList();
extern void efFreeNodeTable();
extern void efFreeUseTable();
extern void efHNBuildDistKey();
extern int efHNLexOrder();
extern void efHNPrintSizes();
extern void efHNRecord();
extern int efHierSrArray();
extern int efHierSrUses();
extern int efHierVisitDevs();
extern EFNode *efNodeMerge();
extern void efReadError(const char *fmt, ...) ATTR_FORMAT_PRINTF_1;
extern int efReadLine();
extern bool efSymAdd();
extern bool efSymAddFile();
extern void efSymInit();
extern void EFDone();
extern void EFFlatBuild();
extern void EFFlatDone();
extern bool EFHNIsGND();
extern void EFInit();
extern bool EFReadFile();
typedef int (*cb_extflat_visitdevs_t)(Dev *dev, HierContext *hc, float scale, Transform *trans, ClientData cdata);
extern int EFVisitDevs(const cb_extflat_visitdevs_t devProc, ClientData cdata);
extern int efVisitDevs(HierContext *hc, CallArg *ca);
extern bool efSymLook();
extern int efVisitResists(HierContext *hc, CallArg *ca);
typedef int (*cb_extflat_visitresists_t)(const HierName *hn1, const HierName *hn2, float resistance, ClientData cdata);
extern int EFVisitResists(const cb_extflat_visitresists_t resProc, ClientData cdata);
extern int EFVisitNodes();
extern int EFVisitCaps();
extern void EFGetLengthAndWidth();
extern void EFHNOut();
extern int EFHierSrDefs();
extern int EFVisitSubcircuits();
extern int EFHierVisitSubcircuits();
typedef int (*cb_extflat_hiervisitdevs_t)(HierContext *hc, Dev *dev, float scale, ClientData cdata);
extern int EFHierVisitDevs(HierContext *hc, const cb_extflat_hiervisitdevs_t devProc, ClientData cdata);
typedef int (*cb_extflat_hiervisitresists_t)(HierContext *hc, const HierName *hierName1, const HierName *hierName2, float resistance, ClientData cdata);
extern int EFHierVisitResists(HierContext *hc, const cb_extflat_hiervisitresists_t resProc, ClientData cdata);
extern int EFHierVisitCaps();
extern int EFHierVisitNodes();
#endif /* _MAGIC__EXTFLAT__EXTFLAT_H */