Removed the "cellname delete \(UNNAMED\)" commands from the generate_magic.tcl scripts, because this is causing a database corruption in magic. This is a "quick fix", as the nature of the database corruption needs to be investigated. This fix prevents apparently unrelated errors in the port indexing in the installed files in the library mag/ directories.
diff --git a/VERSION b/VERSION index 9f1a864..3a90b24 100644 --- a/VERSION +++ b/VERSION
@@ -1 +1 @@ -1.0.57 +1.0.58
diff --git a/common/foundry_install.py b/common/foundry_install.py index 1ee1503..dca4029 100755 --- a/common/foundry_install.py +++ b/common/foundry_install.py
@@ -1221,7 +1221,6 @@ # .mag files from the database. print('Creating magic generation script to generate magic database files.') - with open(destlibdir + '/generate_magic.tcl', 'w') as ofile: print('#!/usr/bin/env wish', file=ofile) print('#--------------------------------------------', file=ofile) @@ -1271,6 +1270,7 @@ leffiles = os.listdir(lefsrclibdir) leffiles = list(item for item in leffiles if os.path.splitext(item)[1] == '.lef') + print('puts stdout "Annotating cells from LEF"', file=ofile) for leffile in leffiles: print('lef read ' + lefsrclibdir + '/' + leffile, file=ofile) @@ -1282,11 +1282,17 @@ netdir = slibdir # Find CDL/SPICE file names in the source + # Ignore "sources.txt" if it is in the list. netfiles = os.listdir(netdir) + print('puts stdout "Annotating cells from CDL/SPICE"', + file=ofile) for netfile in netfiles: - print('readspice ' + netdir + '/' + netfile, file=ofile) + if os.path.split(netfile)[1] != 'sources.txt': + print('catch {readspice ' + netdir + '/' + netfile + + '}', file=ofile) - print('cellname delete \(UNNAMED\)', file=ofile) + # print('cellname delete \(UNNAMED\)', file=ofile) + print('puts stdout "Writing all magic database files"', file=ofile) print('writeall force', file=ofile) leffiles = [] @@ -1436,6 +1442,7 @@ print(' load ' + lefmacro, file=ofile) print(' lef write ' + lefmacro + ' -hide', file=ofile) print('}', file=ofile) + print('puts stdout "Done."', file=ofile) print('quit -noprompt', file=ofile) @@ -1648,7 +1655,7 @@ # an error message. if len(lefmacros) > 0: print('load ' + lefmacros[0], file=ofile) - print('cellname delete \(UNNAMED\)', file=ofile) + # print('cellname delete \(UNNAMED\)', file=ofile) else: err_no_macros = True print('writeall force', file=ofile) @@ -1987,7 +1994,7 @@ else: gdslibroot = os.path.split(allgdslibname)[1] print('load ' + os.path.splitext(gdslibroot)[0], file=ofile) - print('cellname delete \(UNNAMED\)', file=ofile) + # print('cellname delete \(UNNAMED\)', file=ofile) print('ext2spice lvs', file=ofile)
diff --git a/sky130/magic/sky130.tech b/sky130/magic/sky130.tech index bc95751..e796d17 100644 --- a/sky130/magic/sky130.tech +++ b/sky130/magic/sky130.tech
@@ -940,6 +940,7 @@ grow 185 grow 345 shrink 345 + and-not hvntm_block calma 125 20 #---------------------------------------------------------------- @@ -966,7 +967,9 @@ or alldiffmv,mvvar grow 185 bloat-all alldiffmv nwell - grow-min 600 + # (HVI min width rule is 0.6 but CNTM min width rule is 0.84um) + grow-min 840 + # grow-min 600 bridge 700 600 templayer extendTHKOX baseTHKOX,CELLRING @@ -2011,14 +2014,14 @@ ignore POLYMOD ignore LOWTAPDENSITY - layer nwell NWELL,WELLTXT,WELLPIN - and-not PNPID + layer pnp NWELL,WELLTXT,WELLPIN + and PNPID labels NWELL labels WELLTXT text labels WELLPIN port - layer pnp NWELL,WELLTXT,WELLPIN - and PNPID + layer nwell NWELL,WELLTXT,WELLPIN + and-not PNPID labels NWELL labels WELLTXT text labels WELLPIN port @@ -2925,16 +2928,16 @@ or mvpdicbase labels CONT - layer locali LI,LITXT,LIPIN + layer coreli LI,LITXT,LIPIN and-not LIRES,LISHORT - and-not COREID + and COREID labels LI labels LITXT text labels LIPIN port - layer coreli LI,LITXT,LIPIN + layer locali LI,LITXT,LIPIN and-not LIRES,LISHORT - and COREID + and-not COREID labels LI labels LITXT text labels LIPIN port @@ -3515,14 +3518,14 @@ ignore POLYMOD ignore LOWTAPDENSITY - layer nwell NWELL,WELLTXT,WELLPIN - and-not PNPID + layer pnp NWELL,WELLTXT,WELLPIN + and PNPID labels NWELL labels WELLTXT port labels WELLPIN port - layer pnp NWELL,WELLTXT,WELLPIN - and PNPID + layer nwell NWELL,WELLTXT,WELLPIN + and-not PNPID labels NWELL labels WELLTXT port labels WELLPIN port @@ -4429,16 +4432,16 @@ or mvpdicbase labels CONT - layer locali LI,LITXT,LIPIN + layer coreli LI,LITXT,LIPIN and-not LIRES,LISHORT - and-not COREID + and COREID labels LI labels LITXT port labels LIPIN port - layer coreli LI,LITXT,LIPIN + layer locali LI,LITXT,LIPIN and-not LIRES,LISHORT - and COREID + and-not COREID labels LI labels LITXT port labels LIPIN port