Commit Graph

  • 23ab0ff2a0 toolchains/emscripten/defs.mak LINK with LD LDFLAGS Darryl L. Miles 2026-07-20 16:25:00 +01:00
  • 1bd1daf73a toolchains/emscripten/defs.mak LINK with LD Darryl L. Miles 2026-07-20 16:24:08 +01:00
  • adf5457eca wasm: emit debugging symbol source-map by default Darryl L. Miles 2026-07-20 12:04:01 +01:00
  • 665f65d61f configure: autoconf regen (2.69) LDFLAGS/CXXFLAGS/CXX/CC propagation fix Darryl L. Miles 2026-07-20 15:33:34 +01:00
  • dc31c1f6f6 Makefile: LDFLAGS autoconf propagation Darryl L. Miles 2026-07-20 15:21:56 +01:00
  • b6429a3b0b configure: autoconf regen (2.69) ld_first_libs Darryl L. Miles 2026-07-20 12:39:00 +01:00
  • 12c7927e88 Makefile: LD_FIRST_LIBS high-priority lib order conf control point Darryl L. Miles 2026-07-20 12:03:14 +01:00
  • 2bcf9637cb GHA: appimage*.yml: fetch-tags: true workaround (see actions/checkout~issue#1471) Darryl L. Miles 2026-07-20 10:53:00 +01:00
  • 17e3ff0058 GHA: main-wasm.yml: fixup the artifact download naming and contents Darryl L. Miles 2026-07-19 17:05:16 +01:00
  • b48ede74f3 GHA: main-wasm.yml: build with stable Tcl core-9-0-\d+ releases Darryl L. Miles 2026-07-19 16:46:11 +01:00
  • cb446b7ada GHA: main-wasm.yml: use newer node by default (v24 LTS) Darryl L. Miles 2026-07-19 16:18:43 +01:00
  • 433f43accf GHA: uses actions/* softprops/* version bumps Darryl L. Miles 2026-07-19 14:09:24 +01:00
  • 3fb47d9668 GHA: canary-matrix.yml maintenance +ubuntu-26.04 +gcc-16 +clang22 Darryl L. Miles 2026-07-19 12:52:32 +01:00
  • 86fbd2b50f Corrected a subtle error in "def read" in which if a net declares a non-default rule, but then does not contain any routed nets, the non-default rule gets accidentally applied to the next routed net, ignoring the end-of-statement in between. R. Timothy Edwards 2026-07-23 15:57:28 -04:00
  • 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. 8.3.676 R. Timothy Edwards 2026-07-17 13:39:51 -04:00
  • 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 -04:00
  • 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 -04:00
  • 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 -04:00
  • 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 -04:00
  • c6896e2a74 oa: apply code-review feedback — strcpy_s link fallback + argv cleanup Darryl L. Miles 2026-07-06 16:47:35 +00:00
  • f3f824a6bb magicOA.c: strcpy_s declaration (FIXME remove/move this) Darryl L. Miles 2024-10-04 20:28:13 +00:00
  • dfa28d1cd3 oa: replace strcpy() with strcpy_s() Darryl L. Miles 2024-10-04 20:26:12 +00:00
  • e5d6d3f429 oa/fake_oa_stub (header file oaDB.h) Darryl L. Miles 2024-10-04 20:22:03 +00:00
  • 9ae91bb4c9 oa: make it build (against stub) Darryl L. Miles 2024-10-04 20:14:01 +00:00
  • d9e76f372b .gitignore: add .deps/ Darryl L. Miles 2024-10-04 20:10:54 +00:00
  • fd676c5b10 git rm -rf oa/.deps/* Darryl L. Miles 2024-10-04 20:07:03 +01:00
  • 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 -04:00
  • 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 -04:00
  • 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 +02:00
  • 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 +02:00
  • 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 -04:00
  • 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 -04:00
  • 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 -04:00
  • 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 -04:00
  • dcff2f64b8 Corrected the HTML text of the "property" command documentation, which had mismatched delimiters, causing most of the entry to be displayed in boldface. 8.3.670 R. Timothy Edwards 2026-07-03 16:47:58 -04:00
  • 2f23be9dc3 hack: make flexible union members work on gcc≤14 8.3.669 Mohamed Gaber 2026-06-30 02:25:11 +03:00
  • 6638949233 codebase-wide: use flexible arrays where appropriate Mohamed Gaber 2026-06-30 01:32:20 +03:00
  • dc2ecf35f8 Corrected a crash condition in extresist where ResNodeList is not checked for being NULL before inserting a new node at the front of it. R. Timothy Edwards 2026-07-01 11:53:47 -04:00
  • 60061ea33f Missed one additional place where an "#ifdef MAGIC_NO_TK" block was needed, in the last commit. This fix should make the CI run clean again. 8.3.668 R. Timothy Edwards 2026-06-25 09:23:09 -04:00
  • e7b8e89d2f Added a few lines to ResMerge.c which avoid a crash condition when a resistor subnet has been linked to itself (or something like that). Otherwise it leads to a double-free and a crash. This commit does not address why the subnet was linked to itself, and the crash was preceded by another internal diagnostic message "Missing rptr at ..." which has been noted before but still needs to be tracked down and fixed. It is likely that a bad output netlist was created, but at least magic doesn't segfault. 8.3.667 R. Timothy Edwards 2026-06-24 13:51:40 -04:00
  • b266ec6272 Implemented the resistor "pi" model, which evenly splits the capacitance of a resistor device between the two terminals. If the resistor device model contains the capacitance, then the resistor type should not be included in types that generate parasitics. If not, then the "pi" model is used. The "tee" model is still available using "ext2spice resistor tee on". What this update does is to default to the "pi" model instead of ignoring the capacitance of the resistor type (e.g., "rm1"), and because the capacitance of that node is removed after distributing it between the two terminals, it will no longer produce a "floating" node in the netlist output. R. Timothy Edwards 2026-06-24 10:34:23 -04:00
  • 338b3899bf I broke the CI again for the "wasm" build by adding a Tk routine to the code (Tk_RestrictEvents()) without an "#ifndef MAGIC_NO_TK" around it. This commit fixes that error. R. Timothy Edwards 2026-06-24 09:20:06 -04:00
  • 3b272cc8d2 Corrected two "extresist" issues: (1) Prevent a segfault when reading a resistor device which uses the syntax where the resistor is given a value directly and not as a parameter; (2) allow the use of "extresist minres 0" (allow resistors in the output no matter how small). Thanks to Torleif Skaar for finding the issue with the resistor syntax. 8.3.666 R. Timothy Edwards 2026-06-23 19:41:53 -04:00
  • 06f0ce4259 One correction to the previous commit to avoid running Tk_RestrictEvents() when in batch mode (no graphics, therefore no Tk); otherwise, this causes magic to segfault. R. Timothy Edwards 2026-06-23 10:53:47 -04:00
  • d8046fba2d Corrected the other issue with timers in magic, which is that the "progress report" of percent completion on certain long-running processes (namely extraction, DEF reads, and GDS/CIF writes) was allowing Tcl/Tk events to be processed so that the display would be repainted and the console window updated to show the progress instead of hanging. But that was allowing any key macros or commands to be entered and executed, potentially corrupting the database while the process was running. I have used Tk_RestrictEvents() to prevent key and button events from being processed until afterward. This preserves the display updates (which do not alter the database) while preventing commands from being run during one of these long-running processes. Also: Previously, whenever a long-running process printed the status, it would not update at the end, leaving output like "52% complete" being the last output, leaving the impression that the process never finished. Changed the code so that if any partial progress is printed, then it will always finish up with the output "100% complete" so that it is clear to the user that everything went according to plan. R. Timothy Edwards 2026-06-23 10:08:31 -04:00
  • 5cf1a46061 Corrected two errors with the crash backup mechanism, one minor, one very major. The filename created had two slashes in the string ("/tmp//MAG...") because the temporary directory already has a slash in the string. This makes no practical difference but looks odd when printed to the terminal. The major error is that the Tcl script that re-establishes the timer after a backup had a typo that caused the timer never to be reset, resulting in crash backup files that are created and written once but never again. This egregious error has now finally been fixed. 8.3.665 R. Timothy Edwards 2026-06-22 21:52:06 -04:00
  • f4b210a9c0 Made a correction to the last commit, which is that when searching a shielded substrate area for devices with terminals connecting to substrate, search the entire cell hierarchy down to the bottom in that area, not just the immediate child cell. Also: Reduced the number of types being searched to ignore types in non-substrate areas like nwell, although it should not make a practical difference because those areas should not be searched. R. Timothy Edwards 2026-06-22 20:03:30 -04:00
  • 381714e2d5 Modified behavior with regard to substrate shield types being inside a subcell: A further check is done to see if there are any devices that interact with the substrate in the shielded area in the same subcell. If not, then this is a trivial case where a different substrate area exists but does not impact the subcell and should be ignored. This change prevents some extraction errors where a substrate area can get isolated because there was an unrelated substrate area nearby. Also: Corrected parsing of "dsubckt" types when reading .ext files; this applies to any device where the optional substrate is omitted. There are apparently two conflicting methods when a device doesn't have a substrate: (1) Output "None" for the substrate, or (2) don't output anything. The 2nd method can be detected by counting the number of arguments on the line in the .ext file. The extflat/ EFread.c code handles both methods. ResReadExtFile() now does too, but probably code should be changed to just use method (1) always. Also: Prevented the "tile not visited" error message in "extresist" from printing duplicate messages for every device associated with the same tile. The message can appear when a labeled net has unconnected regions, and "extract do unique" is not used. 8.3.664 R. Timothy Edwards 2026-06-13 16:08:05 -04:00
  • d44aeaa1d1 Incremented the version to go along with, and to test, the merge of pull request #527 from Enno, which allows the AppImage workflow to trigger on a version update when the version number doesn't start with a "v", as is the case for the repositories on opencircuitdesign.com. 8.3.663 R. Timothy Edwards 2026-06-10 08:54:50 -04:00
  • a7f2a38d32 Accept release tags without v prefix in the WASM npm publish gate. Enno Schnackenberg 2026-06-10 11:40:15 +02:00
  • a38fa29dac Added a check for exts_globSubstratePlane == -1 in ExtBasic.c, because this is the default value used if no substrate types are declared in the tech file; and if so, this would cause an out- of-bounds check. See Issue #523 on github from Darryl Miles. 8.3.662 R. Timothy Edwards 2026-06-09 17:41:28 -04:00
  • 295ec7e492 Corrected the hash tables recently added to the code in resis/, which used "HT_CLIENTKEYS" when they were intended to use "HT_WORDKEYS". See github issue #525 raised by Darryl Miles. R. Timothy Edwards 2026-06-09 17:37:51 -04:00
  • f650248764 Revised the code of PR #487 (previous merge) to follow the formatting used for other subroutines. R. Timothy Edwards 2026-06-09 16:17:57 -04:00
  • 8466279b6c Fix K%R in DBbound.c. Gon Solo 2026-01-23 17:48:18 +01:00
  • 7296aca107 Updated the version to go along with the merge of pull request #519 from Enno Schnackenberg (adding Tcl support for WASM builds). R. Timothy Edwards 2026-06-09 16:09:14 -04:00
  • 50320a055a npm: surface readable diagnostics on WASM test failures Enno Schnackenberg 2026-06-06 22:01:33 +02:00
  • d37793e7d0 update build.sh and readme.md Enno Schnackenberg 2026-05-29 20:21:31 +02:00
  • 4669fa9a9f Changed versioning scheme for npm package and update Readme.md Intubun 2026-05-29 13:10:44 +02:00
  • 4fe8f12595 update npm versioning, build.sh and delete tcl.ref and fix to latest stable Intubun 2026-05-22 12:49:02 +02:00
  • bc340fba16 build-tcl-wasm.sh: guard against missing tclConfig.sh after emconfigure Intubun 2026-05-21 14:40:27 +02:00
  • c4923d44a2 fix: sscanf length bound in TclmagicRegisterCommands; show output-tcl in CI Intubun 2026-05-21 14:28:09 +02:00
  • 1ca85fa372 fix: three correctness fixes before PR Intubun 2026-05-21 14:20:39 +02:00
  • 6efb44db0a fix: remove remaining intubun/tcl references and dead workflow comment Intubun 2026-05-21 13:28:46 +02:00
  • db36e896e6 refactor(tcl-examples): rename TCL scripts, drop dead pcell.tcl, fix comments and naming Intubun 2026-05-21 12:39:38 +02:00
  • ed576b23c8 fix(pcell): use magic::load to switch cell context before painting Intubun 2026-05-21 10:37:45 +02:00
  • 7c71d0f3e5 test(tcl): add TCL variant test suite including PCell generation Intubun 2026-05-21 10:25:58 +02:00
  • 5801acce62 fix(tcl-wasm): register magic:: Tcl commands after C initialization completes Intubun 2026-05-21 10:25:51 +02:00
  • 4dd0cfd472 docs(npm): add GitHub Packages install instructions and TCL variant documentation Intubun 2026-05-21 10:25:40 +02:00
  • d873cd7f2b wasm: increase initial memory to 64 MB and stack to 10 MB for larger designs Intubun 2026-05-21 10:25:33 +02:00
  • 2f2faf68eb Update tcl.ref Intubun 2026-05-18 08:28:31 +02:00
  • ab2515fd8f Update main-wasm.yml Intubun 2026-05-18 08:18:59 +02:00
  • e45db485d8 Add TCL-embedded WASM build variant alongside the existing non-TCL build Enno Schnackenberg 2026-05-17 21:41:03 +02:00
  • 8d61bae1f1 Corrected the "extresist" node merge routine to not merge away the ResNodeAtOrigin node, but to instead move it to the remaining valid node. 8.3.661 R. Timothy Edwards 2026-06-08 19:33:07 -04:00
  • 3934b77f64 Modified the GDS path handling so that duplicate points produce a warning appropriate for duplicate points and not a path reversal warning. Modified the output for path reversal or duplicate point errors so that the coordinate is in GDS units and not path units (which are multiplied by 2). R. Timothy Edwards 2026-06-08 15:58:06 -04:00
  • 788c73b867 Added some support for the open PDKs in the technology manager GUI. This uses environment variable PDK_ROOT to search for available technologies, and loads them by sourcing the .magicrc file instead of using "tech load". However, there are currently some caveats: (1) The device generators do not immediately appear in the window menu; a new window must be created for the extra menu buttons to be added; (2) Once a PDK sets up the menus, they cannot be revised. Switching to another technology causes the extra menu items to not appear at all. Both issues need to be addressed. R. Timothy Edwards 2026-06-08 15:10:14 -04:00
  • 83569da8b3 I hope this is the last change to the "extresist" code for a while. Corrected an error that was caused by moving the handling of the "Short"-type device from "extract" to "ext2spice". When running with "ext2spice extresist on", the "Short" device is read twice. Since it's being treated like an "equiv" statement, it's very important to do the node merge only for the device as it appears in the ".res.ext" file, and ignore the entry in ".ext", or the wrong nodes may get merged. This appears to be the last major error lurking in the "extresist" code, as I am now able to run full R-C extraction on an entire chip, in reasonable time. 8.3.660 R. Timothy Edwards 2026-06-07 20:30:33 -04:00
  • 65f034777e Corrected an issue where a device was given the wrong type due to ambiguity in the tech file and therefore also in the .ext file. This is easy to resolve and it was only necessary to change the type after finding the tile belonging to the device. There are pathological cases where this might still go wrong, like defining a "short" device name for metal resistors on any plane; then, if a "short" device overlaps something on another plane, it might be given the wrong type. Avoiding all ambiguity would require adding an extra item to "device" lines in the .ext file output; the short plane name would be most efficient. R. Timothy Edwards 2026-06-07 19:37:52 -04:00
  • 3667b348e8 Removed a few orphaned routines that were part of deprecated code and not being used. Corrected one other obscure error in which reading the .ext file picks up the wrong device type because it is possible to have multiple types map to the same device name. This is easy to detect and fix in place. R. Timothy Edwards 2026-06-07 16:31:23 -04:00
  • e2673e4e36 Found what I think is the last major issue in extresist, which is that the check for the "starting device" was not checking if a terminal was substrate, and so was treating it as a terminal, which would cause the extraction starting point to be set on the wrong plane, along with probably other unwanted behavior. Ignoring substrate terminals when checking for current drivers solved the problem. Also: Removed some code that had been reworked but was still sitting in an "#ifdef 0" block. R. Timothy Edwards 2026-06-07 12:35:45 -04:00
  • 14afb4bd52 The method committed yesterday (last commit) was found to be too time-consuming (note the commit message "There are still likely much better ways to do this"). Worked out a method of hashing the location of terminals on other planes so that they can be looked up from the address of the tile. This requires only one pass through the devices to locate and record the terminals, and no loops through devices when processing tiles. Also corrected the positioning of the substrate terminal to be the center position of the device tile, not the substrate tile. This not only better represents the substrate connections, but it also eliminates the condition in which many thousands of resistors converge on the same point, which causes stack overflow. With the current scheme, stack overflow is unlikely to occur. 8.3.659 R. Timothy Edwards 2026-06-06 20:04:47 -04:00
  • 1db2567841 Another major refactoring of code in extresist. This gets rid of several more questionable methods and allows extresist to find devices above nets that are part of substrate planes or terminals that exist on planes other than the device (like diodes, often). There are still likely much better ways to do this. 8.3.658 R. Timothy Edwards 2026-06-05 20:12:09 -04:00
  • 0efed5813e Corrected an issue in which permutable FETs were being assumed when checking device terminals in "extresist", leading to incorrect assignments for devices with only 3 terminals, or for asymmetric FETs. Corrected "select area label" which had stopped working from a handful of commits back when the "select" command was corrected for visible/invisible labels and cells. Corrected the "extresist mindelay" command option parsing, which was not allowing mindelay to be set to 0. R. Timothy Edwards 2026-06-05 15:46:54 -04:00
  • 43e4cf9b03 Expanded the use of the "tagged" operator to allow the use of "tagged <text>" without any additional arguments, to indicate that the operator should look for text that overlaps the current layer. That allows handling the case were a text tag is sitting over space inside a cell, which otherwise would not be able to be searched. Also corrected a likely issue in which point labels could not be used as tags because they have no area to search under. 8.3.657 R. Timothy Edwards 2026-06-04 21:20:03 -04:00
  • 7a0e2aa2b9 Additional corrections fix the problem of devices being removed from the output if they reference a killed node. This will result in an invalid netlist, but at least now all devices are represented in the output, and a warning is issued about the error. There are still multiple problems that need to be tracked down and fixed. Most problems are stemming from the unusual "Short" device handling. R. Timothy Edwards 2026-06-04 17:45:03 -04:00
  • a157ec9aa8 Another overhaul of the R-C extraction code. This fixes a known long-standing problem, in which the resistance extraction attempts to determine the device type of each device. Which is stupid, because the original extraction process has already done this, and the information is readily available in the .ext file. This update allows "extresist" to get all the device information from the .ext file, so there is no guesswork and no extra time spent trying. Unfortunately, it does not solve the problem I expected it to solve, which is the disappearance of _dss and moscap devices from gf180mcu netlists. More work to do. . . R. Timothy Edwards 2026-06-04 12:50:13 -04:00
  • 1a1cee058e Fixed an issue with the connectivity stack which does not change "lasttop" after a new heap has been allocated and "top" is reset. This is a minor issue, as even random data at the top of the newly allocated heap is vanishingly unlikely to make a match, but valgrind caught it as a use of unallocated memory, and it should be fixed. 8.3.656 R. Timothy Edwards 2026-06-03 11:34:41 -04:00
  • 799fd5d8f2 fix(ext2spice): use ';' instead of '$' for NGSpice end-of-line comments Torleif Skår 2026-06-03 14:38:06 +02:00
  • 21b8579734 Found the error with rg_maxres, which is that it was being used in one place as ohms and another as milliohms. Changed it to be milliohms always, except when written as output to the lumped resistance file or as diagnostic output. The result makes more sense, but now has the issue that the maximum resistance is always an over-estimate and may need to account for resistances in parallel. 8.3.655 R. Timothy Edwards 2026-06-01 17:33:45 -04:00
  • 03610f6d40 Additional tweaks to the handling of the three new options for determining what does and doesn't get into the R-C extraction output. Added option "debug" and moved all excess diagnostic information to be gated by this flag. Corrected an issue in the standard extraction in which the substrate is always output with zero lumped resistance, preventing it from being checked by "extresist" for inclusion or exclusion in the .res.ext output. Reinstated the computation of minimum resistance transistor but excluded other devices. Added more sane handling of exceptional conditions like loops. The result is a more consistent check of nets in the design. However, I still need to recheck the "rg_maxres" calculation because it appears to be too low. R. Timothy Edwards 2026-06-01 17:21:02 -04:00
  • c22031724a Some further refinements to the last commit, and other additions: (1) An incorrect use of ExtResetTiles() was found in "extresist" which impacts performance, especially for small nets. (2) Corrected units for resistance tolerance in extresist, and handled output printing in fs when delay values get below ps size. (3) Added command option "extract do unique notopports" to be the extraction option equivalent of the standalone command "extract unique notopports". (4) Changed the "extresist" default for "mindelay" to 1ps from 0, in response to the observation that lumped resistance from "extract" can be an extreme overestimate, and the extracted time delay from "extesist" calculations should be used as a better determination of whether a net should be output as a resistor network or not. (5) Added documentation for both "extract do unique notopports" and the change to the "extresist" default values. 8.3.654 R. Timothy Edwards 2026-05-29 17:16:37 -04:00
  • 349ffd091f Corrected an error when merging nodes during "ext2spice". The code was checking for device terminals that were pointing to the deallocated node and updating them. However, it failed to check for whether or not the substrate terminal was pointing to the deallocated node, potentially causing a crash condition. That has now been fixed. R. Timothy Edwards 2026-05-29 14:06:50 -04:00
  • 4393d9310a More work on the "extresist" code, this time to revise the way that "extresist" selects or rejects networks for resistance extraction. The "tolerance" value, which nobody (including myself) seems to understand, is now deprecated, replaced by a handful of more meaningful options: "threshold" to set a lumped resistance estimate threshold to determined whether or not to extract a network; "minres" to specify when to prune small resistors from the resulting tree network, and "mindelay" to gate the selection and output on the estimated signal propagation delay. With these settings, I am much better able to control the size and complexity of the resulting output. R. Timothy Edwards 2026-05-29 11:47:01 -04:00
  • 1bcad6a25c Significant overhaul of the extresist code. The purpose of this overhaul was to introduce the concept of a "connection point" between two cells to the ".ext" file format so that it becomes possible to do proper hierarchical R-C extraction. Previously this information was not kept in the .ext file, making it impossible for "extresist" to know what sub-net of a net connects up or down the hierarchy. However, additional changes were made to the extresist code (in the resis/ directory) to add the handling of connections up and down the hierarchy, and to make the code a lot clearer and fix ambiguous variable and subroutine names. 8.3.653 R. Timothy Edwards 2026-05-28 13:12:13 -04:00
  • d9e6c78adb Corrected an issue that was caused by early work on extresist: The original version of extresist only worked with 4-terminal FET devices, and handling of devices with fewer terminals was ignored, and never properly dealt with. This commit fixes the issues with devices such as diodes that have fewer terminals. 8.3.652 R. Timothy Edwards 2026-05-27 10:52:44 -04:00
  • d8580be739 Corrected a problem caused by fixing the "select visible" command with respect to visible/invisible labels and cells. The change inadvertently made the "select area" command option stop selecting labels on the same type as the layers being selected. This has been fixed. 8.3.651 R. Timothy Edwards 2026-05-26 17:01:45 -04:00
  • 1a16502a69 Fixed a potential string overrun crash condition when doing "getnode", as there is no limit on the length of a hierarchical node name, and no check on the string length when copying back into a fixed-length character array. 8.3.650 R. Timothy Edwards 2026-05-25 14:39:12 -04:00
  • 5ecf10c022 Updated the version to go along with the merge of pull request #521 from Sylvain Munaut, which fixes an issue with the "property" command when using the recently-added plane properties. R. Timothy Edwards 2026-05-25 12:07:33 -04:00
  • e366cf6a4c commands: Fix parsing of plane properties in case of single string Sylvain Munaut 2026-05-25 12:49:52 +02:00
  • 7ecebb5dd6 Corrected a stupid omission to set the plane hint during a search in "extresist", which when missing causes the plane to be searched repeatedly from the same point instead of from the last place searched. Can knock down the "extresist" time by up to 50%. 8.3.649 R. Timothy Edwards 2026-05-24 22:01:29 -04:00
  • 099d513011 Corrected the "Pick" button action in the "Library Manager" window; this had two issues: (1) "getcell" was not being called with "child 0 0", leading to child cells that are not placed where expected in relation to a grid snap setting; and (2) "cursor" was assuming internal units and needed that to be explicitly stated using "cursor internal". R. Timothy Edwards 2026-05-24 16:23:18 -04:00