Commit Graph

  • 4d2912a406 Corrected the return value of spcWriteValue() (recently added) from "bool" to "void" (does not return a value). 8.3.566 R. Timothy Edwards 2025-10-21 09:15:05 -04:00
  • b668b02a1f Corrected a problem in which "cellname delete" never cleared the cell name from the cell name hash table. So when "cellname rename" was changed recently to prevent changing the name of a cell that already exists, the suggested recipe for R-C extraction no longer works: "load x; flatten y; load y; cellname delete x; cellname rename y x". Solved by adding a HashRemove() function to the cell deletion routine. Thanks to Egor Lukyachenko for reporting the issue (Github issue tracker #467). 8.3.565 R. Timothy Edwards 2025-10-20 11:03:03 -04:00
  • 6b8f5d1d67 Modified the toolkit behavior so that a default callback to update the dialog (and run limit checks) is installed by default on checkboxes and selection menus, as it is already done for entry boxes. Otherwise it is possible to make a selection (like changing a device type) that invalidates the existing values, but if Apply is hit immediately afterward, then no checks will be run and the values may be used as-is even if invalid. This does not prohibit the use of "add_dependency" to change the callback behavior. 8.3.564 R. Timothy Edwards 2025-10-16 17:08:15 -04:00
  • c977e4cf76 Corrected an error introduced yesterday by a hasty fix, which ended up breaking the "extresist" function by failing to parse the comment line of a .sim file. This is now fixed. 8.3.563 R. Timothy Edwards 2025-10-15 10:00:02 -04:00
  • 9327e319da Corrected ext2sim to handle the new "dsubcircuit" device type, added in a recent commit. The extension was handled by "ext2spice" but "ext2sim" was missed. Without it, "extresist" will fail for any circuit containing a device defined in the tech file extract section with "dsubcircuit". R. Timothy Edwards 2025-10-15 08:31:58 -04:00
  • 0e84616af8 Corrected an error that allows a cell to be renamed with the name of an existing cell, which does not appear to be a fatal problem, but must be causing a memory leak. Also: Corrected an error in extresist when reading .sim files, in code that is slated to be overhauled, so this is just a patch to avoid a crash condition. 8.3.562 R. Timothy Edwards 2025-10-14 10:36:07 -04:00
  • c42db8e71b Modified the key input redirection so that it captures and handles Control-u in the same way that tkcon does, so that when typing via redirection into the console, Control-u will delete the entire command back to the prompt. (See github issue #456.) 8.3.561 R. Timothy Edwards 2025-10-10 10:39:40 -04:00
  • 27c423c2ed Substantially revised the "macro" command callback functions and the "tool" implementation. Previously, the "tool" implementation would overwrite the button bindings for the mouse. The problem with that is that if the user customizes one or more of the bindings, such as using the mouse wheel for zooming instead of panning, then the custom macro gets obliterated when the tool changes. The reimplementation creates multiple macro sets which are unique to each tool. The "enable_tools" function sets up the initial unique default bindings for each tool. The user can then customize the bindings for any tool, and the implementation no longer requires the constant changing of key bindings. Note that the new implementation is slightly less efficient because the macro tables are found by string hash based on the name of the tool or client type, not the integer client ID. The reduction in efficiency is balanced by the increased flexibility of the macros. 8.3.560 R. Timothy Edwards 2025-10-09 15:43:54 -04:00
  • 53e7dfe04c ext2spice.c: ifdef for !MAGIC_WRAPPER build 8.3.559 Darryl L. Miles 2025-10-08 23:12:35 +01:00
  • 9ca81f8ea6 Modified the "tag" command to add an optional subcommand "add" or "replace" as the 2nd argument. This allows a simpler 'tag add <command> <value>' than the existing awkward 'tag <command> "[tag <command>]; <value>'. Using "add" also helps avoid mistakes like one that was in the code for a long time which overwrites one of the helper window callbacks. With this done, added some additional callbacks to the "library manager" to update when a new file is created by "select save" or "writeall". Also added "Refresh" buttons to these windows, just in case. Implemented a zoom function on the mouse scroll wheel when the Control key is pressed. This is a stop-gap for a problem with overriding button bindings that re-establish themselves when the tool (box, wiring, etc.) changes. That needs to have a more comprehensive solution (such as tool-specific bindings). R. Timothy Edwards 2025-10-08 17:11:27 -04:00
  • d822353e85 One additional fix, since the previous fix needed to be made in both ext2spice.c AND ext2hier.c. R. Timothy Edwards 2025-10-08 10:08:29 -04:00
  • 4951f013d5 Corrected the output of the new "dsubcircuit" device which was generating output for one of the device nodes twice in the netlist. R. Timothy Edwards 2025-10-08 10:04:38 -04:00
  • d3a0228958 Added a new device type "dsubcircuit" which basically behaves like "csubcircuit" but swaps the first two pins (with the device identifier layer becoming the 2nd pin and the other terminal the first), which is needed for n-type diodes modeled as subcircuits where the subcircuit pin order matches the order of pins for a SPICE n-type diode component. Previously "msubcircuit" was used for this purpose, but will calculate the wrong L and W. While use of L and W for diodes is rare, this device type also works for reversed capacitors (where the bottom or non-identifying layer terminal is in the first pin position of the subcircuit). 8.3.558 R. Timothy Edwards 2025-10-07 16:45:22 -04:00
  • 656d27b17a Added a new "devresist" type "terminal" to account for resistor terminal resistance, for cases where the resistor value is estimated and output along with (or instead of) the physical length and width or area and perimeter. Corrected the "area" and "perimeter" type handling so that they combine in parallel, not in series (note that "perimeter" resistance is just an area resistance with the depth of the material factored in). R. Timothy Edwards 2025-10-07 12:12:33 -04:00
  • 3631892cfa One more minor change to the behavior just implemented: A value for a resistor or capacitor is optional but is valid SPICE and not just limited to CDL format, so it is now allowed to add "r=" at the end of a resistor or capacitor component (not subcircuit) to generate the optional component value. 8.3.557 R. Timothy Edwards 2025-10-06 20:37:30 -04:00
  • 8c323803b7 Additional modification to write out a resistor or capacitor value as-is, without a parameter name and before any device model name or substrate pin, according to CDL syntax, if the parameter has been specified without a parameter name (e.g., "r=" instead of "r=r"). Corrected an error in the extract code which put the substrate node name in front of parameters instead of after. This was previously unexercised because only in CDL format does a resistor or capacitor model have parameters listed by name. R. Timothy Edwards 2025-10-06 17:42:34 -04:00
  • acdfb256a1 Made a change to CDL format output to place the substrate parameter in front of the device name, which is a very inconsistent way to make the syntax, but whatever. R. Timothy Edwards 2025-10-06 16:40:19 -04:00
  • 5e74ecf9fa Added code to avoid a segfault if a resistor or capacitor is specified without a list of substrate connection types, but the "s=" parameter is used, resulting in an attempt to access a substrate node that does not exist. R. Timothy Edwards 2025-10-06 14:14:05 -04:00
  • d6d8620a7c Added new statements "connect" and "disconnect" to the extract section of the tech file, which can be used to alter the layer connectivity tables from the default. This can be used, for example, to disconnect substrate and well from taps, to generate a netlist that checks for soft-connect errors. R. Timothy Edwards 2025-10-06 11:50:38 -04:00
  • a2390167e6 Updated the version to go along with the merge of pull request #455 from Darryl Miles. 8.3.556 R. Timothy Edwards 2025-10-04 20:50:51 -04:00
  • 3cfc24f4b9 AppImage: AppRun use #!/usr/bin/env bash Darryl L. Miles 2025-10-03 23:42:55 +01:00
  • 7e12bec49d txInput.c: comment #endif markers Darryl L. Miles 2025-10-03 23:40:59 +01:00
  • 5f1f92f30d GHA: update canary-matrix.yml Darryl L. Miles 2025-10-03 23:38:09 +01:00
  • 15faa19346 configure: autoconf regen (2.69) --enable-readline-bundled GR_SRCS Darryl L. Miles 2025-10-03 23:35:22 +01:00
  • af7b6bf119 graphics: minor change to Makefile and configure Darryl L. Miles 2025-10-03 23:34:52 +01:00
  • 8b0616eaf5 readline: add configure --enable-readline-bundled option Darryl L. Miles 2025-10-03 23:32:54 +01:00
  • 2b62123459 SimRsim.c: removal of pre-POSIX.1-2001 select() interface ifdefs Darryl L. Miles 2025-10-03 23:27:29 +01:00
  • 2259ef626d SimRsim.c: EMSCRIPTEN fix for select/fd_set Darryl L. Miles 2025-10-03 23:25:45 +01:00
  • 3c9987f460 CmdFI.c: CmdGoto() correct printf output Darryl L. Miles 2025-10-03 23:23:05 +01:00
  • f4212d8e0e graphics: cleanup various warnings Darryl L. Miles 2025-10-03 23:20:09 +01:00
  • a16c667290 txInput.c: USE_READLINE constify rl_completion_function Darryl L. Miles 2025-08-25 12:04:24 +01:00
  • 6e2babd141 txInput.c: constify localvars Darryl L. Miles 2025-08-25 11:58:36 +01:00
  • b80279c6db grOGL1.c: HashLookOnly() using X11 Window type a key on LLP64 needs cast Darryl L. Miles 2025-08-25 11:56:38 +01:00
  • 722209b1ae parser.c: ParsSplit() constify (const char **remainder) Darryl L. Miles 2025-08-25 11:49:47 +01:00
  • 692c0f2339 grX11su3.c: warning for ClientData compare Darryl L. Miles 2025-08-25 11:44:33 +01:00
  • dbdec3aa17 readline/Makefile: lib target (for no-tktcl build option) Darryl L. Miles 2025-08-25 11:38:20 +01:00
  • f7d2debb98 txOutput.c: $PAGER handling constify Darryl L. Miles 2025-08-25 11:32:21 +01:00
  • 0f047b89ce txMain.c: readline needs function shim for prototype difference TxGetChar Darryl L. Miles 2025-08-25 11:29:34 +01:00
  • 3b57ae1179 txMain.c: MAGIC_WRAPPER constify fix Darryl L. Miles 2025-08-25 11:25:27 +01:00
  • dc45242d46 database: DBTypeLongNameTbl() constify data (const char*) Darryl L. Miles 2025-08-25 11:19:15 +01:00
  • 6d8c3eee1a database: DBTechAddPlane() constify API (const char*) Darryl L. Miles 2025-08-25 11:16:55 +01:00
  • c8fe30398b database: DBTechInitPlane() consumer (DBPlaneLongNameTbl constify) Darryl L. Miles 2025-08-25 11:13:38 +01:00
  • 5093182f4a database: DBPlaneShortName() return const char * Darryl L. Miles 2025-08-25 11:08:26 +01:00
  • 4864a80179 database: DBTypeShortName() return const char * Darryl L. Miles 2025-08-25 11:01:41 +01:00
  • 70054ccde2 EFread.c: ANSI prototype efReadDef() Darryl L. Miles 2025-10-03 23:12:39 +01:00
  • c007d8077c EFbuild.c: ANSI prototype efBuildDevNode() Darryl L. Miles 2025-10-03 23:11:45 +01:00
  • da216195b3 SimSelect.c: fix theoretical potential to write to .rodata string Darryl L. Miles 2025-10-03 23:08:39 +01:00
  • 5fe586100b extflat: ANSI prototype efBuildDevice() and constify (const Rect*) Darryl L. Miles 2025-10-03 22:33:46 +01:00
  • c7ef7d743a CmdRS.c: SimGetNodeCommand() returns (const char *) now Darryl L. Miles 2025-10-03 22:33:11 +01:00
  • df7b9079bd CmdFindLabel: fix off-by-one error with: findlabel -glob name Darryl L. Miles 2025-10-03 22:32:18 +01:00
  • cfd1d567bd commands: Various fixes for TxPrintf() with !MAGIC_WRAPPER Darryl L. Miles 2025-10-03 22:10:25 +01:00
  • b1424bfaf3 plow: add ANSI prototypes plowMergeBottom() plowMergeTop() Darryl L. Miles 2025-10-03 22:08:37 +01:00
  • aef23fd5f3 plotRutils.c: use #include <math.h> Darryl L. Miles 2025-10-03 22:07:14 +01:00
  • 1dfe1ed645 SimSelect.c: constify (const char*) TLE.tl_nodeName TLE.tl_simLabel Darryl L. Miles 2025-10-03 22:06:56 +01:00
  • 9c5cf1a567 magic.h: DLONG_PREFIX add other Linux 64bit ifdefs Darryl L. Miles 2025-10-03 22:05:39 +01:00
  • 55931e8811 GHA: .github/workflows/main-aarch64.yml Darryl L. Miles 2025-10-03 21:05:33 +01:00
  • bb131f14d0 One additional modification to output the message about duplicate cells as a "note" if "gds noduplicates" has been set, and a "warning" otherwise. This makes error handling of magic's output a bit easier. 8.3.555 R. Timothy Edwards 2025-10-01 15:38:41 -04:00
  • 78f7d22796 A number of changes: 1) Corrected spurious error messages about cells already existing in GDS when using "flatten" or "flatglob". 2) Fixed handling of resistance as a subcircuit parameter 3) Added area and perimeter resistance for a device; this is done through the "devresist" statement in the tech file, which is an extension of the original "fetresist" statement. Where "fetresist" only supported type "linear", "devresist" supports types "area" and "perimeter". 4) Support for CDL syntax, including generating subcircuit-like parameters for components starting with SPICE-standard prefixes like M, R, C, etc., adding "/" between pins and subcircuit name, and saving the file as ".cdl" instead of ".spice". 5) Estimated L and W for devices whose geometry is complex and do not reduce to a simple rectangle. L and W are estimated as the square root of the area. 6) Changed the method of extracting L and W for diodes to use the same method as capacitors. Note that diodes are not usually specified by L and W, but if they are, this will produce the right result. 7) Corrected the reported filename and line number when printing error messages related to errors inside a technology file, when the technology file uses "include" to combine multiple files. R. Timothy Edwards 2025-10-01 15:17:49 -04:00
  • b1c7b52ed2 Modified "gds flatglob" to have the value "*_CDNS_*" by default, since this is a common artifact of foundry cells and almost always incompatible with magic. Modified the "port" command to allow "port make <index>" on a label where other labels of the same text already have the same index. Removed deprecated documentation and added some missing documentation, such as an explanation of the "ext2spice subcircuit auto" option. 8.3.554 R. Timothy Edwards 2025-09-26 09:18:43 -04:00
  • 5de118b762 Corrected the greatest common factor routine that is run when doing "save", which was missing checks on properties representing coordinates (e.g., FIXED_BBOX) resulting in those values potentially getting truncated by scaling the output to an incompatible common factor. Thanks to Sylvain Munaut for finding the issue! 8.3.552 R. Timothy Edwards 2025-09-17 12:20:13 -04:00
  • 00e3bbd12a Corrected the tech loader, which was failing to set the file prefix when doing a reentrant load, causing include files to not be found. Fixed a divide-by-zero issue that occurs when some tech file sections are not loaded to the abovementioned error. 8.3.551 R. Timothy Edwards 2025-09-11 10:51:14 -04:00
  • 0022c502c8 Correction to dbReComputeBboxFunc() to fix a potential issue with an uninitialized bounding box value. 8.3.550 R. Timothy Edwards 2025-09-10 16:54:25 -04:00
  • 741216d6f3 Added a new command "archive" that works roughly like the "crash" command, but with some critical differences, since the "crash" command is designed for crash backups. "crash" will save in a temp file and removes the file after a successful recovery. "archive" can be used at any time to make a complete snapshot of a layout in a single file, or to read back that snapshot. There is a "writeall" option that will make a snapshot including layout of all read-only (PDK) cells. R. Timothy Edwards 2025-09-10 12:40:40 -04:00
  • 6195c20d3d Fixed an egregious error introduced by the "save <file>.tcl" command handling in the previous commit, that can cause a crash whenever "writeall" is called while a cell's filename is still NULL. Thanks to Daniel Estevez for reporting the error. 8.3.549 R. Timothy Edwards 2025-09-08 09:22:14 -04:00
  • 59a1953f3c Modified the GDS read routine to give location information when a self-intersecting or reversing path is seen in the input. Added a new feature in which "save <cell>.tcl" will create a file of magic commands that will re-create the cell when sourced as a command file. 8.3.548 R. Timothy Edwards 2025-09-05 17:51:46 -04:00
  • b1095b323c Added a command option for "select move" without specifying the X and Y values, in which case the selection is moved to the current pointer position. This allows a different implementation of the "copy" command as "select move; select keep", which avoids the problem that "copy" has of modifying the selection with layer interactions with the existing layout. 8.3.547 R. Timothy Edwards 2025-08-27 09:57:22 -04:00
  • e9f2628f41 Reworked the "def read" command such that it creates a new CellDef for the DEF file contents, and loads the cell into the layout window when done. That makes it consistent with other similar functions such as "gds read". Existing scripts which create (by loading) a new cell before reading the DEF should not be affected by the change. 8.3.546 R. Timothy Edwards 2025-08-26 14:48:27 -04:00
  • e04307c085 Corrected an issue in computing the extended (includes area of label text) vs. non-extended bounding box of a cell when doing "getcell" (and probably a number of other commands/functions, as well). A function was always computing the extended bounding box and then setting both the normal and extended bounding boxes of the cell to this value, resulting in incorrect cell selections. R. Timothy Edwards 2025-08-26 11:00:20 -04:00
  • d2acdac901 Corrected an error accidentally introduced a few commits ago in (commit 4084a6a246) in which a misplaced close-brace altered the way that "getcell" handles some orientation cases. Thanks to Sylvain Munaut for discovering the error. 8.3.545 R. Timothy Edwards 2025-08-21 10:44:24 -04:00
  • 8d762b4f59 Corrected an error that accidentally misses an input line from a LEF macro if the FOREIGN statement ends without the optional coordinates. 8.3.544 R. Timothy Edwards 2025-08-20 15:01:57 -04:00
  • 0301bdec9e Made a simple change to "extresist" to set the REDUNDANT flag on nodes which are created due to having multiple ports with different names on the same wire (electrically connected pins). This prevents "extresist" from double-counting the wire. 8.3.543 R. Timothy Edwards 2025-08-19 10:00:05 -04:00
  • 4084a6a246 Modified the syntax of the "getcell" command to make the arguments unambiguous, and to allow coordinates to be given in any units. To do this, the (seldom if ever used) passing of a label as a reference point was changed to require the "label" keyword before the label name, avoiding the code having to disambiguate arguments from label text. This now makes it possible to specify the coordinates in microns, lambda, etc., units. 8.3.542 R. Timothy Edwards 2025-08-15 10:24:31 -04:00
  • 117ca41b8a Corrected an error in the substrate generation for extraction, where non-manhattan geometry was not being transformed into the parent orientation. This went unnoticed for some time due to testing on PDKs where substrate and well were not allowed to have non-orthogonal edges. 8.3.541 R. Timothy Edwards 2025-08-14 08:51:36 -04:00
  • 0fb19e568c Extended the "spacing" and "edge"/"edge4way" rules to take an option "manhattan_dist" that causes corner checks to assume a manhattan distance measure. This is useful for checking distances involving generated edges that are created by a CIF "grow" operator. For "spacing", "manhattan_dist" is equivalent to "touching_illegal", as a use-case for forcing manhattan distance measurements in corners has not been found for other "spacing" options. 8.3.540 R. Timothy Edwards 2025-08-13 11:34:29 -04:00
  • 5791ae3701 Made a small change to the "cifmaxwidth" rule check implementation to ignore non-Manhattan (split) tiles. This avoids creating false- positive DRC results on split tiles which are larger in X and Y than the max-width distance. False negatives are possible but correctly implementing a "maxwidth" rule for non-orthogonal areas requires a completely different algorithm. 8.3.539 R. Timothy Edwards 2025-08-11 12:10:09 -04:00
  • b4912fd550 Updated the version to go along with the merge of pull request version 8.3.521 that, due to an argument size mismatch, causes device parameters in netlist output to be printed as zero. Also added a small extension to the list of extraction types to include "device veriloga", which has the same syntax as "device subcircuit" but generates a component type "N" (Verilog-A component) in the netlist output. 8.3.538 R. Timothy Edwards 2025-08-07 11:54:49 -04:00
  • 56598ca0f4 ext2spice.c: bugfix esOutputResistor() uses name without initialization Darryl L. Miles 2025-07-24 14:36:22 +01:00
  • c6fe62f64a ext2spice.c: cleanup unused localvars -Wunused-variable -Wunused-but-set-variable Darryl L. Miles 2025-07-24 14:36:22 +01:00
  • ad5383c307 ext2spice.c: cleanup -Wunused-local-typedefs yesnoType Darryl L. Miles 2025-07-24 14:36:22 +01:00
  • ab24761d88 ext2hier.c: cleanup unused localvars -Wunused-variable -Wunused-but-set-variable Darryl L. Miles 2025-07-24 14:36:22 +01:00
  • 66f281c5e1 extflat/EFhier.c: workaround K&R cb_extflat_hiervisitresists_t Darryl L. Miles 2025-08-06 22:58:30 +01:00
  • 5bdff336e9 EFhier.c: constify local vars efHierVisitSingleResist() Darryl L. Miles 2025-08-06 22:58:30 +01:00
  • d4e4930de3 EFhier.c: convert to ANSI efHierVisitSingleResist() Darryl L. Miles 2025-08-06 22:58:30 +01:00
  • e6f04ebb46 EFhier.c: convert to ANSI efHierVisitResists() Darryl L. Miles 2025-08-06 22:58:30 +01:00
  • 8c61014677 extflat/EFvisit.c: workaround K&R cb_extflat_visitresists_t Darryl L. Miles 2025-08-06 22:58:30 +01:00
  • 7a122c8619 extflat: implement cb_extflat_hiersrarray_t for efHierSrArray() efVisitSingleResist() Darryl L. Miles 2025-07-19 02:58:12 +01:00
  • 420a24ef33 extflat: integrate cb_extflat_hiervisitresists_t for EFHierVisitResists() Darryl L. Miles 2025-07-20 16:29:20 +01:00
  • 0141a99af5 extflat: integrate cb_extflat_visitresists_t for EFVisitResists() Darryl L. Miles 2025-07-20 16:09:08 +01:00
  • 0bb29ae5f8 extflat/EFhier.c: workaround K&R ca_hiervisitdevs_proc Darryl L. Miles 2025-08-06 22:45:15 +01:00
  • d59a87bafa extflat/EFvisit.c: workaround K&R cb_extflat_visitdevs_t Darryl L. Miles 2025-08-06 22:48:11 +01:00
  • 6bbcd65c5f extflat: integrate cb_extflat_hiervisitdevs_t for EFHierVisitDevs() Darryl L. Miles 2025-07-20 12:52:23 +01:00
  • e1be3fe7d2 extflat: integrate cb_extflat_visitdevs_t for EFVisitDevs() Darryl L. Miles 2025-07-20 00:03:14 +01:00
  • 6876c007f5 extflat.h: include EFint.h (need to provide types ready for ANSI prototypes) Darryl L. Miles 2025-08-06 22:58:30 +01:00
  • 301a5329db extflat: nodeSpiceHierName() constify API Darryl L. Miles 2025-07-21 22:49:52 +01:00
  • 6df8257505 extflat: nodeSpiceName() constify API Darryl L. Miles 2025-07-21 22:46:03 +01:00
  • e3bd60eba6 extflat: DevParam.(const char*)param_name consumer, nodeSpiceName() Darryl L. Miles 2025-07-23 20:58:41 +01:00
  • d78d7eddfd extflat: nodeSpiceName() consumer Darryl L. Miles 2025-07-23 21:06:12 +01:00
  • aa0b033053 extflat: spcdevOutNode() constify API Darryl L. Miles 2025-07-23 20:10:03 +01:00
  • 22b96d5112 EFantenna.c: antennacheckVisit cb_extflat_visitdevs_t Darryl L. Miles 2025-07-19 15:20:09 +01:00
  • a00a5eb1b2 EFantenna.c: convert to ANSI antennacheckVisit() Darryl L. Miles 2025-08-06 22:58:30 +01:00