第二章:PrimeTime环境搭建
说实话,很多刚入行的朋友觉得STA就是跑个脚本、看个报告。但我要说,环境没搭好,后面全是坑。我自己就吃过这个亏——第一次装PrimeTime时,License配置搞错了,折腾了两天才发现是环境变量少写了个斜杠。嗯,咱们今天就把这事彻底说清楚。
2.1 PrimeTime工具安装
PrimeTime的安装包,通常从Synopsys官网或者公司内部服务器获取。我个人习惯把安装包放在/tools或者/opt目录下,别放桌面,也别放home目录,免得权限出问题。
安装步骤其实不复杂,核心就三步:
- 解压安装包:
tar -xvf PrimeTime_*.tar - 运行安装脚本:
./installer,按提示走就行 - 设置安装目录:我一般用
/tools/synopsys/pt/,版本号单独建文件夹,方便管理
小技巧:安装时记得选“Full Installation”,别省那点空间。缺了某个库文件,后面跑不起来更头疼。
安装完成后,检查一下bin目录下有没有pt_shell和prime_time这两个可执行文件。没有的话,八成是安装路径选错了。
2.2 License配置
License配置,这是最容易出问题的地方。我曾经见过一个团队,所有人都在报“License check failed”,最后发现是LM_LICENSE_FILE变量里多了个空格。
配置License分两步:
- 设置环境变量:在
.bashrc或.cshrc里加上:
# 对于bash用户
export LM_LICENSE_FILE=27000@license_server:5280@license_server2
export SNPSLMD_LICENSE_FILE=27000@license_server
# 对于csh/tcsh用户
setenv LM_LICENSE_FILE 27000@license_server:5280@license_server2
setenv SNPSLMD_LICENSE_FILE 27000@license_server
- 启动License服务:在License服务器上运行:
lmgrd -c /path/to/license.dat -l /var/log/lmgrd.log
注意:License文件里的SERVER行,主机名必须和hostname输出一致。大小写也要对,Linux是区分大小写的。
验证License是否生效,用这个命令:
lmstat -a -c 27000@license_server
看到“License server status: UP”就对了。如果显示“Cannot connect to license server”,先ping一下服务器,再检查防火墙。
2.3 启动与退出
PrimeTime有两种启动方式:
- 图形界面:
prime_time &,适合看波形、调时序 - 命令行模式:
pt_shell,适合跑脚本、批量处理
我个人更常用pt_shell,毕竟后端工程师嘛,脚本才是真爱。启动后你会看到:
PrimeTime (TM)
Version P-2019.03-SP2
Copyright (c) 2019 Synopsys, Inc.
pt_shell>
退出也很简单:
pt_shell> exit
或者直接Ctrl+D。嗯,就这么简单。
避坑指南:我曾经在服务器上开了十几个pt_shell窗口,结果内存爆了。建议用top命令看看资源占用,别贪多。
2.4 基本命令行操作
进了pt_shell,你得知道几个基本命令。我列个表,方便你对照:
| 命令 | 功能 | 示例 |
|---|---|---|
help |
查看帮助 | help report_timing |
source |
执行Tcl脚本 | source run.tcl |
read_verilog |
读入网表 | read_verilog top.v |
read_sdc |
读入约束 | read_sdc top.sdc |
report_timing |
查看时序报告 | report_timing -max_paths 10 |
list_libs |
列出库文件 | list_libs |
举个例子,你刚启动pt_shell,想看看当前工作目录:
pt_shell> pwd
/pt/project/design
pt_shell> ls
top.v top.sdc run.tcl
注意,ls和pwd这些Unix命令在pt_shell里也能用,但有些命令会被重载。比如echo,在Tcl里是打印变量,在Unix里是输出字符串。我建议你多用Tcl原生命令,避免混淆。
经验之谈:写脚本时,source命令比include更灵活。我习惯把所有设置写在一个setup.tcl里,然后source setup.tcl,干净利落。
还有一个常用操作——查看变量:
pt_shell> set target_library "typical.db"
pt_shell> echo $target_library
typical.db
变量名用$引用,这是Tcl的规矩。如果你忘了加$,PrimeTime会把它当成字符串,不会报错,但结果肯定不对。我刚开始学Tcl时就犯过这错,查了半天才发现。
2.5 环境验证
环境搭好了,怎么知道对不对?跑个最简单的时序分析试试:
pt_shell> read_verilog counter.v
pt_shell> link
pt_shell> read_sdc counter.sdc
pt_shell> report_timing
如果能看到时序路径和slack值,说明环境没问题。如果报错,先看error信息,八成是库文件路径不对或者License没配好。
核心要点:环境搭建是STA的基础,别嫌麻烦。我见过太多人花一周调时序,最后发现是License过期了。嗯,检查环境,永远是最先做的事。
好了,这一章就到这里。下一章咱们聊聊时序库,那才是STA的真正核心。