summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2026-01-18 22:32:47 +0800
committerGitHub <[email protected]>2026-01-18 22:32:47 +0800
commitf0cb29d03a400f0caa1d8ffdb114279dd50879ad (patch)
tree69fe6523e0484107695f4855eaee5771c9076ce6
parent99fa0c1bb9507e6a2ea6eb1e34c778cf749d92bf (diff)
parent1c3f2a9051592a9f2f39a6302cc12d83e1944833 (diff)
Merge pull request #7240 from xmake-io/verilator
improve verilator flags
-rw-r--r--xmake/rules/verilator/verilator.lua25
1 files changed, 22 insertions, 3 deletions
diff --git a/xmake/rules/verilator/verilator.lua b/xmake/rules/verilator/verilator.lua
index 4631c5886..25ee1968f 100644
--- a/xmake/rules/verilator/verilator.lua
+++ b/xmake/rules/verilator/verilator.lua
@@ -132,6 +132,25 @@ function _get_makefile_type(verilator)
return support_json, makefile_type
end
+-- get the custom verilator flags
+--
+-- add_values("verilator.flags", "--x-assign", "fast")
+-- add_values("verilator.flags", {"--x-assign", "fast"}, {"--x-initial", "fast"})
+--
+-- https://github.com/xmake-io/xmake/issues/7239
+function _get_verilator_flags(target)
+ local result = {}
+ local flags = target:values("verilator.flags")
+ if flags then
+ for _, flag in ipairs(flags) do
+ table.join2(result, flag)
+ end
+ end
+ if #result > 0 then
+ return result
+ end
+end
+
function config(target)
local toolchain = assert(target:toolchain("verilator"), 'we need to set_toolchains("verilator") in target("%s")',
target:name())
@@ -142,7 +161,7 @@ function config(target)
local makefile = path.join(tmpdir, "test." .. makefile_type)
local sourcefile = path.join(tmpdir, "main.v")
local argv = { "--cc", "--make", makefile_type, "--prefix", "test", "--Mdir", tmpdir, "main.v" }
- local flags = target:values("verilator.flags")
+ local flags = _get_verilator_flags(target)
local switches_flags = hashset.of("sc", "coverage", "timing", "trace", "trace-vcd", "trace-fst", "trace-saif",
"threads")
if flags then
@@ -283,7 +302,7 @@ function build_cppfiles(target, jobgraph, sourcebatch, opt)
-- build verilog files
depend.on_changed(function()
local argv = { "--cc", "--make", makefile_type, "--prefix", targetname, "--Mdir", autogendir }
- local flags = target:values("verilator.flags")
+ local flags = _get_verilator_flags(target)
if flags then
table.join2(argv, flags)
end
@@ -348,7 +367,7 @@ function buildcmd_vfiles(target, batchcmds, sourcebatch, opt)
local dependfile = makefile .. ".d"
local argv = { "--cc", "--make", makefile_type, "--prefix", targetname, "--Mdir", path(autogendir) }
- local flags = target:values("verilator.flags")
+ local flags = _get_verilator_flags(target)
if flags then
table.join2(argv, flags)
end