Commit Graph

  • a22b7508ac Moved the freeMagic() of the labelList created for isolated substrate regions into extHardFreeAll(), where it is easy to detect if it has already been freed along with the rest of the labeled regions, to avoid a double free() call. master 8.3.676 magic-8.3 R. Timothy Edwards 2026-07-17 13:39:51 -0400
  • 42b346e318 Extended the function of the "findlabel" command; previously, the documentation implied that "findlabel -glob <pattern> <n>" is a meaningful set of command options, but in fact was not implemented and did not raise an error for wrong number of arguments. Instead, this has now been implemented to mean find (and set the box position to) the <n>th label containing <pattern>. R. Timothy Edwards 2026-07-17 12:07:25 -0400
  • 9aee1e688a
    Merge ff6bcecd9f into cc4da9a05f Darryl Miles 2026-07-14 13:32:18 +0000
  • ab24cdb2e8
    Merge fb85e97b92 into cc4da9a05f Oran C 2026-07-13 12:57:57 -0500
  • fdac34a7b5
    Merge 8a47a8ac58 into cc4da9a05f anirban 2026-07-13 11:28:05 -0500
  • 9070e18fac
    Merge f6b4671d96 into cc4da9a05f Dan Moore 2026-07-13 11:26:49 -0500
  • cc4da9a05f Corrected a subtle error in substrate extraction: In extHierSubstrate(), extFindNodes() is called to find just the substrate node, then ExtLabelRegions() is called to label the substrate node if such a label exists. The ExtLabelRegions() routine has a section at line 344 in which if it finds a label on the substrate plane that is over space, then it attaches the label to the default substrate region. However, if the label is inside an isolated substrate region, then it passes this check, which never actually detects whether or not the label is over space. Doing so is actually simple, since the preceding code detected connecting tiles under the label, and that fact just needed to be carried forward and checked. The upshot of the error was that if an isolated substrate region like a pwell inside deep nwell was *labeled*, then it would mysteriously get shorted to the global substrate, which is clearly wrong. Thanks to Mark Martin for providing the failing example (and apologies to Mark Martin for spending time trying to debug a very obscure problem). 8.3.675 R. Timothy Edwards 2026-07-11 17:09:26 -0400
  • 17ac06a24a Fixed the handling of printed units when "units grid" is used. The original implementation (which was added recently) used an inverted output scale and multiplied by it instead of dividing by it, resulting in incorrect units. However, it was not even getting to that point due to the use of uninitialized variable "crec", which should have been set from the window pointer but was missing. 8.3.674 R. Timothy Edwards 2026-07-10 19:59:05 -0400
  • 23a1c501ff Updated the version to go along with the merge of pull request #540 from Darryl Miles (makes some updates to the code in the oa/ directory so that it at least will compile, even if it is not usable). 8.3.673 R. Timothy Edwards 2026-07-09 10:41:44 -0400
  • c6896e2a74 oa: apply code-review feedback — strcpy_s link fallback + argv cleanup Darryl L. Miles 2026-07-06 16:47:35 +0000
  • f3f824a6bb magicOA.c: strcpy_s declaration (FIXME remove/move this) Darryl L. Miles 2024-10-04 20:28:13 +0000
  • dfa28d1cd3 oa: replace strcpy() with strcpy_s() Darryl L. Miles 2024-10-04 20:26:12 +0000
  • e5d6d3f429 oa/fake_oa_stub (header file oaDB.h) Darryl L. Miles 2024-10-04 20:22:03 +0000
  • 9ae91bb4c9 oa: make it build (against stub) Darryl L. Miles 2024-10-04 20:14:01 +0000
  • d9e76f372b .gitignore: add .deps/ Darryl L. Miles 2024-10-04 20:10:54 +0000
  • fd676c5b10 git rm -rf oa/.deps/* Darryl L. Miles 2024-10-04 20:07:03 +0100
  • 767cde0efc Two fixes: One by Claude Fable 5 which identified the two possible degenerate cases when attempting to find resistors in triangle topologies in ResMerge, which fixes the segfault in github issue diagnostic message. The other fix is part of github issue #538, which found an error in the check for tied transistor sources and drains. However, the other part of that issue, having to do with nondeterminism in the "extresist" output, has not yet been addressed. 8.3.672 R. Timothy Edwards 2026-07-08 13:25:01 -0400
  • 07d98a33c2 Fixed a negative tile width calculation in ResMakeRes.c, as pointed out by github user "LegumeEmittingDiode". I agree with the suggested fix and have implemented it exactly as suggested in github issue #537. R. Timothy Edwards 2026-07-08 09:51:37 -0400
  • d6438387ad Fixed a second emscripten 6.0.2 regression in the WASM build, this one at runtime rather than at compile time. emscripten 6.0.2 removed wasmBinary (along with a batch of GL/SDL members) from the default INCOMING_MODULE_JS_API list. The JS loaders in npm/examples pass Module.wasmBinary to embed the .wasm binary, and because the WASM build links with -sASSERTIONS=1, the now-unrecognized member triggers a hard runtime abort: "`Module.wasmBinary` was supplied but `wasmBinary` not included in INCOMING_MODULE_JS_API", failing every example test. Fixed by explicitly setting -sINCOMING_MODULE_JS_API in toolchains/emscripten/defs.mak to emscripten's full default list plus wasmBinary. Spelling out the whole default (rather than only the members our own loaders use) keeps external consumers of the npm package working if they supply locateFile, arguments, and similar Module options. Intubun 2026-07-07 14:14:21 +0200
  • 28483435f1 Fixed the WASM (emscripten) build, which broke starting with emscripten 6.0.2. The failure is not in magic itself but in the TCL dependency build: emscripten 6.0.2 began shipping a <sys/epoll.h> stub in its sysroot (6.0.1 did not), so TCL's configure now detects epoll on the Linux CI host via AC_CHECK_HEADERS([sys/epoll.h]), defines NOTIFIER_EPOLL, and compiles tclEpollNotfy.c. That file also requires <sys/queue.h>, which emscripten does not provide, so the build died with "fatal error: 'sys/queue.h' file not found". Fixed by passing ac_cv_header_sys_epoll_h=no to TCL's configure in toolchains/emscripten/build-tcl-wasm.sh, which forces the select()-based notifier. That notifier is the correct choice for single-threaded WASM anyway (emscripten's epoll is only a stub), and overriding the autoconf cache variable avoids patching the read-only TCL source tree and keeps the build working across future emscripten versions. Intubun 2026-07-07 14:14:21 +0200
  • 718e02ec3f Claude Fable 5 implemented capacitance checking at shape corners, after much discussion about the implementation. Since it is not exactly clear what the field lines do at corners, the implementation depends largely on an unknown and presumably global constant multiplier; this has provisionally been set to 1 but needs to be determined empirically with a field equation solver. At least one rational approximation suggests a value of pi/2 instead of 1. The corner capacitance can be considered a refinement of existing parasitic capacitance extraction, and since it takes a non-trivial additional amount of computation, it is left as an option to "extract" that can be turned on when a more accurate result is preferred at the expense of a longer extraction time. R. Timothy Edwards 2026-07-08 09:13:07 -0400
  • 980152ee68 Fixed a second emscripten 6.0.2 regression in the WASM build, this one at runtime rather than at compile time. emscripten 6.0.2 removed wasmBinary (along with a batch of GL/SDL members) from the default INCOMING_MODULE_JS_API list. The JS loaders in npm/examples pass Module.wasmBinary to embed the .wasm binary, and because the WASM build links with -sASSERTIONS=1, the now-unrecognized member triggers a hard runtime abort: "`Module.wasmBinary` was supplied but `wasmBinary` not included in INCOMING_MODULE_JS_API", failing every example test. Fixed by explicitly setting -sINCOMING_MODULE_JS_API in toolchains/emscripten/defs.mak to emscripten's full default list plus wasmBinary. Spelling out the whole default (rather than only the members our own loaders use) keeps external consumers of the npm package working if they supply locateFile, arguments, and similar Module options. Intubun 2026-07-07 14:14:21 +0200
  • ac059f0918 Fixed the WASM (emscripten) build, which broke starting with emscripten 6.0.2. The failure is not in magic itself but in the TCL dependency build: emscripten 6.0.2 began shipping a <sys/epoll.h> stub in its sysroot (6.0.1 did not), so TCL's configure now detects epoll on the Linux CI host via AC_CHECK_HEADERS([sys/epoll.h]), defines NOTIFIER_EPOLL, and compiles tclEpollNotfy.c. That file also requires <sys/queue.h>, which emscripten does not provide, so the build died with "fatal error: 'sys/queue.h' file not found". Fixed by passing ac_cv_header_sys_epoll_h=no to TCL's configure in toolchains/emscripten/build-tcl-wasm.sh, which forces the select()-based notifier. That notifier is the correct choice for single-threaded WASM anyway (emscripten's epoll is only a stub), and overriding the autoconf cache variable avoids patching the read-only TCL source tree and keeps the build working across future emscripten versions. Intubun 2026-07-07 14:14:21 +0200
  • 443045b331 Fixed a known issue in which the output of "vendor" (read-only) GDS can become corrupted if the name of the cell in magic changes from the name of the structure in GDS pointed to by the GDS_FILE property, and the new name is a different length from the original name. Fixed by Claude Fable 5 and checked for all name-change scenarios for both compressed and uncompressed output. 8.3.671 R. Timothy Edwards 2026-07-06 16:06:07 -0400
  • 36f697d0ef oa: apply code-review feedback — strcpy_s link fallback + argv cleanup Darryl L. Miles 2026-07-06 16:47:35 +0000
  • 4b39363a3b Adding some standard files and paths used by Claude Code so that AI metadata doesn't end up in the repository. R. Timothy Edwards 2026-07-06 11:14:19 -0400
  • f7d9385c87 Corrected the "char" casting of SigInterruptOnSigIO, which (1) must be able to hold the value -1, and (2) defaults to "unsigned char" on some systems. Explicitly casting this as "signed char" should avoid the problem. R. Timothy Edwards 2026-07-06 09:17:32 -0400
  • 3a1d63b856 Fix SIGSEGV in -dnull extraction/DEF read: guard Tk_RestrictEvents with TxTkConsole Harald Pretl 2026-07-06 11:47:12 +0800
  • b4ebece2c9
    hack: make flexible union members work on gcc≤14 Mohamed Gaber 2026-06-30 02:25:11 +0300
  • e9dc6979e8
    codebase-wide: use flexible arrays where appropriate Mohamed Gaber 2026-06-30 01:32:20 +0300
  • 4596ec6180
    Merge 435daea877 into d44aeaa1d1 Gonsolo 2026-06-11 16:52:26 +0200
  • 435daea877
    oa: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:16 +0200
  • 66a479714d
    commands: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:16 +0200
  • 1fb9dd6310
    windows: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:16 +0200
  • 132155c942
    debug: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:16 +0200
  • c74eaf4ee8
    netmenu: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:16 +0200
  • 7c4194e259
    resis: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:16 +0200
  • 60f3fec41c
    plot: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:16 +0200
  • 0c7d357a6d
    plow: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:15 +0200
  • dd13fcb777
    lisp: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:15 +0200
  • ee6901c02c
    irouter: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:15 +0200
  • 996b292a80
    garouter: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:15 +0200
  • 5f0f184f04
    mzrouter: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:15 +0200
  • e826c6c82f
    grouter: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:15 +0200
  • 561ea8135e
    router: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:15 +0200
  • fc95cacba2
    gcr: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:04 +0200
  • 1ac06cafc6
    select: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:04 +0200
  • 61a0a0541c
    extract: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:03 +0200
  • 97be8b72f0
    extflat: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:03 +0200
  • 413afd7a73
    drc: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:03 +0200
  • 314978eec5
    tcltk: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:03 +0200
  • 8f12f94f7f
    textio: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:03 +0200
  • 147ac45285
    dbwind: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:49:03 +0200
  • 4f8c244876
    graphics: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:48:52 +0200
  • da2438e5cf
    database: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:48:52 +0200
  • da6d49d1b3
    utils: convert K&R function definitions to ANSI C Andreas Wendleder 2026-06-10 03:48:52 +0200
  • ddcb6e96f2
    build: add -std=gnu17 for the GCC 16 / C23 build Andreas Wendleder 2026-06-10 03:48:36 +0200
  • 357fed9a59
    Merge pull request #1 from Intubun/wasm-test-diagnostics Intubun 2026-06-06 22:28:46 +0200
  • edf1be17e6 npm: surface readable diagnostics on WASM test failures Enno Schnackenberg 2026-06-06 22:01:33 +0200
  • cb35703ac1
    Merge branch 'RTimothyEdwards:master' into master Intubun 2026-06-06 21:29:40 +0200
  • a809361d69 fix(ext2spice): use ';' instead of '$' for NGSpice end-of-line comments Torleif Skår 2026-06-03 14:38:06 +0200
  • c69ad8efe7
    Merge 402080049b into d9e6c78adb Darryl Miles 2026-05-30 03:19:20 +0800
  • 16c0ab35b1 update build.sh and readme.md Enno Schnackenberg 2026-05-29 20:21:31 +0200
  • e188ac3004 Changed versioning scheme for npm package and update Readme.md Intubun 2026-05-29 13:10:44 +0200
  • a7cb1f9a6e update npm versioning, build.sh and delete tcl.ref and fix to latest stable Intubun 2026-05-22 12:49:02 +0200
  • 8e70cbffc8 build-tcl-wasm.sh: guard against missing tclConfig.sh after emconfigure Intubun 2026-05-21 14:40:27 +0200
  • 439730a13b fix: sscanf length bound in TclmagicRegisterCommands; show output-tcl in CI Intubun 2026-05-21 14:28:09 +0200
  • 7e26b59f38 fix: three correctness fixes before PR Intubun 2026-05-21 14:20:39 +0200
  • fc3d8cf352 fix: remove remaining intubun/tcl references and dead workflow comment Intubun 2026-05-21 13:28:46 +0200
  • eae3b70619 refactor(tcl-examples): rename TCL scripts, drop dead pcell.tcl, fix comments and naming Intubun 2026-05-21 12:39:38 +0200
  • c78a81aa56 fix(pcell): use magic::load to switch cell context before painting Intubun 2026-05-21 10:37:45 +0200
  • 1f19ac913f test(tcl): add TCL variant test suite including PCell generation Intubun 2026-05-21 10:25:58 +0200
  • 8fdd2eec20 fix(tcl-wasm): register magic:: Tcl commands after C initialization completes Intubun 2026-05-21 10:25:51 +0200
  • 4eb8a4da40 docs(npm): add GitHub Packages install instructions and TCL variant documentation Intubun 2026-05-21 10:25:40 +0200
  • 64fcbb6581 wasm: increase initial memory to 64 MB and stack to 10 MB for larger designs Intubun 2026-05-21 10:25:33 +0200
  • 7e02395591 Update tcl.ref Intubun 2026-05-18 08:28:31 +0200
  • bf9559cecd Update main-wasm.yml Intubun 2026-05-18 08:18:59 +0200
  • 6b3b2f5162 Add TCL-embedded WASM build variant alongside the existing non-TCL build Enno Schnackenberg 2026-05-17 21:41:03 +0200
  • 3f0ef53527
    Delete duplicate magicps.pro file Ahmed Nematallah 2026-05-17 03:46:10 +0200
  • f3c2571b55
    Update the postscript file to be able to support much more stipples Ahmed Nematallah 2026-05-17 03:41:07 +0200
  • 580c80a540 fix: V-001 security vulnerability orbisai0security 2026-05-16 08:05:47 +0000
  • 109a47a8b8 update main.yml Enno Schnackenberg 2026-05-11 06:59:25 +0200
  • e985eb4d27 update main.yml Enno Schnackenberg 2026-05-11 06:57:32 +0200
  • 9825aa7cf7
    Merge branch 'RTimothyEdwards:master' into master Intubun 2026-05-11 06:45:39 +0200
  • 998b931a2a
    Merge branch 'RTimothyEdwards:master' into master Intubun 2026-05-08 08:49:07 +0200
  • be0c90337e Update extract.tcl Enno Schnackenberg 2026-05-07 07:17:45 +0200
  • 52d62a3509 Update extract.tcl Enno Schnackenberg 2026-05-07 06:57:26 +0200
  • 8b33e891e2 Update extract.tcl Enno Schnackenberg 2026-05-07 06:53:37 +0200
  • c24d9e3676 Update extract.tcl Enno Schnackenberg 2026-05-07 06:49:58 +0200
  • b32c2117ff Update extract.tcl Enno Schnackenberg 2026-05-07 06:48:02 +0200
  • e9249ef2e4 Update extract.tcl Enno Schnackenberg 2026-05-07 06:44:13 +0200
  • 2157163379 Update main-wasm.yml Enno Schnackenberg 2026-05-06 20:06:47 +0200
  • 1e56445453 Rework WASM CI structure Enno Schnackenberg 2026-05-06 19:47:08 +0200
  • 17b30b517a Change npm examples to scmos examples Enno Schnackenberg 2026-05-06 19:16:55 +0200
  • ba6289478e ci: add ARM WASM build job with Emscripten diagnostics to CI-aarch64 Intubun 2026-05-06 11:02:29 +0200
  • 30d40fb206 Annotate ClientData callbacks: /*ARGSUSED*/ + /* UNUSED */ markers Intubun 2026-05-06 10:43:34 +0200
  • 003babee04 npm: stamp version as base-YYYYMMDD.hash on every CI build Intubun 2026-05-06 10:38:06 +0200
  • 93bf324007 CI: publish to GitHub Packages, emsdk latest by default, add ARM WASM job Intubun 2026-05-06 07:27:29 +0200
  • f5fa4d3603 Add npm package and CI workflows Intubun 2026-05-04 13:32:51 +0200
  • 683bcfd867 cmwind: ARGSUSED/UNUSED annotation on CMWreposition (newScreenArea unused) Intubun 2026-05-06 07:01:54 +0200