Magic 8.3 Revisions
Magic 8.2 Revisions
Magic 8.1 Revisions
Magic 8.0 Revisions
Magic 7.5 Revisions
Magic 7.4 Revisions
Magic 7.3 Revisions
Magic 7.2 Revisions
- posted: August 5, 2025 at 2:00am version: 8.3 revision: 536
Reverted a change made to "select area" earlier in the year, which changed the behavior from selecting subcells if they are unexpanded to selecting subcells regardless of the expansion state. The change was short-sighted and the implementation hard to use. There is a need, I think, for a selection method that effectively unexpands instances, selects everything, and re-expands afterward. But it's not clear if it is better to select all touching instances or instances inside the box area; maybe only interacting instances (instances with non-space content inside the box). Regardless, it needs more thought, and meanwhile, the original behavior works better.
Added the keyword "COVER" to the list of keywords expected for a PIN entry in a DEF file when read by "def read". Previously, "PLACED" and "FIXED" were handled, but "COVER" was missed. Magic treats all three the same way.
Also: path.c: CodeQL File{MayNot,Never}BeClosed.ql file-handle resource leaks
Also: CodeQL FileMayNotBeClosed.ql flock.c may also leak 'fd' in error paths
Also: Added a type cast in ext2spice/ext2hier.c to avoid having the compiler complain about a "const" variable passed to a routine not declaring "const".
- posted: August 2, 2025 at 2:00am version: 8.3 revision: 535
Corrected some basic paint code related to drawing over top non- Manhattan tiles. After splitting a non-Manhattan tile crossing a search area to paint, the routine was automatically merging tiles to the right. This is incorrect for tiles inside the search area, as it can cause the search algorithm to miss unvisited tiles whose origins are to the left of the split tile, resulting in part of the area not getting painted.
readline/Makefile: clean fix to unwanted error message
Also: appimage: allow git tags with annotation to match expected SHA for ChangeLog
- posted: July 30, 2025 at 2:00am version: 8.3 revision: 534
defs.mak.in: Add RMDIR MKDIR MV LN SED common tools
defs.mak.in: ARFLAGS = cr (removed 'v')
Also: defs.mak.in: replace backtick with $(shell ...)
Also: defs.mak.in: Remove -I. from default compiler options
Also: defs.mak.in: OBJS split into C_OBJS CXX_OBJS
Also: defs.mak.in: DFLAGS_MAGICVERSION
Also: configure: wrapper CFLAGS inherit if already set
Also: readline/Makefile: move up before with no scheme
Also: Makefile: exit 1 && libs: Makefile deps
Also: Makefile: make depend (will now parallelize via -j)
Also: Makefile: lookup VERSION local variable once
Also: Makefile: database.h removal by toplevel Makefile
Also: Makefile: whitespace only change
Also: Makefile: various consistency matters
Also: rules.mak: include ${DEPEND_FILE} only if the file exists
Also: rules.mak: fix module Depend and build rules
Also: MAKE_xxxxx: to skip building OBJs part of configure
Also: scripts/configure: autoconf regen (2.69) MAKE_xxxxx generation
Also: magic/Makefile: MAGIC_BUILDDATE and inherit values when possible
Also: configure: --enable-assertions make this a user accessible config
Also: configure: --enable-debug make this a user accessible config
Also: configure.in: whitespace cleanup align --help columns
Also: utils/magic_assert.h: separate assert.h and ASSERT
Also: utils/magic_zlib.h: limit #includeto files that need it
Also: utils/magic_alloca.h: with autoconf AC_FUNC_ALLOCA
Also: niceabort.c: includeremove preC89 declarations
Also: header file #endif guard trailer comment consistency
Also: header file #ifndef guard presence consistency
Also: header file #ifndef guard namespace consistency (global change)
Also: header file #endif guard middle program once style consistency
Also: makedbh.in _DATABASE_H => _MAGIC__DATABASE__DATABASE_H
Also: utils/magsgtty.h: detect termio/ioctl headers
Also: configure: autoconf regen (2.69) ALLOCA NDEBUG DEBUG
Also: Makefile: toplevel 'make techs' target to process scmos during build
Also: configure.in: AC_PROG_SED (looking for GNU sed)
Also: configure: autoconf regen (2.69) AC_PROG_SED
Also: configure.in: AC_PROG_PERL
Also: configure: autoconf regen (2.69) AC_PATH_PROG(PERL,) AC_SUBST(PERL)
Also: configure.in: AC_STRUCT_DIRENT_D_TYPE
Also: configure: autoconf regen (2.69) AC_STRUCT_DIRENT_D_TYPE
Also: defs.mak.in: restore autoconf LIBS functionality
Also: configure: autoconf regen (2.69) LIBS
Also: DBio.c: HAVE_STRUCT_DIRENT_D_TYPE direct->d_type
Also: SunOS: FOPEN rename to magicFOPEN due to sys/file.h definition
Also: Makefile: ln => ${LN}
Also: Makefile: rm => ${RM}
Also: Makefile: sed => ${SED}
Also: INSTALL_MacOS.md: Update to install gnu-sed
Also: GHA: main.yml: emit defs.mak into CI logging
Also: GHA: main-macos.yml brew install gnu-sed
Also: configure.in: AC_CHECK_HEADERS sys/ioctl_compat.h sgtty.h
Also: configure: autoconf regen (2.69) AC_CHECK_HEADERS sys/ioctl_compat.h sgtty.h
Also: autoconf: utilize HAVE_SYS_IOCTL_COMPAT_H HAVE_TERMIO_H
Also: Makefile: check make depend is parallel
Also: Makefile: removed errnous echo message for make.log
Also: Makefile: cleanup targets: standard tcl
Also: Makefile: allow 'modules' and 'libs' to build in parallel
Also: Makefile: fix 'force' target to ensure serialization
Also: Makefile: make -j ordering fix
Also: Updated the version to go along with the merge of pull request #428 from Darryl Miles, which overhauled the Makefile and cleaned up a lot of long-standing minor issues.
Also: appimage: GHA more debugging for fetch --tags issue
- posted: July 29, 2025 at 2:00am version: 8.3 revision: 533
Corrected an issue with "bloat-all ... [dist]" in which an attempt not to re-process processed tiles made an incorrect assumption, causing tiles not to be re-processed when the clip area changed, such that areas would be missed. It is not clear that in its corrected version, "bloat-all ... [dist]" is any more efficient than the original implementation of an incremental series of bloat + AND. At least the syntax in the tech file is much simplified.
appimage: GHA action/checkout fetch-tags=true workaround
Also: fix: add missing #include
Also: ext2sim.c: fix syntax error, missing argument name
Also: DBTechname.c: fix !MAGIC_WRAPPER incorrect use of TxPrintf() warning
- posted: July 28, 2025 at 2:00am version: 8.3 revision: 532
configure.in: AC_C_INLINE AC_C_RESTRICT
configure: autoconf regen (2.69) AC_C_INLINE AC_C_RESTRICT
Also: tile.h: TiFreeIf/TiFree1() API
Also: DBtiles.c: DBFreePaintPlane() remove the TiFree() deferred assumption
Also: TiJoin[XY]1() API introduction
Also: tiles: Make TiFree() easier to inline for compiler
Also: tile.h: move #includeinto tile.c
Also: TiJoin[XY]1 API introduction at all call sites
Also: tiles: Remove TiJoinFree() now that TiJoin[XY]1() exists and all use-cases utilize
Also: includewhere necessary in files using API calls
Also: configure.in: Add AC_HEADER_TIME
Also: configure: autoconf regen (2.69) AC_HEADER_TIME
Also: Use HAVE_SYS_TIME_H and TIME_WITH_SYS_TIME from autoconf where possible
Also: CalmaRdpt.c: -Wall -O3 snprintf("polygon%5d")
Also: CalmaRdpt.c: -Wall -O3 savedef used uninitialized
Also: F42: fix for etext symbol glibc 2.29+
Also: netlist.c: whitespace only cleanup
Also: fix GrTextSizePtr API interface return type consistency
Also: K&R magic/**
Also: K&R net2ir/**
Also: net2ir: use 'const' with 'rcsid'
Also: ext2sim: Remove non-existent function fwd-decl
Also: K&R ext2sim/*.c: bulk function implementation conversion
Also: ext2sim: Ensure main() have return type and arguments
Also: ext2sim: fixup prototypes for TxError() MainExit()
Also: ext2sim: use 'const' with 'rcsid'
Also: ext2sim.c: forward declaration prototypes
Also: ext2sim: Makefile target for: finds sim2simp
Also: ext2sim: use strict callback prototypes
Also: ext2sim: constify APIs and local vars
Also: sim2simp.c: constify file
Also: finds.c: constify file
Also: ext2sim.c: constify string globals
Also: ext2sim.c: constify whatever the compiler let me
Also: ext2sim.c: (ClientData) cast use PTR2CD()
Also: ext2sim: gratuitous constification of localvars, struct members, prototypes
Also: extraction: constify struct devMerge.next, devMergeList
Also: ext2sim: whitespace only changes
Also: ext2sim: cleanup unused localvars -Wunused-variable -Wunused-but-set-variable
Also: K&R ext2spice: remove non-existent function prototypes
Also: K&R ext2spice.h: conversion to ANSI
Also: ext2spice.h: one line per declaration
Also: ext2spice.h: move function prototype after arg type decls
Also: K&R ext2spice/*.c: bulk function implementation conversion
Also: ext2spice: use 'const' with 'rcsid'
Also: ext2spice: Makefile use EXT2SPICE_MAIN for deprecated standalone
Also: ext2spice: forward declaration arguments or removal
Also: cif_templates: Fix Makefile race condition with objs directory creation
Also: Updated the version number to go along with merges of pull requests from Darryl Miles and Torleif Skoar.
Also: Reducing VERSION back to the previous value so that a mirror copy of the bad code won't be made to github in case the issue with stdbool isn't resolved by tonight.
Also: Fixed an issue with a non-boolean variable in DBtiles.c being cast as "bool", causing issues with the proper/strict use of the "bool" type. Changed the version back so that it will update the github mirror tonight, since the current version appears to be working.
Also: appimage: The AppImageTool changes their releases distribution point
Also: appimage: use git show for hash of current checkout state
Also: appimage: whitespace only cleanup
Also: appimage: remove libfuse2 desktop-file-utils
Also: appimage: GHA fetch-tags=true
- posted: July 27, 2025 at 2:00am version: 8.3 revision: 531
CIFParsePath() prototype change to simply return of created data
tiles/tile.h: Remove unused inlines breaking older GCC
Also: GHA: appimage7: Maintenance update
Also: GHA: appimage7: appimage/* => appimage/7/* (relocate EL7)
Also: GHA: appimage7: fixup relocated files
Also: GHA: appimage8: Add support for EL8
Also: GHA: appimage9: Add support for EL9
Also: GHA: appimage10: Add support for EL10
Also: rtrTravers.c: missing const
Also: C23: CmdSubrs.c fixup deprecated isascii()
Also: C23: use AC_HEADER_STDBOOL #include
Also: configure: autoconf regen (2.69) AC_HEADER_STDBOOL
Also: tclmagic.c: memleak Tcl ref counting over Eval memory leak
Also: DBcellsrch.c: #ifdef ROUTE_MODULE around hook to update MZAttachHintPlanes()
Also: configuration: #ifdef ROUTE_MODULE
Also: configuration: #ifdef CIF_MODULE
Also: configuration: #ifdef LEF_MODULE
Also: textio/txCommands.c: add missing ifdef SCHEME_INTERPRETER
Also: magic/main.c: add missing ifdef SCHEME_INTERPRETER
Also: Updating the version number to go along with the merge of a bunch of pull requests (about half of those pending) from Darryl Miles.
- posted: June 20, 2025 at 2:00am version: 8.3 revision: 530
GHA: appimage.yml (move to ubuntu-latest)
GHA: canary-matrix.yml: use set -o pipefail
Also: GHA: canary-matrix.yml: remove sunseted ubuntu-20.04 runner
Also: GHA: main.yml (move to ubuntu-22.04)
Also: Updated the version to go along with pull request #406 from Darryl Miles (updates for github actions).
- posted: June 13, 2025 at 2:00am version: 8.3 revision: 529
Added a quick hack solution from Darryl Miles to prevent the database corruption discovered recently that was uncovered by a commit on Jan. 31 and is caused by DBMergeNMTiles0() using a freed tile (reported in github issue #404).
- posted: May 23, 2025 at 2:00am version: 8.3 revision: 528
Added some alternative key bindings to the keypad for "stretch" commands, because the keypad numerical values no longer work regardless of the setting of Num Lock. The keypad arrow keys alone implement "move", while Shift + keypad arrow keys implement "stretch".
- posted: May 17, 2025 at 2:00am version: 8.3 revision: 527
Corrected an error caused by extending the parsing of the FOREIGN keyword in LEF. FOREIGN may take an origin offset, but it is optional. The routine to check that there were no offset values in the statement incorrectly checked for a NULL token instead of a value ";" which would indicate an end-of-statement.
- posted: April 10, 2025 at 2:00am version: 8.3 revision: 526
Ti[GS]etClient() usage enforcement
TiGetClient() excessive use hotspots
Also: Plane[GS]etHint() added to encapsulate access to Plane->pl_hint
Also: tiles: remove non-existent function prototype TiSrArea()
Also: K&R tile.h: conversion to ANSI
Also: tiles: constify data and API call arguments as appropriate
Also: tiles: treat ti_client as pointer and use macros
Also: tiles: pointer arithmetic with 'unsigned long' is too narrow for _WIN64
Also: tiles: unclear why TileStoreFreeList is an exported global
Also: tiles: use 'const' with 'rcsid'
Also: bplane: constify BPEnumInit()
Also: K&R: tile/*.c bulk function implementation conversion
Also: tiles: reorder TileStoreFree()
Also: tiles: simplify TileStoreFree() and TileStoreFreeList_end management
Also: tiles: TileStoreFreeList_end removal
Also: This attempts to remove the number of active lines of code, branches from the TiAlloc() and TiFree() code path.
Also: tiles: TiPlaneRect const ripple
Also: calma: TiPlaneRect const ripple
Also: cif: TiPlaneRect const ripple
Also: extract: DBSrCellPlaneArea() cb_database_srcellplanearea_t extContainsCellFunc
Also: extract: DBSrCellPlaneArea() const Rect * arg2
Also: extract: DBSrCellPlaneArea() cb_database_srcellplanearea_t extContainsCellFunc()
Also: ext2spice: mergeAttr() fix, leak removal and restore original intention
Also: ext2sim.c: remove unused mergeAttr()
Also: configure.in: getrlimit setrlimit sys/resource.h
Also: configure: autoconf regen (2.69) getrlimit setrlimit sys/resource.h
Also: tclmagic.c: RLIMIT_NOFILE to 4096 on startup (only for TCL9 envs)
Also: grMain.c select() usage fix and protect from higher numbered fd's
Also: select() API usages add ASSERT() to validate fd number is in-range
Also: txCommands.c txInputDevRec FD select() usage overhaul
Also: txCommands.c TxGetInputEvent() rework main loop to iterate less
Also: SimRsim.c: remove declaration SimGetReplyLine() as it is in sim.h
Also: SimRsim.c: update with const API change to utils module
Also: K&R sim.h: conversion to ANSI
Also: K&R sim/*.c: bulk function implementation conversion
Also: sim: constify various APIs
Also: database.h.in constify various TileTypeBitMask* data usages
Also: sim: use 'const' with 'sccsid'
Also: sim: use pid_t where appropiate
Also: sim: remove declaration for getenv()
Also: sim: various cleanups (non existent funcs)
Also: database: DBPrintUseId() K&R removal
Also: database.h.in: dbcUnconnectFunc() add public prototype
Also: database.h.in: dbSrConnectFunc()/dbSrConnectStartFunc() add public prototype
Also: sim: DBSrPaintArea() cb_database_srpaintarea_t SimSelectFunc()
Also: sim: DBCellSrArea() cb_database_cellsrarea_t SimCellTileSrFunc()
Also: git rm SimSelect.c.new (was this always here?)
Also: ExtTech.c: fix uninitialized exts_linearResist value leaks into extresist
Also: ASSERT fixes (typo in variable and bad integer casting)
Also: plotPNM.c: Fix crash due to uninited rtl_args.outfile
Also: Updated the version number to go along with a bunch of pull request merges for PRs by Darryl Miles.
- posted: March 30, 2025 at 2:00am version: 8.3 revision: 525
Added handling of coordinates in a FOREIGN statement in a LEF macro. Based on observation of cells in PDKs where ORIGIN and/or FOREIGN are non-zero, added code that forces a correction of LEF macro coordinates to match the GDS coordinates, with an equivalent negative shift of the LEF macro ORIGIN to compensate. Normally, both ORIGIN and FOREIGN will be zero and the added code will do nothing. Note that this code does not handle the additional optional orientation. A LEF macro with a different coordinate system than its GDS is already weird; a LEF macro with a different rotation than its GDS is hopefully something that nobody ever does in practice. If needed, I'll cross that bridge when I come to it.
- posted: March 29, 2025 at 2:00am version: 8.3 revision: 524
Added a new "orthogonal" operator to cifoutput to allow non- manhattan shapes (especially minimum-sized ones) to be eliminated, as these can survive a shrink-grow operation intended to get rid of such shapes. This implementation may not be in its final form but should suffice for now.
- posted: March 27, 2025 at 2:00am version: 8.3 revision: 523
Modified the behavior of SelectCopy() so that it surveys cell instance names in both the selection and in the root edit CellDef, and then wipes duplicate names from the selection and regenerates unique IDs. This avoids the unexpected behavior displayed by magic in which a "copy" function renames the *original* instance and gives the original name to the copied instance. This is not only unexpected, but causes an error in which "undo" after multiple copies fails to remove earlier copies because the name change was not recorded, and the instance can no longer be found by name.
- posted: February 24, 2025 at 2:00am version: 8.3 revision: 522
Removed two unused statements from EFantenna.c, per the discussion in github pull request #377.
ResMain.c: use-after-free: simple reorder of statements
Also: K&R wiring.h wireInt.h: conversion to ANSI
Also: K&R wiring/*.c: bulk function implementation conversion
Also: dbwind: DBWAddButtonHandler() cb_database_buttonhandler_t
Also: wiring: constify API call arguments where possible
Also: wiring: use 'const' with 'rcsid'
Also: wiring: forward declaration prototypes and consistency
Also: CmdCD.c: fix missing 'else' from my recent commit e88dcba1c
Also: ResReadSim.c remove existing fclose() as conflict with recent change
Also: textio: removed prototypes for non-existant functions
Also: textioInt.h: add assumed prototype for Tcl_printf()
Also: K&R textio: conversion to ANSI
Also: K&R textio/*.c: bulk forward reference function prototype conversion
Also: textio: contify various APIs
Also: textio: constify various data
Also: textio: constify various internal
Also: textio: getenv() comes fromremove declaration
Also: txOutput.c: FILR -> FILE (typo fix)
Also: textio: create callback typedef cb_textio_input_t
Also: tclmagic.c: match new textio prototypes for constified implementations
Also: database: TxDialog() constification ripple
Also: TxParseString() refactor to 1-arg public form
- posted: February 23, 2025 at 2:00am version: 8.3 revision: 521
Added the ability to translate pointer-based "wire" commands from interactive wiring into coordinate-based commands. Added new command extensions for "wire leg", "wire vertical", "wire type", and "wire horizontal". Modified the command logging such that "wire show" (which does not modify layout) does not get logged, which avoids unnecessary logging of mouse movement.
extract.h/EFVisit.h include database.h for TileTypeBitMask
Also: ExtPerim.c: extEnumTilePerim() pass by-pointer const TileTypeBitMask* instead of by-value
Also: irRoute.c: LayerInTouchingContact() pass by-pointer const TileTypeBitMask* instead of by-value
Also: gaMazeRoute() pass by-pointer const TileTypeBitMask* instead of by-value
Also: Plow() pass by-pointer const TileTypeBitMask* instead of by-value
Also: plowFindWidth() pass by-pointer const TileTypeBitMask* instead of by-value
Also: plowFindWidthBack() pass by-pointer const TileTypeBitMask* instead of by-value
Also: plowSrOutline() pass by-pointer const TileTypeBitMask* instead of by-value
Also: plowSrShadow() pass by-pointer const TileTypeBitMask* instead of by-value
Also: plowSrShadowBack() pass by-pointer const TileTypeBitMask* instead of by-value
Also: plowSrShadowInitial() pass by-pointer const TileTypeBitMask* instead of by-value
Also: plowPropagateRect() pass by-pointer const TileTypeBitMask* instead of by-value
Also: plowInitRule() pass by-pointer const TileTypeBitMask* instead of by-value
Also: plowSrShadowXxx() callback plowShowShadow() correct return type
Also: Updated the HTML documentation on the "wire" command to add the new syntax implemented earlier today that preserves interactive wiring moves when logging commands.
Also: CodeQL File{MayNot,Never}BeClosed.ql file-handle resource leaks
Also: CodeQL FileMayNotBeClosed.ql PaCheckCompressed() apparently leaks an 'fd'
Also: Implemented the fix to an expression that should have been logical- AND and not bitwise-AND, as pointed out in PR #376 by Darryl Miles.
Also: CodeQL LateNegativeTest.ql defRead.c routerLayer>=0
Also: CodeQL InconsistentNullnessTest.ql ourgl != NULL
Also: CodeQL MissingNegativtyTest.ql magictype>=0 defWrite.c
Also: CodeQL MissingNegativtyTest.ql ttype>=0 ResSimSubckt()
Also: CodeQL IncorrectNotOperatorUsage.ql rtrDcmppose.c rtrCLEAR() usages
Also: CodeQL LargeParameter.ql: large objects returned (around fd_set usage)
Also: CodeQL MemoryMayNotBeFreed.ql calma/**
Also: CodeQL MemoryMayNotBeFreed.ql antennacheckVisit()
Also: CodeQL MemoryMayNotBeFreed.ql rtrCmd.c CmdRoute()
Also: CodeQL MemoryMayNotBeFreed.ql rtrCmd.c CmdRoute()
Also: CodeQL MemoryMayNotBeFreed.ql rtrChannel.c RtrChannelRoute()
Also: CodeQL MemoryMayNotBeFreed.ql ResRex.c ResCheckSimNodes()
Also: CodeQL MemoryMayNotBeFreed.ql NMnetlist.c NMWriteNetlist()
Also: CodeQL MemoryMayNotBeFreed.ql grTCairo1.c GrTCairoPlotSVG()
Also: K&R lefInt.h: missing prototype removal
Also: K&R lef.h lefInt.h: conversion to ANSI
Also: defRead.c: DefRead() incorrect arg0 to LefParseEndStatement()
Also: lef: post K&R constify ripple
Also: K&R lef/*.c: bulk function implementation conversion
Also: tcllef.c: missing include textio/textio.h (due to TxPrint usage)
Also: defWrite.c: defHNsprintfPrefix() constify implementation
Also: K&R lef/*.c: bulk forward reference function prototype conversion
Also: lef/*.h: constify string function arguments
Also: lef: use 'const' with 'rcsid'
Also: lef: cleanup remove unused local/static variables
Also: lef: cleanup mark unnecessary call to function with no side-effects
Also: lef: constify strings in data structures of lef module
Also: lef: constify static data and LefNextToken() return
Also: lef: constify remaining .data into .rodata
- posted: February 16, 2025 at 2:00am version: 8.3 revision: 520
Fixed an error in which using the command option "gds allow undefined" will cause a segmentation fault.
One additional fix which allows "gds write" to continue after a cell is found to be missing, if "gds allow undefined" has been set.
Also: Corrected a syntax error in the old (non-Tcl/Tk) grX11su1.c code that was introduced with a slew of updates back in October, as noticed and reported (with solution) by J. Schonberg.
- posted: February 13, 2025 at 2:00am version: 8.3 revision: 519
Added code to handle the case where GDS_FILE points to a filename that has since been compressed and given a ".gz" extension. Removed code that uses a system call to "gunzip" and "gzip" when the target file is compressed, since the compression is handled in the code.
- posted: February 10, 2025 at 2:00am version: 8.3 revision: 518
Fixed a rather long-standing error, which is that when scaling of "MASK_HINTS" was implemented, it was put into a routine that scales all coordinate-related properties, including "FIXED_BBOX", but the original code that scaled only "FIXED_BBOX" was never removed, resulting in the bounding box getting incorrectly scaled twice by any grid scaling.
Modified the behavior of "select area subcell" so that it no longer requires that subcells be unexpanded in order to select them. This seems to be more in line with what one would expect from the documented description of the "select area" command, and more in line with common-sense expectations.
- posted: February 6, 2025 at 2:00am version: 8.3 revision: 517
Corrected a crash condition caused by yesterday's commit, if the new CIF operator is used in a tech file. Reworked yesterday's commit to add more related operators, so there are now four new ones (also renamed them): interacting, noninteracting, overlapping, and nonoverlapping. "interacting" now means overlapping or touching; so the four cases allow all variations of adjacency between the two material types.
- posted: February 5, 2025 at 2:00am version: 8.3 revision: 516
Added a new CIF operator "interact" which enumerates disjoint regions of a given type and retains only those regions which interact with (overlap) another given type. Both sets of types can be either magic database types or CIF temp layers. This will allow the implementation of rules that were not previously possible.
Added a new CIF operator "not-interact" which is complementary to "interact", because it was trivially easy to implement and saves processing vs. doing the same thing with two templayers and an "and-not" operator.
- posted: January 16, 2025 at 2:00am version: 8.3 revision: 515
Added a fallback method for "extresist" whenever a device terminal connection to a net that has been decomposed into a resistor array cannot be found. This indicates some fundamental error in the way extresist works. However, it should not be producing an invalid and unsimulatable netlist. Instead, it makes an arbitrary connection from the device terminal to the resistor array and adds an entry in the output netlist (.res.ext file). This results in a poor representation of the resistor network to that terminal, but an otherwise simulatable netlist. A warning is issued to note that an arbitrary connection has been made. This is most typically a "garbage in, garbage out" situation in which insufficient information exists in a layout to inform magic on which direction current is traveling through a net. However, it should be possible to rewrite the extresist code so that magic makes somewhat informed decisions about current paths and produces a halfway decent representation of the actual net, instead of just giving up on the detailed extraction.
- posted: January 13, 2025 at 2:00am version: 8.3 revision: 514
Modified a routine to return a valid string when attempting to generate a name for an instance that is set to NULL. It is not clear to me by an instance would have a NULL name, but apparently it can happen, and should not crash magic.
- posted: January 11, 2025 at 2:00am version: 8.3 revision: 513
gcc: support -Werror=format-security
Updated the version to go along with the merge of pul request
Also: Added the contents of the "readline" module back. This is generally unused, as it is incompatible with the Tcl/Tk build of magic. However, I had not intended to remove it, only move the name from "readline-4.3" to "readline". But "readline/readline" was in .gitignore, which caused the contents to be removed from the repository. This commit restores those files, and also prevents the readline directory Makefile from making a symbolic link called "readline" to itself, which was causing compile-time issues. The readline code is only kept for backwards compatibility with ancient versions of magic not using the Tcl/Tk interpreter.
- posted: January 8, 2025 at 2:00am version: 8.3 revision: 512
gcc11 -Wall -Wpedantic cleanup
utils/*.c: K&R conversion to ANSI
Also: hash.c: K&R conversion to ANSI and constify arguments / callback
Also: extflat: K&R various converted to ANSI (mainly due to bool use)
Also: ihash.c: cleanup warning use of void* with pointer arithmetic
Also: database/database.h.in: const PaintResultType *resultTbl
Also: gcc11 -Wall -Wpedantic cleanup (post TCL9)
Also: gcc11 -Wall -Wpedantic cleanup (post TCL9) FUN2CD() CD2FUN()
Also: gcc11 -Wall -Wpedantic cleanup (post __attribute__)
Also: gcc11 -Wall -Wpedantic cleanup (post __attribute__ DLONG_PREFIX)
Also: gcc11 -Wall -Wpedantic document for the next person
Also: Revert "commands/CmdFI.c: added CmdFlush_NoConfirm option to disable flush prompt
Also: feat: flush [-noprompt], option support
Also: docs: quit -noprompt
Also: feat: quit [exit_status], option support
Also: CIFread.h: fix struct cifrstyle.crs_layers type bool -> enum (unsigned char)
Also: resis.h: create RESTRUE to replace use of TRUE macro ((bool)1)
Also: Updated the version number to go along with the merge of several pull requests from Darryl Miles.
- posted: January 7, 2025 at 2:00am version: 8.3 revision: 511
Modified the code in ext2spice.c that prints parameter values; the former code attempted to determine the precision and generate an output without unnecessary trailing zeros. Unfortunately there were counterexamples that fail to be formatted correctly, as found by Mark Martin, and which generate output that has roundoff error. Reimplemented the method using code found on StackOverflow, which appears to solve the problem more robustly.
- posted: January 5, 2025 at 2:00am version: 8.3 revision: 510
printf: use compiler __attribute__((format (printf,fff,aaa)))
printf: vararg functions use 'const' for format string
Also: magic.h: add macro __unused__
Also: utils/magic.h: ATTR_UNREACHABLE ATTR_NORETURN
Also: utils/main.h: MainExit() add ATTR_NORETURN hint
Also: grOGL1.c: use ATTR_UNREACHABLE to help analyser
Also: utils/magic.h: ATTR_SENTINEL __attribute__ ((sentinel))
Also: utils/magic.h: ANALYSER_xxxxxxxxxx __attribute__
Also: geometry.c: TxError() constify call-site
Also: tclmagic.c: printf style constify fmt call-site
Also: txOutput.c: printf style constify fmt call-site
Also: LIBtextio.c: printf style constify fmt call-site
Also: DRCtech.c: printf style constify fmt call-site
Also: ext2sim.c: printf style constify fmt call-site
Also: ext2hier.c: printf style constify fmt call-site
Also: EFerr.c: printf style constify fmt call-site
Also: extflat.h: efReadError() printf ATTR_FORMAT_PRINTF_1
Also: ext2spice.c: printf style constify fmt call-site
Also: TCL9: magic.h ClientData type change helper macros
Also: TCL9: _ANSI_ARGS_ compatibility macro removal
Also: TCL9: Tk_Offset() macro removal
Also: TCL9: CONST removal (all current compilers support const keyword)
Also: TCL9: CONST84 removal (all current compilers support const keyword)
Also: TCL9: Tcl_xxxxxxx() API changes around Tcl_SaveResult()
Also: TCL9: Tcl_Size type introduction
Also: TCL9: Tk_ConfigureWidget() function signature change
Also: TCL9: plugin createProc() function signature change ImgLayerCreate()
Also: TCL9: ClientData macro header file changes
Also: TCL9: ClientData macro assignment and access usage
Also: TCL9: Tcl_SetExitProc() API was removed
Also: TCL9: Tcl_InitStubs(version="9.0")
Also: TCL9: Tcl_GetIntFromObj() call checked
Also: TCL9: CmdLQ.c Tcl_AppendResult(... (char*)NULL) cast sentinal
Also: TCL9: TxResetTerminal(bool force) added arguments
Also: TCL9: *.tcl changes $::tcl_platform
Also: TCL9: FIXME OPTIONAL magic.h ClientData
Also: Revert "TCL9: *.tcl changes $::tcl_platform
Also: HACK tkcon.tcl to get it running
Also: cif/CIFgen.c: fix incorrect type bool -> int
Also: GHA: MacOS maintenance update
Also: CalmaRdpt.c: simplfy use of sprintf()
Also: calma: use 'const' with readonly data
Also: calma: use 'const' with 'rcsid'
Also: cif: use 'const' with 'rcsid'
Also: CIFrdpoly.c: qsort 'compar' function argument prototype fix
Also: cif: use 'const' with readonly data (also consumer DBpaint)
Also: cmwind: use 'const' with 'rcsid'
Also: cmwind: use 'const' with readonly data
Also: command: use 'const' with 'rcsid'
Also: command: use 'const' with readonly data
Also: debug: use 'const' with 'rcsid'
Also: debug/hist.c: constify and add prototype
Also: debug/debug.c: constify and add prototype
Also: Remove superfluous parenthesis around regular type declarations
Also: fix infinite def write
Also: lef/defWrite.c: reworked kareefardi_fix-def-write
Also: Updating the revision number to go along with the merging of a series of pull requests from Darryl Miles.
Also: Modified some lines in tkcon.tcl that make it compatible with both Tcl 8.6 and Tcl 9.0, fixing some features that got broken with an attempt to update the script for version 9.0.
- posted: December 27, 2024 at 2:00am version: 8.3 revision: 509
K&R calma: missing prototype: calmaWriteContacts()
K&R calma.h: conversion to ANSI
Also: K&R calmaInt.h: conversion to ANSI
Also: K&R calma: prototype for non-existent function: calmaWriteMarkFunc()
Also: K&R calma: prototype for non-existent function: calmaMergeBoundaries()
Also: K&R calma: remove system header time() K&R style prototype
Also: configure: autoconf regen (2.69) to add HAVE_SYS_TIME_H
Also: K&R calma/*.c: bulk forward reference function prototype conversion
Also: K&R calma/*.c: bulk function implementation conversion
Also: K&R CalmaRead.c: too many args for calmaLookCell()
Also: K&R calma: missing HAVE_ZLIB ifdef around function using type gzFile
Also: K&R CalmaWriteZ.c: move typedef to before forward declaration
Also: K&R CalmaWrite.c: move typedef to before forward declaration usage
Also: K&R calma: move internal prototypes and typedef to calmaInt.h
Also: commands/CmdFI.c: added CmdFlush_NoConfirm option to disable flush prompt
Also: GHA: main-macos.yml
Also: MacOS: FREAD rename to magicFREAD due to sys/fcntl.h definition
Also: scripts/configure_mac --x-includes=... --x-libraries=...
Also: MacOSX diagnostics Kick The Tyres
Also: configure.in: X11 detection and option order
Also: GHA: main.yml move MacOSX to its own workflow
Also: MacOSX diagnostics Search
Also: main-macos.yml install libglu freeglut on x86_64
Also: main-macos.yml log output extract CONFIGURE_ARGS
Also: main-macos.yml add Summary step
Also: main-macos.yml add Prepare archive and Upload archive steps
Also: calma/CalmaWrite.c: calmaProcessBoundary() Dereference of null pointer
Also: calma/CalmaWrite.c: calmaProcessBoundaryZ() Dereference of null pointer
Also: ext2spice.c: pname used before initialization
Also: EFbuild.c:1330 ASSERT(nn) added
Also: EFname.c: potential dereference of a null pointer
Also: extflat/EFname.c: EFHNBest() add argument ASSERT to convey intention
Also: ExtBasic.c: oppdir, The right operand of '==' is a garbage value
Also: gaStem.c: type, The left operand of '==' is a garbage value
Also: grDStyle.c: GrLoadStyles() scount, The left operand of '<' is a garbage value
Also: grDStyle.c: newres, Branch condition evaluates to a garbage value
Also: grOGL1.c: pipehandler() XEvent processing NULL deref
Also: grOGL1.c: GrOGLIconUpdate() potential -1 out-of-bound access
Also: grOGL3.c: font, The left operand of '==' is a garbage value
Also: grOGL3.c: add GrOGLTextSize() error return
Also: lefRead.c: LefError() add ASSERT(type) for incorrect caller usage
Also: grTCairo1.c: GrTCairoIconUpdate() potential -1 out-of-bound access
Also: grTk1.c: GrTkIconUpdate() potential -1 out-of-bound access
Also: grTOGL1.c: GrTOGLIconUpdate() potential -1 out-of-bound access
Also: grX11su1.c: GrX11IconUpdate() potential -1 out-of-bound access
Also: K&R: prototype for non-existent function: CIFGetDefaultContactSize()
Also: K&R: cif.h conversion to ANSI
Also: K&R: CIFint.h conversion to ANSI
Also: K&R: CIFread.h conversion to ANSI
Also: K&R: cif/*.c bulk forward reference function prototype conversion