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: 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