mirror of
https://github.com/verilator/verilator.git
synced 2025-01-10 16:47:48 +00:00
2cad22a22a
** Add simulation context (VerilatedContext) to allow multiple fully independent models to be in the same process. Please see the updated examples. ** Add context->time() and context->timeInc() API calls, to set simulation time. These now are recommended in place of the legacy sc_time_stamp().
55 lines
1.2 KiB
Systemverilog
55 lines
1.2 KiB
Systemverilog
// DESCRIPTION: Verilator: Verilog Test module
|
|
//
|
|
// This model counts from 0 to 10. It is instantiated twice in concurrent
|
|
// threads to check for race conditions/signal interference.
|
|
//
|
|
// This file ONLY is placed under the Creative Commons Public Domain, for
|
|
// any use, without warranty, 2020-2021 by Andreas Kuster.
|
|
// SPDX-License-Identifier: CC0-1.0
|
|
|
|
`define STRINGIFY(x) `"x`"
|
|
|
|
module top
|
|
(
|
|
input clk,
|
|
input rst,
|
|
input [31:0] trace_number,
|
|
input stop,
|
|
output bit [31:0] counter,
|
|
output bit done_o
|
|
);
|
|
|
|
initial begin
|
|
string number;
|
|
string filename;
|
|
number.itoa(trace_number);
|
|
filename = {`STRINGIFY(`TEST_OBJ_DIR), "/trace", number, ".vcd"};
|
|
$display("Writing dumpfile '%s'", filename);
|
|
$dumpfile(filename);
|
|
$dumpvars();
|
|
end
|
|
|
|
always@(posedge clk) begin
|
|
if (rst)
|
|
counter <= 0;
|
|
else
|
|
counter <= counter + 1;
|
|
end
|
|
always_comb begin
|
|
done_o = '0;
|
|
if (stop) begin
|
|
if (counter >= 5 && stop) begin
|
|
done_o = '1;
|
|
$stop;
|
|
end
|
|
end
|
|
else begin
|
|
if (counter >= 10) begin
|
|
done_o = '1;
|
|
$finish;
|
|
end
|
|
end
|
|
end
|
|
|
|
endmodule
|