当前位置: 首页 > news >正文

在Ubuntu 20.04上从零搭建CHIPYARD开发环境:一个踩坑无数的完整记录

在Ubuntu 20.04上从零搭建CHIPYARD开发环境:一个踩坑无数的完整记录

第一次接触CHIPYARD和RISC-V工具链时,我天真地以为按照官方文档一步步操作就能顺利完成环境搭建。然而现实给了我当头一棒——从基础依赖安装到最终仿真运行,几乎每一步都遇到了意想不到的问题。这篇文章将详细记录我如何在Ubuntu 20.04上从零开始搭建CHIPYARD开发环境,特别是那些官方文档没有提及的"坑"和解决方案。

1. 基础环境准备:从系统配置开始

在开始安装CHIPYARD之前,确保你的Ubuntu 20.04系统是最新的。我最初忽略了这一步,导致后续出现了各种奇怪的依赖冲突。

sudo apt update && sudo apt upgrade -y

接下来安装基础工具链。注意,这里有几个包是官方文档没有明确列出但实际必需的:

sudo apt install -y build-essential git curl wget \ libncurses-dev libssl-dev libelf-dev bison flex \ python3-dev python3-pip zlib1g-dev device-tree-compiler \ ninja-build clang jq

注意:Ubuntu 20.04默认的Python是2.7版本,但CHIPYARD需要Python3。确保你的系统默认Python指向Python3:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1

2. CMake安装:版本陷阱与路径配置

CHIPYARD需要CMake 3.20或更高版本,而Ubuntu 20.04默认仓库中的版本是3.16。我尝试了多种安装方式,最终发现直接从官网下载预编译版本最可靠。

wget https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-linux-x86_64.tar.gz sudo tar -xzf cmake-3.20.0-linux-x86_64.tar.gz -C /opt

接下来需要配置环境变量。这里有个大坑:如果你只是临时export PATH,新开终端后所有命令都会失效。正确的做法是永久修改.bashrc:

echo 'export PATH=/opt/cmake-3.20.0-linux-x86_64/bin:$PATH' >> ~/.bashrc source ~/.bashrc

验证安装:

cmake --version

应该显示3.20.0或更高版本。

3. CIRCT和Firtool安装:漫长的编译过程

CIRCT(Circuit IR Compilers and Tools)是CHIPYARD的重要依赖项。官方文档的安装步骤看似简单,但实际上会遇到各种问题。

首先克隆仓库并初始化子模块:

git clone https://github.com/llvm/circt.git cd circt git submodule init git submodule update

我强烈建议使用特定版本而非最新代码,因为主分支可能不稳定:

git checkout -b firtool-1.50.0

编译LLVM部分时,内存不足是个常见问题。如果你的机器内存小于16GB,建议添加交换空间:

sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile

然后是漫长的编译过程。注意这些关键参数:

cd llvm/build cmake -G Ninja ../llvm \ -DLLVM_ENABLE_PROJECTS="mlir" \ -DLLVM_TARGETS_TO_BUILD="host" \ -DLLVM_ENABLE_ASSERTIONS=ON \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ninja

编译完成后,不要忘记设置环境变量:

echo 'export PATH=$HOME/circt/build/bin:$PATH' >> ~/.bashrc source ~/.bashrc

4. Scala和SBT安装:版本兼容性问题

CHIPYARD使用Scala构建,需要安装特定版本的SBT。Ubuntu仓库中的版本通常太旧,必须手动安装。

首先添加SBT仓库:

echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list echo "deb https://repo.scala-sbt.org/scalasbt/debian /" | sudo tee /etc/apt/sources.list.d/sbt_old.list

然后添加密钥并安装:

curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | sudo apt-key add sudo apt-get update sudo apt-get install sbt

验证安装:

sbt --version

应该显示1.9.3或更高版本。

5. Verilator安装:从源码编译的挑战

Verilator是一个重要的硬件仿真工具,CHIPYARD需要特定版本(4.218)。直接从源码编译是最可靠的方式。

首先安装依赖:

sudo apt install -y git make autoconf g++ flex bison

然后克隆仓库并切换到正确版本:

git clone https://github.com/verilator/verilator cd verilator git checkout v4.218

编译和安装:

autoconf ./configure make -j$(nproc) sudo make install

验证安装:

verilator --version

应该显示4.218。

6. CHIPYARD安装与配置:最后的冲刺

终于到了安装CHIPYARD本体的阶段。首先克隆仓库并初始化子模块:

git clone https://github.com/ucb-bar/chipyard.git cd chipyard git submodule update --init --recursive

这一步可能会因为网络问题失败多次。如果遇到子模块更新失败,可以尝试:

git submodule foreach --recursive git clean -xdf git submodule update --init --recursive

初始化Rocket-chip子模块:

cd generators/rocket-chip git submodule update --init

7. 运行第一个仿真:TinyRocket测试

现在可以尝试运行最简单的TinyRocket配置了:

cd sims/vcs make CONFIG=TinyRocketConfig

这个过程可能会遇到各种问题,以下是我遇到的一些典型错误及解决方案:

  1. 内存不足:增加交换空间或使用make -j1单线程编译
  2. Java堆空间不足:设置更大的JVM内存
    export JAVA_OPTS="-Xmx8G -Xms8G"
  3. 找不到工具链:确保PATH包含所有必要的工具路径

8. 一键安装脚本:简化未来部署

经历了这么多挫折后,我整理了一个相对可靠的一键安装脚本:

#!/bin/bash # 基础依赖 sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential git curl wget \ libncurses-dev libssl-dev libelf-dev bison flex \ python3-dev python3-pip zlib1g-dev device-tree-compiler \ ninja-build clang jq # CMake wget https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-linux-x86_64.tar.gz sudo tar -xzf cmake-3.20.0-linux-x86_64.tar.gz -C /opt echo 'export PATH=/opt/cmake-3.20.0-linux-x86_64/bin:$PATH' >> ~/.bashrc # SBT echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list echo "deb https://repo.scala-sbt.org/scalasbt/debian /" | sudo tee /etc/apt/sources.list.d/sbt_old.list curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | sudo apt-key add sudo apt-get update sudo apt-get install sbt # Verilator sudo apt install -y git make autoconf g++ flex bison git clone https://github.com/verilator/verilator cd verilator git checkout v4.218 autoconf ./configure make -j$(nproc) sudo make install cd .. # CHIPYARD git clone https://github.com/ucb-bar/chipyard.git cd chipyard git submodule update --init --recursive

这个脚本不能解决所有问题,但可以节省大量基础配置时间。根据我的经验,即使在最理想的情况下,完整搭建CHIPYARD环境也需要3-4小时。遇到问题时,保持耐心,仔细阅读错误信息,通常都能找到解决方案。

http://www.jsqmd.com/news/499363/

相关文章:

  • ESP32 ADF实战:5分钟搞定MP3播放器(基于I2S+Pipeline)
  • 瑞芯微RV1106音频通道冲突排查:释放被占用的录音设备
  • Fish-Speech 1.5 WebUI声音克隆功能实测:上传音频即可模仿音色
  • FPGA图像处理实战:ISP数字增益模块Verilog实现详解(附完整代码)
  • AMD Ryzen深度调试实战:如何用SMUDebugTool解决3大硬件优化难题
  • VASP6.4.2安装vtstcode-199避坑指南:为什么make顺序错了会失败?
  • SEER‘S EYE预言家之眼创意写作效果PK传统写作工具
  • STM32F407ZGT6+DHT11温湿度传感器实战:从硬件接线到串口打印全流程
  • 目标跟踪实战:用ECO-HC算法在UAV123数据集上跑出第一个结果(避坑指南)
  • Phi-3-mini-4k-instruct与SolidWorks集成:CAD设计辅助
  • STEP3-VL-10B多模态实战:从图片识别到智能问答的完整应用
  • USB PD 3.0与PPS:快充技术的统一与未来
  • Matter协议开发必备:chip-tool安装避坑指南(Mac M4实测)
  • 从摄像头到显示屏:基于ZYNQ的VDMA多帧缓存机制深度解析(800*600 RGB实战)
  • VMware虚拟机中CentOS7 SSH连接失败的5个常见原因及解决方法(附详细排查步骤)
  • 科研必备:Windows平台TeXLive与TeXstudio高效协作环境搭建指南
  • 【「啄玛」开源免费 公式图片转LaTeX工具】告别手敲公式,这款开源神器帮你把截图秒转 LaTeX 公式
  • 避坑指南:用Editor Utility Widget开发UE工具时最容易忽略的5个细节(含Scroll Box排版技巧)
  • OpenLayers 与 GeoTIFF 影像的高效集成实践
  • GLM-OCR在办公场景实战:快速提取图片文字/表格数据,提升工作效率
  • 百川2-13B-4bits WebUI v1.0 参数调优教程:Max Tokens设512平衡长度与响应效率
  • TMSpeech:Windows平台实时语音识别工具的全方位应用指南
  • Fish Speech 1.5镜像免配置:Gradio组件状态持久化与会话恢复
  • translategemma-4b-it实战落地:政务外宣材料图文内容秒级中英互译
  • StructBERT-中文-generic-large实战落地:在线教育课程推荐引擎
  • Audio Pixel Studio部署案例:高校AI通识课实验平台轻量部署方案
  • Stable-Diffusion-V1-5 生成高清壁纸:效果参数详解与作品赏析
  • Youtu-VL-4B-Instruct WebUI详解:图片理解+多轮对话+OCR识别完整指南
  • 零基础玩转SGLang推理框架:5分钟部署,让大模型跑得更快更稳
  • Qt高DPI适配实战:解决Designer预览与运行界面不一致的五大技巧