Giter VIP home page Giter VIP logo

magic's Introduction

Continuous Integration

MAGIC

  1. General Information:

Use your World Wide Web browser to read:

http://opencircuitdesign.com/magic/

Primary documentation is on the opencircuitdesign.com website under various links, including "Download", "Compile", and "Install" for information on obtaining, compiling, and installing the tool from source; "Code History" for detailed comments on all code changes; "Using Magic" for basic usage information including a complete on-line command reference; "Technology Files" for essential documentation on how to understand, edit, or write technology files for Magic; "Documentation" for miscellaneous papers and historical documentation converted to HTML format.

The current distribution version of magic is maintained by Tim Edwards [email protected]. Please let me know of any problems/bugs you find through the github Issues tracker.

Additional information from developer Rajit Manohar:

https://csl.yale.edu/~rajit/magic/

Of mainly historical interest only, now (available through the WayBack machine):

https://web.archive.org/web/20051217204815/http://www.research.compaq.com:80/wrl/projects/magic/magic.html
  1. Compilation and Installation:

See the file "INSTALL" in this directory, or "INSTALL_MacOS.md" for MacOS.

  1. Version 8.3 Release Notes:

During the course of version 8.2, magic moved to a git-oriented development. There are no longer "stable" and "distribution" versions. There is only the git repo with various development branches.

First release contains the "bplane" implementation for the cell plane pulled from the open source code for micromagic. This is much more efficient than using the corner-stitched tile plane for cells, and speeds up a number of methods, such as extraction, by a factor of 3 to 5 or so, depending on the amount of hierarchy in the design.

  1. Version 8.2 Release Notes:

As of the release of version 8.2, Version 8.1 is now the new stable distribution, and 8.2 is the development distribution. First development push over 8.1 is to add a Cairo (2D hardware-accelerated graphics) interface ("magic -d CAIRO" or "magic -d XR").

October, 2017: DRC changes correctly handle DRC errors in a child cell that are effectively corrected by geometry in the parent cell.

March, 2018: Added better version handling of subcells. "Use" records contain a path (relative or absolute) to the library used by the subcell, and this path is honored as long as it can be found.

April, 2018: Added the "plow" function back to the level of capability it originally had. This does not include handling of magic extensions since version 7, including non-manhattan geometry, stacked contacts, and DRC rule extensions.

Extended the extraction method to allow multiple extracted device types per magic layer, depending on the surrounding context (connecting layers, substrate, identifier layers, etc.).

Corrected the "extresist" method for non-FET devices, although it continues to need fundamental work to remove its dependence on the ".sim" format files.

  1. Version 8.1 Release Notes:

As of the release of version 8.1, Version 8.0 is now the new stable distribution, and 8.1 is the development distribution.

What's new in 8.1:

  1. Substantially revised substrate handling allows for "soft connectivity" detection, and resolves (finally) the problem of the hack handling of nMOS bulk connections using a default name without any understanding of a substrate node and connectivity.
  1. Version 8.0 Release Notes:

As of the release of version 8.0, Version 7.5 is now the new stable distribution, and 8.0 is the development distribution.

What's new in 8.0:

  1. Vector outline fonts with ability to control font, scale, rotation, and offset. Public-license outline fonts provided by the freefont project.

  2. Hierarchical SPICE output for LVS.

  3. New cifoutput operators including "net" and "maxrect", specifically for using with the "cif paint" command.

  4. DRC method for handling via rules specifying overlap on two opposite sides but not on the others.

  5. Improved DRC method that ignores errors in subcells that are masked by the parent cell.

  6. Improved cell manager based on methods available in Tk 8.5

  7. New extraction method "msubcircuit" with methods for specifying parameter names for source/drain area and perimeter.

  1. Version 7.5 Release Notes:

Version 7.5 is the development branch. Version 7.5.0 is the same as 7.4.2, which is essentially the same as 7.3.123, plus some documentation updates. Intended development is as follows:

What's new in 7.5:

  1. Use a finely spaced grid for the database, but keep the concept of "lambda" for layout. Keep backwards compatibility, and resolve issues with layout that does not work well on the lambda grid. Implemented in 7.5.1 by allowing a DRC "scalefactor" line, which declares that all DRC rules are in units of (lambda / scalefactor). Rules "in use" are scaled to lambda and rounded to the nearest integer. The original value is retained, however, so that any call to "scalegrid" will recompute the DRC distances based on the current internal grid. Thus, we can define DRC rules in fractional lambda and therefore match vendor DRC rule distances while still maintaining magic's concept of "lambda". This means that users working entirely within magic have scalable CMOS rules, but if a "vendor cell" (3rd party GDS or CIF) is loaded, the DRC rules will be correct with respect to it.
  2. Multiple DRC styles allowed in the technology file.
  3. Memory-mapped tile allocation using the mmap() function.
  4. Layer and cell instance locking
  5. Euclidean-distance measure on "cif grow" operator.
  6. "cif paint" command to automatically manipulate the database paint using "cifoutput" rulesets.
  7. New contact-cut generation algorithm.
  8. Added the ability to define and extract MOS devices with asymmetric source and drain.
  9. Added extraction devices "rsubcircuit" and "subcircuit" to produce subcircuit records in SPICE output, with a method to define parameters to be passed to the subcircuit.
  10. Added resistor corner scaling (i.e., the resistance of a material at a corner can be set as a fraction of the resistance of the same material on a straight path).
  11. Updated the interactive maze router, fixing many bugs, and adding many enhancements, including a maze router GUI that can be used to aid in interactively routing an entire netlist, or performing a verification of a netlist against the layout.
  12. "gridlimit" keyword in the cifoutput section to prevent magic from generating geometry beyond a specific resolution.
  13. Added the ability to specify all units in the extract section in microns, and added a simplified method for specifying standard parasitic capacitance extraction rules.
  14. "gds merge true" option to generate polygons in the GDS output instead of tiles. This creates much smaller output files at the expense of processing time.
  15. New "contact" function to automatically contact two layers at an intersection.

See the online release notes for a more thorough list of features.

  1. Version 7.4 Release Notes:

Version 7.4 is the new stable distribution version of magic. Apart from changes to the release notes, it is identical to the last revision (123) of development version 7.3. Revisions of 7.4 will be made as necessary to fix bugs in the code. All new additions and major changes will be done to the new development distribution, version 7.5. Therefore there will not be a "What's new in 7.4" section, as there is not supposed to be anything new in version 7.4.

  1. Version 7.3 Release Notes:

Magic release 7.3 incorporates a stacked contact model which is, for the most part, backwardly compatible with Magic releases 7.2 and earlier. Information about this developmental release can be found at:

http://opencircuitdesign.com/magic/magic7_3.html

What's new in 7.3:

Provided by Tim Edwards (MultiGiG, Inc.): 1) Stacked contact model allowing arbitrary stacking of contact types. 2) A separate "undo/redo" method for network selection, to remove the memory overhead associated with selecting and unselecting large networks. Also removes some time overhead as well, especially when unselecting networks. 3) Much improved "plot pnm" function. 4) Improved transistor and resistor extraction. 5) LEF format reader; improved LEF/DEF input/output handling 6) New style and colormap file formats 7) Vendor GDS read/write capability 8) "wire segment" drawing function 9) Handling of path records in CIF and GDS input 10) Handling of cell scaling in GDS input 11) Pi-network device extraction for resistors 12) Option to write contacts as cell arrays in GDS output 13) New "widespacing" and "maxwidth" DRC algorithms. 14) "polygon" command 15) New cifoutput operator "bloat-all" 16) Backing-store for 24-bit and OpenGL graphics 17) New "pick" tool for interactive selection move and copy 18) New interactive "wire" tool 19) Crosshair 20) New cifoutput operator "slots" 21) New fcntl-based file locking mechanism 22) "angstroms" units supported in cifinput/cifoutput 23) Non-Manhattan device extraction support 24) New "feedback" mechanism 25) Proper support for > 32 planes (up to 64) 26) Fixed array interaction CIF/GDS generation 27) Added executable "magicdnull" for streamlined batch-mode use 28) New method for crash backups, including restore with "magic -r" 29) A number of other technology file additions and enhancements

  1. Version 7.2 Release Notes:

Magic release 7.2 incorporates the capability to run magic from the Tcl interpreter with graphics handled by Tk. Instructions for compiling and installing this version are in README.Tcl. Information about this release can be found at:

http://opencircuitdesign.com/magic/magic7_2.html

What's new in 7.2:

Provided by Tim Edwards (MultiGiG, Inc., and JHU Applied Physics Lab):

   1) Tcl interpreter extension option
   2) Cygwin compile option
   3) Memory resources cleaned up
   4) GUI interface to Tcl version of Magic
   5) Readline update to version 4.3
   6) OpenGL fixes and refinements
   7) Nonmanhattan geometry fixes and extensions
   8) Threaded graphics in non-Tcl environments
   9) Inductance extraction
  10) CIF and GDS input/output support for deep submicron technologies
  11) Different internal and lambda grids, including automatic or
  induced ("scalegrid" command) grid subdivision and expansion.
  "snap" and "grid" functions and extensions aid layout when
  lambda and internal units differ.
  12) Removed commands "list", "listall", "parent", and "child",
  replacing them with the more general-purpose "cellname"
  and "instance" commands.
  13) Added command "tech", and re-loadable technologies.
  14) Revamped the "dstyle" files and updated the dstyle version
  15) Added "element" types for layout annotation.
  16) Extended extract section of techfile to include "device"
  keyword and devices "mosfet", "bjt", "capacitor", and "resistor".
  New model resistor and mosfet use width/length instead of area/
  perimeter.
  17) Added 3D rendering window invoked by command "specialopen wind3d",
  for the Tcl version compiled with OpenGL graphics.
  18) Added "height" keyword to tech file for height/thickness values
  19) Added "windowname" command for managing multiple wrapper windows
  under Tcl.
  20) Added extraction extension for annular (ring) MOSFETs.
  21) Added "widespacing" DRC rule.
  22) Added GNU autoconf compile
  23) New command "property" for setting key:value pair properties
  in cell definitions that can be interpreted by other routines
  (such as LEF/DEF).
  24) General-purpose subcircuit method using the "port" command to
  declare a cell to be a subcircuit and to mark the position and
  orientation of connections into the subcell.  This replaces a
  method previously built into version 7.2 using a "subcircuit"
  layer; that method is now considered obsolete.
  25) LEF and DEF format readers, LEF format writer.
  26) Improved techfile format with asterisk-notation and DRC
  "surround", "overhang", and "rect_only" statements.
  1. Version 7.1 Release Notes:

Magic release 7.1 consolidates all known patches/features to magic version 6.5.x, and contains additional features that have been added since the consolidation. Information about this release is available at the magic web site:

http://vlsi.cornell.edu/magic/

What's new in 7.1:

Provided by Rajit Manohar (Cornell University) (formerly version 7.0): 1) Implementation of "scheme" (a subset of lisp), a powerful method of generating complex functions. 2) Using CVS to facilitate source code development from multiple sites. 3) New commands using scheme: Too many to mention here; see the tutorials in doc/tutscm* for explanations. Functions themselves are defined in ${CAD_ROOT}/magic/scm/*.scm 4) Overhauled the readline interface. See doc/textfiles/readline.txt for details. 5) Changed tons of stuff about the build environment: - the include paths in all files is now canonical. - redid the make process and rewrote all Makefiles. - tons of other small things that hopefully make the build process nicer.

  1. Releases prior to version 7:

What's new in 6.5.2:

Provided by R. Timothy Edwards (Johns Hopkins Applied Physics Laboratory): 1) Support for OpenGL Look at doc/open_gl.txt 2) Minor update to :config for selection of multiple graphics interfaces. 3) Updates to dstyle and cmap files 4) Always do a check to see if there is only one active layout window: There's no need to annoy the user with complaints of "Put the cursor in a layout window" when there is no
possibility of confusion about the matter.

Provided by Philippe Pouliquen (Johns Hopkins University): 5) "readline" command line editing capability 6) Macro extensions for X11 (see doc/macro_extension.txt) 7) Better handling of filenames on the UNIX command-line (multiple filenames allowed, ".mag" extension not required). 8) New commands: "child", "parent", "down", "xload", "list", "listall", "listtop", "shell", "imacro". 9) Command alterations: "box [+|-][dir]", "select visible", area of box included in "box" command. 10) Updated .magic macro file (source in magic/proto.magic, install in ${CAD_ROOT}/magic/sys/.magic) (see doc/default_macros.txt).

What's new in 6.5.1:

1) Support for true-color displays (courtesy of Michael Godfrey)
   Look into doc/hires-color.txt
2) Minor updates in ext2sim, ext2spice

What's new in 6.5:

    1) Bug fixes in the extractor propagation of attributes (SU)

    2) New version of ext2sim ext2spice with support for hspice, spice2, 
       and spice3 (SU)

    3) Integration of the port to SUN's Solaris OS (MIT)

    4) Port to FreeBSD2.x. Thanks to John Wehle ([email protected])

5) Integration of part of the DEC/WRL code fragments into the drc
   code. Since the code is not completely trustworthy the fragments 
   are ifdef'd so if need be the drc will behave exactly as the old one.
   (you just need to change the #define DRC_EXTENSIONS in drc/drc.h
    to do that).  For a description of the extensions look into 
    doc/tutwrl1.ps (DEC/WRL)

6) Integration of some patches in to the CIF code that introduce:
    (i)  A new cif operation squares-grid which generates contacts 
	 on grid.
        (ii) A new cif layer command min-width is added so that generated
	 layers have the correct min drc width when magic expands
	 layers in the hierarchy (like it does with wells).

Magic-6.5 crashes if compiled with gcc in Solaris2.x/SunOS5.x (curiously enough it does not have that problem if compiled with Sun's cc compiler). To get around that you need to set the flag -DUSE_SYSTEM_MALLOC flag in misc/DFLAGS after you run make :config. The error has to do with allignment of doubles and an alternative way to get rid of it is to change extract/extractInt.h so that CapValue is float instead of double. Nevertheless the first method is recomended.

What's new in 6.4:

This release, magic 6.4, contains the following modifications:

1) A number of bug fixes from the 6.3 notes.

2) A version numbering facility for tech files.  Please add a new 
   section to each tech file after the "tech" section, following 
   this example:

	version
	    version 2.0.3
	    description "MOSIS CMOS 0.13u Nano-nano technology."
	end
	    
   Older versions of magic will complain about the new section, but
   no harm will be done.

4) Various comments describing dates and versions, including the
   above tech file information, are not written to the CIF file.

3) Support for patches and versioning:  A new command called "version"
   lists out the version number and patches that are installed.
   A header file called patchlevel.h keeps track of a PATCHLEVEL 
   integer and a string in patchlevel.c keeps track of the names of
   each installed patch.  When posting patches to the net please be
   sure your patch updates variables.  See the files for details.

4) Ports to Alpha AXP OSF/1, SGI/IRIX (courtesy of Stefanos 
   Sidiropoulos) and Linux (courtesy of Harold Levy).

5) A change in the extractor algorithm to provide shielding for
   perimeter capacitances. Also a change in ext2sim to maintain
   information about the area and perimeter of diffusion and
   the bulk connection of the fets (written by Stefanos
   Sidiropoulos).

magic's People

Contributors

antonblanchard avatar ax3ghazy avatar belohoub avatar brad0 avatar donn avatar fabian-l-c avatar fdreams avatar greenbeard avatar hpretl avatar jpc-lip6 avatar just22 avatar keno avatar lankasaicharan avatar mbalestrini avatar mguthaus avatar mithro avatar mooredan avatar park-hyung-joo avatar pingu-73 avatar proppy avatar riverchen99 avatar rtimothyedwards avatar ryandesign avatar smunaut avatar susinxy avatar thejackal360 avatar xobs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

magic's Issues

proto.magicrc: Errors in make.log

I just tried to compile on a Xubuntu 18.04 box and found the following errors in make.log:

proto.magicrc.in:1:3: error: invalid preprocessing directive #$
 # $(CAD_ROOT)/magic/sys/.magicrc
   ^
proto.magicrc.in:2:4: error: invalid preprocessing directive #System
 #  System wide start up file for magic, defines default macros.
    ^~~~~~
proto.magicrc.in:5:3: error: invalid preprocessing directive #Source
 # Source file proto.magicrc.in
   ^~~~~~
proto.magicrc.in:6:3: error: invalid preprocessing directive #Process
 # Process this file with the cpp macro processor
   ^~~~~~~
proto.magicrc.in:13:4: error: invalid preprocessing directive #Default
 #  Default .magicrc macro file (new macros)
    ^~~~~~~
proto.magicrc.in:15:3: error: invalid preprocessing directive #A
 # A key
   ^
proto.magicrc.in:19:3: error: invalid preprocessing directive #B
 # B key
   ^
proto.magicrc.in:22:3: error: invalid preprocessing directive #C
 # C key
   ^
proto.magicrc.in:24:3: error: invalid preprocessing directive #D
 # D key
   ^
proto.magicrc.in:27:3: error: invalid preprocessing directive #E
 # E key
   ^
proto.magicrc.in:29:3: error: invalid preprocessing directive #F
 # F key
   ^
proto.magicrc.in:32:3: error: invalid preprocessing directive #G
 # G key
   ^
proto.magicrc.in:35:3: error: invalid preprocessing directive #I
 # I key
   ^
proto.magicrc.in:41:3: error: invalid preprocessing directive #L
 # L key
   ^
proto.magicrc.in:50:3: error: invalid preprocessing directive #M
 # M key
   ^
proto.magicrc.in:53:3: error: invalid preprocessing directive #N
 # N key
   ^
proto.magicrc.in:55:3: error: invalid preprocessing directive #O
 # O key
   ^
proto.magicrc.in:58:3: error: invalid preprocessing directive #P
 # P key
   ^
proto.magicrc.in:65:3: error: invalid preprocessing directive #Q
proto.magicrc.in:69:3: error: invalid preprocessing directive #R
 # R key
   ^
proto.magicrc.in:73:3: error: invalid preprocessing directive #S
 # S key
   ^
proto.magicrc.in:80:3: error: invalid preprocessing directive #U
 # U key
   ^
proto.magicrc.in:83:3: error: invalid preprocessing directive #V
 # V key
   ^
proto.magicrc.in:86:3: error: invalid preprocessing directive #W
 # W key
   ^
proto.magicrc.in:89:3: error: invalid preprocessing directive #X
 # X key
   ^
proto.magicrc.in:93:3: error: invalid preprocessing directive #Z
 # Z key
   ^
proto.magicrc.in:100:3: error: invalid preprocessing directive #Question
 # Question mark
   ^~~~~~~~
proto.magicrc.in:103:3: error: invalid preprocessing directive #Comma
 # Comma key
   ^~~~~
proto.magicrc.in:105:3: error: invalid preprocessing directive #Exclamation
 # Exclamation mark
   ^~~~~~~~~~~
proto.magicrc.in:109:3: error: invalid preprocessing directive #Space
 # Space bar
   ^~~~~
proto.magicrc.in:111:3: error: invalid preprocessing directive #Colon
 # Colon and semicolon (interactive command)
   ^~~~~
proto.magicrc.in:117:3: error: invalid preprocessing directive #Arrow
 # Arrow keys (X11 versions only)
   ^~~~~
proto.magicrc.in:134:3: error: invalid preprocessing directive #Keypad
 # Keypad keys (X11 versions only)
   ^~~~~~
proto.magicrc.in:135:3: error: invalid preprocessing directive #Functions
 # Functions duplicated for use both with Num_Lock ON and OFF
   ^~~~~~~~~
proto.magicrc.in:167:3: error: invalid preprocessing directive #Scroll
 # Scroll wheel bindings
   ^~~~~~
proto.magicrc.in:170:3: error: invalid preprocessing directive #Quick
 # Quick macro function keys for scmos tech (X11 versions only)
   ^~~~~
proto.magicrc.in:233:3: error: invalid preprocessing directive #Allow
 # Allow some box manipulation from all tools.
   ^~~~~
proto.magicrc.in:238:3: error: invalid preprocessing directive #Box
 # Box tool button bindings
   ^~~
proto.magicrc.in:257:3: error: invalid preprocessing directive #Color
 # Color window button bindings
   ^~~~~
proto.magicrc.in:265:3: error: invalid preprocessing directive #Netlist
 # Netlist window button bindings
   ^~~~~~~
proto.magicrc.in:269:3: error: invalid preprocessing directive #Wind3D
 # Wind3D window key bindings
   ^~~~~~
proto.magicrc.in:298:3: error: invalid preprocessing directive #Load
 # Load basic set of fonts
   ^~~~
proto.magicrc.in:304:3: error: invalid preprocessing directive #Additions
 # Additions for Tcl GUI wrapper
   ^~~~~~~~~
Makefile:42: recipe for target 'proto.magicrc' failed
make[2]: *** [proto.magicrc] Error 1

Magic gets stuck waiting on null terminator

Finally had the magic sitting at 100% issue happen again. Magic seems to be stuck waiting for a null terminator;

tansell@pdk:~/skywater-pdk-scratch-new$ gdb -p 62681
GNU gdb (Debian 8.2.1-2+b3) 8.2.1
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word".
Attaching to process 62681
[New LWP 63466]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
efReadLine (line=line@entry=0x7ffd0c696860 "", size=-288, size@entry=1024, file=file@entry=0x56343261c360, argv=argv@entry=0x7ffd0c696460) at EFread.c:695
695         while (*get != '\0')
(gdb) bt
#0  efReadLine (line=line@entry=0x7ffd0c696860 "", size=-288, size@entry=1024, file=file@entry=0x56343261c360, argv=argv@entry=0x7ffd0c696460) at EFread.c:695
#1  0x00007fcfcc9c3f20 in efReadDef (def=def@entry=0x56343440a130, dosubckt=dosubckt@entry=1 '\001', resist=resist@entry=0 '\000', noscale=noscale@entry=0 '\000', toplevel=toplevel@entry=1 '\001') at EFread.c:240
#2  0x00007fcfcc9c2c90 in EFReadFile (name=name@entry=0x563433fafb40 "sky130_fd_pr_rf2__rf2_xcmvpp11p5x11p7_m3_lim5shield", dosubckt=dosubckt@entry=1 '\001', resist=0 '\000', noscale=noscale@entry=0) at EFread.c:145
#3  0x00007fcfcc96467a in CmdExtToSpice (w=<optimized out>, cmd=0x56343438d140) at ext2spice.c:704
#4  0x00007fcfcc91705a in WindExecute (w=w@entry=0x563433371890, rc=94782184192688, cmd=cmd@entry=0x56343438d140) at windMain.c:414
#5  0x00007fcfcc89f45f in DBWcommands (w=0x563433371890, cmd=0x56343438d140) at DBWprocs.c:598
#6  0x00007fcfcc913c05 in WindSendCommand (w=0x563433371890, w@entry=0x0, cmd=cmd@entry=0x56343438d140, quiet=quiet@entry=1 '\001') at windSend.c:263
#7  0x00007fcfcc90c1c1 in TxTclDispatch (clientData=clientData@entry=0x0, argc=argc@entry=1, argv=argv@entry=0x563432637090, quiet=quiet@entry=1 '\001') at txCommands.c:1180
#8  0x00007fcfcca0c037 in _tcl_dispatch (clientData=0x0, interp=0x5634326291e0, argc=1, argv=0x563432637090) at tclmagic.c:400
#9  0x00007fcfcea531eb in TclInvokeStringCommand () from /usr/lib/x86_64-linux-gnu/libtcl8.6.so
#10 0x00007fcfcea54fb7 in TclNRRunCallbacks () from /usr/lib/x86_64-linux-gnu/libtcl8.6.so
#11 0x00007fcfcea563af in ?? () from /usr/lib/x86_64-linux-gnu/libtcl8.6.so
#12 0x00007fcfceb0f3f8 in Tcl_FSEvalFileEx () from /usr/lib/x86_64-linux-gnu/libtcl8.6.so
#13 0x00007fcfceb0dd57 in Tcl_EvalFile () from /usr/lib/x86_64-linux-gnu/libtcl8.6.so
#14 0x00007fcfcc959304 in mainInitFinal () at main.c:1164
#15 0x00007fcfcca0caa8 in _magic_startup (clientData=0x0, interp=0x5634326291e0, argc=1, argv=0x563432636c50) at tclmagic.c:725
#16 0x00007fcfcea531eb in TclInvokeStringCommand () from /usr/lib/x86_64-linux-gnu/libtcl8.6.so
#17 0x00007fcfcea54fb7 in TclNRRunCallbacks () from /usr/lib/x86_64-linux-gnu/libtcl8.6.so
#18 0x00007fcfcea563af in ?? () from /usr/lib/x86_64-linux-gnu/libtcl8.6.so
#19 0x00007fcfceb0f3f8 in Tcl_FSEvalFileEx () from /usr/lib/x86_64-linux-gnu/libtcl8.6.so
#20 0x00007fcfceb0dd57 in Tcl_EvalFile () from /usr/lib/x86_64-linux-gnu/libtcl8.6.so
#21 0x00007fcfceb16f6e in Tcl_SourceRCFile () from /usr/lib/x86_64-linux-gnu/libtcl8.6.so
#22 0x00007fcfceb174bd in Tcl_MainEx () from /usr/lib/x86_64-linux-gnu/libtcl8.6.so
#23 0x0000563431b3822d in main (argc=7, argv=0x7ffd0c697cc8) at magicdnull.c:49
(gdb) 

Capacitance extraction for node "a" depends upon the position of label "b"

Cells ppcap_tc1 and ppcap_tc2 are identical in
every way except for the position of label b
on metal1. The cell is a poly2/poly capacitor,
with node "a" being the bottom plate (poly) and
node "b" being the top plate (poly2).

Both plates are contacted to metal1.

For convenience, a screenshot of each cell is
provided:

ppcap_tc1.png
ppcap_tc2.png

ppcap_tc1

ppcap_tc2

The difference in the .mag files:

$ diff ppcap_tc1.mag ppcap_tc2.mag
20c20
< rlabel metal1 s 19 10 19 10 2 b
---
> rlabel metal1 s 23 20 23 20 2 b

A TCL file "doit.tcl" is included to extract the two
cells. And to reproduce, delete the .ext files and
run the script:

$ rm -f ppcap{1,2}.ext
$ /usr/local/bin/magic -T SCN3ME_SUBM.30.tech -noconsole -dnull < doit.tcl > magic.log 2>&1

After extraction, here is the difference between the two
.ext files:

$ diff ppcap_tc{1,2}.ext
8c8
< port "b" 2 19 10 19 10 m1
---
> port "b" 2 23 20 23 20 m1
10c10
< node "b" 114 532.8 19 10 m1 0 0 0 0 0 0 0 0 0 0 0 0 176 60 0 0 64 40 0 0 0 0
---
> node "b" 114 532.8 23 20 m1 0 0 0 0 0 0 0 0 0 0 0 0 176 60 0 0 64 40 0 0 0 0
12,13c12,13
< cap "b" "a" 14878.1
< subcap "a" -3276.96
---
> cap "a" "b" 14878.1
> subcap "a" -1906.56

The significant (and electrical) difference is the subcap lines. This is the
amount of capacitance added from the capacitance on node "a". After translation
to a spice file, the capacitance between node "a" and the substrate
will be different. The same design should produce the same electrical
parameters. Label position should not affect this.

Tech file: SCN3ME_SUBM.30.tech is from
https://github.com/RTimothyEdwards/qflow/blob/master/tech/osu050/SCN3ME_SUBM.30.tech

Magic 8.3 revision 82

Complete, self-contained test case:
magic_tc1.tar.gz

Dan Moore
[email protected]
Nov 14, 2020

Extraction of mosfet devices with source and drain connected to same net.

  1. It appears that the default mosfet extraction can not extract devices with the source and drain connected to the same net.

While doing a device level extraction of the openlane spm design, the extract log can not extract decap (decoupling capacitor) cells.

Here is the output:

Extracting sky130_fd_sc_hd__decap_8 into sky130_fd_sc_hd__decap_8.ext:
Warning: No matching extraction type for device at (79 47)
Warning: No matching extraction type for device at (79 323)

There appears to be code in magic's extract/ExtBasic.c to handle incorrect number of terminals, but I don't think it's working.
Search for 'No matching extraction type for device' to find the general location.

  1. It is possible to add the following lines to the sky130A tech file and extract the devices.
fet pfethvt pdiff,pdiffres,pdc 1 sky130_fd_pr__pfet_01v8_hvt error nwell 0 0
fet scnfet,nfet ndiff,ndiffres,ndc 1 sky130_fd_pr__nfet_01v8 error pwell,space/w 0 0 

However, the length and width (l and w) are extracted in reverse. Here's the extracted spice subcircuit.

.subckt sky130_fd_sc_hd__decap_6 VGND VNB VPB VPWR
$ ** SOURCE/DRAIN TIED
M1000 VPWR VGND VPWR VPB sky130_fd_pr__pfet_01v8_hvt w=1.97e+06u l=870000u
+ ad=0p pd=0u as=0p ps=0u
$ ** SOURCE/DRAIN TIED
M1001 VGND VPWR VGND VNB sky130_fd_pr__nfet_01v8 w=1.97e+06u l=550000u
+ ad=0p pd=0u as=0p ps=0u
.ends

The capacitor width should be smaller than the length (distance from source to drain).

Missing poly/poly2 capacitor in cell with substrate tie

This is a continuation of the issue first posted on the magic listserv in June 2020 : http://opencircuitdesign.com/pipermail/magic-dev/2020/000751.html

Some issues observed have been resolved, however one remains:

Please consider these two cells which contain three poly/poly2 capacitors. These layouts are identical except for the for substrate tie to vss. Cell cap_tc1 has the tie, and cell cap_tc2 does not.

image

image

After extraction and translation to a SPICE subcircuit, I would expect to see the three capacitors in the SPICE subcircuit (along with any stray caps):

  • a large cap connected between vdd and node n2
  • a small cap connected between n2x and vss
  • an in-between cap connected between vdd and vss

Here are the resulting .cir files:

$ cat cap_tc{2,1}.cir
* NGSPICE file created from cap_tc2.ext - technology: scmos

.subckt cap_tc2 n2 n2x vdd vss
C0 vdd n2 63.27fF
C1 vdd vss 60.69fF
C2 n2x vss 41.06fF
C3 n2 vss 2.29fF
.ends
* NGSPICE file created from cap_tc1.ext - technology: scmos

.subckt cap_tc1 n2 n2x vdd vss
C0 n2 vdd 63.27fF
C1 vdd vss 60.69fF
C2 n2 vss 2.29fF
.ends

I believe that the first subckt (cap_tc2.cir) is correct. It has the expected capacitors at about the expected values. However, note that the second subckt (cap_tc1.cir) is missing the capacitor between port/node n2x and substrate (vss). This is the poly/poly2 cap in the lower left of the layout.

The extract file of cell cap_tc1:

$ cat cap_tc1.ext 
timestamp 1593139151
version 8.3
tech scmos
style AMI0.5um(amic5)from:T11Z
scale 1000 1 30
resistclasses 82400 102700 816000 816000 1 22300 41300 41300 90 90 60
port "vdd" 3 25 78 25 78 m1
port "n2x" 2 45 24 45 24 m1
port "n2" 1 72 57 72 57 m1
port "vss" 4 85 2 85 2 m1
node "vdd" 151 60693.5 25 78 m1 0 0 0 0 0 0 0 0 0 0 2781 314 0 0 0 0 696 244 0 0 0 0
node "n2x" 42 41057 45 24 m1 0 0 0 0 0 0 0 0 0 0 0 0 484 88 0 0 102 56 0 0 0 0
node "n2" 125 2286.6 72 57 m1 0 0 0 0 0 0 0 0 0 0 0 0 768 128 0 0 206 108 0 0 0 0
substrate "vss" 0 0 85 2 m1 0 0 120 44 0 0 0 0 0 0 1056 130 544 100 0 0 1045 406 0 0 0 0
cap "n2" "vdd" 63265.7
subcap "n2x" -39813.8

The capacitance value for node "n2x" (41057) matches the value seen in cell cap_tc2's subcircuit. It appears that it evaporated. Well, it didn't. When the ext2spice command is run, the negative subcap value for "n2x" is added to the node value ( 41057 - 39813.8 = 1243.2 aF). This is less than the LocCapThreshold (eff. 2000 aF) in ext2spice.c so it doesn't get output to the SPICE file.

It appears that the "subcap "n2x" -39813.8" line in the .ext file is suspect. This gets added by the extSubtreeInteraction() function in extract/ExtSubtree.c file. Maybe this line shouldn't be added since the presumably correct value is already on the node line.

If I comment out the subcap line in the cap_tc1.ext file, then the expected SPICE subcircuit is output:

$ cat cap_tc1.cir 
* NGSPICE file created from cap_tc1.ext - technology: scmos

.subckt cap_tc1 n2 n2x vdd vss
C0 n2 vdd 63.27fF
C1 vdd vss 60.69fF
C2 n2x vss 41.06fF
C3 n2 vss 2.29fF
.ends

TCL commands used to extract:

set SUB vss
load cap_tc1
extract warn all
extract

Note: the "set SUB vss" is a don't care and extract produces the same .ext file with and without the SUB variable being defined.

If desired, I can assemble a self-contained test case for anyone who is interested in investigating this further.

Am I on the right track for finding a solution to this? It seems that one would want to know if the substrate cap was already included in the node value and decide if an adjustment is needed. Sorry, it's not clear to me when (or even if) the subcap line is necessary.

Thanks, Dan

Instability / non-determinism in the spice netlist generation

Given the exact same input, magic produces non-deterministic spice output.

This seems to be because something is being sorted by the pointer location?

This can be most clearly seen from the following where the pin order changes from MET5 C1 C0 SUB to C0 C1 MET5 SUB

-.subckt sky130_fd_pr_rf2__rf2_xcmvpp11p5x11p7_m3_lim5shield MET5 C1 C0 SUB
+.subckt sky130_fd_pr_rf2__rf2_xcmvpp11p5x11p7_m3_lim5shield C0 C1 MET5 SUB
diff --git a/libraries/sky130_fd_pr_rf/v0.12.1/cells/aura_blocking/sky130_fd_pr_rf__aura_blocking.spice b/libraries/sky130_fd_pr_rf/v0.12.1/cells/aura_blocking/sky130_fd_pr_rf__aura_blocking.spice
index ccd682b94ed..93d4172ff8a 100644
--- a/libraries/sky130_fd_pr_rf/v0.12.1/cells/aura_blocking/sky130_fd_pr_rf__aura_blocking.spice
+++ b/libraries/sky130_fd_pr_rf/v0.12.1/cells/aura_blocking/sky130_fd_pr_rf__aura_blocking.spice
@@ -23,6 +23,25 @@ M1001 Source Gate Drain BULK pshort w=3e+06u l=150000u
 +  ad=0p pd=0u as=0p ps=0u
 .ends
 
+.subckt sky130_fd_pr_rf__rf_nlowvt_w3p0_l0p15_8f SUBSTRATE Source Drain Gate
+M1000 Drain Gate Source SUBSTRATE nlowvt w=3e+06u l=150000u
++  ad=3.36e+12p pd=2.624e+07u as=4.2e+12p ps=3.28e+07u
+M1001 Source Gate Drain SUBSTRATE nlowvt w=3e+06u l=150000u
++  ad=0p pd=0u as=0p ps=0u
+M1002 Source Gate Drain SUBSTRATE nlowvt w=3e+06u l=150000u
++  ad=0p pd=0u as=0p ps=0u
+M1003 Drain Gate Source SUBSTRATE nlowvt w=3e+06u l=150000u
++  ad=0p pd=0u as=0p ps=0u
+M1004 Source Gate Drain SUBSTRATE nlowvt w=3e+06u l=150000u
++  ad=0p pd=0u as=0p ps=0u
+M1005 Drain Gate Source SUBSTRATE nlowvt w=3e+06u l=150000u
++  ad=0p pd=0u as=0p ps=0u
+M1006 Source Gate Drain SUBSTRATE nlowvt w=3e+06u l=150000u
++  ad=0p pd=0u as=0p ps=0u
+M1007 Drain Gate Source SUBSTRATE nlowvt w=3e+06u l=150000u
++  ad=0p pd=0u as=0p ps=0u
+.ends
+
 .subckt sky130_fd_pr_rf__aura_blocking D_N2 G_N2 S G_P2 S_P2 S_P G G_P S_N2 D_P2 VPWR
 + D_P VGND NWELL B_P
 Xsky130_fd_pr_rf__rf_nlowvt_w0p42_l0p15_2f_0 sky130_fd_pr_rf__rf_nlowvt_w3p0_l0p15_8f_0/SUBSTRATE
@@ -31,5 +50,7 @@ Xsky130_fd_pr_rf__rf_pshort_w0p84_l0p15_2f_0 B_P S_P D_P sky130_fd_pr_rf__rf_nlo
 + G_P sky130_fd_pr_rf__rf_pshort_w0p84_l0p15_2f
 Xsky130_fd_pr_rf__rf_pshort_w3p0_l0p15_2f_0 B_P S_P2 D_P2 sky130_fd_pr_rf__rf_nlowvt_w3p0_l0p15_8f_0/SUBSTRATE
 + G_P2 sky130_fd_pr_rf__rf_pshort_w3p0_l0p15_2f
+Xsky130_fd_pr_rf__rf_nlowvt_w3p0_l0p15_8f_0 sky130_fd_pr_rf__rf_nlowvt_w3p0_l0p15_8f_0/SUBSTRATE
++ S_N2 D_N2 G_N2 sky130_fd_pr_rf__rf_nlowvt_w3p0_l0p15_8f
 .ends
 
diff --git a/libraries/sky130_fd_pr_rf2/v0.10.0/cells/rf2_xcmvpp11p5x11p7_m3_lim5shield/sky130_fd_pr_rf2__rf2_xcmvpp11p5x11p7_m3_lim5shield.spice b/libraries/sky130_fd_pr_rf2/v0.10.0/cells/rf2_xcmvpp11p5x11p7_m3_lim5shield/sky130_fd_pr_rf2__rf2_xcmvpp11p5x11p7_m3_lim5shield.spice
index 86d4ca2f484..1c8b3c7b01a 100644
--- a/libraries/sky130_fd_pr_rf2/v0.10.0/cells/rf2_xcmvpp11p5x11p7_m3_lim5shield/sky130_fd_pr_rf2__rf2_xcmvpp11p5x11p7_m3_lim5shield.spice
+++ b/libraries/sky130_fd_pr_rf2/v0.10.0/cells/rf2_xcmvpp11p5x11p7_m3_lim5shield/sky130_fd_pr_rf2__rf2_xcmvpp11p5x11p7_m3_lim5shield.spice
@@ -1,5 +1,5 @@
 * NGSPICE file created from sky130_fd_pr_rf2__rf2_xcmvpp11p5x11p7_m3_lim5shield.ext - technology: sky130A
 
-.subckt sky130_fd_pr_rf2__rf2_xcmvpp11p5x11p7_m3_lim5shield MET5 C1 C0 SUB
+.subckt sky130_fd_pr_rf2__rf2_xcmvpp11p5x11p7_m3_lim5shield C0 C1 MET5 SUB
 .ends
 
diff --git a/libraries/sky130_fd_pr_rf2/v0.10.0/cells/xcmvpp4p4x4p6_m3_lim5shield_top/sky130_fd_pr_rf2__xcmvpp4p4x4p6_m3_lim5shield_top.spice b/libraries/sky130_fd_pr_rf2/v0.10.0/cells/xcmvpp4p4x4p6_m3_lim5shield_top/sky130_fd_pr_rf2__xcmvpp4p4x4p6_m3_lim5shield_top.spice
index 83ba6c75bb0..c62d9ff836e 100644
--- a/libraries/sky130_fd_pr_rf2/v0.10.0/cells/xcmvpp4p4x4p6_m3_lim5shield_top/sky130_fd_pr_rf2__xcmvpp4p4x4p6_m3_lim5shield_top.spice
+++ b/libraries/sky130_fd_pr_rf2/v0.10.0/cells/xcmvpp4p4x4p6_m3_lim5shield_top/sky130_fd_pr_rf2__xcmvpp4p4x4p6_m3_lim5shield_top.spice
@@ -1,9 +1,9 @@
 * NGSPICE file created from sky130_fd_pr_rf2__xcmvpp4p4x4p6_m3_lim5shield_top.ext - technology: sky130A
 
 .subckt sky130_fd_pr_rf2__xcmvpp4p4x4p6_m3_lim5shield_top M5 SUB C0 C1
-Xsky130_fd_pr_rf2__rf2_xcmvpp4p4x4p6_m3_lim5shield_0[0|0] C0 C1 M5 SUB sky130_fd_pr_rf2__rf2_xcmvpp4p4x4p6_m3_lim5shield
-Xsky130_fd_pr_rf2__rf2_xcmvpp4p4x4p6_m3_lim5shield_0[1|0] C0 C1 M5 SUB sky130_fd_pr_rf2__rf2_xcmvpp4p4x4p6_m3_lim5shield
-Xsky130_fd_pr_rf2__rf2_xcmvpp4p4x4p6_m3_lim5shield_0[0|1] C0 C1 M5 SUB sky130_fd_pr_rf2__rf2_xcmvpp4p4x4p6_m3_lim5shield
-Xsky130_fd_pr_rf2__rf2_xcmvpp4p4x4p6_m3_lim5shield_0[1|1] C0 C1 M5 SUB sky130_fd_pr_rf2__rf2_xcmvpp4p4x4p6_m3_lim5shield
+Xsky130_fd_pr_rf2__rf2_xcmvpp4p4x4p6_m3_lim5shield_0[0|0] M5 C0 C1 SUB sky130_fd_pr_rf2__rf2_xcmvpp4p4x4p6_m3_lim5shield
+Xsky130_fd_pr_rf2__rf2_xcmvpp4p4x4p6_m3_lim5shield_0[1|0] M5 C0 C1 SUB sky130_fd_pr_rf2__rf2_xcmvpp4p4x4p6_m3_lim5shield
+Xsky130_fd_pr_rf2__rf2_xcmvpp4p4x4p6_m3_lim5shield_0[0|1] M5 C0 C1 SUB sky130_fd_pr_rf2__rf2_xcmvpp4p4x4p6_m3_lim5shield
+Xsky130_fd_pr_rf2__rf2_xcmvpp4p4x4p6_m3_lim5shield_0[1|1] M5 C0 C1 SUB sky130_fd_pr_rf2__rf2_xcmvpp4p4x4p6_m3_lim5shield
 .ends
 
diff --git a/libraries/sky130_fd_pr_rf2/v0.10.0/cells/xcmvpp6p8x6p1_polym4shield_top/sky130_fd_pr_rf2__xcmvpp6p8x6p1_polym4shield_top.spice b/libraries/sky130_fd_pr_rf2/v0.10.0/cells/xcmvpp6p8x6p1_polym4shield_top/sky130_fd_pr_rf2__xcmvpp6p8x6p1_polym4shield_top.spice
index 962df4be7fb..7d1aed9e04c 100644
--- a/libraries/sky130_fd_pr_rf2/v0.10.0/cells/xcmvpp6p8x6p1_polym4shield_top/sky130_fd_pr_rf2__xcmvpp6p8x6p1_polym4shield_top.spice
+++ b/libraries/sky130_fd_pr_rf2/v0.10.0/cells/xcmvpp6p8x6p1_polym4shield_top/sky130_fd_pr_rf2__xcmvpp6p8x6p1_polym4shield_top.spice
@@ -1,9 +1,9 @@
 * NGSPICE file created from sky130_fd_pr_rf2__xcmvpp6p8x6p1_polym4shield_top.ext - technology: sky130A
 
 .subckt sky130_fd_pr_rf2__xcmvpp6p8x6p1_polym4shield_top SUB C0 C1 M4
-Xsky130_fd_pr_rf2__rf2_xcmvpp6p8x6p1_polym4shield_0[0|0] C0 C1 M4 SUB sky130_fd_pr_rf2__rf2_xcmvpp6p8x6p1_polym4shield
-Xsky130_fd_pr_rf2__rf2_xcmvpp6p8x6p1_polym4shield_0[1|0] C0 C1 M4 SUB sky130_fd_pr_rf2__rf2_xcmvpp6p8x6p1_polym4shield
-Xsky130_fd_pr_rf2__rf2_xcmvpp6p8x6p1_polym4shield_0[0|1] C0 C1 M4 SUB sky130_fd_pr_rf2__rf2_xcmvpp6p8x6p1_polym4shield
-Xsky130_fd_pr_rf2__rf2_xcmvpp6p8x6p1_polym4shield_0[1|1] C0 C1 M4 SUB sky130_fd_pr_rf2__rf2_xcmvpp6p8x6p1_polym4shield
+Xsky130_fd_pr_rf2__rf2_xcmvpp6p8x6p1_polym4shield_0[0|0] M4 C0 C1 SUB sky130_fd_pr_rf2__rf2_xcmvpp6p8x6p1_polym4shield
+Xsky130_fd_pr_rf2__rf2_xcmvpp6p8x6p1_polym4shield_0[1|0] M4 C0 C1 SUB sky130_fd_pr_rf2__rf2_xcmvpp6p8x6p1_polym4shield
+Xsky130_fd_pr_rf2__rf2_xcmvpp6p8x6p1_polym4shield_0[0|1] M4 C0 C1 SUB sky130_fd_pr_rf2__rf2_xcmvpp6p8x6p1_polym4shield
+Xsky130_fd_pr_rf2__rf2_xcmvpp6p8x6p1_polym4shield_0[1|1] M4 C0 C1 SUB sky130_fd_pr_rf2__rf2_xcmvpp6p8x6p1_polym4shield
 .ends
 

Segmentation fault (core dumped)

I got segmentation fault (core dumped) error by loading sky130A.tech file.
magic -T sky130A.tech
I have attached sky130A.tech file in below link, Please resolve my issue

sky130A.zip

Thank You

Magic should generate `site` at top of LEF file

VERSION 5.7 ;
BUSBITCHARS "[]" ;
DIVIDERCHAR "/" ;
PROPERTYDEFINITIONS
  MACRO maskLayoutSubType STRING ;
  MACRO prCellType STRING ;
  MACRO originalViewName STRING ;
END PROPERTYDEFINITIONS

SITE unithd
    SYMMETRY Y ;
    CLASS CORE  ;
    SIZE  0.460000 BY  2.720000 ;
END unithd
# This bit ^^^^^^^^^

MACRO sky130_fd_sc_hdll__a211oi_1
  ORIGIN  0.000000  0.000000 ;
  CLASS CORE ;
  SYMMETRY X Y ;
  SIZE  2.760000 BY  2.720000 ;
  SITE unithd ;
  PIN A1

-rcfile argument seems ignored when current directory is my HOME dir

I'm starting magic with :

magic -rcfile /home/tnt/sky130/openlane_workspace/pdks/sky130A/libs.tech/magic/sky130A.magicrc

Once from /tmp/ and once from /home/tnt/. The former works and loads the rcfile, the latter doesn.
Here's a snippet of a diff between stracing them :

I don't have any .magicrc in my home ... so I have no clue why it's ignoring the command line ...

< stat("/home/tnt/sky130/openlane_workspace/_root/lib/magic/sys/site.def", 0x7ffe4ed2b890) = -1 ENOENT (No such file or directory)
< getcwd("/home/tnt", 512)                = 10
< openat(AT_FDCWD, "minimum.tech", O_RDONLY) = -1 ENOENT (No such file or directory)
< openat(AT_FDCWD, "minimum.tech", O_RDONLY) = -1 ENOENT (No such file or directory)
< openat(AT_FDCWD, "/home/tnt/sky130/openlane_workspace/_root/lib/magic/sys/minimum.tech", O_RDONLY) = 4
< fstat(4, {st_mode=S_IFREG|0664, st_size=340, ...}) = 0
< read(4, "tech\n    format 28\n    minimum\nend\n\nversion\n    version 0.0\n    description \"Minimum technology file structure\"\nend\n\nplanes\nend\n"..., 4096) = 340
---
> stat("/home/tnt/sky130/openlane_workspace/_root/lib/magic/sys/site.def", 0x7ffea637bfa0) = -1 ENOENT (No such file or directory)
> getcwd("/tmp", 512)                     = 5
> lstat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> lstat("/home/tnt", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> lstat("/home/tnt/sky130", {st_mode=S_IFDIR|0755, st_size=238, ...}) = 0
> lstat("/home/tnt/sky130/openlane_workspace", {st_mode=S_IFDIR|0775, st_size=66, ...}) = 0
> lstat("/home/tnt/sky130/openlane_workspace/pdks", {st_mode=S_IFDIR|0775, st_size=38, ...}) = 0
> lstat("/home/tnt/sky130/openlane_workspace/pdks/sky130A", {st_mode=S_IFDIR|0775, st_size=48, ...}) = 0
> lstat("/home/tnt/sky130/openlane_workspace/pdks/sky130A/libs.tech", {st_mode=S_IFDIR|0775, st_size=76, ...}) = 0
> lstat("/home/tnt/sky130/openlane_workspace/pdks/sky130A/libs.tech/magic", {st_mode=S_IFDIR|0775, st_size=192, ...}) = 0
> openat(AT_FDCWD, "/home/tnt/sky130/openlane_workspace/pdks/sky130A/libs.tech/magic/sky130A.magicrc", O_RDONLY) = 4

[OpenBSD/ld.bfd] magicexec and magicdnull want GR_LIBS to link successfully

As i said in RTimothyEdwards/netgen#2, building magic with the GNU ld.bfd found in OpenBSD on old architectures also requires GR_LIBS for magicexec (and magicdnull), otherwise it fails.

Here are the changes needed. I added line breaks as lines were longer than 80 characters, i'm no sure if you want that, but i had to take a decision :)

(cc @just22 @kmosiejczuk)

Index: tcltk/Makefile
--- tcltk/Makefile.orig
+++ tcltk/Makefile
@@ -49,11 +49,13 @@ install-tcl: magicexec magicdnull ${BIN_FILES} ${TCL_F
 
 magicexec: magicexec.c ${MAGICDIR}/defs.mak
        ${CC} ${CFLAGS} ${CPPFLAGS} ${DFLAGS_NOSTUB} ${LDFLAGS} magicexec.c \
-               -o magicexec ${LD_RUN_PATH} ${LIBS} ${LIB_SPECS_NOSTUB}
+               -o magicexec \
+               ${LD_RUN_PATH} ${LIB_SPECS_NOSTUB} ${LIBS} ${GR_LIBS}
 
 magicdnull: magicdnull.c ${MAGICDIR}/defs.mak
        ${CC} ${CFLAGS} ${CPPFLAGS} ${DFLAGS_NOSTUB} ${LDFLAGS} magicdnull.c \
-               -o magicdnull ${LD_RUN_PATH} ${LIBS} ${LIB_SPECS_NOSTUB}
+               -o magicdnull \
+               ${LD_RUN_PATH} ${LIB_SPECS_NOSTUB} ${LIBS} ${GR_LIBS} 
 
 magic.tcl: magic.tcl.in ${MAGICDIR}/defs.mak
        sed -e /TCL_DIR/s%TCL_DIR%${TCLDIR}%g  \

Errors for cut layer during lef read

It's not clear to me why these errors are happening when reading in tech LEF file:

Screenshot from 2021-06-28 23-37-37

Layers via1 and via2 are CUT layers and practically required. The error itself is innocuous as reading in a subsequent DEF file is possible and no issues are seen. The code in LefRead() in lefread.c just skps the section. Maybe this should be a warning or less severe message?

Included LEF tech and magic tech files in tar.gz
files.tar.gz

Version inconsistencies b/w opencircuitdesign.com download page and github mirror

Hello Tim,

magic's OpenBSD port is picking the source tarball from opencircuitdesign.com download page. As of today (Sun, 23 Feb) the latest available version is 8.2.182 (timestamp: Jan 30, 2020 at 3:01am); please note that this version doesn't contain this fix.

On github mirror I see this as most recent commit (timestamp: Feb 17), the code correctly contains the above cited fix, but VERSION file reports 8.2.101.

Is this expected?

All the best

--
Alessandro

extraction routine gives different connectivity depending on cif istyle

  1. For the sky130_sram_macros, connectivity is extracted incorrectly (unconnected nets) if cif istyle sky130(vendor) is specified.
  2. If cif istyle sky130(vendor) is omitted, top level ports are not extracted even though port makeall is specified.

To duplicate the problem, extract the attached tar file into a new directory.
Using magic 8.3.189 and netgen 1.5.196, execute the following:

./run_ext.sh  # extracts into magic directory without cif istyle sky130(vendor), but with port makeall
./run_ext_cif.sh. # extract into magic-cif directory with cif istyle sky130(vendor). port makeall is also specified, but irrelevant.
./run_lvs.sh  # lvs in the magic directory. Does not pass lvs due to port mismatch (no ports in extracted netlist).
./run_lvs_cif.sh. # lvs in the magic-cif directory. Does not pass lvs due to unconnected vdd in extracted netlist. 
./run_lvs_cif_fix.sh. # lvs in the magic-cif directory using netlist with modified connectivity. passes lvs.

Recently, cif istyle sky130(vendor) was changed to the default, but not in the sky130A.tech file in this example.

You should be able to verify:

  1. magic/sky130_sram_1kbyte_1rw1r_32x256_8.spice has no top subckt ports.
  2. run_lvs.sh did not pass lvs due to mismatched ports. magic/sky130_sram_1kbyte_1rw1r_32x256_8.lvs.report
  3. run_lvs_cif.sh did not pass lvs due to net count mismatch. magic-cif/sky130_sram_1kbyte_1rw1r_32x256_8.lvs.report
    The following nets in sky130_sram_1kbyte_1rw1r_32x256_8_bitcell_array are unconnected.
vdd_uq1854 vdd_uq1982 vdd_uq2046 vdd_uq2110 vdd_uq2238
vdd_uq2302 vdd_uq2366 vdd_uq2430 vdd_uq2494 vdd_uq2558
vdd_uq2686 vdd_uq2750 vdd_uq2814 vdd_uq2878 vdd_uq3006
vdd_uq3134 vdd_uq3198 vdd_uq3262 vdd_uq3326 vdd_uq3390
vdd_uq3454 vdd_uq3518 vdd_uq3582 vdd_uq3646 vdd_uq3710
vdd_uq3838 vdd_uq3966 vdd_uq4030 vdd_uq4094
  1. run_lvs_cif_fix.sh passes lvs with modified netlist where the above nets have been changed to vdd. magic-cif/sky130_sram_1kbyte_1rw1r_32x256_8.lvs.fix.report

sram_lvs_189_196.tar.gz

Segfault setting DRC style

Run magic -T $OPEN_PDKS/sky130/magic/sky130.tech -dnull -noconsole do_drc.tcl in the following archive: https://ds0.me/magic_drc_segfault.tar.xz

It segfaults with backtrace:

#0  0x00007ffff5bc18f7 in DBSrPaintArea (hintTile=0x0, plane=0x7fffffffc2d8, rect=0x7ffff5dc6340 <TiPlaneRect>, mask=0x7ffff68fce40 <CIFSolidBits>, func=0x7ffff5ccfd50 <cifProcessResetFunc>, arg=0)
    at DBtiles.c:376
#1  0x00007ffff5cdaf26 in CIFGenLayer (op=0x55555c544b70, area=0x7fffffffbe60, cellDef=0x55555b0442a0, origDef=0x55555b0442a0, temps=0x7fffffffbe80, hier=0 '\000', clientdata=0) at CIFgen.c:4737
#2  0x00007ffff5cdbb1c in CIFGen (cellDef=0x55555b0442a0, origDef=0x55555b0442a0, area=0x7fffffffc830, planes=0x7ffff68f9b60 <CIFPlanes>, layers=0x7ffff6672440 <DBAllTypeBits>, replace=1 '\001', 
    genAllPlanes=1 '\001', hier=0 '\000', clientdata=0) at CIFgen.c:5037
#3  0x00007ffff5bd54e4 in drcCifCheck (arg=0x7fffffffc750) at DRCcif.c:554
#4  0x00007ffff5bd146b in DRCBasicCheck (celldef=0x55555b0442a0, checkRect=0x7fffffffc830, clipRect=0x7fffffffc860, function=0x7ffff5bd9f2e <drcListallError>, cdata=140737488341488) at DRCbasic.c:391
#5  0x00007ffff5bdc67e in DRCInteractionCheck (def=0x55555b0442a0, area=0x7fffffffca00, erasebox=0x7fffffffca00, func=0x7ffff5bd9f2e <drcListallError>, cdarg=140737488341488) at DRCsubcell.c:771
#6  0x00007ffff5bda962 in drcWhyAllFunc (scx=0x7fffffffc9f0, cdarg=0x0) at DRCmain.c:633
#7  0x00007ffff5bda6d8 in DRCWhyAll (use=0x5555599707b0, area=0x7fffffffcac0, fout=0x0) at DRCmain.c:551
#8  0x00007ffff5b72a44 in CmdDrc (w=0x5555556558b0, cmd=0x55555bc72700) at CmdCD.c:3946
#9  0x00007ffff5c5ad8b in WindExecute (w=0x5555556558b0, rc=93824993280272, cmd=0x55555bc72700) at windMain.c:415
#10 0x00007ffff5bce22a in DBWcommands (w=0x5555556558b0, cmd=0x55555bc72700) at DBWprocs.c:632
#11 0x00007ffff5c5763f in WindSendCommand (w=0x5555556558b0, cmd=0x55555bc72700, quiet=1 '\001') at windSend.c:263
#12 0x00007ffff5c4f61d in TxTclDispatch (clientData=0x0, argc=3, argv=0x555555593a50, quiet=1 '\001') at txCommands.c:1180
#13 0x00007ffff5d6c820 in _tcl_dispatch (clientData=0x0, interp=0x555555585ba0, argc=3, argv=0x555555593a50) at tclmagic.c:400
#14 0x00007ffff7c908c6 in TclInvokeStringCommand () from /usr/lib/libtcl8.6.so
#15 0x00007ffff7c95c62 in TclNRRunCallbacks () from /usr/lib/libtcl8.6.so
#16 0x00007ffff7c97b3a in TclEvalEx () from /usr/lib/libtcl8.6.so
#17 0x00007ffff7d5236a in Tcl_FSEvalFileEx () from /usr/lib/libtcl8.6.so
#18 0x00007ffff7d5250a in Tcl_EvalFile () from /usr/lib/libtcl8.6.so
#19 0x00007ffff5ca2ea7 in mainInitFinal () at main.c:1182
#20 0x00007ffff5d6d35f in _magic_startup (clientData=0x0, interp=0x555555585ba0, argc=1, argv=0x555555593610) at tclmagic.c:725
#21 0x00007ffff7c908c6 in TclInvokeStringCommand () from /usr/lib/libtcl8.6.so
#22 0x00007ffff7c95c62 in TclNRRunCallbacks () from /usr/lib/libtcl8.6.so
#23 0x00007ffff7c97b3a in TclEvalEx () from /usr/lib/libtcl8.6.so
#24 0x00007ffff7d5236a in Tcl_FSEvalFileEx () from /usr/lib/libtcl8.6.so
#25 0x00007ffff7d5250a in Tcl_EvalFile () from /usr/lib/libtcl8.6.so
#26 0x00007ffff7d59ed5 in Tcl_SourceRCFile () from /usr/lib/libtcl8.6.so
#27 0x00007ffff7d5a4b6 in Tcl_MainEx () from /usr/lib/libtcl8.6.so
#28 0x0000555555555241 in main (argc=7, argv=0x7fffffffd9e8) at magicdnull.c:49

seems to be related to setting drc style drc(full)

ExtCell.c:115:2: error: non-void function 'ExtCell' should return a value [-Wreturn-type]

gcrDebug.c:946:19: warning: implicit declaration of function 'niceabort' is invalid in C99 [-Wimplicit-function-declaration]
--- linking libgcr.o
--- compiling tcltk/tclmagic.o
In file included from tclmagic.c:30:
In file included from tclmagic.c:30:
tclmagic.c:538:9: warning: implicit declaration of function 'mainInitBeforeArgs' is invalid in C99 [-Wimplicit-function-declaration]
tclmagic.c:539:9: warning: implicit declaration of function 'mainDoArgs' is invalid in C99 [-Wimplicit-function-declaration]
tclmagic.c:560:9: warning: implicit declaration of function 'mainInitAfterArgs' is invalid in C99 [-Wimplicit-function-declaration]
tclmagic.c:725:9: warning: implicit declaration of function 'mainInitFinal' is invalid in C99 [-Wimplicit-function-declaration]
tclmagic.c:932:2: warning: implicit declaration of function 'txGetFileCommand' is invalid in C99 [-Wimplicit-function-declaration]
--- linking libtcltk.o
--- compiling magic/magicTop.o
magicTop.c:53:5: warning: implicit declaration of function 'magicMain' is invalid in C99 [-Wimplicit-function-declaration]
--- linking libmagic.o
--- compiling net2ir/net2ir.o
net2ir.c:122:9: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
net2ir.c:122:9: note: place parentheses around the assignment to silence this warning
net2ir.c:122:9: note: use '==' to turn this assignment into an equality comparison
--- linking libnet2ir.o
--- making Tcl shared libraries
make[2]: *** No rule to make target '../extract/libextract.o', needed by 'tclmagic.so'.  Stop.
--- installing executable to /opt/magic/usr/local/bin
--- installing runtime files to /opt/magic/usr/local/lib
In file included from cifin.c:137:
./cifin-ibm.gen:2:1: warning: '/*' within block comment [-Wcomment]
/*  This is prelimanary, please let me know if anything here seems
^
In file included from cifin.c:139:
./cifin-ibm.gen:2:1: warning: '/*' within block comment [-Wcomment]
/*  This is prelimanary, please let me know if anything here seems
^
2 warnings generated.
In file included from cifin.c:84:
./cifin-cmos14b.gen:2:1: warning: '/*' within block comment [-Wcomment]
/*  This is prelimanary, please let me know if anything here seems
^
1 warning generated.
In file included from cifin.c:115:
./cifin-cmos14b.gen:2:1: warning: '/*' within block comment [-Wcomment]
/*  This is prelimanary, please let me know if anything here seems
^
In file included from cifin.c:117:
./cifin-cmos14b.gen:2:1: warning: '/*' within block comment [-Wcomment]
/*  This is prelimanary, please let me know if anything here seems
^
2 warnings generated.
make[2]: *** No rule to make target '../extract/libextract.o', needed by 'tclmagic.so'.  Stop.
make: *** No rule to make target 'FROM'.  Stop.
The command '/bin/sh -c git clone https://github.com/RTimothyEdwards/magic.git /tmp/magic  && mkdir -p /opt/magic/usr/local/bin  && cd /tmp/magic  && ./configure  && make -j $(nproc)  && make DESTDIR=/opt/magic install

Mode to strip off initial prefix

Hi,
I have performed PnR on an analog macro. I am attaching my final layout which I am viewing using magic. I find that the image could be more comprehensible if there was a mode which could be strip off the initial prefix.

IMG_20200824_212204__01.jpg

Misleading DRC errors

Hi,
I have a layout which on viewing in magic didn't show any DRC errors (on the top right side of the window), but when I select the whole design and type drc check, then I can see there are some DRC errors.
Due to this, initially I was under the impression that there are no DRC errors in the layout which was misleading.

Segfault when 'undo'ing too far

Magic segfaults:

* thread #1, name = 'wish', stop reason = signal SIGSEGV: invalid address (fault address: 0x58)
    frame #0: 0x00007fbc46b2e871 tclmagic.so`dbwUndoChangeEdit(ep=0x000056485af59af8) at DBWundo.c:239:5
   236 	
   237 	    ASSERT(use != (CellUse *) NULL, "dbwUndoChangeEdit");
   238 	
-> 239 	    TxPrintf("Edit cell is now %s (%s)\n", editDef->cd_name, use->cu_id);
   240 	    EditCellUse = use;
   241 	    GeoTransRect(&EditToRootTransform, &(EditCellUse->cu_def->cd_bbox), &area);
   242 	    DBWAreaChanged(EditRootDef, &area, DBW_ALLWINDOWS, &DBAllButSpaceBits);

relevant parts of backtrace:

  * frame #0: 0x00007f7550b04871 tclmagic.so`dbwUndoChangeEdit(ep=0x00005635a17cc5a8) at DBWundo.c:239:5
    frame #1: 0x00007f7550bdbdb9 tclmagic.so`UndoBackward(n=1) at undo.c:598:8
    frame #2: 0x00007f7550b89d45 tclmagic.so`windUndoCmd(w=0x000056359f9dda80, cmd=0x00005635a1028c50) at windCmdSZ.c:691:6
    frame #3: 0x00007f7550b8e6d2 tclmagic.so`WindExecute(w=0x000056359f9dda80, rc=94788315020992, cmd=0x00005635a1028c50) at windMain.c:414:7
    frame #4: 0x00007f7550b86162 tclmagic.so`windCmdInterp(w=0x000056359f9dda80, cmd=0x00005635a1028c50) at windClient.c:655:10
    frame #5: 0x00007f7550b8b038 tclmagic.so`WindSendCommand(w=0x000056359f9dda80, cmd=0x00005635a1028c50, quiet='\x01') at windSend.c:265:7

Incorrect extraction of spice model for sram GDS file

The GDS file at https://foss-eda-tools.googlesource.com/skywater-pdk-scratch/+/refs/heads/ram-audit-v0.0-1245-gd62012d_magic-8.3.80_2020-11-12_055155_0000/libraries/sky130_fd_bd_sram/v0.0.0/cells/openram_cell_6t/sky130_fd_bd_sram__openram_cell_6t.gds currently extracts as;

.subckt sky130_fd_bd_sram__openram_cell_6t VNB VPB VPB
X0 VPB a_146_104# a_146_182# VPB sky130_fd_pr__pfet_01v8_hvt w=140000u l=150000u
X1 a_146_182# WL a_146_182# VPB sky130_fd_pr__pfet_01v8_hvt w=70000u l=95000u
X2 BL WL a_146_104# SUBS sky130_fd_pr__special_nfet_latch w=140000u l=150000u
X3 GND a_146_104# a_146_182# SUBS sky130_fd_pr__special_nfet_latch w=210000u l=150000u
X4 a_146_104# a_146_182# GND SUBS sky130_fd_pr__special_nfet_latch w=210000u l=150000u
X5 a_146_104# WL a_146_104# VPB sky130_fd_pr__pfet_01v8_hvt w=70000u l=95000u
X6 a_146_182# WL BR SUBS sky130_fd_pr__special_nfet_latch w=140000u l=150000u
X7 a_146_104# a_146_182# VPB VPB sky130_fd_pr__pfet_01v8_hvt w=140000u l=150000u
.ends

The first issue is the pins on the top level are incorrect. They should be something like;

BR
BL
VDD
GND
WL
VPB
VNB

See https://foss-eda-tools.googlesource.com/skywater-pdk-scratch/+/refs/heads/ram-audit-v0.0-1245-gd62012d_magic-8.3.80_2020-11-12_055155_0000/libraries/sky130_fd_bd_sram/v0.0.0/cells/openram_cell_6t/sky130_fd_bd_sram__openram_cell_6t.gds.pins

ext2spice has problems with instance names that contain a '/'

This issue was raised during the extraction of caravel's DFFRAM. Over 150,000 messages were generated.
Example

connect(1): no such node COLUMN\[0\].RAMCOLS/B_0_2/WORD\[19\].W/B2/BIT\[6\].FF/Q
connect(1): no such node COLUMN\[0\].RAMCOLS/B_0_2/WORD\[19\].W/B2/BIT\[6\].OBUF/A
connect(1): no such node COLUMN\[0\].RAMCOLS/B_0_1/WORD\[36\].W/B3/BIT\[1\].FF/Q
connect(1): no such node COLUMN\[0\].RAMCOLS/B_0_1/WORD\[36\].W/B3/BIT\[1\].OBUF/A
connect(1): no such node COLUMN\[0\].RAMCOLS/B_0_2/WORD\[22\].W/B2/BIT\[4\].FF/Q
...

Mostly fixed with magic 8.3.132
However, caravel/mgmt_core extraction results in 4 messages

connect(1): no such node soc.soc_mem.mem.SRAM\/FILLER_32_209/VGND
connect(2): no such node soc.soc_mem.mem.SRAM\/FILLER_32_209/VGND
connect(1): no such node soc.soc_mem.mem.SRAM\/FILLER_173_42/VPWR
connect(2): no such node soc.soc_mem.mem.SRAM\/FILLER_173_42/VPWR

The offending lines from mgmt_core.ext appear to be

merge "PHY_1162/VPWR" "soc.soc_mem.mem.SRAM/FILLER_173_42/VPWR"
merge "soc.soc_mem.mem.SRAM/FILLER_173_42/VPWR" "PHY_463/VPWR"
merge "soc.soc_mem.mem.SRAM/VGND" "soc.soc_mem.mem.SRAM/FILLER_32_209/VGND"
merge "soc.soc_mem.mem.SRAM/FILLER_32_209/VGND" "PHY_181/VGND"

The only place in the file where FILLER_173_42 and FILLER_32_209 appear are these 4 lines. It appears that it's trying to merge with an unreferenced internal node from a subcircuit.
And in the resulting spice net, VPWR has been split in 2 (VPWR & _65235_/VPB).

X_39511_ _39511_/A _64067_/D _65235_/VPB VGND _65235_/VPB VGND sky130_fd_sc_hd__inv_2
XFILLER_188_3270 VGND VPWR VPWR VGND sky130_fd_sc_hd__decap_4

To duplicate in caravel/openlane, add the following lines to mgmt_core/config.tcl

set ::env(LVS_EXTRA_GATE_LEVEL_VERILOG) "
       $script_dir/../../verilog/gl/DFFRAM.v
       $script_dir/../../verilog/gl/digital_pll.v"

and run

flow.tcl -design mgmt_core -tag ext -lvs -net ../verilog/gl/mgmt_core.v -gds ../gds/mgmt_core.gds

I've noticed a similar error when extracting user_project_wrapper of caravel_vdp_lite, but it doesn't appear to cause any connectivity errros:

connect(1): no such node mprj\/FILLER_334_206/VGND
connect(1): no such node mprj\/FILLER_301_39/VPWR
connect(1): no such node mprj\/FILLER_367_39/VPWR

MSubcircuit Extraction Method inconsistency

Hello!
I'm trying to get deeper into Magic's codebase, but I'm just at the beginning. As some newer features are undocumented, I'm not sure about the exact construct usages or implementation decisions - so I'm sorry for silly or redundant issue, as my understanding of the code is still strongly limited.

However, I recently experimented with "msubcircuit" extraction method in ext2spice and I found an inconsistency with the "mosfet" method.

For "mosfet", the terminal ordering is "d g s", which is correct for SPICE models, however, for "msubcircuit", the ordering is different: "s g d". It seems to me, that it might be confusing (when I use hand-written subcircuits, I prefer the same ordering for mosfet models as well as for subcircuits) - is there any reason behind?

Why are the mosfet attributes like drain/source area not available for "msubcircuit"? Those may be valuable for custom models.

ext2spice does not wrap the top level devices in a subcircuit, which causes LVS to fail.

Device level LVS on some of the submodules of skywater/efabless mpw-1 previously passed, but now the top level of the extracted netlist is not wrapped in a subcircuit definition and fails LVS.

Failing message
Cannot find cell digital_pll in file /mnt/mpw/1/caravel/openlane/digital_pll/runs/ext/results/magic/digital_pll.gds.spice

The spice file contains

...
* Top level circuit digital_pll

X_294_ VGND _400_/C _564_/D _564_/Q VPWR _400_/C VPWR VGND _388_/B sky130_fd_sc_hd__a2bb2o_4
...
XFILLER_31_111 VGND VPWR VPWR VGND sky130_fd_sc_hd__decap_8
.end

Was expecting something like the following

...
* Top level circuit digital_pll
.subckt digital_pll VPWR VGND ...
X_294_ VGND _400_/C _564_/D _564_/Q VPWR _400_/C VPWR VGND _388_/B sky130_fd_sc_hd__a2bb2o_4
...
XFILLER_31_111 VGND VPWR VPWR VGND sky130_fd_sc_hd__decap_8
.ends

To duplicate this

cd $OPENLANE_HOME
git clone https://github.com/efabless/caravel.git
make mount
cd caravel/openlane
gunzip ../gds/digital_pll.gds.gz
flow.tcl -design digital_pll -tag ext -lvs -net ../verilog/gl/digital_pll.v -gds ../gds/digital_pll.gds

This may be a problem with the openlane scripts.

LefRead not properly parsing USEMINSPACING statement

Upon reading in a tech LEF file that I believe to be syntactically correct, this message is emitted:

LEF read, Line 12 (Message): Unknown keyword "OBS" in LEF file; ignoring.

Screenshot from 2021-06-29 10-43-43

This is traced to this statement in the tech LEF file:

USEMINSPACING OBS ON ;

LEF/DEF 5.7 Language Reference Manual, p. 214:

Screenshot from 2021-06-29 10-42-35

In looking at the LefRead() function in lef/lefRead.c, it appears that the "USEMINSPACING" token is not getting parsed. What's happening is that the USEMINSPACING statement is isn't "finalized" and the next token is picked up which happens to be OBS in this case.

I believe that the whole USEMINSPACING statement can be safely ignored, like how MANUFACTURINGGRID is.

A pull request will shortly follow, it's just a one line diff.

.gitconfig is part of the repository...

...how to handle local customizations that are repository-specific?

Not a magic issue, but a git use model question. The file .gitconfig has been added to the repository, but local customization, which are repo-specific, are desired. Since this file is part of the repository, any local changes to it show up in git diff. And these local changes are not necessary applicable to any arbitrary clone of the repository. Admittedly, I'm not a git expert and do not know how this situation should be handled.

I'm not certain that I recall a local .gitconfig is normally part of the repository, maybe local customizations could be handled from ~/.gitconfig? ...I don't know....

e.g.

mooredan@macbookpro:~/src/magic$ git status
On branch sandbox
Your branch is up to date with 'origin/sandbox'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   .gitconfig

no changes added to commit (use "git add" and/or "git commit -a")
mooredan@macbookpro:~/src/magic$ git diff
diff --git a/.gitconfig b/.gitconfig
index d4f587d..3478db8 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -3,3 +3,11 @@
        clean = sed -e's/\\$Header:[^$]*\\$/\\$Header\\$/g'
 [diff "gds"]
         textconv = hexdump -v -C
+
+[branch "sandbox"]
+    remote = ocd
+    merge = refs/heads/master
+
+[branch "master"]
+    remote = ocd
+    merge = refs/heads/master

Device menu not appearing in magic with skywater pdk

Hi,

I am trying to use the skywater 130nm open-pdk with magic. Seeing some tutorials/videos about using magic and skywater 130nm I realized that I am not able to see the devices menu of magic.

SO I found out a file sky130A.tcl which seem to be the device generator menu so I tried sourcing it from the console of magic.

I tried opening magic inside the ~/open_pdks/sky130/sky130A/libs.tech/magic directory using the following statement in terminal

magic -T sky130A.tech sky130A.tcl

image

The above image is my case.

image

this image above is one of tutorial that I saw on youtube using magic and sky130.

Also I saw one tutorial from efabless where the person was using magic on the efabless website and there also I could see the devices menu for parameterized device generation.

Kindly help.

Thanks in Advance
Aakash Gupta

Recommended way to add Rust/C driver

Hi,

I'm, developing a collection of Rust EDA tool bindings and would like to add the ability to drive magic programmatically from a a separate Rust/C thread (optionally skipping the GUI rendering, but that I can figure out). After reading the code, I am torn between patching the TxDispatch and txGetInteractiveCommand to check a separate queue that is filled with commands from the driver thread and wrapping the tcl/scheme inputs. Since magic seems to be designed for extension and scripting, I was wondering would be the officially recommended way?

Best regards,
Igor

Can't extract resistor

Hi, I've created a (really dumb) cell just to test out the resistance extraction capacities, consisting of an N channel FET and long poly lines. I followed all steps in tut8, which explains how to work with resistances and I managed to create a SPICE file with all parasitics, but it's just impossible with this circuit (followed the exact same steps), resulting in a SPICE model of just one capacitor and one MOSFET.

I don't know if this is actually a bug or not, or if this is the best place to post it, but here's a picture of my circuit, and I'm using Magic 8.3.50.

Thanks.
image

Magic segfault

Since commit 2046318, magic segfault when used with qflow

magic -dnull -noconsole migrate_ALU.tcl

Magic 8.2 revision 101 - Compiled on Fri 01 Nov 2019 04:55:42 PM CET.
Starting magic under Tcl interpreter
Using the terminal as the console.
Using NULL graphics device.
Processing system .magicrc file
Input style lambda=0.20(p): scaleFactor=20, multiplier=1
Contact size value ignored (using GDS generation rules).
Contact size value ignored (using GDS generation rules).
Contact size value ignored (using GDS generation rules).
Contact size value ignored (using GDS generation rules).
Contact size value ignored (using GDS generation rules).
Contact size value ignored (using GDS generation rules).
4 Magic internal units = 1 Lambda
Loading "migrate_ALU.tcl" from command line.
Root cell box:
width x height ( llx, lly ), ( urx, ury )

microns: 0.00 x 0.00 ( 0.00, 0.00 ), ( 0.00, 0.00 )
lambda: 0.00 x 0.00 ( 0.00, 0.00 ), ( 0.00, 0.00 )
internal: 0 x 0 ( 0, 0 ), ( 0, 0 )
Reading LEF data from file /home/killruana/opt/eda/qflow/share/qflow/tech/osu035/osu035_stdcells.lef.
This action cannot be undone.
LEF read, Line 16 (Message): Unknown keyword "OBS" in LEF file; ignoring.
LEF read, Line 17 (Message): Unknown keyword "PIN" in LEF file; ignoring.
LEF read, Line 207 (Message): Defines site corner (ignored)
LEF read, Line 213 (Message): Defines site IO (ignored)
LEF read, Line 219 (Message): Defines site core (ignored)
Moving label "CLK" from metal1 to m2contact in cell DFFNEGX1.
Moving label "CLK" from metal1 to m2contact in cell DFFNEGX1.
Moving label "A" from metal1 to m2contact in cell XNOR2X1.
LEF read: Processed 3179 lines.
Cannot open input file /home/killruana/opt/eda/magic/lib/magic/tutorial/ALUHร„โ–’รƒ (No such file or directory).
Scaled magic input cell ALU geometry by factor of 2
Processing timestamp mismatches: FILL, INVX1, NOR2X1, NAND2X1, OR2X2, AOI21X1, XNOR2X1, DFFPOSX1, CLKBUF1, AND2X2, BUFX2, OAI21X1, NAND3X1, XOR2X1, NOR3X1.
Segmentation fault (core dumped)
magic failed with exit status 139
Premature exit.

Note the garbage characters at the end of the filename in the log line Cannot open input file /home/killruana/opt/eda/magic/lib/magic/tutorial/ALU

See this line :

if (endp = strrchr(ends, '.'))

if the condition is false, the variable locsuffix is never initialized, causing the crash

ext2spice problems with cells names beginning with numbers and net names resembling busses

  1. In the efabless Google shuttle project caravel_UNCC_MPW_1, the following cells begin with numbers.
10good
1T-cell
2good
2x2-array
3good
4good
5good
6good
7good
8good
9good

ext2spice strips the leading numbers, resulting in duplicate subckt definitions.

.subckt good VSUBS m3_n30_n637# a_n180_1347# a_n180_n986# Sw-1_0/w_1442_592# m2_240_n362#
.subckt good VSUBS m2_426_2318# 2good_1/a_n180_n986# 2good_0/a_n180_1347# m3_1772_2124#
.subckt good VSUBS Sw-1_0/li_402_584# 3good_1/2good_1/a_n180_n986# m3_2006_4492# m2_444_4830#
.subckt good VSUBS Sw-1_0/li_402_584# 4good_0/3good_0/2good_0/a_n180_1347# 4good_1/3good_1/2good_1/a_n180_n986#
.subckt good VSUBS Sw-1_0/li_402_584# m2_458_19930# 5good_0/4good_0/3good_0/2good_0/a_n180_1347#
.subckt good VSUBS Sw-1_0/li_402_584# 6good_0/5good_0/4good_0/3good_0/2good_0/a_n180_1347#
.subckt good VSUBS 7good_0/6good_0/5good_1/4good_1/3good_1/2good_1/a_n180_n986# Sw-1_0/li_402_584#
.subckt good VSUBS m1_34870_45168# Sw-1_0/li_402_584# 8good_1/7good_0/6good_1/5good_1/4good_1/3good_1/2good_1/a_n180_n986#
.subckt good GND VDD D0 D1 D2 D3 Sw-1_0/w_1442_592# D4 D5 D6 D7 D8 D9
  1. The 2x2-array.ext file contains lines that throw an error in ext2spice. Looks like it thinks the bus widths differ.
2x2-array.ext, line 51: Number of subscripts doesn't match
2x2-array.ext, line 53: Number of subscripts doesn't match
2x2-array.ext, line 55: Number of subscripts doesn't match
2x2-array.ext, line 57: Number of subscripts doesn't match

51 merge "1T-cell_0[0:1,0:0]/body" "body"
53 merge "1T-cell_0[0:1,0:0]/body" "body"
55 merge "1T-cell_0[0:1,0:0]/gate" "gate"
57 merge "1T-cell_0[0:0,0:1]/source" "source"

Negative area possible in extract files

While developing a custom tech file, discovered that if an area does not fit within the positive value range of an 'int' data type, then the area output to the extract file can end up being negative (along with capacitance based upon this area):

image

This might be fixed by just changing the formatting statement from "%d" to "%u", but it might be necessary to convert some data types from int to unsigned int. I'm looking at this now and will add a pull request once satisfied with the fix.

Yes, it may be unlikely that any real project run into this limitation.

Unified WM_CLASS property "magic" for all windows

Can we get WM_CLASS set to "magic" for all magic windows? Right now xprop indicates for the console window that

_NET_WM_NAME(UTF8_STRING) = "tkcon 2.3 Main"
WM_NAME(STRING) = "tkcon 2.3 Main" <------- a better value would be "magic:console" or perhaps "magic:tkcon"
WM_CLASS(STRING) = "tkcon.tcl", "Tkcon.tcl" <------- should be "magic", "magic"

and for layout windows the values are something like

_NET_WM_NAME(UTF8_STRING) = "layout1"
WM_NAME(STRING) = "layout1" <-------- better: magic:layoutfilename or just layoutfilename (not full path, too long)
WM_CLASS(STRING) = "layout1", "Toplevel" <-------- should be "magic", "magic"

Having proper WM_CLASS and WM_NAME values makes life easier for the window manager and the user when it comes to finding, sorting and categorizing windows and icons.

As a starting point, one place where a hack-y fix could be applied is tkcon.tcl:620

#wm title $root "tkcon $PRIV(version) $title"
wm title $root "magic"

I am however not a tcl/tk or x11 expert, and an expert could likely do something more intelligent and unified to set WM_CLASS and WM_NAME properly in all windows.

Magic segfault while doing spice extraction

magic -nowrapper -dnull -noconsole -T /ssd/gob/foss-eda-tools/skywater-src-nda-openram/s8.tech /ssd/gob/foss-eda-tools/tempdir-openram/gds/ssd/gob/foss-eda-tools/skywater-src-nda-openram/s8_sram/V0.0.0/cells/s8Dp_blkinv_opt1a/s8Dp_blkinv_opt1a.gds/gen_output.sky130_fd_sp_sram__sram_dp_blkinv_mcon.tcl

s8Dp_blkinv_opt1a.gds.tar.gz

#!/bin/env wish
drc off
scalegrid 1 2
gds readonly true
gds rescale false
tech unlock *
cif warning default
set VDD VPWR
set GND VGND
gds read /ssd/gob/foss-eda-tools/tempdir-openram/gds/ssd/gob/foss-eda-tools/skywater-src-nda-openram/s8_sram/V0.0.0/cells/s8Dp_blkinv_opt1a/s8Dp_blkinv_opt1a.gds/sky130_fd_sp_sram__sram_dp_blkinv_mcon.gds
load {sky130_fd_sp_sram__sram_dp_blkinv_mcon}
lef write {sky130_fd_sp_sram__sram_dp_blkinv_mcon} -toplayer
load {sky130_fd_sp_sram__sram_dp_blkinv_mcon}
extract do local
extract all
ext2spice lvs
ext2spice
quit -noprompt
ERROR: Magic exited with status -11

magic -nowrapper -dnull -noconsole -T /ssd/gob/foss-eda-tools/skywater-src-nda-openram/s8.tech /ssd/gob/foss-eda-tools/tempdir-openram/gds/ssd/gob/foss-eda-tools/skywater-src-nda-openram/s8_sram/V0.0.0/cells/s8Dp_blkinv_opt1a/s8Dp_blkinv_opt1a.gds/gen_output.sky130_fd_sp_sram__sram_dp_blkinv_mcon.tcl
===========================================================================

Magic 8.3 revision 36 - Compiled on Sun Jul 19 07:23:25 PDT 2020.
Starting magic under Tcl interpreter
Using the terminal as the console.
Using NULL graphics device.
Input style vendorimport: scaleFactor=2, multiplier=2
Processing system .magicrc file
Loading "/ssd/gob/foss-eda-tools/tempdir-openram/gds/ssd/gob/foss-eda-tools/skywater-src-nda-openram/s8_sram/V0.0.0/cells/s8Dp_blkinv_opt1a/s8Dp_blkinv_opt1a.gds/gen_output.sky130_fd_sp_sram__sram_dp_blkinv_mcon.tcl" from command line.
2 Magic internal units = 1 Lambda
Warning: Calma reading is not undoable!  I hope that's OK.
Library written using GDS-II Release 3.0
Library name: sky130_fd_sp_sram__sram_dp_blkinv_mcon
Reading "sky130_fd_sp_sram__sram_dp_mcon_05".
Reading "sky130_fd_sp_sram__sram_dp_mcon_1".
Reading "sky130_fd_sp_sram__sram_dp_blkinv_mcon".
Generating LEF output sky130_fd_sp_sram__sram_dp_blkinv_mcon.lef for cell sky130_fd_sp_sram__sram_dp_blkinv_mcon:
Diagnostic:  Write LEF header for cell sky130_fd_sp_sram__sram_dp_blkinv_mcon
Diagnostic:  Writing LEF output for cell sky130_fd_sp_sram__sram_dp_blkinv_mcon
Diagnostic:  Scale value is 0.005000
Extracting sky130_fd_sp_sram__sram_dp_mcon_05 into sky130_fd_sp_sram__sram_dp_mcon_05.ext:
Extracting sky130_fd_sp_sram__sram_dp_mcon_1 into sky130_fd_sp_sram__sram_dp_mcon_1.ext:

===========================================================================
/ssd/gob/foss-eda-tools/tempdir-openram/gds/ssd/gob/foss-eda-tools/skywater-src-nda-openram/s8_sram/V0.0.0/cells/s8Dp_blkinv_opt1a/s8Dp_blkinv_opt1a.gds
/ssd/gob/foss-eda-tools/tempdir-openram/gds/ssd/gob/foss-eda-tools/skywater-src-nda-openram/s8_sram/V0.0.0/cells/s8Dp_blkinv_opt1a/s8Dp_blkinv_opt1a.gds/gen_output.sky130_fd_sp_sram__sram_dp_blkinv_mcon.tcl
---------------------------------------------------------------------------
ERROR: Magic exited with status -11
magic                                                     :
magic                                                     : Magic 8.3 revision 36 - Compiled on Sun Jul 19 07:23:25 PDT 2020.
magic                                                     : Starting magic under Tcl interpreter
magic                                                     : Using the terminal as the console.
magic                                                     : Using NULL graphics device.
magic                                                     : Input style vendorimport: scaleFactor=2, multiplier=2
magic                                                     : Processing system .magicrc file
magic                                                     : Loading "/ssd/gob/foss-eda-tools/tempdir-openram/gds/ssd/gob/foss-eda-tools/skywater-src-nda-openram/s8_sram/V0.0.0/cells/s8Dp_blkinv_opt1a/s8Dp_blkinv_opt1a.gds/gen_output.sky130_fd_sp_sram__sram_dp_swldrv_opt1_poly_siz_optb.tcl" from command line.
magic                                                     : 2 Magic internal units = 1 Lambda
magic                                                     : Warning: Calma reading is not undoable!  I hope that's OK.
magic                                                     : Library written using GDS-II Release 3.0
magic                                                     : Library name: sky130_fd_sp_sram__sram_dp_swldrv_opt1_poly_siz_optb
magic sky130_fd_sp_sram__sram_dp_swldrv_opt1_poly_siz_optb: Reading "sky130_fd_sp_sram__sram_dp_swldrv_opt1_poly_siz_optb".
magic sky130_fd_sp_sram__sram_dp_swldrv_opt1_poly_siz_optb: Generating LEF output sky130_fd_sp_sram__sram_dp_swldrv_opt1_poly_siz_optb.lef for cell sky130_fd_sp_sram__sram_dp_swldrv_opt1_poly_siz_optb:
magic sky130_fd_sp_sram__sram_dp_swldrv_opt1_poly_siz_optb: Diagnostic:  Write LEF header for cell sky130_fd_sp_sram__sram_dp_swldrv_opt1_poly_siz_optb
magic sky130_fd_sp_sram__sram_dp_swldrv_opt1_poly_siz_optb: Diagnostic:  Writing LEF output for cell sky130_fd_sp_sram__sram_dp_swldrv_opt1_poly_siz_optb
magic sky130_fd_sp_sram__sram_dp_swldrv_opt1_poly_siz_optb: Diagnostic:  Scale value is 0.005000
magic sky130_fd_sp_sram__sram_dp_swldrv_opt1_poly_siz_optb: Extracting sky130_fd_sp_sram__sram_dp_swldrv_opt1_poly_siz_optb into sky130_fd_sp_sram__sram_dp_swldrv_opt1_poly_siz_optb.ext:
magic sky130_fd_sp_sram__sram_dp_swldrv_opt1_poly_siz_optb: exttospice finished.

run-time error on magic master branch since release 8.3.130

Building against master has given me a startup run-time error since the 8.3.130 release. The main screen is blank and the tkcon 2.3 Main console reports:

Magic 8.3 revision 152 - Compiled on Tue 06 Apr 2021 06:11:34 AM MDT.
Starting magic under Tcl interpreter
Using Tk console window
Using TrueColor, VisualID 0x21 depth 24
Processing system .magicrc file
New windows will not have a title caption.
New windows will not have scroll bars.
New windows will not have a border.
error in slave eval:
value(s) for the -zoom option must be positive
Main console display active (Tcl8.6.10 / Tk8.6.10)
%

I'm running Solus Linux - are my tcl/tk libraries too new or too old?

Add "minimum required Magic version" to tech file

It would be good if tech files could specify the minimum version of Magic required for the tech file to be loaded correctly. Magic could then check that it's version is newer than the requested version in the tech file before attempting to read it (and thus help prevent things like it segfaulting on invalid stuff). With this functionality, Magic could then give a useful error message like "Please update your version of Magic to atleast XXYYZZ to use this technology file".

I think it would also be perfectly fine for the required magic line to be required to be the first executable line in a tech file (and if specified later in the tech file a hard error even if the magic version is okay).

segfault when going through the tut3d tutorial 'plow right metal1'

Back trace :

Thread 1 "wish" received signal SIGSEGV, Segmentation fault.
0x00007f3b1892056d in dbCopyDefFunc (use=0x7f3b188d7630, def=0x7ffd9b525db0) at DBcellsubr.c:149
149	    use->cu_parent = def;
(gdb) bt
#0  0x00007f3b1892056d in dbCopyDefFunc (use=0x7f3b188d7630, def=0x7ffd9b525db0) at DBcellsubr.c:149
#1  0x00007f3b1891be99 in DBSrCellPlaneArea (plane=0x55f6b9fb8750, rect=0x7f3b18b38f20 <TiPlaneRect>, 
    func=0x7f3b18920555 <dbCopyDefFunc>, arg=140727209319856) at DBcellsrch.c:91
#2  0x00007f3b18920543 in DBCellCopyDefBody (sourceDef=0x55f6ba2b60d0, destDef=0x7ffd9b525db0) at DBcellsubr.c:139
#3  0x00007f3b18a18524 in plowYankMore (area=0x7ffd9b5261c0, halo=14, back=1) at PlowYank.c:194
#4  0x00007f3b18a082fa in plowApplySearchRules (edge=0x7ffd9b5261c0) at PlowMain.c:1660
#5  0x00007f3b18a08267 in plowProcessEdge (edge=0x7ffd9b5261c0, changedArea=0x7ffd9b526290) at PlowMain.c:1620
#6  0x00007f3b18a06da8 in plowPropagateRect (def=0x55f6bb6e2be0, userRect=0x7ffd9b526370, lc=..., changedArea=0x7ffd9b526290)
    at PlowMain.c:763
#7  0x00007f3b18a06667 in Plow (def=0x55f6bb6e2be0, userRect=0x7ffd9b526370, layers=..., direction=3) at PlowMain.c:521
#8  0x00007f3b18a0468b in CmdPlow (w=0x55f6ba484a10, cmd=0x55f6bb7aea70) at PlowCmd.c:209
#9  0x00007f3b189db01c in WindExecute (w=0x55f6ba484a10, rc=94518184207856, cmd=0x55f6bb7aea70) at windMain.c:414
#10 0x00007f3b189516ce in DBWcommands (w=0x55f6ba484a10, cmd=0x55f6bb7aea70) at DBWprocs.c:598
#11 0x00007f3b189d78ce in WindSendCommand (w=0x55f6ba484a10, cmd=0x55f6bb7aea70, quiet=1 '\001') at windSend.c:263
#12 0x00007f3b189cf97f in TxTclDispatch (clientData=0x0, argc=3, argv=0x55f6ba06e8a0, quiet=1 '\001') at txCommands.c:1180
#13 0x00007f3b18ae0e58 in _tcl_dispatch (clientData=0x0, interp=0x55f6ba06cf70, argc=3, argv=0x55f6ba06e8a0) at tclmagic.c:400
#14 0x00007f3b1a9719ab in TclInvokeStringCommand () from /lib/x86_64-linux-gnu/libtcl8.6.so
#15 0x00007f3b1a973777 in TclNRRunCallbacks () from /lib/x86_64-linux-gnu/libtcl8.6.so
#16 0x00007f3b1aa166a2 in ?? () from /lib/x86_64-linux-gnu/libtcl8.6.so
#17 0x00007f3b1aa13f57 in ?? () from /lib/x86_64-linux-gnu/libtcl8.6.so
#18 0x00007f3b1a973777 in TclNRRunCallbacks () from /lib/x86_64-linux-gnu/libtcl8.6.so
#19 0x00007f3b1a974b6f in ?? () from /lib/x86_64-linux-gnu/libtcl8.6.so
--Type <RET> for more, q to quit, c to continue without paging--
#20 0x00007f3b1a9744d3 in Tcl_EvalEx () from /lib/x86_64-linux-gnu/libtcl8.6.so
#21 0x00007f3b1ab2512d in Tk_BindEvent () from /lib/x86_64-linux-gnu/libtk8.6.so
#22 0x00007f3b1ab2bebf in TkBindEventProc () from /lib/x86_64-linux-gnu/libtk8.6.so
#23 0x00007f3b1ab34523 in Tk_HandleEvent () from /lib/x86_64-linux-gnu/libtk8.6.so
#24 0x00007f3b1ab34cb0 in ?? () from /lib/x86_64-linux-gnu/libtk8.6.so
#25 0x00007f3b1aa3b78f in Tcl_ServiceEvent () from /lib/x86_64-linux-gnu/libtcl8.6.so
#26 0x00007f3b1aa3b9f5 in Tcl_DoOneEvent () from /lib/x86_64-linux-gnu/libtcl8.6.so
#27 0x00007f3b1ab35112 in Tk_MainLoop () from /lib/x86_64-linux-gnu/libtk8.6.so
#28 0x00007f3b1ab44197 in Tk_MainEx () from /lib/x86_64-linux-gnu/libtk8.6.so
#29 0x000055f6b8e930dc in ?? ()
#30 0x00007f3b1a76f1e3 in __libc_start_main (main=0x55f6b8e930b0, argc=6, argv=0x7ffd9b527008, init=<optimized out>, 
    fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffd9b526ff8) at ../csu/libc-start.c:308
#31 0x000055f6b8e9311a in _start ()

Implicit declaration of function is invalid in C99

When building magic on mac, I get

--- errors and warnings logged in file make.log
--- making header file database/database.h
--- making dependencies
--- making modules
--- compiling bplane/bpEnum.o
In file included from bpEnum.c:39:
In file included from bpEnum.c:39:
bpEnum.c:76:5: error: implicit declaration of function 'GeoCanonicalRect' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling cmwind/CMWcmmnds.o
In file included from CMWcmmnds.c:32:
In file included from CMWcmmnds.c:32:
--- compiling commands/CmdSubrs.o
In file included from CmdSubrs.c:33:
In file included from CmdSubrs.c:33:
CmdSubrs.c:409:14: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
CmdSubrs.c:409:14: note: place parentheses around the assignment to silence this warning
CmdSubrs.c:409:14: note: use '==' to turn this assignment into an equality comparison
CmdSubrs.c:433:9: error: implicit declaration of function 'DBTechNameTypes' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
CmdSubrs.c:433:9: note: did you mean 'DBTechNameType'?
CmdSubrs.c:755:8: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
CmdSubrs.c:755:8: note: place parentheses around the assignment to silence this warning
CmdSubrs.c:755:8: note: use '==' to turn this assignment into an equality comparison
--- compiling database/DBbound.o
In file included from DBbound.c:26:
In file included from DBbound.c:26:
DBbound.c:61:9: error: implicit declaration of function 'DBSrCellPlaneArea' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling dbwind/DBWcommands.o
In file included from DBWcommands.c:29:
In file included from DBWcommands.c:29:
--- compiling dbwind/DBWdisplay.o
In file included from DBWdisplay.c:34:
In file included from DBWdisplay.c:34:
DBWdisplay.c:652:5: error: implicit declaration of function 'GrBox' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
DBWdisplay.c:815:2: error: implicit declaration of function 'GeoTransPointDelta' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
DBWdisplay.c:815:2: note: did you mean 'GeoTransPoint'?
DBWdisplay.c:837:14: error: implicit declaration of function 'GeoTransAngle' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
DBWdisplay.c:897:2: error: implicit declaration of function 'GrFontText' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
DBWdisplay.c:897:2: note: did you mean 'GrPutText'?
DBWdisplay.c:1640:2: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling drc/DRCarray.o
In file included from DRCarray.c:32:
In file included from DRCarray.c:32:
--- compiling drc/DRCbasic.o
In file included from DRCbasic.c:33:
In file included from DRCbasic.c:33:
DRCbasic.c:345:2: error: implicit declaration of function 'DBResetTilePlane' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
DRCbasic.c:349:5: error: implicit declaration of function 'drcCifCheck' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
DRCbasic.c:423:7: error: implicit declaration of function 'drcCheckAngles' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
DRCbasic.c:434:7: error: implicit declaration of function 'drcCheckAngles' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
DRCbasic.c:539:4: error: implicit declaration of function 'drcCheckArea' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
DRCbasic.c:610:8: error: implicit declaration of function 'drcCheckMaxwidth' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
DRCbasic.c:616:8: error: implicit declaration of function 'drcCheckMaxwidth' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
DRCbasic.c:628:4: error: implicit declaration of function 'drcCheckRectSize' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
DRCbasic.c:638:7: error: implicit declaration of function 'drcCheckOffGrid' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
DRCbasic.c:1017:7: error: implicit declaration of function 'drcCheckOffGrid' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling extflat/EFargs.o
EFargs.c:186:3: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
EFargs.c:214:3: error: implicit declaration of function 'efSymAdd' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
EFargs.c:235:3: error: implicit declaration of function 'efSymAddFile' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
EFargs.c:235:3: note: did you mean 'efSymAdd'?
EFargs.c:214:3: note: 'efSymAdd' declared here
EFargs.c:284:3: error: implicit declaration of function 'TxPrintf' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
EFargs.c:294:7: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
EFargs.c:332:5: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling extract/ExtArray.o
In file included from ExtArray.c:33:
In file included from ExtArray.c:33:
ExtArray.c:170:12: error: implicit declaration of function 'DBCellSrArea' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ExtArray.c:178:5: error: implicit declaration of function 'extOutputConns' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ExtArray.c:392:26: error: implicit declaration of function 'extHierFreeOne' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ExtArray.c:392:26: note: did you mean 'extHierNewOne'?
ExtArray.c:451:12: error: implicit declaration of function 'extHierYankFunc' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ExtArray.c:460:5: error: implicit declaration of function 'ExtLabelRegions' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ExtArray.c:460:5: note: did you mean 'ExtFindRegions'?
ExtArray.c:464:2: error: implicit declaration of function 'extFindCoupling' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ExtArray.c:589:12: error: implicit declaration of function 'extHierYankFunc' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ExtArray.c:599:5: error: implicit declaration of function 'ExtLabelRegions' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ExtArray.c:603:2: error: implicit declaration of function 'extFindCoupling' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ExtArray.c:606:5: error: implicit declaration of function 'extHierConnections' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ExtArray.c:610:2: error: implicit declaration of function 'extHierSubstrate' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ExtArray.c:646:18: error: implicit declaration of function 'extHierFreeOne' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ExtArray.c:648:2: error: implicit declaration of function 'ExtFreeLabRegions' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ExtArray.c:689:5: error: implicit declaration of function 'extHierAdjustments' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ExtArray.c:693:15: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
ExtArray.c:693:15: note: place parentheses around the assignment to silence this warning
ExtArray.c:693:15: note: use '==' to turn this assignment into an equality comparison
ExtArray.c:800:10: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
ExtArray.c:800:10: note: place parentheses around the assignment to silence this warning
ExtArray.c:800:10: note: use '==' to turn this assignment into an equality comparison
--- compiling graphics/grMain.o
grMain.c:394:14: error: implicit declaration of function 'access' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling netmenu/NMbutton.o
In file included from NMbutton.c:30:
In file included from NMbutton.c:30:
NMbutton.c:82:56: warning: equality comparison result unused [-Wunused-comparison]
NMbutton.c:82:56: note: use '=' to turn this equality comparison into an assignment
--- compiling netmenu/NMcmdAK.o
In file included from NMcmdAK.c:29:
In file included from NMcmdAK.c:29:
NMcmdAK.c:313:5: error: implicit declaration of function 'NMCull' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
NMcmdAK.c:499:7: error: implicit declaration of function 'CmdParseLayers' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling plow/PlowCmd.o
In file included from PlowCmd.c:33:
In file included from PlowCmd.c:33:
PlowCmd.c:113:2: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
PlowCmd.c:134:3: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
PlowCmd.c:139:3: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
PlowCmd.c:151:6: error: implicit declaration of function 'TxPrintf' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
PlowCmd.c:166:3: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
PlowCmd.c:171:6: error: implicit declaration of function 'PlowSetBound' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
PlowCmd.c:174:46: error: implicit declaration of function 'cmdParseCoord' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
PlowCmd.c:188:6: error: implicit declaration of function 'PlowClearBound' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
PlowCmd.c:188:6: note: did you mean 'PlowSetBound'?
PlowCmd.c:171:6: note: 'PlowSetBound' declared here
PlowCmd.c:207:11: error: implicit declaration of function 'CmdParseLayers' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
PlowCmd.c:256:7: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
PlowCmd.c:266:7: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
PlowCmd.c:288:11: error: implicit declaration of function 'PlowSelection' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
PlowCmd.c:308:5: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
PlowCmd.c:341:2: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
PlowCmd.c:355:2: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
PlowCmd.c:360:2: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
PlowCmd.c:364:5: error: implicit declaration of function 'PlowStraighten' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
PlowCmd.c:364:5: note: did you mean 'CmdStraighten'?
PlowCmd.c:331:1: note: 'CmdStraighten' declared here
PlowCmd.c:368:5: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling resis/ResMain.o
In file included from ResMain.c:15:
In file included from ResMain.c:15:
ResMain.c:533:4: error: implicit declaration of function 'ResRemoveFromQueue' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ResMain.c:547:9: error: implicit declaration of function 'ResCleanNode' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ResMain.c:548:4: error: implicit declaration of function 'ResDoneWithNode' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ResMain.c:676:5: error: implicit declaration of function 'ExtResetTiles' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ResMain.c:700:3: error: implicit declaration of function 'ResFracture' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ResMain.c:701:10: error: implicit declaration of function 'DBSrPaintClient' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ResMain.c:701:10: note: did you mean 'DBSrPaintArea'?
ResMain.c:712:5: error: implicit declaration of function 'ResPreProcessDevices' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ResMain.c:771:14: error: implicit declaration of function 'DBSrPaintClient' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ResMain.c:780:2: error: implicit declaration of function 'ResCleanNode' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling select/selCreate.o
In file included from selCreate.c:31:
In file included from selCreate.c:31:
selCreate.c:180:2: error: implicit declaration of function 'SelNetRememberForUndo' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
selCreate.c:180:2: note: did you mean 'SelRememberForUndo'?
selCreate.c:214:13: error: implicit declaration of function 'DBCellSrArea' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
selCreate.c:217:3: error: implicit declaration of function 'DBUnLinkCell' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
selCreate.c:217:3: note: did you mean 'DBUnlinkCell'?
selCreate.c:584:28: error: implicit declaration of function 'DBMaskAddStacking' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
selCreate.c:613:2: error: implicit declaration of function 'DBCellCopyManhattanPaint' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
selCreate.c:857:5: error: implicit declaration of function 'SelNetRememberForUndo' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
selCreate.c:947:2: error: implicit declaration of function 'DBUnLinkCell' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
selCreate.c:979:2: error: implicit declaration of function 'DBUnLinkCell' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
selCreate.c:1122:2: error: implicit declaration of function 'DBMergeNMTiles0' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
selCreate.c:1187:2: error: implicit declaration of function 'DBSrPaintNMArea' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
selCreate.c:1187:2: note: did you mean 'DBSrPaintArea'?
selCreate.c:1257:6: error: implicit declaration of function 'GrClipTriangle' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
selCreate.c:1276:7: error: implicit declaration of function 'GeoCanonicalRect' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
selCreate.c:1286:3: error: implicit declaration of function 'GeoCanonicalRect' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
selCreate.c:1315:3: error: implicit declaration of function 'DBPaintValid' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
selCreate.c:1315:3: note: did you mean 'DBPaintMask'?
selCreate.c:1357:5: error: implicit declaration of function 'DBPaintValid' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling sim/SimDBstuff.o
In file included from SimDBstuff.c:34:
In file included from SimDBstuff.c:34:
SimDBstuff.c:252:9: error: implicit declaration of function 'DBSrPaintNMArea' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
SimDBstuff.c:252:9: note: did you mean 'DBSrPaintArea'?
SimDBstuff.c:421:12: error: implicit declaration of function 'SimTreeSrTiles' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
SimDBstuff.c:421:12: note: did you mean 'DBTreeSrTiles'?
SimDBstuff.c:431:6: error: implicit declaration of function 'SimTreeSrNMTiles' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
SimDBstuff.c:431:6: note: did you mean 'SimTreeSrTiles'?
SimDBstuff.c:421:12: note: 'SimTreeSrTiles' declared here
SimDBstuff.c:789:10: error: implicit declaration of function 'DBDescendSubcell' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
SimDBstuff.c:829:7: error: implicit declaration of function 'DBSrPaintNMArea' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
SimDBstuff.c:852:9: error: implicit declaration of function 'DBCellSrArea' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling textio/txCommands.o
In file included from txCommands.c:43:
In file included from txCommands.c:43:
txCommands.c:1001:14: error: implicit declaration of function 'TxGetLineWPrompt' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
txCommands.c:1001:14: note: did you mean 'TxGetLinePrompt'?
txCommands.c:1180:14: error: implicit declaration of function 'WindSendCommand' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
txCommands.c:1180:14: note: did you mean 'WindAddCommand'?
txCommands.c:1208:2: error: implicit declaration of function 'DRCBreak' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling tiles/tile.o
tile.c:674:2: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling utils/args.o
args.c:73:5: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling windows/windCmdAM.o
In file included from windCmdAM.c:49:
In file included from windCmdAM.c:49:
windCmdAM.c:344:10: error: implicit declaration of function 'WindDelete' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
windCmdAM.c:344:10: note: did you mean 'undelete'?
windCmdAM.c:422:5: error: implicit declaration of function 'niceabort' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling wiring/wireOps.o
In file included from wireOps.c:31:
In file included from wireOps.c:31:
wireOps.c:466:5: error: implicit declaration of function 'DBPaintValid' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
wireOps.c:466:5: note: did you mean 'DBPaintMask'?
wireOps.c:675:5: error: implicit declaration of function 'UndoDisable' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
wireOps.c:681:5: error: implicit declaration of function 'DBPaintValid' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
wireOps.c:688:5: error: implicit declaration of function 'UndoEnable' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
wireOps.c:688:5: note: did you mean 'UndoDisable'?
wireOps.c:675:5: note: 'UndoDisable' declared here
wireOps.c:871:5: error: implicit declaration of function 'DBPaintValid' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling ext2sim/ext2sim.o
In file included from ext2sim.c:32:
In file included from ext2sim.c:32:
ext2sim.c:480:5: error: implicit declaration of function 'EFInit' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2sim.c:480:5: note: did you mean 'TxInit'?
ext2sim.c:491:2: error: implicit declaration of function 'EFDone' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2sim.c:505:6: error: implicit declaration of function 'EFDone' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2sim.c:538:2: error: implicit declaration of function 'EFDone' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2sim.c:547:2: error: implicit declaration of function 'EFDone' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2sim.c:560:9: error: implicit declaration of function 'EFReadFile' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2sim.c:562:2: error: implicit declaration of function 'EFDone' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2sim.c:597:6: error: implicit declaration of function 'efBuildAddStr' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2sim.c:619:5: error: implicit declaration of function 'EFFlatBuild' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2sim.c:625:2: error: implicit declaration of function 'EFVisitDevs' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2sim.c:633:5: error: implicit declaration of function 'EFVisitDevs' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2sim.c:636:2: error: implicit declaration of function 'EFVisitCaps' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2sim.c:636:2: note: did you mean 'EFVisitDevs'?
ext2sim.c:625:2: note: 'EFVisitDevs' declared here
ext2sim.c:638:5: error: implicit declaration of function 'EFVisitResists' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2sim.c:640:5: error: implicit declaration of function 'EFVisitNodes' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2sim.c:640:5: note: did you mean 'EFVisitDevs'?
ext2sim.c:625:2: note: 'EFVisitDevs' declared here
ext2sim.c:642:5: error: implicit declaration of function 'EFFlatDone' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2sim.c:643:5: error: implicit declaration of function 'EFDone' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2sim.c:1027:5: error: implicit declaration of function 'EFGetLengthAndWidth' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2sim.c:1099:8: error: implicit declaration of function 'simdevOutNode' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2sim.c:1128:2: error: implicit declaration of function 'simdevSubstrate' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
fatal error: too many errors emitted, stopping now [-ferror-limit=]
--- compiling ext2spice/ext2spice.o
In file included from ext2spice.c:33:
In file included from ext2spice.c:33:
ext2spice.c:659:5: error: implicit declaration of function 'EFInit' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2spice.c:669:2: error: implicit declaration of function 'EFDone' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2spice.c:704:9: error: implicit declaration of function 'EFReadFile' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2spice.c:706:2: error: implicit declaration of function 'EFDone' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2spice.c:718:2: error: implicit declaration of function 'EFDone' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2spice.c:751:6: error: implicit declaration of function 'efBuildAddStr' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2spice.c:884:2: error: implicit declaration of function 'ESGenerateHierarchy' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2spice.c:888:2: error: implicit declaration of function 'EFFlatBuild' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2spice.c:909:6: error: implicit declaration of function 'EFVisitSubcircuits' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2spice.c:917:6: error: implicit declaration of function 'EFVisitDevs' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2spice.c:925:11: error: implicit declaration of function 'EFVisitDevs' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2spice.c:932:6: error: implicit declaration of function 'EFVisitCaps' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2spice.c:932:6: note: did you mean 'EFVisitDevs'?
ext2spice.c:917:6: note: 'EFVisitDevs' declared here
ext2spice.c:934:2: error: implicit declaration of function 'EFVisitResists' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2spice.c:938:2: error: implicit declaration of function 'EFVisitNodes' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2spice.c:938:2: note: did you mean 'EFVisitDevs'?
ext2spice.c:917:6: note: 'EFVisitDevs' declared here
ext2spice.c:952:6: error: implicit declaration of function 'printSubcktDict' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2spice.c:954:2: error: implicit declaration of function 'EFFlatDone' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2spice.c:956:5: error: implicit declaration of function 'EFDone' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2spice.c:1404:2: error: implicit declaration of function 'EFHNSprintf' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ext2spice.c:1440:14: error: implicit declaration of function 'spcdevOutNode' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
fatal error: too many errors emitted, stopping now [-ferror-limit=]
--- compiling calma/CalmaRead.o
In file included from CalmaRead.c:35:
In file included from CalmaRead.c:35:
CalmaRead.c:197:10: error: implicit declaration of function 'calmaReadI2Record' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
CalmaRead.c:203:10: error: implicit declaration of function 'calmaSkipExact' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
CalmaRead.c:203:10: note: did you mean 'calmaSkipSet'?
CalmaRead.c:205:10: error: implicit declaration of function 'calmaReadStringRecord' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
CalmaRead.c:205:10: note: did you mean 'calmaReadI2Record'?
CalmaRead.c:197:10: note: 'calmaReadI2Record' declared here
CalmaRead.c:224:12: error: implicit declaration of function 'calmaParseStructure' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
CalmaRead.c:309:10: error: implicit declaration of function 'calmaReadR8' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
CalmaRead.c:428:57: warning: too few arguments in call to 'CalmaReadError'
--- compiling cif/CIFgen.o
In file included from CIFgen.c:32:
In file included from CIFgen.c:32:
CIFgen.c:1166:3: error: implicit declaration of function 'CoincidentPlanes' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
CIFgen.c:1398:5: error: implicit declaration of function 'GeoCanonicalRect' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
CIFgen.c:2473:6: error: implicit declaration of function 'cifSquareFunc' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
CIFgen.c:2475:6: error: implicit declaration of function 'cifSquareGridFunc' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
CIFgen.c:2595:3: error: implicit declaration of function 'cifSquareFunc' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
CIFgen.c:2597:3: error: implicit declaration of function 'cifSquareGridFunc' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
CIFgen.c:2809:2: error: implicit declaration of function 'cifSlotFunc' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
CIFgen.c:2809:2: note: did you mean 'cifBloatFunc'?
CIFgen.c:727:1: note: 'cifBloatFunc' declared here
CIFgen.c:2961:6: error: implicit declaration of function 'cifSlotFunc' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
CIFgen.c:4783:7: error: implicit declaration of function 'UndoDisable' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
CIFgen.c:4793:7: error: implicit declaration of function 'UndoEnable' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
CIFgen.c:4793:7: note: did you mean 'UndoDisable'?
CIFgen.c:4783:7: note: 'UndoDisable' declared here
CIFgen.c:4895:8: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
CIFgen.c:4908:27: error: implicitly declaring library function 'isspace' with type 'int (int)' [-Werror,-Wimplicit-function-declaration]
CIFgen.c:4908:27: note: include the header <ctype.h> or explicitly provide a declaration for 'isspace'
CIFgen.c:4999:25: error: implicit declaration of function 'DBMergeNMTiles0' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling plot/plotCmd.o
In file included from plotCmd.c:34:
In file included from plotCmd.c:34:
plotCmd.c:142:6: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
plotCmd.c:170:3: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
plotCmd.c:198:3: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
plotCmd.c:207:6: error: implicit declaration of function 'PlotPS' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
plotCmd.c:228:6: error: implicit declaration of function 'TxPrintf' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
plotCmd.c:237:3: error: implicit declaration of function 'PlotPrintParams' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
plotCmd.c:239:3: error: implicit declaration of function 'PlotSetParam' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
plotCmd.c:242:4: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
plotCmd.c:251:3: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
plotCmd.c:263:6: error: implicit declaration of function 'PlotVersatec' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
plotCmd.c:271:3: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
plotCmd.c:290:3: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
plotCmd.c:295:3: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
plotCmd.c:309:4: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
plotCmd.c:323:3: error: implicit declaration of function 'PlotPNM' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
plotCmd.c:323:3: note: did you mean 'PlotPS'?
plotCmd.c:207:6: note: 'PlotPS' declared here
plotCmd.c:334:6: error: implicit declaration of function 'PlotPNM' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling lef/lefCmd.o
In file included from lefCmd.c:21:
In file included from lefCmd.c:21:
lefCmd.c:152:6: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
lefCmd.c:168:7: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
lefCmd.c:194:5: error: implicit declaration of function 'TxPrintf' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
lefCmd.c:206:3: error: implicit declaration of function 'LefRead' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
lefCmd.c:208:3: error: implicit declaration of function 'DefRead' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
lefCmd.c:208:3: note: did you mean 'LefRead'?
lefCmd.c:206:3: note: 'LefRead' declared here
lefCmd.c:213:3: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
lefCmd.c:232:15: error: implicit declaration of function 'cmdParseCoord' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
lefCmd.c:247:3: error: implicit declaration of function 'LefWriteAll' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
lefCmd.c:263:8: error: implicit declaration of function 'TxPrintf' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
lefCmd.c:270:8: error: implicit declaration of function 'TxPrintf' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
lefCmd.c:280:15: error: implicit declaration of function 'cmdParseCoord' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
lefCmd.c:287:8: error: implicit declaration of function 'TxPrintf' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
lefCmd.c:294:8: error: implicit declaration of function 'TxPrintf' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
lefCmd.c:301:8: error: implicit declaration of function 'TxPrintf' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
lefCmd.c:306:8: error: implicit declaration of function 'TxPrintf' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
lefCmd.c:331:17: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
lefCmd.c:339:3: error: implicit declaration of function 'DefWriteCell' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
lefCmd.c:341:3: error: implicit declaration of function 'LefWriteCell' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
lefCmd.c:341:3: note: did you mean 'DefWriteCell'?
lefCmd.c:339:3: note: 'DefWriteCell' declared here
lefCmd.c:346:6: error: implicit declaration of function 'TxPrintf' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling garouter/gaChannel.o
In file included from gaChannel.c:30:
In file included from gaChannel.c:30:
gaChannel.c:203:5: error: implicit declaration of function 'RtrChannelBounds' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gaChannel.c:264:5: error: implicit declaration of function 'RtrMilestoneStart' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gaChannel.c:273:2: error: implicit declaration of function 'RtrMilestonePrint' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gaChannel.c:273:2: note: did you mean 'RtrMilestoneStart'?
gaChannel.c:264:5: note: 'RtrMilestoneStart' declared here
gaChannel.c:274:2: error: implicit declaration of function 'RtrChannelObstacles' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gaChannel.c:276:6: error: implicit declaration of function 'RtrChannelDensity' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gaChannel.c:277:2: error: implicit declaration of function 'RtrChannelCleanObstacles' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gaChannel.c:277:2: note: did you mean 'RtrChannelObstacles'?
gaChannel.c:274:2: note: 'RtrChannelObstacles' declared here
gaChannel.c:279:5: error: implicit declaration of function 'RtrMilestoneDone' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gaChannel.c:279:5: note: did you mean 'RtrMilestoneStart'?
gaChannel.c:264:5: note: 'RtrMilestoneStart' declared here
gaChannel.c:300:2: error: implicit declaration of function 'RtrPinsInit' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gaChannel.c:311:5: error: implicit declaration of function 'gaStemAssignAll' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gaChannel.c:336:6: error: implicit declaration of function 'RtrHazards' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gaChannel.c:337:6: error: implicit declaration of function 'RtrMilestonePrint' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gaChannel.c:350:2: error: implicit declaration of function 'RtrPinsLink' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gaChannel.c:453:10: error: implicit declaration of function 'RtrPinsBlock' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling grouter/grouteChan.o
In file included from grouteChan.c:31:
In file included from grouteChan.c:31:
grouteChan.c:145:2: error: implicit declaration of function 'DBNewYank' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
grouteChan.c:145:2: note: did you mean 'DBNewPlane'?
grouteChan.c:283:5: error: implicit declaration of function 'dbSetPlaneTile' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
grouteChan.c:465:5: error: implicit declaration of function 'ShowRect' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
grouteChan.c:468:5: error: implicit declaration of function 'TxMore' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling irouter/irCommand.o
In file included from irCommand.c:38:
In file included from irCommand.c:38:
irCommand.c:231:5: error: implicit declaration of function 'SetNoisyInt' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
irCommand.c:244:5: error: implicit declaration of function 'SetNoisyInt' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
irCommand.c:257:5: error: implicit declaration of function 'SetNoisyInt' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
irCommand.c:270:5: error: implicit declaration of function 'SetNoisyInt' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
irCommand.c:283:5: error: implicit declaration of function 'SetNoisyInt' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
irCommand.c:296:5: error: implicit declaration of function 'SetNoisyInt' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
irCommand.c:309:5: error: implicit declaration of function 'SetNoisyInt' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
irCommand.c:441:5: error: implicit declaration of function 'SetNoisyInt' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
irCommand.c:454:5: error: implicit declaration of function 'SetNoisyInt' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
irCommand.c:467:5: error: implicit declaration of function 'SetNoisyInt' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
irCommand.c:542:5: error: implicit declaration of function 'SetNoisyDI' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
irCommand.c:551:5: error: implicit declaration of function 'SetNoisyDI' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
irCommand.c:579:5: error: implicit declaration of function 'SetNoisyDI' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
irCommand.c:588:5: error: implicit declaration of function 'SetNoisyDI' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
irCommand.c:901:7: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
irCommand.c:901:7: note: place parentheses around the assignment to silence this warning
irCommand.c:901:7: note: use '==' to turn this assignment into an equality comparison
irCommand.c:999:7: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
irCommand.c:999:7: note: place parentheses around the assignment to silence this warning
irCommand.c:999:7: note: use '==' to turn this assignment into an equality comparison
irCommand.c:1275:8: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
irCommand.c:1275:8: note: place parentheses around the assignment to silence this warning
irCommand.c:1275:8: note: use '==' to turn this assignment into an equality comparison
irCommand.c:1375:8: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
irCommand.c:1375:8: note: place parentheses around the assignment to silence this warning
irCommand.c:1375:8: note: use '==' to turn this assignment into an equality comparison
irCommand.c:1554:21: error: implicit declaration of function 'cmdParseCoord' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
irCommand.c:1675:3: error: implicit declaration of function 'SigRemoveTimer' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
irCommand.c:1691:16: error: implicit declaration of function 'irRoute' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
irCommand.c:1691:16: note: did you mean 'MZRoute'?
irCommand.c:1931:12: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
irCommand.c:1931:12: note: place parentheses around the assignment to silence this warning
irCommand.c:1931:12: note: use '==' to turn this assignment into an equality comparison
irCommand.c:2052:11: error: implicit declaration of function 'cmdParseCoord' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
irCommand.c:2605:13: error: implicit declaration of function 'irRoute' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling mzrouter/mzBlock.o
In file included from mzBlock.c:97:
In file included from mzBlock.c:97:
mzBlock.c:474:7: error: implicit declaration of function 'DBPaintPlaneVert' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
mzBlock.c:496:3: error: implicit declaration of function 'DBPaintPlaneVert' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
mzBlock.c:618:2: error: implicit declaration of function 'DBPaintPlaneVert' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
mzBlock.c:696:5: error: implicit declaration of function 'DBPaintPlaneVert' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
mzBlock.c:904:6: error: implicit declaration of function 'DBPaintPlaneVert' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
mzBlock.c:972:5: error: implicit declaration of function 'DBPaintPlaneVert' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling router/rtrCmd.o
In file included from rtrCmd.c:34:
In file included from rtrCmd.c:34:
rtrCmd.c:76:5: error: implicit declaration of function 'GATest' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
rtrCmd.c:103:5: error: implicit declaration of function 'GlTest' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
rtrCmd.c:130:5: error: implicit declaration of function 'IRTest' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
rtrCmd.c:157:5: error: implicit declaration of function 'MZTest' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
rtrCmd.c:195:2: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
rtrCmd.c:208:2: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
rtrCmd.c:211:5: error: implicit declaration of function 'TxPrintf' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
rtrCmd.c:282:5: error: implicit declaration of function 'GAInit' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
rtrCmd.c:290:6: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
rtrCmd.c:300:6: error: implicit declaration of function 'TxPrintf' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
rtrCmd.c:316:3: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
rtrCmd.c:325:6: error: implicit declaration of function 'GAClearChannels' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
rtrCmd.c:330:3: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
rtrCmd.c:346:30: error: implicit declaration of function 'GAGenChans' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
rtrCmd.c:350:3: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
rtrCmd.c:369:21: error: implicit declaration of function 'cmdParseCoord' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
rtrCmd.c:384:7: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
rtrCmd.c:391:11: error: implicit declaration of function 'GADefineChannel' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
rtrCmd.c:393:3: error: implicit declaration of function 'TxError' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
fatal error: too many errors emitted, stopping now [-ferror-limit=]
--- compiling gcr/gcrColl.o
gcrColl.c:94:6: error: implicit declaration of function 'gcrVertClear' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gcrColl.c:103:10: error: implicit declaration of function 'gcrMoveTrack' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gcrColl.c:205:34: error: implicit declaration of function 'gcrNextSplit' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gcrColl.c:347:6: error: implicit declaration of function 'gcrBlocked' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gcrColl.c:361:3: error: implicit declaration of function 'gcrMoveTrack' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gcrColl.c:376:6: error: implicit declaration of function 'gcrBlocked' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gcrColl.c:394:3: error: implicit declaration of function 'gcrMoveTrack' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling tcltk/tclmagic.o
In file included from tclmagic.c:30:
In file included from tclmagic.c:30:
tclmagic.c:538:9: error: implicit declaration of function 'mainInitBeforeArgs' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
tclmagic.c:539:9: error: implicit declaration of function 'mainDoArgs' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
tclmagic.c:560:9: error: implicit declaration of function 'mainInitAfterArgs' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
tclmagic.c:560:9: note: did you mean 'mainInitBeforeArgs'?
tclmagic.c:538:9: note: 'mainInitBeforeArgs' declared here
tclmagic.c:725:9: error: implicit declaration of function 'mainInitFinal' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
tclmagic.c:932:2: error: implicit declaration of function 'txGetFileCommand' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling magic/magicTop.o
magicTop.c:53:5: error: implicit declaration of function 'magicMain' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
--- compiling tcltk/tclmagic.o
In file included from tclmagic.c:30:
In file included from tclmagic.c:30:
tclmagic.c:538:9: error: implicit declaration of function 'mainInitBeforeArgs' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
tclmagic.c:539:9: error: implicit declaration of function 'mainDoArgs' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
tclmagic.c:560:9: error: implicit declaration of function 'mainInitAfterArgs' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
tclmagic.c:560:9: note: did you mean 'mainInitBeforeArgs'?
tclmagic.c:538:9: note: 'mainInitBeforeArgs' declared here
tclmagic.c:725:9: error: implicit declaration of function 'mainInitFinal' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
tclmagic.c:932:2: error: implicit declaration of function 'txGetFileCommand' is invalid in C99 [-Werror,-Wimplicit-function-declaration]

make.log

Segmentation fault under xrdp

Starting magic through a xrdp session (CentOS Stream 8 running xrdp.service) results in a Segmentation fault:

mooredan@centos:~$ magic -noconsole
Use openwrapper to create a new GUI-based layout window
Use closewrapper to remove a new GUI-based layout window

Magic 8.3 revision 108 - Compiled on Sat Jan 2 09:32:04 PST 2021.
Starting magic under Tcl interpreter
Using the terminal as the console.
None of TrueColor 15, 16 or 24, or PseudoColor 8 found. Cannot initialize DISPLAY :11.0
Segmentation fault (core dumped)

Normally, I run magic without the -noconsole option, but am using it to capture the error. Otherwise, the tkcon window just comes and goes.

I did verify that magic starts normally when logged in at the console -- it's just not working in a remote session.

This could be an issue with xrdp configuration on the CentOS machine.

Sometimes tech value in extracted spice netlist is (null)

Normally the output looks like this;

* NGSPICE file created from sky130_fd_sc_hvl__lsbuflv2hv_clkiso_hlkg_3.ext - technology: sky130A

But sometimes I'm getting

* NGSPICE file created from sky130_fd_sc_hvl__lsbuflv2hv_clkiso_hlkg_3.ext - technology: (null)

I can't find a reproducible test case which causes it to occur however. I'm always using the same script and technology file.

It seems to happen more often while splitting the ram files....

HiDPI support

I am struggling to see the icons on the toolbar and the paint on my 3840x2160 23 inch monitor:
magic-vlsi-hidpi

The lines of the paint are more visible in the screen capture than they actually are. I am using Arch Linux with KDE Plasma. Issue is same with both Wayland and X11.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.