在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 9315|回复: 25

[求助] 如何在启动virtuoso时加载自己的.drf文件

[复制链接]
发表于 2023-3-20 18:39:39 | 显示全部楼层 |阅读模式
100资产
已经在.cdsinit里load .drf文件(用的是drLoadDrf,路径没问题),启动virtuoso时还是加载PDK下的.drf,请问这种情况怎么解决?

最佳答案

查看完整内容

试试这个应该可以 if(ddGetObj("PDK名称") then drLoadDrf("路径/display.drf") else if(ddGetObj(PDK名称") then drLoadDrf("路径/display.drf")
发表于 2023-3-20 18:39:40 | 显示全部楼层
试试这个应该可以
if(ddGetObj("PDK名称") then
   drLoadDrf("路径/display.drf")
else
   if(ddGetObj(PDK名称") then
   drLoadDrf("路径/display.drf")
发表于 2023-3-20 20:09:43 | 显示全部楼层
在 Virtuoso 启动时加载的是 PDK 下的 .drf 文件,而不是您已经在 .cdsinit 文件中使用 drLoadDrf 加载的 .drf 文件,可能是因为 Virtuoso 的环境变量中设置了对 PDK 文件的路径。  要解决这个问题,您可以按照以下步骤进行操作:  检查 Virtuoso 环境变量中是否存在指向 PDK 的路径。在命令行中输入 echo $CDS_INST_DIR,如果返回的路径指向 PDK 文件夹,就说明 Virtuoso 会优先加载 PDK 相关文件。如果路径指向不是 PDK 文件夹,就可能需要进一步检查其他配置文件。  可以尝试在 .cdsinit 文件中设置自己的环境变量,将 PDK 路径替换为您自己的 .drf 文件路径。例如,将以下语句添加到 .cdsinit 文件中:  bash Copy code  setenv CDS_INST_DIR /path/to/your/drf/file 这样可以覆盖 Virtuoso 环境变量中的设置,使 Virtuoso 加载您自己的 .drf 文件。  如果以上两个步骤都无法解决问题,可以尝试将您的 .drf 文件重命名为与 PDK 中的 .drf 文件相同的名称,并将其放置在 PDK 相同的文件夹中。这样可以欺骗 Virtuoso,使其加载您的 .drf 文件而不是 PDK 中的文件。  以上是一些可能的解决方案,具体取决于您的环境和配置文件。您可以根据情况进行尝试。
发表于 2023-3-21 10:06:00 | 显示全部楼层


我还好之大力神 发表于 2023-3-20 20:09
在 Virtuoso 启动时加载的是 PDK 下的 .drf 文件,而不是您已经在 .cdsinit 文件中使用 drLoadDrf 加载的 . ...


这个难道也是chatGPT的回复?
发表于 2023-3-21 10:12:31 | 显示全部楼层
我之前查过,drf文件有三次指向路径,
第一次是pdk路径下的display.drf,
第二次是~/下面的display.drf,
第三次是当前目录下的./的display.drf。
你可能在你的当前路径下有一个原始的display.drf文件,给他删掉。然后把你更改后的display文件更名问display.drf放在你的当前文件下,你甚至可以不在.cdsinit里load,它自己就能显示图层。

点评

说的对  发表于 2023-4-6 17:45
发表于 2023-3-21 10:39:07 | 显示全部楼层
本帖最后由 591954064 于 2023-3-21 10:52 编辑


li_jingwen 发表于 2023-3-21 10:06
这个难道也是chatGPT的回复?


以下回复来自chatGPT(以供参考):
这种情况可能是因为你在.cdsinit文件里加载了.drf文件,但是 Virtuoso 仍然会从默认的 PDK 路径中查找 .drf 文件并加载它。
解决这个问题的步骤如下:
1. 确认.cdsinit文件中正确地加载了 .drf 文件。可以使用 text editor 打开 .cdsinit 文件来查看,确认它包含了正确的路径和文件名。
2. 将 PDK 路径从 Virtuoso 环境变量中移除。
3. 重新启动 Virtuoso 并检查是否成功加载了 .drf 文件。
如果仍然存在问题,请尝试使用绝对路径加载 .drf 文件,并确保该路径在 Virtuoso 的搜索路径中。

发表于 2023-3-21 10:43:26 | 显示全部楼层
两种办法:一种是在.cdsinit里面加载,你用drLoadDrf+display.drf
发表于 2023-3-21 10:46:44 | 显示全部楼层
然后你还要用ddGetObj+PDK_name,另一种方法是在.cdsenv里面用drLoadDrf("~/display.drf)。两种办法都可以
 楼主| 发表于 2023-3-21 15:01:20 | 显示全部楼层


我还好之大力神 发表于 2023-3-20 20:09
在 Virtuoso 启动时加载的是 PDK 下的 .drf 文件,而不是您已经在 .cdsinit 文件中使用 drLoadDrf 加载的 . ...


谢谢回复。根据您的建议,我输入了指令,返回的路径指向cadence安装目录,您说的其它配置文件我就不太懂了。

我把语句添加到.cdsinit文件中,也没有解决问题。
另外有了新的发现,我把该项目(就叫项目A)的.cdsinit  cds.lib 复制到一个新的文件夹,重新建立环境,virtuoso load的是我的.drf,我又试着在新环境下打开项目A里的一个cell,virtuoso又load了一遍PDK下的.drf,图层显示变回原来的了,点开别的cell,virtuoso没有重复load。我又重复了几次,只要打开项目A里的cell,virtuoso就会重新load PDK下的.drf。不知道哪里设置了什么,
 楼主| 发表于 2023-3-21 16:23:05 | 显示全部楼层


WSYL 发表于 2023-3-21 15:11
试试这个应该可以
if(ddGetObj("DK名称") then
   drLoadDrf("路径/display.drf")


谢谢,我试了一下不行,可能我不会用这个脚本,
我用了别的脚本,当virtuoso load PDK的.drf,就点下快捷键运行脚本load我的.drf,算是另辟蹊径了




  1. procedure(Load()
  2.    let((cv techName)
  3.         cv = geGetEditCellView(hiGetCurrentWindow())
  4.         techName = techGetTechLibName(cv)
  5.             if(techName == "PDK_name"  then
  6.            drLoadDrf("~/display.drf")
  7.         );if
  8.         );let
  9.         );proc

  10. hiSetBindKey("Layout" "<Key>8" "Load()")


复制代码

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-22 22:44 , Processed in 0.025410 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表