diff options
Diffstat (limited to 'tests/projects')
4 files changed, 43 insertions, 0 deletions
diff --git a/tests/projects/embed/verilator/modules/src/main.v b/tests/projects/embed/verilator/modules/src/main.v new file mode 100644 index 000000000..b7f80008d --- /dev/null +++ b/tests/projects/embed/verilator/modules/src/main.v @@ -0,0 +1,6 @@ +module hello; + initial begin + $display("hello world!"); + $finish ; + end +endmodule diff --git a/tests/projects/embed/verilator/modules/src/mod.mpp b/tests/projects/embed/verilator/modules/src/mod.mpp new file mode 100644 index 000000000..dcbf2ee71 --- /dev/null +++ b/tests/projects/embed/verilator/modules/src/mod.mpp @@ -0,0 +1,10 @@ +module; +#include <cstdio> + +export module mod; + +export namespace mod { + void say(const char* str) { + printf("%s\n", str); + } +} diff --git a/tests/projects/embed/verilator/modules/src/sim_main.cpp b/tests/projects/embed/verilator/modules/src/sim_main.cpp new file mode 100644 index 000000000..aff1c83ba --- /dev/null +++ b/tests/projects/embed/verilator/modules/src/sim_main.cpp @@ -0,0 +1,16 @@ +#include "hello.h" +#include "verilated.h" +import mod; + +double sc_time_stamp() { return 0; } + +int main(int argc, char** argv) { + VerilatedContext* contextp = new VerilatedContext; + contextp->commandArgs(argc, argv); + hello* top = new hello{contextp}; + mod::say("hello module!"); + while (!contextp->gotFinish()) { top->eval(); } + delete top; + delete contextp; + return 0; +} diff --git a/tests/projects/embed/verilator/modules/xmake.lua b/tests/projects/embed/verilator/modules/xmake.lua new file mode 100644 index 000000000..324f9bfb6 --- /dev/null +++ b/tests/projects/embed/verilator/modules/xmake.lua @@ -0,0 +1,11 @@ +add_requires("verilator") + +-- @see https://github.com/xmake-io/xmake/issues/7624 +target("hello") + add_rules("verilator.binary") + set_toolchains("@verilator") + set_languages("c++20") + set_policy("build.c++.modules", true) + add_files("src/*.v") + add_files("src/*.cpp") + add_files("src/*.mpp") |
