第1章:检测环境搭建
做硬件木马检测,第一步就是搭环境。这事儿看着简单,但我在好几个项目里都见过有人在这上面栽跟头。说白了,环境没搭好,后面所有工作都是空中楼阁。
1.1 Linux环境准备
我个人习惯用CentOS 7或Ubuntu 20.04 LTS。为什么选这两个?因为EDA工具对它们的支持最成熟。你想想看,Synopsys和Cadence的官方文档里,测试环境基本都是这两个版本。
核心要求:
- 操作系统:CentOS 7.9 / Ubuntu 20.04 LTS(64位)
- 内核版本:3.10.0+(CentOS)或5.4.0+(Ubuntu)
- 磁盘空间:至少200GB(我建议直接上500GB,后面你会感谢我的)
- 内存:32GB起步,64GB更稳妥
- CPU:4核以上,8核最佳
嗯,这里要注意:千万别用Windows子系统WSL来跑EDA工具。我在项目中遇到过,WSL的IO性能根本扛不住大规模网表的解析,跑着跑着就崩了。
基础依赖包安装
装完系统第一件事,把基础依赖包装上。我整理了一个清单,你直接复制粘贴就行:
# CentOS 7
yum install -y gcc gcc-c++ make flex bison patch \
libXext libXft libXpm libXmu libXt libX11 \
libstdc++-static glibc-devel glibc-static \
tcl tk perl python3 python3-devel \
redhat-lsb-core
# Ubuntu 20.04
apt-get install -y build-essential flex bison \
libxext-dev libxft-dev libxpm-dev libxmu-dev \
libxt-dev libx11-dev libstdc++-static \
tcl-dev tk-dev perl python3 python3-dev \
lsb-release
小技巧:装完依赖后,建议重启一下系统。有些库的加载路径需要重新初始化,不重启的话,后面装EDA工具时可能会报一些莫名其妙的链接错误。
1.2 EDA工具链安装
EDA工具安装,说白了就是两件事:解压、配置license。但这里面的坑,我踩过不少。
Synopsys工具安装
Synopsys的工具包括VCS(仿真)、Design Compiler(综合)、Formality(形式验证)等。安装流程基本一致:
# 1. 解压安装包
tar -xzvf synopsys_installer_v5.0.tar.gz
cd synopsys_installer
# 2. 运行安装脚本
./setup.sh
# 3. 设置环境变量(建议写入~/.bashrc)
export SYNOPSYS_HOME=/tools/synopsys
export PATH=$SYNOPSYS_HOME/bin:$PATH
export SNPSLMD_LICENSE_FILE=27000@license-server
注意:Synopsys的license管理用的是SNPSLMD守护进程。我曾经犯过一个低级错误——忘记启动lmgrd服务,结果VCS怎么都跑不起来。排查了半天才发现是license服务没开。
Cadence工具安装
Cadence这边,主要用Genus(综合)和Innovus(布局布线)。安装方式类似:
# 1. 解压安装包
tar -xzvf ISR2022_linux_1of1.tar.gz
cd ISR2022
# 2. 运行安装脚本
./SETUP.SH
# 3. 设置环境变量
export CADENCE_HOME=/tools/cadence
export PATH=$CADENCE_HOME/bin:$PATH
export CDS_LIC_FILE=5280@license-server
Cadence的license用的是CDS_LIC_FILE环境变量,端口号默认5280。这个和Synopsys不一样,别搞混了。
1.3 Python与TCL脚本环境配置
做硬件木马检测,脚本能力是基本功。Python用来做数据分析、特征提取,TCL用来控制EDA工具流程。
Python环境配置
我个人建议用Python 3.8+,配合Anaconda管理虚拟环境。为什么?因为不同项目依赖的库版本可能冲突,虚拟环境能隔离这些问题。
# 安装Anaconda
wget https://repo.anaconda.com/archive/Anaconda3-2023.03-Linux-x86_64.sh
bash Anaconda3-2023.03-Linux-x86_64.sh
# 创建虚拟环境
conda create -n hw_trojan python=3.9
conda activate hw_trojan
# 安装必备库
pip install numpy pandas matplotlib scikit-learn \
networkx pyverilog
核心库说明:
| 库名 | 用途 | 版本要求 |
|---|---|---|
| numpy | 数值计算 | ≥1.21 |
| pandas | 数据处理 | ≥1.3 |
| networkx | 图分析(网表本质是图) | ≥2.6 |
| pyverilog | Verilog解析 | ≥1.3 |
TCL脚本环境配置
TCL是EDA工具的"母语"。Synopsys和Cadence的工具都支持TCL脚本。配置其实很简单:
# 检查TCL版本
tclsh
% puts $tcl_version
8.6
# 设置TCL库路径
export TCLLIBPATH="/tools/tcl_lib"
我在项目中遇到过一个问题:TCL脚本里调用系统命令时,路径分隔符的处理。Windows用反斜杠,Linux用正斜杠。如果你在Linux上写TCL脚本,记得用正斜杠,不然会报文件找不到的错误。
环境验证脚本
环境搭好后,我习惯跑一个验证脚本,确保所有工具都能正常调用:
#!/bin/bash
# check_env.sh - 环境验证脚本
echo "=== 环境验证 ==="
# 检查Python
python3 --version
if [ $? -eq 0 ]; then
echo "Python: OK"
else
echo "Python: FAIL"
fi
# 检查VCS
vcs -version
if [ $? -eq 0 ]; then
echo "VCS: OK"
else
echo "VCS: FAIL"
fi
# 检查TCL
tclsh <<< "puts {TCL: OK}"
我的习惯:把这个脚本放在~/.local/bin目录下,然后加到PATH里。每次换到新环境,先跑一遍这个脚本,5秒钟就能确认环境是否就绪。
1.4 知识体系总览
这一章的内容,说白了就是三个层次:操作系统打底,EDA工具做核心,脚本语言当工具。我画了一张图,帮你理清它们之间的关系:
这张图想表达的核心思想是:操作系统是地基,EDA工具是引擎,脚本语言是方向盘。三者缺一不可。我见过有人只装了EDA工具,Python环境没配好,结果数据分析全靠手动算——那效率,简直了。
好了,环境搭建这部分就聊到这儿。记住一句话:环境搭得好,后面少烦恼。别嫌麻烦,把每一步都走扎实了,后面做木马检测的时候你会感谢现在的自己。
公众号:蓝海资料掘金营,微信deep3321