首页 > 最新动态 > 使用 Docker 环境生成 XiangShan 的 Verilog 代码并进行 Verilator 仿真
最新动态
使用 Docker 环境生成 XiangShan 的 Verilog 代码并进行 Verilator 仿真
2025-08-154
图片






香山开源高性能处理器核项目经过“雁栖湖”“南湖”和“昆明湖”三代,收获到了国内外的众多关注,小编经常遇到不少小伙伴想要跃跃欲试,希望和“香山”有一番亲密接触,然而,从入门到放弃的原因竟然是搭建不起 Chisel 的开发环境。如今,香山开源社区贡献了 docker[1]镜像,提供了 Chisel 生成 verilog 和 verilator 仿真两大支持。具体如何使用且听小编道来。

预备动作

76c17b3b24e467326168ff1807dfb2cc.png

获取“香山”代码后,如果没有梯子,可以参考之前公众号文章《2025 完整香山代码库下载解决方案全攻略》(https://mp.weixin.qq.com/s/pRU9BgSG_tm0P-9rZ1xRxg)点击链接直达原文,获取代码。

使用 Docker 生成 XiangShan 的 Verilog 代码

a413f1123b9929b24f09d7500deeceac.png

仅需两步,跟着我们的节奏继续学习吧。

获取最新容器

香山开源社区已经准备好了 docker 容器,基础 Docker 镜像命名为ghcr.io/openxiangshan/xsdev基于OpenXiangShan/xs-env仓库的ghcr.io/openxiangshan/xs-env:latest镜像构建,并集成了“香山”项目生成 RTL 所需的 Chisel/Mill 环境。

安装 docker 后可以通过如下命令获取

docker pull ghcr.io/openxiangshan/xsdev:master

image.png

 make pull-image

image.png

获取后确认已经是最新版本

在容器内生成 verilog

同样在“香山”代码目录,根据自己需要生成 verilog,只要看到 "Switching to Docker environment..." 说明已经在容器构建啦!

image.png
image.png

make emu 包含 make verilog 的命令。

仿真

2efde3526c20ad7acd9b869e04fb865f.png

根据如上步骤生成 verilog 代码后就可以仿真。划重点:“香山”项目默认采用 verilator 完成仿真,后者在容器中构建完成。其中 verilog 生成 c++文件在容器里面,c++文件编译为可执行文件在主机(容器外)。

image.png

容器环境说明

容器中本身不包含“香山”代码,其中目录映射关系如下:

● 只读挂载

/work目录→ 项目源码目录$srctree

● 读写挂载

/work/out目录→ 项目目录下的.docker-mill-out(用于隔离Docker内Mill的中间文件)

/work/build目录→ 项目构建目录build

默认源码目录以只读模式挂载,防止误修改。构建输出目录build和Mill中间目录.docker-mill-out则挂载为可写模式。

容器中专门使用了 .docker-mill-out,代替 out 目录,避免和容器外的 mill 输出相互干扰。

问题解决

测试获取的容器是否可用

假设“香山”代码所在路径是

~/works/source/XiangShan/XiangShan

可以在该目录通过`make sh`进入容器:

image.png

进入 docker 后再编译

image.png




点我访问原文链接