Virtuoso的环境你真的懂吗?
这是环境系列的第一篇,教大家如何理解Virtuoso环境中.cdsenv的加载机制
关于.cdsenv的默认加载顺序是什么?
在查阅官方文档后,可以得到的结论是:
- 第一顺位是所有已注册的软件工具的定制化.cdsenv,这些文件的位置如下:
your_install_dir/tools/dfII/etc/tools/toolName/.cdsenv
并且这些文件一般是普通用户不能擅自修改的。 - 第二顺位是virtuoso自身的.cdsenv,文件位置如下:
your_install_dir/tools/dfII/local/.cdsenv
这个位置的文件一般也是普通用户不能擅自修改的。 - 第三顺位就是用户个人的家目录:
home_directory/.cdsenv
这个位置的文件就是普通用户可以添加自定义修改项的了。
至于为什么没有提启动目录下的.cdsenv,是因为在默认情况下,环境启动时是不会读取启动路径下的.cdsenv的。有人不知道启动目录在哪?使用getWorkingDir()
命令在ciw(Command Interpreter Window)中获取即可。
讲到这里可能有人会质疑,所以如果有人想动手测试这个顺序的以及验证这个结论的正确性呢,可以做一个简单的测试,流程如下:
- 第一步确保你的个人环境是未定制过的,如何检查呢?在你的终端terminal或者console中输入如下的命令即可将定制化设置清除。
unsetenv CDS_LOAD_ENV
unsetenv CDS_PROJECT
关于这里提到的shell变量会在稍后提到,请耐心看完即可。
2. 第二步在启动目录下创建一个.cdsenv文件,里面写一行参数:
ui defaultEditorBackgroundColor string "red"
这句话的意思就是将默认的编辑器的背景色改成红色,下面我们就可以验证这句语法是否生效了。
3. 第三步在当前启动目录使用virtuoso&
启动,然后打开任意Layout界面会发现,默认的背景色还是黑色,说明该设置未生效。
4. 第四步将该.cdsenv文件放在home下,再回到刚刚的目录下启动之后会发现版图界面的默认背景色由黑色变成了红色。
该测试可以证明在默认设置下,启动目录的.cdsenv是不生效的。
如何定制化加载.cdsenv文件呢?
还是查阅官方文档哈,有两种定制化方式:
- 第一种办法就是设置CDS_LOAD_ENV变量
关于这个变量的解释呢,就是通过设置不同的参数值来改变系统启动时对于.cdsenv的读取顺序。下面是一些可选的参数值:
1.False #既不加载启动目录的.cdsenv,也不加载home的.cdsenv
2.CWD #只加载启动目录的.cdsenv,不加载home的.cdsenv
3.addCWD #先加载home的.cdsenv,再加载启动目录的.cdsenv
4.CWDElseHome #先加载启动目录的.cdsenv,如果不存在再去加载home的.cdsenv
5.CSF #根据CSF(Cadence Setup Search File mechanism)机制规定的顺序去加载,这个模式后面会单独讲解
#以上5种参数加载方式,除了CSF模式,其他4种均按照均按照默认的加载顺序去加载。
关于默认的加载顺序在第一章已经提过了优先级和顺位的概念,也就是说1-4的参数设置之后,系统初始化环境的时候会在第一和第二顺位的.cdsenv加载之后再按照CDS_LOAD_ENV的参数值去加载用户自定义的.cdsenv
其实读到这里,读者们不禁会有疑问?难道只有这几个位置的.cdsenv才会被读取吗?答案是否定的,接下来会介绍Cadence官方提供的更为强大的CSF机制。
- 第二种方法就是CSF(Cadence Setup Search File mechanism)机制。
CSF是一种Cadence官方提供的定制化加载流程,可以使用该流程提供的setup.loc文件来定制化修改文件搜索路径的顺序,setup.loc文件可以在官方提供的路径下your_install_dir/share/cdssetup
找一个模板,来进行定制化修改。
那么问题又来了,如果很多路径下都存在一个setup.loc文件该怎么办?官方针对这个问题也是有解决办法的,即在指定路径下的setup.loc只要被发现,则停止查找,从而避免了多个setup.loc文件套娃的问题。
下面介绍一下这个默认的查找顺序是什么:
. #启动目录。
@LIBRARY #所有有效的Design Library文件夹路径,也就是定义在cds.lib中的Librarys,按照定义的顺序去挨个检索。
$CDS_WORKAREA #存放用户个人项目设置的目录,如果未定义的话,CSF会跳过这个位置。
$CDS_SEARCHDIR #目前官方已经禁用这个变量了,所以我也不知道为什么手册里还会提这个东西*.*。
$HOME #用户家目录。
$CDS_PROJECT #存放项目公共设置的目录,如果未定义的话,CSF会跳过这个位置。
$CDS_SITE #存放局点公共配置的目录,如果未定义,则会去your_install_dir/share/local路径查找。
$(compute:THIS_TOOL_INST_ROOT)/share #存放软件默认的位置。
关于上述的路径,里面还有两个特殊文件定义,和路径本身沟构成了三个搜索位置,所以这个三个位置还有一个搜索顺序的定义。
local/.cadence
local
local/cdssetup
这里解释一下这个定义是什么意思,比如当我要查找setup.loc文件的时候,搜索到了路径local,会优先去这个路径下面的名叫.cadence的路径里面搜索,其次才是local本身,如果这两个位置都没找到,还会去local下面名叫cdssetup的文件夹下面查找,如果都没有则会跳过这个local位置,去下一个位置继续进行这个查找。
其实读到这里,耐心的读者一定会知道为什么在上一章时进行清除定制化设置时,要清除CDS_PROJECT
这个变量了,按照刚刚的解释,这个位置的setup.loc会被搜索到并执行,也就基本等同于将CDS_LOAD_ENV
设置成CSF的效果。
继续回到CSF这个话题,既然setup.loc文件定义查找的顺序,那么有哪些文件是遵循这个机制流程的呢?这里就又要引入一个新的文件名叫csfLookupConfig了。这个文件里面通过INCLUDE/EXCLUDE/ALL等语法去定制化修改哪些文件来遵循这个规则,这里就不赘述了,这个文件的模板在your_install_dir/share/cdssetup
下面
讲到这里基本就把Cadence环境中.cdsenv的加载机制以及CSF这个玩法讲明白了,这里顺便提一嘴,一直有人问.cdsinit和.cdsenv谁的优先级更高?我在这里解释一下,.cdsenv的加载顺序是在.cdsinit之前的,也就是说.cdsinit的设置会覆盖.cdsenv的同一个设定。
后续有时间再把类似的机制和文件写进来,持续更新中。。。
标签:文件,第一篇,CSF,Virtuoso,CDS,cdsenv,目录,加载 From: https://www.cnblogs.com/HermesStudio/p/18077753