首页 > 其他分享 >【Virtuoso环境设置第一篇】.cdsenv

【Virtuoso环境设置第一篇】.cdsenv

时间:2024-03-23 20:11:37浏览次数:32  
标签:文件 第一篇 CSF Virtuoso CDS cdsenv 目录 加载

Virtuoso的环境你真的懂吗?

这是环境系列的第一篇,教大家如何理解Virtuoso环境中.cdsenv的加载机制

关于.cdsenv的默认加载顺序是什么?

在查阅官方文档后,可以得到的结论是:

  1. 第一顺位是所有已注册的软件工具的定制化.cdsenv,这些文件的位置如下:
    your_install_dir/tools/dfII/etc/tools/toolName/.cdsenv
    并且这些文件一般是普通用户不能擅自修改的。
  2. 第二顺位是virtuoso自身的.cdsenv,文件位置如下:
    your_install_dir/tools/dfII/local/.cdsenv
    这个位置的文件一般也是普通用户不能擅自修改的。
  3. 第三顺位就是用户个人的家目录:
    home_directory/.cdsenv
    这个位置的文件就是普通用户可以添加自定义修改项的了。

至于为什么没有提启动目录下的.cdsenv,是因为在默认情况下,环境启动时是不会读取启动路径下的.cdsenv的。有人不知道启动目录在哪?使用getWorkingDir()命令在ciw(Command Interpreter Window)中获取即可。

讲到这里可能有人会质疑,所以如果有人想动手测试这个顺序的以及验证这个结论的正确性呢,可以做一个简单的测试,流程如下:

  1. 第一步确保你的个人环境是未定制过的,如何检查呢?在你的终端terminal或者console中输入如下的命令即可将定制化设置清除。
unsetenv CDS_LOAD_ENV
unsetenv CDS_PROJECT

关于这里提到的shell变量会在稍后提到,请耐心看完即可。
2. 第二步在启动目录下创建一个.cdsenv文件,里面写一行参数:
ui defaultEditorBackgroundColor string "red"
这句话的意思就是将默认的编辑器的背景色改成红色,下面我们就可以验证这句语法是否生效了。
3. 第三步在当前启动目录使用virtuoso&启动,然后打开任意Layout界面会发现,默认的背景色还是黑色,说明该设置未生效。
4. 第四步将该.cdsenv文件放在home下,再回到刚刚的目录下启动之后会发现版图界面的默认背景色由黑色变成了红色。

该测试可以证明在默认设置下,启动目录的.cdsenv是不生效的。

如何定制化加载.cdsenv文件呢?

还是查阅官方文档哈,有两种定制化方式:

  1. 第一种办法就是设置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机制。

  1. 第二种方法就是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

相关文章

  • 我的第一篇blog
    开始写博客,记录学习生活了此前一直有考虑建个个人博客,但太麻烦了,有些知识也还没学,因此选择了博客园,一边学习一边记录。也希望有更多计算机的友友们一起来学习。目前大一,现在在学ctf逆向和ps,以后想学点单片机之类的。......
  • Win11复现 PointNet ++ 分类任务 || 三维点云深度学习第一篇
    ​Windows11Github上复现PointNet++Classification任务下载代码和安装依赖环境安装git知乎教程Gitclone源码地址:PointNetGithub点击Code复制HTTPS到目标目录shift-右键GitBashHere输入GitClone<url>​​​​​​安装nodejsNode.js—Down......
  • 第一篇博客
    第一篇博客目录目录第一篇博客目录基本信息自我评估展望未来3.13.2未来职业规划3.3对软件工程实践的理解和期待4学习路线5建立代码仓库基本信息这篇博客是软件工程作业班级链接作业要求作业要求作业的目标介绍自己以及规划未来其他参考文献构建之法社区......
  • C++STL学习第一篇(什么是STL以及string的各种功能用法)
    STLSTL提供了六大组件,彼此之间可以组合套用,这六大组件分别是:容器、算法、迭代器、仿函数、适配器、空间配置器。数据结构和容器管理:STL提供了多种数据结构和容器,如向量(vector)、链表(list)、集合(set)、映射(map)等。这些容器可以帮助程序员方便地存储和管理数据,根据需求进行动态调......
  • 3月5号(工程日报第一篇)
    所花时间(包括上课):3小时25分钟代码量(行):91行(课上练习题,Java代码读取哈利波特寻找最长首尾相连单词链)博客量(篇):2篇了解到的知识点:Java对于.txt文本文件的读取操作具体知识点:1、文件相对路径的书写存储 2、判断文件是否存在或是否打开成功 3、文件多行读取并将读取字符串去......
  • 2024第一篇
    在今天写篇,希望今年财神会爱我。把网易云下回来了,翻了翻以前的动态,又看了看以前写过的博客……真有种跨越时空和从前自己对话的感觉。年复一年,无意间看到前前任发的微博,说现在很好,没什么特别的期望。羡慕,这种生活状态也太好了,我对未来还有很多期望,也还有很多想要的......
  • c++的类开发第一篇
    class_1什么是接口?类就是一种公共接口,公众(public)是使用类的程序,交互系统由类对象组成,而接口由编写类的人提供的方法组成。接口让程序员能够编写与类对象交互的代码,从而让程序能够使用类对象。例如,要计算string对象中包含多少个字符,您无需打开对象,而只需使用string类提供的s......
  • 第一篇-安装工程专业基础知识
      1.电气:强电弱电,强电比如有电力电缆,比较粗,弱电有控制电缆细,强电频率低,弱电频率大弱电主要处理对象是信息,强电主要处理对象是能源(电力) ......
  • 【VIrtuoso】abstract的相关配置
    需要将cds.libcopy过来,保证abstract能够吃到工艺的相关信息 absSkillMode()absSetOption("NewLibraryPath""./")absSetOption("NewLibraryName""TEST")absSetLibrary("TEST")absAttachTechLib("TN28")absSetOption(&quo......
  • 蒻苟的第一篇学习笔记(快速排序)
    快速排序是一个非常经典也非常常用的排序算法。在平均状况下,排序n个项目需要Ο(nlogn)次比较,在最坏状况下则需要Ο(n2)次比较,但这种状况其实并不常见。快速排序是分而治之思想在排序算法上的典型应用。算法步骤:1.从数列中挑出一个元素,称为"基准"。2。设置两个"哨兵",利用......