Apple M1 macOS环境下生成Rocket Chip Verilog文件失败求助
Rocket Chip Generator M1 macOS下firtool缺失问题解决
问题描述
我是Rocket Chip Generator的初学者,在Apple M1芯片的macOS系统中执行make verilog生成Verilog文件时失败,报错提示firtool不存在。已完成的步骤包括:
- 克隆rocket-chip仓库
- 安装Mac版Rocket工具
- 安装JDK 17.0.10、sbt 1.9.9、Mill 0.11.7
报错信息如下:
srishtisharma@Srishtis-MacBook-Pro ~ % cd rocket-chip srishtisharma@Srishtis-MacBook-Pro rocket-chip % make verilog cd /Users/srishtisharma/rocket-chip && mill emulator[freechips.rocketchip.system.TestHarness,freechips.rocketchip.system.DefaultConfig].mfccompiler.compile [172/172] emulator[freechips.rocketchip.system.TestHarness,freechips.rocketchip.system.DefaultConfig].mfccompiler.compile 1 targets failed emulator[freechips.rocketchip.system.TestHarness,freechips.rocketchip.system.DefaultConfig].mfccompiler.compile java.io.IOException: Cannot run program "firtool" (in directory "/Users/srishtisharma/rocket-chip/out/emulator/freechips.rocketchip.system.TestHarness/freechips.rocketchip.system.DefaultConfig/mfccompiler/compile.dest"): error=2, No such file or directory java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1170) java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1089) os.proc.proc$lzycompute$1(ProcessOps.scala:123) os.proc.proc$1(ProcessOps.scala:122) os.proc.spawn(ProcessOps.scala:129) os.proc.call(ProcessOps.scala:87) millbuild.build$Emulator$mfccompiler$.$anonfun$compile$3(build.sc:151) java.io.IOException: error=2, No such file or directory java.base/java.lang.ProcessImpl.forkAndExec(Native Method) java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:295) java.base/java.lang.ProcessImpl.start(ProcessImpl.java:225) java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1126) java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1089) os.proc.proc$lzycompute$1(ProcessOps.scala:123) os.proc.proc$1(ProcessOps.scala:122) os.proc.spawn(ProcessOps.scala:129) os.proc.call(ProcessOps.scala:87) millbuild.build$Emulator$mfccompiler$.$anonfun$compile$3(build.sc:151) make: *** [verilog] Error 1 srishtisharma@Srishtis-MacBook-Pro rocket-chip %
解决步骤
你遗漏了firtool的安装,这是Chisel/FIRRTL流程中将FIRRTL代码转换为Verilog的核心工具,Rocket Chip生成Verilog必须依赖它。在M1 macOS上可以通过以下两种方式安装:
方式1:Homebrew快速安装
执行以下命令完成安装:
brew install firtool
安装后验证是否成功:
firtool --version
若能正常输出版本信息,说明安装完成,重新执行make verilog即可。
方式2:源码编译安装(Homebrew安装失败时备选)
- 克隆CIRCT仓库:
git clone https://github.com/llvm/circt.git cd circt
- 创建编译目录并编译firtool:
mkdir build && cd build cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS=mlir -DLLVM_EXTERNAL_PROJECTS=circt -DLLVM_EXTERNAL_CIRCT_SOURCE_DIR=.. ninja firtool
- 将firtool添加到系统PATH:
export PATH=$PATH:/path/to/circt/build/bin
将上述命令添加到~/.zshrc文件中,可实现PATH永久生效,避免每次重启终端都需重新设置。
内容的提问来源于stack exchange,提问作者Srishti Sharma
相关产品推荐
相关产品推荐

