第二章 环境搭建与安装:工欲善其事,必先利其器

各位同学,欢迎来到第二章。上一章我们聊了SiliconSmart能干什么,这一章咱们就来点实在的——把软件装好、跑起来。

说实话,环境搭建这步看着简单,但坑是真不少。我见过太多人卡在License配置上,一卡就是半天。所以这一章,我会把每一步的关键点都掰开揉碎了讲。

2.1 软件安装:别急着双击

拿到SiliconSmart的安装包后,先别急着双击。我个人习惯是,先看一眼READMEInstallGuide。别笑,这步真能省不少事。

安装包通常是.tar.gz.tar.Z格式。解压命令很简单:

tar -xzvf SiliconSmart_2023.1_linux64.tar.gz -C /opt/

解压到/opt/目录下,这是Linux的惯例。当然你也可以放别的地方,但路径里不要有中文或空格。嗯,这个坑我踩过。

解压完后,你会看到类似这样的目录结构:

/opt/SiliconSmart_2023.1/
├── bin/
├── lib/
├── etc/
├── doc/
└── examples/

这里bin/是执行文件,lib/是库文件,etc/里放着配置文件。我建议你先把doc/里的release_notes.pdf翻一翻,看看当前版本有什么已知问题。

小技巧: 安装路径最好固定下来。我习惯用/opt/eda/SiliconSmart/,这样后续升级版本时,目录结构清晰,不会搞混。

2.2 License配置:最头疼的一步

License配置,说白了就是让软件知道「你有权使用它」。这一步如果搞不定,后面全是白搭。

SiliconSmart用的是FlexLM(Flexible License Manager)机制。你需要拿到一个.lic.dat文件,里面包含了你的授权信息。

配置步骤其实就三步:

  1. 设置环境变量:告诉软件License文件在哪
  2. 启动License服务:用lmgrd启动守护进程
  3. 验证:用lmstat检查是否生效

具体来说,在.bashrc.cshrc里加上:

# 对于bash用户
export LM_LICENSE_FILE=/opt/licenses/siliconsmart.lic
export SNPSLMD_LICENSE_FILE=/opt/licenses/siliconsmart.lic

# 对于csh/tcsh用户
setenv LM_LICENSE_FILE /opt/licenses/siliconsmart.lic
setenv SNPSLMD_LICENSE_FILE /opt/licenses/siliconsmart.lic

这里要注意,SNPSLMD_LICENSE_FILE是Synopsys系软件特有的变量。SiliconSmart虽然是Synopsys的工具,但有些老版本只认LM_LICENSE_FILE。我建议两个都设上,保险。

避坑指南: 我曾经遇到过License文件路径写对了,但死活连不上。后来发现是防火墙把27000端口给封了。FlexLM默认端口是27000,如果你在公司内网,记得找IT开一下端口。

启动License服务的命令:

lmgrd -c /opt/licenses/siliconsmart.lic -l /var/log/lmgrd.log

启动后,用lmstat -a查看状态。如果看到Server status: UP,恭喜你,成了。

2.3 环境变量设置:别漏了关键变量

环境变量这东西,少设一个,工具就罢工。我整理了一个清单,你照着设就行:

变量名 说明 示例值
SILICONSMART_HOME 安装根目录 /opt/SiliconSmart_2023.1
PATH 添加bin目录 $SILICONSMART_HOME/bin:$PATH
LD_LIBRARY_PATH 共享库路径 $SILICONSMART_HOME/lib:$LD_LIBRARY_PATH
LM_LICENSE_FILE License文件路径 /opt/licenses/siliconsmart.lic
SNPSLMD_LICENSE_FILE 备用License变量 /opt/licenses/siliconsmart.lic

我个人习惯把这些变量统一放在一个文件里,比如/opt/eda/env.sh,然后在.bashrcsource它。这样换版本时,只改一个文件就行。

# /opt/eda/env.sh 示例
export SILICONSMART_HOME=/opt/SiliconSmart_2023.1
export PATH=$SILICONSMART_HOME/bin:$PATH
export LD_LIBRARY_PATH=$SILICONSMART_HOME/lib:$LD_LIBRARY_PATH
export LM_LICENSE_FILE=/opt/licenses/siliconsmart.lic
export SNPSLMD_LICENSE_FILE=/opt/licenses/siliconsmart.lic
小技巧: 设置完环境变量后,记得source ~/.bashrc或重新登录。然后敲which siliconsmart,如果能找到路径,说明环境变量生效了。

2.4 依赖工具检查:SPICE仿真器不能少

SiliconSmart本身不跑SPICE仿真,它需要调用外部的SPICE仿真器。说白了,它就是个「调度员」,真正干活的是HSPICE、Spectre或FineSim这些工具。

你想想看,如果SPICE仿真器没装好,SiliconSmart跑起来就是「巧妇难为无米之炊」。

检查SPICE仿真器是否可用,我一般这么做:

  1. 确认安装:看看hspicespectre命令能不能找到
  2. 确认版本:用hspice -vspectre -version查看版本号
  3. 确认License:跑一个简单的网表,看看能不能正常仿真

举个例子,检查HSPICE:

which hspice
hspice -v
# 输出类似:HSPICE (R) Version T-2022.06-SP1

如果找不到命令,那就要检查SPICE仿真器的环境变量了。通常需要设置HSPICE_HOMESPECTRE_HOME,并把bin目录加到PATH里。

避坑指南: 我曾经遇到过HSPICE和SiliconSmart版本不匹配的问题。SiliconSmart 2023.1要求HSPICE至少是T-2022.06版本。如果版本太老,跑出来的结果可能不准,甚至直接报错。建议你查一下SiliconSmart的Release Notes,里面有详细的版本兼容性列表。

除了SPICE仿真器,还有一些辅助工具也建议检查:

  • Perl:SiliconSmart内部脚本依赖Perl,版本建议5.8以上
  • gcc/g++:如果你要编译自定义模型,需要C编译器
  • make:用于自动化流程

检查命令很简单:

perl --version
gcc --version
make --version

如果这些工具缺失,用系统的包管理器装一下就行。Ubuntu下是apt-get install,CentOS下是yum install

2.5 验证安装:跑个Hello World

环境搭好了,怎么知道对不对?跑个最简单的例子试试。

SiliconSmart自带了示例库,在$SILICONSMART_HOME/examples/目录下。我建议你用inverter这个例子,它最简单。

cd $SILICONSMART_HOME/examples/inverter
siliconsmart -run

如果一切正常,你会看到终端里刷刷刷地跑日志,最后输出类似:

Characterization completed successfully.
Results written to ./results/

嗯,看到这个,你就可以放心了——环境搭建成功。

如果报错,别慌。先看日志文件,通常.log文件里会告诉你哪里出了问题。常见的错误有:

  • License错误:检查lmstat状态
  • SPICE仿真器找不到:检查PATHHSPICE_HOME
  • 库文件缺失:检查LD_LIBRARY_PATH
小技巧: 我习惯在跑正式任务前,先跑一遍这个inverter例子。它能快速验证整个工具链是否通畅。如果连inverter都跑不过,那后面的大库就别想了。

小结

这一章我们聊了SiliconSmart的安装、License配置、环境变量设置和依赖工具检查。说白了,就是让软件能跑起来。

环境搭建这步,看着琐碎,但真不能马虎。我见过太多人因为License没配好,或者SPICE仿真器版本不对,浪费了一整天。你按我上面说的步骤来,应该半小时内就能搞定。

下一章,我们会正式进入特征化流程。到时候,你会用到今天搭好的环境。所以,务必确保这一步没问题。

好,今天就到这儿。有问题随时找我。