2017-04-25 14:41:48 +02:00
|
|
|
/*
|
|
|
|
|
* extract.h --
|
|
|
|
|
*
|
|
|
|
|
* Defines the exported interface to the circuit extractor.
|
|
|
|
|
*
|
|
|
|
|
* rcsid "$Header: /usr/cvsroot/magic-8.0/extract/extract.h,v 1.3 2009/01/30 03:51:02 tim Exp $"
|
|
|
|
|
*
|
2020-05-23 23:13:14 +02:00
|
|
|
* *********************************************************************
|
|
|
|
|
* * 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. *
|
2017-04-25 14:41:48 +02:00
|
|
|
* *********************************************************************
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
|
2024-10-16 08:38:41 +02:00
|
|
|
#ifndef _MAGIC__EXTRACT__EXTRACT_H
|
|
|
|
|
#define _MAGIC__EXTRACT__EXTRACT_H
|
2017-04-25 14:41:48 +02:00
|
|
|
|
|
|
|
|
#include "utils/magic.h"
|
2025-02-17 10:41:50 +01:00
|
|
|
#include "database/database.h" /* TileTypeBitMask */
|
2017-04-25 14:41:48 +02:00
|
|
|
|
|
|
|
|
/* Extractor warnings */
|
|
|
|
|
#define EXTWARN_DUP 0x01 /* Warn if two nodes have the same name */
|
|
|
|
|
#define EXTWARN_LABELS 0x02 /* Warn if connecting to unlabelled subcell
|
|
|
|
|
* node.
|
|
|
|
|
*/
|
|
|
|
|
#define EXTWARN_FETS 0x04 /* Warn about badly constructed fets */
|
|
|
|
|
|
|
|
|
|
#define EXTWARN_ALL (EXTWARN_DUP|EXTWARN_LABELS|EXTWARN_FETS)
|
|
|
|
|
|
|
|
|
|
extern int ExtDoWarn; /* Bitmask of above */
|
|
|
|
|
|
|
|
|
|
/* Known devices (see ExtTech.c and ExtBasic.c) */
|
|
|
|
|
/* Make sure these match extDevTable in extract/ExtBasic.c and */
|
|
|
|
|
/* also extflat/EFread.c */
|
|
|
|
|
|
|
|
|
|
#define DEV_FET 0 /* FET w/area, perimeter declared */
|
|
|
|
|
#define DEV_MOSFET 1 /* FET w/length, width declared */
|
|
|
|
|
#define DEV_ASYMMETRIC 2 /* Like MOSFET but D,S not swappable */
|
|
|
|
|
#define DEV_BJT 3 /* Bipolar Junction Transistor */
|
|
|
|
|
#define DEV_RES 4 /* Resistor */
|
|
|
|
|
#define DEV_CAP 5 /* Capacitor */
|
|
|
|
|
#define DEV_CAPREV 6 /* Capacitor, terminals reversed */
|
2021-07-11 03:13:24 +02:00
|
|
|
#define DEV_VOLT 7 /* Voltage source (used for shorts) */
|
|
|
|
|
#define DEV_DIODE 8 /* Diode */
|
|
|
|
|
#define DEV_PDIODE 9 /* pDiode, same as Diode */
|
|
|
|
|
#define DEV_NDIODE 10 /* nDiode, terminals reversed */
|
|
|
|
|
#define DEV_SUBCKT 11 /* general-purpose subcircuit */
|
|
|
|
|
#define DEV_RSUBCKT 12 /* Resistor-like subcircuit. */
|
|
|
|
|
#define DEV_MSUBCKT 13 /* MOSFET-like subcircuit. */
|
|
|
|
|
#define DEV_CSUBCKT 14 /* Capacitor-like subcircuit. */
|
2025-10-07 22:45:22 +02:00
|
|
|
#define DEV_DSUBCKT 15 /* Diode-like subcircuit. */
|
|
|
|
|
#define DEV_VERILOGA 16 /* Verilog-A model ("N" component) */
|
2017-04-25 14:41:48 +02:00
|
|
|
|
|
|
|
|
/* Device names for .ext file output (new in version 7.2) */
|
|
|
|
|
/* (defined in extract/ExtBasic.c *and* extflat/EFread.c) */
|
|
|
|
|
|
2024-10-10 21:20:26 +02:00
|
|
|
extern const char * const extDevTable[];
|
2017-04-25 14:41:48 +02:00
|
|
|
|
|
|
|
|
/* Extractor options */
|
2021-07-11 03:13:24 +02:00
|
|
|
|
|
|
|
|
#define EXT_DOADJUST 0x001 /* Extract hierarchical adjustments */
|
|
|
|
|
#define EXT_DOCAPACITANCE 0x002 /* Extract capacitance */
|
|
|
|
|
#define EXT_DOCOUPLING 0x004 /* Extract coupling capacitance */
|
|
|
|
|
#define EXT_DORESISTANCE 0x008 /* Extract resistance */
|
|
|
|
|
#define EXT_DOLENGTH 0x010 /* Extract pathlengths */
|
2022-05-28 16:33:21 +02:00
|
|
|
#define EXT_DOFRINGEHALO 0x020 /* Distributed fringe capacitance */
|
|
|
|
|
#define EXT_DOALL 0x03f /* ALL OF THE ABOVE */
|
2023-06-14 19:55:59 +02:00
|
|
|
#define EXT_DOLABELCHECK 0x040 /* Check for connections by label */
|
|
|
|
|
#define EXT_DOALIASES 0x080 /* Output all node aliases */
|
2017-04-25 14:41:48 +02:00
|
|
|
|
|
|
|
|
extern int ExtOptions; /* Bitmask of above */
|
2023-06-14 19:55:59 +02:00
|
|
|
extern char *ExtLocalPath; /* If non-NULL, location to write .ext files */
|
2017-04-25 14:41:48 +02:00
|
|
|
|
2021-09-09 21:47:48 +02:00
|
|
|
/* Options for "extract unique" */
|
|
|
|
|
#define EXT_UNIQ_ALL 0
|
|
|
|
|
#define EXT_UNIQ_TAGGED 1
|
|
|
|
|
#define EXT_UNIQ_NOPORTS 2
|
|
|
|
|
#define EXT_UNIQ_NOTOPPORTS 3
|
|
|
|
|
|
2017-04-25 14:41:48 +02:00
|
|
|
extern bool ExtTechLine();
|
|
|
|
|
extern void ExtTechInit();
|
|
|
|
|
extern void ExtTechFinal();
|
|
|
|
|
extern void ExtSetStyle();
|
|
|
|
|
extern void ExtPrintStyle();
|
2023-06-14 19:55:59 +02:00
|
|
|
extern void ExtSetPath();
|
|
|
|
|
extern void ExtPrintPath();
|
2021-04-05 22:03:54 +02:00
|
|
|
extern void ExtRevertSubstrate();
|
|
|
|
|
extern Plane *ExtCell();
|
2022-04-06 03:33:15 +02:00
|
|
|
extern void ExtractOneCell();
|
2017-04-25 14:41:48 +02:00
|
|
|
|
2020-05-21 22:26:24 +02:00
|
|
|
extern int ExtGetGateTypesMask();
|
|
|
|
|
extern int ExtGetDiffTypesMask();
|
2019-10-21 04:12:02 +02:00
|
|
|
|
2017-04-25 14:41:48 +02:00
|
|
|
#ifdef MAGIC_WRAPPER
|
|
|
|
|
extern bool ExtCompareStyle();
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef THREE_D
|
|
|
|
|
extern void ExtGetZAxis();
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
extern void ExtDumpCaps();
|
|
|
|
|
|
2025-02-17 10:44:49 +01:00
|
|
|
extern int extEnumTilePerim(Tile *tpIn, const TileTypeBitMask *maskp, int pNum, int (*func)(), ClientData cdata);
|
2022-04-06 03:33:15 +02:00
|
|
|
extern Plane *extPrepSubstrate();
|
|
|
|
|
|
2022-10-10 11:50:15 +02:00
|
|
|
/* C99 compat */
|
|
|
|
|
extern void ExtAll();
|
|
|
|
|
extern void ExtIncremental();
|
|
|
|
|
extern void ExtLengthClear();
|
|
|
|
|
extern void ExtParents();
|
|
|
|
|
extern void ExtSetDriver();
|
|
|
|
|
extern void ExtSetReceiver();
|
|
|
|
|
extern void ExtShowParents();
|
|
|
|
|
extern void ExtTechScale();
|
|
|
|
|
extern void ExtUnique();
|
|
|
|
|
extern void ExtractTest();
|
|
|
|
|
extern int ExtFindNeighbors();
|
|
|
|
|
extern void ExtFreeLabRegions();
|
|
|
|
|
extern void ExtResetTiles();
|
|
|
|
|
extern void extArray();
|
|
|
|
|
extern void extFindCoupling();
|
|
|
|
|
extern void extHierAdjustments();
|
|
|
|
|
extern void extHierConnections();
|
|
|
|
|
extern void extHierFreeLabels();
|
|
|
|
|
extern void extHierFreeOne();
|
|
|
|
|
extern void extHierFreeOne();
|
|
|
|
|
extern void extHierSubstrate();
|
|
|
|
|
extern int extHierYankFunc();
|
|
|
|
|
extern bool extLabType();
|
|
|
|
|
extern void extLength();
|
|
|
|
|
extern void extLengthInit();
|
|
|
|
|
extern void extOutputConns();
|
|
|
|
|
extern void extOutputCoupling();
|
|
|
|
|
extern int extPathTileDist();
|
|
|
|
|
extern void extRelocateSubstrateCoupling();
|
|
|
|
|
extern void extSetNodeNum();
|
|
|
|
|
extern void extShowTile();
|
|
|
|
|
extern void extSubtree();
|
|
|
|
|
extern int extUniqueCell();
|
|
|
|
|
extern void ExtLabelOneRegion();
|
|
|
|
|
extern void ExtInit();
|
2022-10-28 07:50:29 +02:00
|
|
|
extern bool ExtGetDevInfo();
|
2022-02-23 21:02:40 +01:00
|
|
|
|
2024-10-16 08:38:41 +02:00
|
|
|
#endif /* _MAGIC__EXTRACT__EXTRACT_H */
|