第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工具做核心,脚本语言当工具。我画了一张图,帮你理清它们之间的关系:

硬件木马检测环境架构 操作系统层 CentOS 7.9 / Ubuntu 20.04 LTS EDA工具层 Synopsys: VCS, Design Compiler, Formality Cadence: Genus, Innovus 脚本语言层 Python 3.8+ (数据分析) + TCL 8.6 (工具控制) 基础 核心 工具

这张图想表达的核心思想是:操作系统是地基,EDA工具是引擎,脚本语言是方向盘。三者缺一不可。我见过有人只装了EDA工具,Python环境没配好,结果数据分析全靠手动算——那效率,简直了。

好了,环境搭建这部分就聊到这儿。记住一句话:环境搭得好,后面少烦恼。别嫌麻烦,把每一步都走扎实了,后面做木马检测的时候你会感谢现在的自己。


公众号:蓝海资料掘金营,微信deep3321