Commit Graph

796 Commits

Author SHA1 Message Date
Tim Edwards e969097f84 Another correction to fix the tile type for port drivers in
extresist, as the tile type was being set to a transistor gate
type and not the type of the port.
2019-10-15 09:51:25 -04:00
Tim Edwards 097f4fb28c Corrected node reading from extresist because the ".nodes" file
does not have any scaling in the dimensions and so values should not
be divided by the factor lambda from the .sim file "units" line.
2019-10-15 09:16:07 -04:00
Tim Edwards e9f3dcadef Added substitution for commas in SPICE output, because commas in
instance names and node names are basically fatal to running
ngspice.
2019-10-14 21:46:07 -04:00
Tim Edwards 57a5ff6094 Corrected errors preventing extresist from working properly with
hierarchical cells (namely a scaling issue with .sim file units).
More can be done to make the extresist command more user friendly,
but at least port connections as drivers appears to work.
2019-10-14 17:17:08 -04:00
Tim Edwards 58c4c8a32e Corrected problem in which using "ext2spice -d" (distributed
junctions) causes magic to crash.
2019-10-14 13:49:41 -04:00
Tim Edwards 1933c5d4a5 Corrected another problem where the device source/drain area and
perimeter were not output because of recent code that broke the
routine that assigns the resistance classes to devices.  This is
now fixed.  Thanks to Dan Moore for bringing this to my attention,
and debugging investigations.
2019-10-14 11:56:39 -04:00
Tim Edwards b0719384e4 Modified the new extraction method with multiple records for each
device type so that it is now properly backwards compatible with
the old-style "fet" records.  Also corrected the record matching
such that it properly matches according to the number of terminals
while allowing the traditional interpretation that there may be
fewer S/D type records than terminals if the S/D types are the
same for all terminals.
2019-10-14 11:09:58 -04:00
Tim Edwards 000dab40e3 Made a correction to the last commit as the wrong hash search
function was used (HashFind, which never returns NULL, vs.
HashLookOnly, which does) resulting in a failure to solve the
problem which was being patched, which was ext2spice crashing
when cell arrays are present, which itself was due to allowing
brackets in base cell use names.
2019-10-02 12:59:10 -04:00
Tim Edwards 798e87deaf Corrected method relating to use of array notation in the base
use name (not part of an array in magic).  This was failing in
ext2spice due to code in extflat dealing incorrectly with the
array delimiters.  The correction fixes the problem but leaves
the possibility that there could be a conflict between a use
name that is an array and a use name that has the array index
as part of the name.
2019-10-01 19:32:52 -04:00
Tim Edwards 091d7ba2ae Corrected drcAssign for use with CIF drc rules, where the check for
plane is not relevant and can generate false-positive error messages
(although no actual errors occur).
2019-09-19 14:33:30 -04:00
Tim Edwards 0c24c33451 Corrected a bad error from a previous commit (5 days ago, for fixing
the forward-referenced GDS cell problem) in which when writing cells
from 3rd-party GDS, the structure names are written to GDS with the
indicator flag in front, making the structure names and the referenced
names different, so that the GDS file is no longer valid.  This has
been fixed.
2019-09-19 08:22:11 -04:00
Tim Edwards 4b5566af3e Corrected an error that causes alias names for layers to become the
principle layer name, which should not happen (especially in the
case of space, where layers may be aliased to "space" to make them
ignored on input).  Also:  Implemented a "-<types>" option to the
"substrate" record in the techfile to declare types which shield
layers from the substrate.  This allows types like pwell to be used
in different contexts, e.g., as part of the substrate, or as a P-well
in deep N-well, without requiring a different type.  This works in
conjunction with the recently-implemented "+<types>" ID types for
devices.  All of this may seem unnecessary but helps to reduce the
number of layers needing to be defined, and the subsequent complexity
of the DRC rulesets.
2019-09-18 20:48:33 -04:00
Tim Edwards 9b0905ad01 Corrected an error in the GDS compositing that fails to handle GDS
files that have forward references (cells that are instanced before
they are defined), resulting in those cells being given an undefined
string for a prefix, which will result in corrupted GDS output.
Also added a method to prevent forward-referenced cells from triggering
a "redundantly defined" error message when the structure is output.
2019-09-13 09:52:45 -04:00
Tim Edwards 643c39a2d5 Corrected error where modification to allow use of brackets inside
a cell instance name not related to an array moved a variable that
was used later in the routine to the inside of an if block,
effectively making that variable undefined in most cases.
2019-09-03 14:02:27 -04:00
Tim Edwards 63829cbbaa Hopefully final correction to new extraction method. Now correctly
handles diodes or other devices with source/drain on planes other
than the plane of the device type.  This no longer requires that
the non-connecting type be in any given terminal position.  The
device type boundary is surveyed for all types, connecting or
overlapping, and at least one of each required type must be present.
2019-08-24 14:18:03 -04:00
Tim Edwards 9f973fa9fc Minor correction to device extraction using the new device structure
format with multiple devices per magic tile type.  The code was left
incompatible with diodes defined with one terminal as substrate
(and therefore no source/drain-like types connecting to the device
type).  This has been fixed.
2019-08-23 14:01:28 -04:00
Tim Edwards a75aec4d7c Finally realized the problem came from a quick addition of a TO-DO
item that was never properly validated.  Corrected the root of the
problem, which was an attempt to deallocate memory that had never
been allocated in the first place.
2019-08-20 15:10:45 -04:00
Tim Edwards d5b695fea0 Corrected one other instance of checking for NULL when it should
have checked for CLIENTDEFAULT.
2019-08-20 15:05:30 -04:00
Tim Edwards c360fb9d5a Corrected check on cd_client in CalmaRdcl; if not set for holding
GDS plane data, it is initialized to CLIENTDEFAULT, not NULL.
2019-08-20 14:44:20 -04:00
Tim Edwards aa4bb4b19c Since allowing brackets to be part of cell names in a previous
commit, found that DBTreeFindUse fails to find such uses because
it strips the array delimiters off the name.  Fixed the routine
although the routine really should be checking if the use is a
1- or 2- dimensional array and stripping off only the components
expected.  The current code will probably fail for cell uses
that have brackets in the name AND are arrayed.  Fortunately
this search routine does not appear to be used frequently or in
any critical database functions like netlisting.
2019-08-20 10:37:12 -04:00
Tim Edwards 942eaf8113 Revised the substrate extraction method: Instead of searching on
all types specified in the "substrate" statement, split such types
into those on the declared well plane, and everything else.  Any
types on the well plane are searched as before.  Types not on the
well plane (e.g., psd on active) are searched and added to the
substrate node *only* if overlapping nothing on the well plane.
This allows a type such as "psd" to be used on, e.g., both space
(substrate) and deep pwell, but only be extracted as part of the
substrate when found over space.  Note that if there is NO
implicit substrate, the substrate connections will always be
found through the usual connection rules.
2019-08-20 08:42:07 -04:00
Tim Edwards 8c75f81cc4 Revised the method for multiple extraction models per device type
to be more robust and not depend on the ordering of the devices in
the techfile.  The extraction method now keeps a mask of which
properties of the device (source/drain types, substrate type,
identifier type) have been found, and will look only for device
records that match what is known about the device.  Added a device
identifier record which is the last record before parameters if the
record begins with "+".  This allows marker layers to be placed
over a device such that it will extract with a different type.
This helps reduce the complexity of the techfile and allows
certain specialized devices like RF or ESD to be identified without
a separate layer type for the device.
2019-08-19 14:11:02 -04:00
Tim Edwards f429e4eca4 Copied the text of the BSD copyright in the C source code into its
own file, to be consistent with most other software these days.
2019-08-09 16:52:20 -04:00
Roman-Parise 1edccafb2c Removed files in .gitignore from repo 2019-08-03 12:19:38 -04:00
Roman-Parise 46e0ec7a24 Updated outdated files in utils/magsgtty.h 2019-08-03 12:19:38 -04:00
Roman-Parise d235e01b2d Edited configure scripts for FreeBSD installation 2019-08-03 12:19:38 -04:00
Roman-Parise 05c069783a Added FreeBSD detail to INSTALL 2019-08-03 12:19:38 -04:00
Tim Edwards 381fc0cca4 Removed diagnostic print from last commit. 2019-08-02 14:53:22 -04:00
Tim Edwards 9635f10c5a Removed a badly implemented double-loop from the timestamp mismatch
code.
2019-08-02 14:50:32 -04:00
Tim Edwards df77f7853c Corrected the handling of UNPLACED components in a DEF file, which
was previously (and erroneously) lumped with PLACED and FIXED which
take a position argument afterward.  Note that this fix allows the
DEF file to be read without error but does not have the (presumably
desired) behavior of parsing SITE information from the LEF file and
ROWS information from the DEF file and giving each unplaced component
an arbitrary but legal position.  That would require a significant
amount of additional coding work.
2019-07-29 09:51:48 -04:00
Tim Edwards 8562812fff Corrected CalmaError() to CalmaReadError() in cif/CIFrdcl.c. Thanks
to Toby Schaffer for the bug report and patch!
2019-07-25 16:29:12 -04:00
Tim Edwards 982bb8aa63 Changed a recent commit which removed brackets from instance names
while reading DEF.  To preserve names as much as possible, such
names are now kept.  To avoid problems, EFbuild.c and ext2hier
behavior has been changed to only parse entries in a .ext file as
instance arrays if the array notation follows the specific syntax
of [ax:bx:cx][ay:by:cy], letting all other uses of brackets pass
through unaffected.
2019-07-25 10:20:24 -04:00
Tim Edwards 197c3f3448 Merge branch 'master' into bplane
Conflicts:
	commands/CmdCD.c
	database/DBcellsrch.c
	database/DBconnect.c
	database/DBio.c
	lef/lefRead.c
	select/selDisplay.c

Updated the bplane implementation with all recent updates (merged master).
2019-07-24 20:36:55 -04:00
Tim Edwards 93d25e7cf7 Removed the rule for building database.h from rules.mak and
instead created a dependency on database.h for compiling any
source file.  This should (I hope) avoid conflicts when running
"make" with the "-j" option for parallel compilation.
2019-07-24 12:30:03 -04:00
Tim Edwards d08593997a Cleaned up an inconsistency with GDS read-in that generates
informational output that references a (non-existing) CIF file.
2019-07-23 08:45:42 -04:00
Tim Edwards c229139150 Changed two output lines in the LEF read subroutine to conform to
the standard message/warning/error method.
2019-07-23 08:06:41 -04:00
Tim Edwards 9ec5e8e747 Modified DEF reads to avoid instance names with brackets. Not
sure if this is the best policy.  The brackets should be okay
but interfere with ext2spice when it reads them from the .ext
file and decides that they refer to arrays.  May be a better
way to handle this.
2019-07-19 22:58:45 -04:00
Tim Edwards 8183f72b00 Added a missing include for utils/utils.h which has the function
prototype for StrDup().  Otherwise, use of StrDup() in the LEF
read routine can cause an inscrutible crash.
2019-07-17 10:20:52 -04:00
Tim Edwards cd32e39d58 Modified the GDS read routine to account for use of WIDTH in a text
record without a MAG in the PRESENTATION record to override it.
2019-07-16 16:26:56 -04:00
Tim Edwards 70927709c7 Added the capability to read a value from a WIDTH entry for text.
Still not sure how it is supposed to be used, exactly.  Used it
to set a default text size in case a MAG value is missing.
2019-07-16 11:45:10 -04:00
Tim Edwards feac3d94dd Added missing handling of text in GDS input with PRESENTATION
followed by WIDTH (previously it assumed that PRESENTATION and
WIDTH were mutually exclusive).
2019-07-16 10:32:36 -04:00
Tim Edwards c31b305848 Corrected the dependency list in the Makefile for "modules", which
should depend on database/database.h;  otherwise running distributed
make can start compiling modules before the database.h file is
created.
2019-07-14 12:07:38 -04:00
Tim Edwards d95d8ba2ef Corrected the generation of bounding box positions from a GDS
boundary layer, which was being saved in GDS coordinates, not
magic database coordinates.
2019-07-08 20:36:48 -04:00
Tim Edwards d839cc26e2 One last problem fixed, as RECT entries in nets are relative, not
absolute.
2019-07-03 15:36:21 -04:00
Tim Edwards 0141ca8c95 Corrected error in generated vias (set top layer type on bottom,
so bottom layer went missing).
2019-07-03 14:52:22 -04:00
Tim Edwards 5ba84b068a Was missing needed expansion of via cut sizes to match magic's
internal definition of via areas, when reading parameterized vias
from a DEF file.
2019-07-03 14:24:52 -04:00
Tim Edwards 38fa141db5 One minor correction to the creation of generated vias in defRead.c. 2019-07-03 14:05:01 -04:00
Tim Edwards 49d98115bb Added a number of enhancements to the DEF reading to handle various
forms of syntax found in the LEF/DEF spec up to version 5.8.  Handles
vias formed by parameter and a number of syntax variations that mess
up the usual parsing.  Corrected an error in the calculation of wire
extensions when wires are given with three coordinates.
2019-07-03 13:58:13 -04:00
Tim Edwards 95ca3d93cc Added the handling of SHAPE statements in NET records in the DEF
file read routine.
2019-07-02 10:48:34 -04:00
Tim Edwards 5bd3fb91c9 Corrected the argument passing from the top-level wrapper for
configure script to the actual configure script.
2019-06-15 12:50:32 -04:00