I see that in many of the .mag files in the pdk, f...
# open_pdks
y
I see that in many of the .mag files in the pdk, for instance `./sky130B/libs.ref/sky130_fd_sc_hs/mag/sky130_fd_sc_hs__nor3b_1.mag:string GDS_FILE $PDKPATH/libs.ref/sky130_fd_sc_hs/gds/sky130_fd_sc_hs.gds`the variable
$PDKPATH
is there. It should be
$PDK_ROOT
, right? This affects many .mag files.
m
From
$PDK_ROOT/sky130A/libs.tech/magic/sky130A.magicrc
Copy code
# load device generator
source $PDK_ROOT/sky130A/libs.tech/magic/sky130A.tcl
From
$PDK_ROOT/sky130A/libs.tech/magic/sky130A.tcl
Copy code
if [catch {set PDKPATH}] {set PDKPATH ${TECHPATH}/sky130A}
where
Copy code
if {[catch {set TECHPATH $env(PDK_ROOT)}]} {
So no,
PDKPATH
does not =
PDK_ROOT
t
There were various scripts being used by different tools with PDK_ROOT, PDKROOT, PDK_PATH, and PDKPATH, not to mention magic's legacy CAD_ROOT, so I tried to pin down the definitions to "PDK_ROOT" being the root of all PDKs (e.g., /usr/share/pdk) and "PDK_PATH" including the specific PDK directory (e.g., /usr/share/pdk/sky130A). I allowed magic to handle the alternate spellings PDKROOT and PDKPATH, and the latter happens to be used in the property statement pointing to the GDS file. The use as a cell property in a .mag file is just something that magic parses for itself and should not be understood as either a shell variable or Tcl variable. But magic's parser basically treats it like a Tcl variable. Its purpose is simply to make the .mag file portable, so that magic can find the GDS file in the PDK whether the PDK was installed in the root file system, in the user's home space, or somewhere else.
👍 3