You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

RISC-V模板(riscv-template)工作机制及使用疑问咨询

我来给你一步步拆解——先讲清楚riscv-template(也就是那个project-template)的工作原理,再带你排查verisim目录下make命令失效的常见问题。

Understanding the riscv-template (project-template) Workflow

首先得明确:这个模板和直接用rocket-chip仓库最大的区别,是它把rocket-chip作为独立依赖子模块引入,而不是让你直接修改rocket-chip的核心代码。它的设计理念就是帮你隔离定制代码和上游核心库,具体工作流程是这样的:

  • 模板本身是个「包装器」仓库,核心依赖的rocket-chip、chisel3、firrtl等都会作为git子模块存在,你可以随时拉取上游更新,不会和自己的定制代码冲突。
  • 你需要把自己的定制SoC代码(比如自定义的处理器核、外设、总线拓扑)放在src/main/scala下的专属目录里(比如src/main/scala/my_custom_soc),而不是去修改rocket-chip子模块里的代码。
  • 整个构建流程靠sbt管理Scala/Chisel代码的编译,然后通过顶层的Makefile调用sbt生成Verilog,最后再进入verisim目录用verilator做仿真。和直接用rocket-chip不同,模板的仿真流程需要先完成顶层Verilog的生成,再启动仿真。
Troubleshooting 'make' Issues in the Verisim Directory

你在verisim目录直接跑make出问题,大概率是没走对模板的构建流程,或者配置有遗漏,常见的问题和解决方法如下:

  • 顶层Verilog未生成
    模板的verisim目录Makefile是用来启动仿真的,但前提是顶层SoC的Verilog已经生成。你得先回到仓库根目录,运行make verilog(或者对应你的定制目标的生成命令),等sbt编译完你的定制代码并输出Verilog文件后,再进入verisim目录执行make
  • 定制代码未被sbt识别
    检查你的代码结构:确保自定义代码放在src/main/scala下的子目录,然后修改build.sbt文件,把你的包名加入编译路径。比如你写了my_custom_soc包,要在build.sbt里添加对应的配置,让sbt能找到你的代码(比如调整sourceDirectories或者添加library依赖)。
  • 子模块未初始化/更新
    刚克隆仓库时,rocket-chip等子模块是空的,必须先运行git submodule update --init --recursive,把所有依赖的子模块拉取完整。如果上游rocket-chip更新了,也要重新跑这个命令同步子模块。
  • 环境变量配置错误
    模板的Makefile依赖RISCV工具链和verilator的环境变量:
    • 确保RISCV环境变量指向你的RISC-V工具链安装路径,比如export RISCV=/usr/local/riscv
    • 确保verilator的路径在PATH里,运行verilator --version能正常输出版本号。
  • 仿真配置不匹配
    如果你修改了顶层模块的名字或者Verilog生成路径,需要调整verisim目录下的Makefile:找到TOP_MODULEVERILOG_FILES这些变量,改成你定制SoC对应的名字和路径。

小提示:模板的核心优势就是隔离定制代码与上游,所以千万别直接修改rocket-chip子模块里的代码,所有定制都放在自己的目录下,这样后续更新上游代码时,你的定制不会被覆盖。

内容的提问来源于stack exchange,提问作者sungjun cho

火山引擎 最新活动