2、开发环境搭建:安装Virtual Prototype Studio、配置SystemC/TLM-2.0库、验证环境是否可用
好,咱们直接进入正题。开发环境搭建这件事,说简单也简单,说坑也多。我见过不少团队,环境装了两三天,最后发现是某个库版本不对,白白浪费时间。所以这一章,我带你一步步走,把每一步的关键点都讲透。
2.1 安装Virtual Prototype Studio
Virtual Prototype Studio(以下简称VPS)是咱们做虚拟原型的主战场。我个人习惯先装这个,因为它自带的工具链能省不少事。
安装前的准备:
- 操作系统:Ubuntu 20.04 LTS 或 CentOS 7.9(我推荐Ubuntu,踩坑少)
- 磁盘空间:至少留出20GB(别问我怎么知道的,第一次装的时候只留了10GB,编译到一半卡住了)
- 内存:建议16GB以上,8GB也能跑,但你会想砸电脑
安装步骤:
- 从官方渠道获取VPS安装包(通常是
.run文件) - 赋予执行权限:
chmod +x vps_installer.run - 运行安装:
./vps_installer.run --mode silent --prefix /opt/vps - 设置环境变量:在
~/.bashrc中添加export VPS_HOME=/opt/vps
小技巧: 安装时加上
--mode silent可以跳过图形界面,在服务器上特别有用。我第一次在远程服务器上装的时候,没加这个参数,结果卡在图形界面出不来,最后只能kill进程重来。
2.2 配置SystemC/TLM-2.0库
SystemC/TLM-2.0是虚拟原型的核心库。说白了,它就是一套C++类库,让你能用软件的方式描述硬件行为。
库的获取:
- 官方推荐:从Accellera官网下载SystemC 2.3.3版本
- VPS自带:安装目录下通常有预编译版本(路径:
$VPS_HOME/systemc/lib)
手动编译安装(如果预编译版本不匹配):
tar -xzf systemc-2.3.3.tar.gz
cd systemc-2.3.3
mkdir build && cd build
../configure --prefix=/opt/systemc-2.3.3
make -j4
make install
嗯,这里要注意:编译时加上-j4能加速,但如果你虚拟机只分配了2核,就别贪心,老老实实用-j2。我曾经在4核机器上用了-j8,结果内存爆了,编译到一半直接OOM。
环境变量配置:
export SYSTEMC_HOME=/opt/systemc-2.3.3
export LD_LIBRARY_PATH=$SYSTEMC_HOME/lib-linux64:$LD_LIBRARY_PATH
export CPLUS_INCLUDE_PATH=$SYSTEMC_HOME/include:$CPLUS_INCLUDE_PATH
避坑指南: 我曾经遇到过SystemC库和GCC版本不兼容的问题。SystemC 2.3.3要求GCC 4.8以上,但如果你用的是GCC 9.x,需要加上
-std=c++11编译选项。否则编译时会报一堆模板错误,看着就头大。
2.3 验证环境是否可用
环境搭好了,怎么知道能不能用?写个最简单的Hello World程序跑一下。
测试代码:
// hello_systemc.cpp
#include <systemc.h>
SC_MODULE(HelloWorld) {
SC_CTOR(HelloWorld) {
SC_THREAD(say_hello);
}
void say_hello() {
std::cout << "Hello, SystemC World!" << std::endl;
}
};
int sc_main(int argc, char* argv[]) {
HelloWorld hello("hello");
sc_start();
return 0;
}
编译命令:
g++ -I$SYSTEMC_HOME/include -L$SYSTEMC_HOME/lib-linux64 \
-o hello_systemc hello_systemc.cpp -lsystemc -lm
./hello_systemc
如果输出Hello, SystemC World!,恭喜你,环境搭好了。
验证清单:
- VPS能正常启动(运行
vps_gui命令) - SystemC库能正常编译链接
- TLM-2.0示例能跑通(路径:
$VPS_HOME/examples/tlm)
2.4 知识体系总览
为了让你对整个搭建流程有个直观认识,我画了张图。你看一眼就明白各个组件之间的关系了。
2.5 常见问题与解决方案
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
编译时报错:cannot find -lsystemc |
LD_LIBRARY_PATH未设置或路径错误 | 检查echo $LD_LIBRARY_PATH,确认包含SystemC库路径 |
| 运行时Segmentation Fault | SystemC版本与GCC不兼容 | 尝试加上-std=c++11重新编译 |
| VPS启动后界面空白 | 显卡驱动或OpenGL问题 | 安装libgl1-mesa-glx和libglu1-mesa |
| TLM示例编译失败 | 缺少TLM头文件路径 | 确认CPLUS_INCLUDE_PATH包含$SYSTEMC_HOME/include |
我的经验: 如果你用的是Windows系统,建议装个WSL2(Windows Subsystem for Linux 2)。我在Windows上直接装VPS踩过不少坑,后来改用WSL2,一切顺畅多了。WSL2的性能损失很小,基本可以忽略。
好了,环境搭建这块就讲到这里。你按照上面的步骤走,应该半小时内就能搞定。如果遇到问题,先看看表格里的常见问题,大部分都能解决。实在搞不定的,欢迎来公众号找我。