diff options
| author | ruki <[email protected]> | 2026-01-18 22:32:47 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-01-18 22:32:47 +0800 |
| commit | f0cb29d03a400f0caa1d8ffdb114279dd50879ad (patch) | |
| tree | 69fe6523e0484107695f4855eaee5771c9076ce6 | |
| parent | 99fa0c1bb9507e6a2ea6eb1e34c778cf749d92bf (diff) | |
| parent | 1c3f2a9051592a9f2f39a6302cc12d83e1944833 (diff) | |
Merge pull request #7240 from xmake-io/verilator
improve verilator flags
| -rw-r--r-- | xmake/rules/verilator/verilator.lua | 25 |
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 |
