Integrated Test
Integrated test can be marked by #[test(test_name)] attribute.
The marked block will be identified as test, and executed through veryl test command.
There are two way to describe integrated test:
- SystemVerilog test
- cocotb test
About RTL simulator used by veryl test, see Simulator.
If --wave option is specified, waveforms are generated.
SystemVerilog test
SystemVerilog test can be described with inline specifier.
The top level module of the block must have the same name as the test name.
The messages through $info, $warning, $error and $fatal system function are handled by Veryl compiler, and shown as exectution log.
The calls of $error and $fatal are treated as test failure.
The following example, a SystemVerilog source code embeded by embed declaration are marked as test.
#[test(test1)]
embed (inline) sv{{{
module test1;
initial begin
assert (0) else $error("error");
end
endmodule
}}}
cocotb test
cocotb test can be described with cocotb specifier.
The target module name for test should be specified by the second argument of #[test] attribute.
#[test(test1, ModuleA)]
embed (cocotb) py{{{
# cocotb code
}}}