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

发布时间:2026/6/7 16:25:16

在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指向Python3sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 12. 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新开终端后所有命令都会失效。正确的做法是永久修改.bashrcecho export PATH/opt/cmake-3.20.0-linux-x86_64/bin:$PATH ~/.bashrc source ~/.bashrc验证安装cmake --version应该显示3.20.0或更高版本。3. CIRCT和Firtool安装漫长的编译过程CIRCTCircuit 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_PROJECTSmlir \ -DLLVM_TARGETS_TO_BUILDhost \ -DLLVM_ENABLE_ASSERTIONSON \ -DCMAKE_BUILD_TYPERelease \ -DCMAKE_EXPORT_COMPILE_COMMANDSON ninja编译完成后不要忘记设置环境变量echo export PATH$HOME/circt/build/bin:$PATH ~/.bashrc source ~/.bashrc4. 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?opgetsearch0x2EE0EA64E40A89B84B2DF73499E82A75642AC823 | 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 --init7. 运行第一个仿真TinyRocket测试现在可以尝试运行最简单的TinyRocket配置了cd sims/vcs make CONFIGTinyRocketConfig这个过程可能会遇到各种问题以下是我遇到的一些典型错误及解决方案内存不足增加交换空间或使用make -j1单线程编译Java堆空间不足设置更大的JVM内存export JAVA_OPTS-Xmx8G -Xms8G找不到工具链确保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?opgetsearch0x2EE0EA64E40A89B84B2DF73499E82A75642AC823 | 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小时。遇到问题时保持耐心仔细阅读错误信息通常都能找到解决方案。

相关新闻