默认情况下,virtuoso启动时会在主目录中搜索名为.cdsenv的文件并加载(如果存在)。
在以前的文章中介绍过用户可以通过设置CDS_LOAD_ENV环境变量控制文件搜索路径,例如可以将当前工作目录添加到软件的搜索目录中,但是,没有用于识别.cdsenv文件版本的内置解决方案。
如果用户有需要在不同版本的virtuoso中切换,那么可以选择每次切换软件的时候手动备份.cdsenv文件并将与virtuoso版本相对应的.cdsenv文件放到搜索目录中。
为了方便用户使用,可以选择将下面的代码粘贴到.cdsinit文件中,用于自动检测当前使用的virtuoso版本,并加载一个适当命名的.cdsenv文件。
该适当命名的文件可能包含特定版本软件的设置,并且命名必须按照如下格式进行,否则文件无法被识别,文件名形如:.cdsenv_6.1.5(Cadence IC平台),.cdsenv_12.1(Cadence ICADV平台)。
以下直接给出相关脚本,脚本通过获取软件版本,进行关键字符匹配,然后根据匹配结果搜索特定的.cdsenv_xxx文件,并加载文件中内容的方法实现上述功能。
1/**********************************************************************
2*author : Write by Official Wechat Account: ICSkillSharing
3*date : 2020-08-07
4**********************************************************************/
5
6/**********************************************************************
7.cdsinit
8
9Group Custom IC, Cadence Design Systems Inc.
10Language SKILL
11Date Apr 08, 2014
12
13**********************************************************************
14NOTES:
15
16The current version is ascertained and the
17relevant .cdsenv file is loaded (with file names like .cdsenv_6.1.5
18or .cdsenv_12.1) from either the current directory (if present) or the
19home directory.
20
21**********************************************************************/
22/**********************************************************************
23**** version specific settings ****
24**********************************************************************/
25
26let( (mainVer subVer envFile)
27 when(subVer = cadr(parseString(getVersion(t)))
28 cond(
29 (rexMatchp("ICADV" subVer)
30 mainVer = substring(subVer 6 4)
31 )
32 (rexMatchp("IC" subVer)
33 mainVer = substring(subVer 3 5)
34 )
35 (t
36 mainVer = substring(subVer 1 7)
37 )
38 ); cond
39 ); when
40 when(mainVer && stringp(mainVer)
41 envFile = strcat(".cdsenv_" mainVer)
42 if(isFile(simplifyFilename(envFile)) then
43 envLoadVals(?tool "ALL" ?envFile envFile)
44 printf("Settings loaded from %s\n" envFile)
45 else
46 envFile = strcat("~/" envFile)
47 when(isFile(envFile)
48 envLoadVals(?tool "ALL" ?envFile envFile)
49 printf("Settings loaded from %s\n" envFile)
50 ); when
51 ); if
52 ); when
53); let
脚本来源Cadence论坛,小目同学根据使用需要对部分内容进行了删减,感兴趣的同学们可以去论坛下载完整版文件。
如果文件命名正确并且文件放在正确的路径(当前目录或主目录),那么通过上面的skill脚本,每次启动virtuoso的时候,软件会自动识别并加载与其版本匹配的.cdsenv文件。