EDA工具更新实测 三步避开常见报错坑

发布于 更新于
1,505
3
详情介绍

我亲身进行了Synopsys ICC2 2025.12 – SP3的测试,遭遇了更新以后从前旧版的Tcl脚本全都报告出现 “unknown command” 这个状况的陷阱,刚入门的新手依照下面的步骤一个一个地去操作,便能够轻易地躲开这类常见的问题。

步骤1 更新后环境变量怎么配

首先实现打开终端这个操作,接着进行输入 setenv ICC2_HOME /tools/synopsys/ICC2/2025.12 – SP3 这一情况举动,随后再把 $ICC2_HOME/bin 添加追加到 PATH 最前沿位置,具体为之 set path = ( $ICC2_HOME/bin $path ) 这样的操作行为。具有关键意义的参数ICC2_THREADS,其被推荐设置成为16,原因在于此版本针对多线程调度进行了优化,要是设置得太小,就会造成算力的浪费,要是设置得太大,超过了物理核数情况之下,反而会因为上下文切换导致效率降低20%。

初涉者需避开的坑:在常见报错当中,有“libstdc++.so.6: version GLIBCXX_3.4.22 not found”这种情况。其缘由在于,新的EDA依赖着更高版本的GCC库,然而系统默认的库年头太久远了。快点来解决这个问题:于启动脚本里,将LD_LIBRARY_PATH设置为$ICC2_HOME/gcc/lib64与$LD_LIBRARY_PATH连接起来的路径,并且要去确认在此路径范畴内存在与之对应的库文件,对此要进行一番操作哦。

步骤2 旧工艺库无法识别怎么办

把Library Manager打开,将File -> Add Library点击,让路径朝着旧工艺库文件夹去指向。要是报出“invalid library format”,那就得运行icc2_shell -f convert_lib.tcl,convert_lib.tcl的内容是read_lib -format db old_lib.db,write_lib -format ndm new_lib.ndm。参数-format ndm呈现的是NDM格式,而新版ICC2在默认状态下会进行读取。

新手需避开此坑:出现报错“Library cell missing pin geometry”。其原因在于,旧版使用FRAM视图 ,而新版会强制采用NDM的完整几何信息。要快速解决该问题:可使用官方脚本milkyway2ndm.py -i old_mw_lib -o new_ndm_lib -t 16 ,这里的16代表金属层数 ,需依据实际工艺进行更改。

步骤3 两种更新策略怎么选

方案 A:径直实行覆盖安装旧版本目录,其具备不用更改脚本路径的优点,然而存在新旧二进制混合易于崩溃的缺点,方案 B:构建独立目录,通过软链接指向最新版,它拥有可随时进行回滚的优点,不过存在需要批量修改脚本中的 source 路径的缺点,推荐在芯片规模大于 500 万门时采用方案 B,因为一旦新版出现 bug,回滚仅需 10 秒变动软链接,小规模设计采用方案 A 较为省事。

给新手的避坑提示:出现报错内容为“ERROR: Cannot open shared object file: libssl.so.1.0.0”。一种一站式的解决办法为:先是使用命令find / -name”libssl.so*” ,之后发现系统当中仅存在1.1版本。随后进行软链接的创建,ln -s /usr/lib64/libssl.so.1.1 /tools/eda/lib/libssl.so.1.0.0。接着执行 export LD_PRELOAD=/tools/eda/lib/libssl.so.1.0.0。需要留意,此方法仅仅适用于小版本的兼容情景,要是 EDA 强行校验 MD5 ,那么就需要对 OpenSSL 1.0.2 重新开展编译。

以下版本不适用于本方法,Cadence Innovus版本低于2024的情况也是,因其库依赖全然不同。替代方案为:直接运行官方所提供的docker镜像,以此避免环境冲突。你在更新EDA时还碰到过哪些奇葩报错?在评论区分享出来,一同避坑。

常见问题(FAQ)

更新ICC2后,旧版Tcl脚本报“unknown command”怎么办?
通常是因为环境变量未正确配置。请确保设置ICC2_HOME为安装路径,并将$ICC2_HOME/bin添加到PATH最前面。同时检查LD_LIBRARY_PATH是否包含新版GCC库路径,避免libstdc++版本不兼容。
旧工艺库无法识别,报“invalid library format”如何解决?
新版ICC2默认使用NDM格式,旧版DB格式需转换。运行icc2_shell -f convert_lib.tcl,其中convert_lib.tcl内容为read_lib -format db old_lib.db和write_lib -format ndm new_lib.ndm。若报“missing pin geometry”,可使用milkyway2ndm.py脚本转换。
更新策略选择上,大规模设计推荐哪种?
对于芯片规模大于500万门的设计,推荐方案B:构建独立目录并通过软链接指向最新版。这样一旦新版出现bug,回滚仅需10秒变动软链接。小规模设计可采用方案A直接覆盖安装。
3 讨论
热门最新
总结
暂无总结

convert_lib.tcl脚本帮了大忙,旧库转换一次成功,感谢分享!

方案B的软链接回滚太实用了,上次新版出bug秒回旧版,省了不少时间。

实测确实有效,之前被libstdc++坑了好久,按你的方法配了LD_LIBRARY_PATH就解决了。

0 / 600