发布于 

使用 xmake 来编译 verilator

xmake 介绍

https://github.com/xmake-io/xmake
https://xmake.io/#/getting_started

类似于 CMAKE 国人开发,操作比较友好,有一些坑,但是作者维护积极。

使用 xmake 进行 verilator 项目的编译

xmake 可以用来进行 verilator 项目的编译和管理,但是官方文档介绍比较少,还是有一些坑在里面的。
我在 https://github.com/xmake-io/xmake/pull/3944 中总结了使用过程中一些常见的坑。

一个基本的项目框架可以参考下面来自于 https://github.com/leesum1/chisel-fish/blob/main/sim/xmake.lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
add_rules("mode.release", "mode.debug")

if is_mode("release") then
set_optimize("faster")
end

if is_mode("debug") then
set_symbols("debug")
set_optimize("none")
set_policy("build.sanitizer.address", true)
end

add_requires("cli11",{system = false})
add_requires("catch2",{system = false})
add_requires("assert",{system = true})
add_requires("elfio",{system = false})
add_requires("libsdl",{system = false})

-- set_policy("build.warning", true)
-- set_warnings("all", "extra")dd

-- 设置 C++20 标准
set_languages("cxx20")


add_rules("plugin.compile_commands.autoupdate", {outputdir = "."})
target("Vtop")
add_rules("verilator.binary")
set_toolchains("@verilator")
add_files("src/*.cpp")
add_files("vsrc/*.sv")
add_values("verilator.flags","--top","CoreDutFull")
add_values("verilator.flags","--trace-fst")
add_includedirs("src/include/")
add_packages("catch2","cli11","assert","elfio","libsdl")
add_links("rv64emu_cbinding")