EDA工具选型实操 三步避开Synopsys DC常见坑

发布于 更新于
3,011
3
详情介绍

实实在在亲自测试了Synopsys DC 2023.12 – SP3,遭遇过因lib库路径写错致使综合直接崩溃的情况,新手依据步骤逐个操作,便能够轻易躲开这类常见问题。

1. 环境变量配置

打开,位于用户主目录下的隐藏文件.bashrc,往其中添加内容,内容为,将SYNOPSYS_HOME环境变量设置为/tools/synopsys/DC_2023.12,再添加内容,内容是将PATH环境变量设置为现有PATH加上SYNOPSYS_HOME目录下的bin子目录路径,最后执行source命令,该命令作用于~/.bashrc文件。关键参数LM_LICENSE_FILE,建议设置成为27000@lic_server,原因在于,统一端口能够防止冲突,在多个工具共同使用的时候,不需要反复进行修改。

避免新手踩坑,运行dc_shell时出现“command not found”提示:很大概率是PATH顺序有误,通过echo $PATH检查,要保证/bin处于前面;要是出现“License checkout failed”提示,首先使用lmstat -a查看服务器是否连通,接着ping lic_server来确认网络情况。

2. 启动并挂载库文件

因综合时采用最慢corner,后端布线后setup/hold更易于收敛,所以slow.db是最优推荐值,且要留出20%时序余量。

【新手避开误区】,当出现报“无法找到库”的情况时:千万绝对不要使用相对路径!使用pwd查看当前目录,然后直接固定写成/home/project/lib/slow.db。另外还要检查.db文件是否被chmod锁定,通过ls -l查看一下权限。

3. 读入设计文件

分别执行,先进行read_verilog -netlist -verbose ./rtl/uart_top.v操作,然后执行current_design uart_top操作,最后执行link操作 ,是这样的流程过程。将时钟周期设定为8纳秒,此设定是为目标100兆赫兹留出20%的余量,对应的命令是:create_clock -period 8 [get_ports clk]。

《【新手躲避陷阱】》,出现“报‘未定义模块uart_rx’”这种情况,是因为“读入顺序有误”,“子模块必须在顶层之前读入”。“方案对比”方面,“其一”,“图形界面gui_start”,接着进行“File”操作,再选择“Read”,然后勾选“Verbose”,这种方式适合“用肉眼检查错误”;“其二”,“脚本模式dc_shell -f run.tcl”,此方式适合“批量跑完后去喝茶”。“调试时使用第一种方式”,“生产时使用第二种方式”。

对高频出现的错误提示“Feature DC_Ultra_Opt not available”进行完整解决,具体步骤如下:可以通过运行lmstat -a来查看是否存在feature缺失的情况,若发现存在feature缺失,接着打开license文件,在其中搜索“DC_Ultra_Opt”,要是没有找到该内容,那么就更换带有该feature的license文件,或者联系管理员进行处理,之后设置export LM_LICENSE_FILE=27000@new_server,然后通过运行lmgrd -c license.dat来重启服务,最后在dc_shell中再度重试。

开源 EDA(像 Yosys 这样的)不适用上述方法,替代的方案是:改成使用 yosys -p”read_verilog uart_top.v; synth_ice40″ ,环境变量全部要手动去配置。你手头的 EDA 选型在哪里卡在了某个报错上面呢?在评论区把截图丢出来,我帮你看一看。

常见问题(FAQ)

运行dc_shell出现'command not found'怎么办?
检查PATH环境变量顺序,确保SYNOPSYS_HOME/bin在PATH中且位于前面,使用echo $PATH查看。
License checkout failed如何解决?
先用lmstat -a检查服务器连通性,再ping lic_server确认网络,最后检查LM_LICENSE_FILE设置是否正确。
读入设计文件时提示'未定义模块'怎么办?
确保子模块在顶层模块之前读入,调整read_verilog命令的顺序。
3 讨论
热门最新
总结
暂无总结

读入顺序那个坑我踩过,现在终于知道要先读子模块了,谢谢博主!

之前一直卡在库文件路径上,用了绝对路径就好了,太实用了。

按照步骤配置环境变量后,果然没再出现command not found,感谢分享!

0 / 600