| |||
接这一篇:virtuoso启动时自动sos更新.cds_project.lib文件(SKILL语言)
上次说有一个BUG,如果用户把cdslib文件放在非项目目录下,sosupdate就会捕捉不到路径,导致更新失败。所以我们需要读取用户定义在cds.lib文件中INCLUDE项目的路径。这个在此篇进行修复。
被读取cds.lib文件的格式示例:
INCLUDE ./cds_project.lib DEFINE test ./test UNDEFINE test1 ./test1
下面是SKILL代码:
没有注释,代码比较简单。大致思路是按行读取cds.lib文件,然后按空格分隔。判断第一列是否等于“include"(转小写),且第二列是否包含指定字符串,同时满足的情况下执行指定的SHELL命令。
inPort = infile( ddGetStartup("cds.lib") ) when( inPort while( gets(line inPort) line = parseString( line ) col1 = nth(0 line) col2 = nth(1 line) if( and( lowerCase( col1 )=="include" index( col2 "cds_project.lib")) then ipcBeginProcess( sprintf( nil "$CLIOSOFT_DIR/bin/soscmd updatesel %s" col2) ) ) ) ) close( inPort)
这里面用到两个cadence的内置函数:ddGetStartup,ipcBeginProcess。
ddGetStartup:得到项目文件的路径
ipcBeginProcess:执行命令
其余相关的函数可以通过以下方式查看: