.lib文件如何转化为.db文件
利用tcl和synopsys的dc将lib文件转换成db文件的脚本,如下:
自用,无版权约束:)
使用方法,将所有lib文件,放在一个目录中,然后建立一个目录放db,
运行:lib2db -s lib目录 -d db目录
目录可以是绝对也可以是相对路径,当然相对路径是相对你终端所在目录
#!/bin/bash
USAGE="USAGE : lib2db -s source_dir -d direct_dir"
if ! [ $# -eq 4 ] ; then
echo $USAGE
exit 1
fi
while getopts ":s:d:" flag ; do
case $flag in
s)
src=$OPTARG
;;
d)
dir=$OPTARG
;;
?)
echo ++++++++++++++++invalid option+++++++++++++++
echo $USAGE
exit 1
;;
esac
done
cat > ~/.lib2db.tcl <<EOF
foreach lib [glob -nocomplain $src/*.lib] {
set tmp [string trimleft \$lib $src*/]
set lib_name [string trimright \$tmp .lib]
read_lib \$lib
write_lib \$lib_name -format db -o $dir/\${lib_name}.db
}
exit
EOF
dc_shell-t -f ~/.lib2db.tcl
\rm -r ~/.lib2db.tcl 2>/dev/null
\rm -r ./command.log 2>/dev/null
echo ++++++++++++++++Done+++++++++++++++
dc_shell> read_lib xx.lib
dc_shell > write_lib -format db -output xx.db xx
e ... 我按照你的方法试了一下,一开始说读入.lib文件成功,此时有返回1。随后开始,写.db文件,但是报错说无法找到前面读的一个文件(XX),不知道哪里出错了.这两条指令我是这样写的:
dc_shell>read_lib /media/info/lib/nang_worst_low_ccs.lib
dc_shell>write_lib -format db -output /media/info/lib/nang_worst_low_ccs.db
然后在网上还看到一种写法是:
但输入后仍然报错,说没找到库文件
dc_shell>read_lib /media/info/lib/nang_worst_low_ccs.lib
dc_shell>write_lib nang_worst_low_ccs -output /media/info/lib/nang_worst_low_ccs.db
遇到这个错误该怎么办?请您指点下,谢谢。
list_lib 一下,看看里面的lib名是什么,再write出来,看会不会是你的write后面的lib名称没写对。
这个名不一定就是那个*.lib的名称。
嗯,就是这个错误。没有把lib名字写对。现在搞定了,谢谢
直接用DC转 把库的名字写对了 write的时候库的名字是lib里面library" "中的名字
这个回答太重要了,帮我解决了大问题
不需要这么麻烦, read_lib & write_lib就可以了, 你仔细看下那脚本,其实核心就是做了这么件事情
set ALIBFILE "[glob *.lib]"
foreach curlib $ALIBFILE {
read_lib $curlib
set libname "[get_object_name [get_lib]]"
write_lib -format db $libname -output "[format %s.%s [file rootname $curlib] db]"
remove_design -all
}
exit
这个脚本的优点:
1、只需要把所有要装换的lib放在一个路径下就行,不需要再脚本里去列出所有名字。
2、不用担心lib文件的名字和lib名字不一致的问题。
