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.
This commit is contained in:
R. Timothy Edwards 2026-06-08 15:10:14 -04:00
parent 83569da8b3
commit 788c73b867
3 changed files with 25 additions and 3 deletions

View File

@ -1 +1 @@
8.3.660
8.3.661

View File

@ -481,6 +481,28 @@ proc magic::techmanager {{option "update"}} {
"magic::tech load $j ; \
magic::techmanager update"
}
# Open PDK support: If environment variable $PDK_ROOT exists
# then search in that directory using the standard open PDK
# path <tech_name>/libs.tech/magic/<tech_name>.tech. NOTE:
# This can be done by sourcing the .magicrc file instead of
# loading the .tech file, but the window menus will not be
# updated until the next window is opened.
set dirtop {}
if {[catch {set dirtop $PDK_ROOT}]} {
catch {set dirtop $::env(PDK_ROOT)}
}
if {$dirtop != {}} {
set tlist [glob -nocomplain ${dirtop}/*]
foreach i [join $tlist] {
set j [file tail ${i}]
set rcfile ${i}/libs.tech/magic/${j}.magicrc
.techmgr.title.tname.menu add command -label ${j} -command \
"source ${rcfile} ; \
magic::techmanager update"
}
}
}
set techlambda [magic::tech lambda]

View File

@ -563,6 +563,7 @@ mainInitAfterArgs()
SectionID sec_cifinput, sec_cifoutput;
SectionID sec_drc, sec_extract, sec_wiring, sec_router;
SectionID sec_plow, sec_plot, sec_mzrouter;
char *syspath;
DBTypeInit();
MacroInit();
@ -577,9 +578,8 @@ mainInitAfterArgs()
#endif
/*
* Setup path names for system directory searches
* Set up path names for system directory searches
*/
StrDup(&SysLibPath, MAGIC_SYS_PATH);
/*