tk - couldn't load file "/usr/lib/x86_64-linux-gnu/magic/tcl/tclmagic.so" -
i have problem running magic vlsi. problem
couldn't load file "/usr/lib/x86_64-linux-gnu/magic/tcl/tclmagic.so": /usr/lib/x86_64-linux-gnu/magic/tcl/tclmagic.so: undefined symbol: tk_getcursorfromdata
i think caused by:
/usr/lib/x86_64-linux-gnu/magic/tcl/magic.tcl in line 13: load /usr/lib/x86_64-linux-gnu/magic/tcl/tclmagic.so
the file /usr/lib/x86_64-linux-gnu/magic/tcl/tclmagic.so exists
the error source in running magic qflow in shellscript display.sh
:
#!/bin/tcsh -f #---------------------------------------------------------- # qflow layout display script using magic-8.0 #---------------------------------------------------------- # tim edwards, april 2013 #---------------------------------------------------------- if ($#argv < 2) echo usage: display.sh [options] <project_path> <source_name> exit 1 endif # split out options main arguments (no options---placeholder only) set argline=(`getopt "" $argv[1-]`) set cmdargs=`echo "$argline" | awk 'begin {fs = "-- "} end {print $2}'` set argc=`echo $cmdargs | wc -w` if ($argc == 2) set argv1=`echo $cmdargs | cut -d' ' -f1` set argv2=`echo $cmdargs | cut -d' ' -f2` else echo usage: display.sh [options] <project_path> <source_name> echo echo <project_path> name of project directory containing echo file called qflow_vars.sh. echo <source_name> root name of verilog file, , exit 1 endif foreach option (${argline}) switch (${option}) case --: break endsw end set projectpath=$argv1 set sourcename=$argv2 set rootname=${sourcename:h} # script called first argument <project_path>, should # have file "qflow_vars.sh". of our standard variable definitions # qflow_vars.sh file. if (! -f ${projectpath}/qflow_vars.sh ) echo "error: cannot find file qflow_vars.sh in path ${projectpath}" exit 1 endif source ${projectpath}/qflow_vars.sh source ${techdir}/${techname}.sh cd ${projectpath} #---------------------------------------------------------- # copy .magicrc file tech directory # layout directory, if not have one. file # automatically loads correct technology file. #---------------------------------------------------------- if (! -f ${layoutdir}/.magicrc ) if ( -f ${techdir}/${magicrc} ) cp ${techdir}/${magicrc} ${layoutdir}/.magicrc endif endif #---------------------------------------------------------- # done initialization #---------------------------------------------------------- cd ${layoutdir} #--------------------------------------------------- # create magic layout (.mag file) using # technology lef file determine route widths # , other parameters. #--------------------------------------------------- if ($techleffile == "") set lefcmd="lef read ${techdir}/${leffile}" else set lefcmd="lef read ${techdir}/${techleffile}\nlef read ${techdir}/${techleffile}" endif # timestamp handling: if .mag file more recent # .def file, print message , not # overwrite. set docreate=1 if ( -f ${rootname}.def && -f ${rootname}.mag) set defstamp=`stat --format="%y" ${rootname}.def` set magstamp=`stat --format="%y" ${rootname}.mag` if ( $magstamp > $defstamp ) echo "magic database file ${rootname}.mag more recent def file." echo "if want recreate .mag file, remove or rename existing one." set docreate=0 endif endif # following script reads in def file , modifies labels # rotated outward cell, since def files don't # indicate label geometry. if ( ${docreate} == 1) ${bindir}/magic -dnull -noconsole <<eof drc off box 0 0 0 0 snap int ${lefcmd} def read ${rootname} select top cell select area labels setlabel font freesans setlabel size 0.3um box grow s -[box height] box grow s 100 select area labels setlabel rotate 90 setlabel e select top cell box height 100 select area labels setlabel rotate 270 setlabel w select top cell box width 100 select area labels setlabel w select top cell box grow w -[box width] box grow w 100 select area labels setlabel e save ${sourcename} quit -noprompt eof endif # run magic , query graphics device types # available. use opengl if available, fall on # x11, or else exit message ${bindir}/magic -noconsole -d <<eof >& .magic_displays exit eof set magicogl=`cat .magic_displays | grep ogl | wc -l` set magicx11=`cat .magic_displays | grep x11 | wc -l` rm -f .magic_displays # run magic again, time interactively. script # exits when user exits magic. #if ( ${magicogl} >= 1 ) magic -d ogl ${rootname} if ( ${magicx11} >= 1) magic -d x11 ${rootname} else echo "magic not support opengl or x11 graphics on host." endif #------------------------------------------------------------ # done! #------------------------------------------------------------
how can fix problem?
i should amend answer, since sounds magic may invoking tcl 8.5 instead of 8.6, may have happened if downloaded magic package. "-lazy" option "load" implemented in tcl 8.6, it's not going work @ in tcl 8.5. suggest getting magic opencircuitdesign.com , compiling source, has no problems on linux systems. autoconf script should able find tcl version 8.6.
you can ignore "display" option in qflow , run magic interactively. use "lef read" command read in standard cell definitions, "def read" read in routed layout qflow.
Comments
Post a Comment