iverilog/ivtest/ivltests/test_system.v

54 lines
1.2 KiB
Verilog

/***************************************************************
** Author: Oswaldo Cadenas (oswaldo.cadenas@gmail.com)
** Date: September 26 2011
**
** Test: Intended to test a system composed of some parametric system
** that has an adder, a register and an incrementer
** Each module has parameter: N for data length
**
** A system is given parameter P and should return P-1, this is run for M test vectors
**************************************************************************************/
module test;
parameter integer T = 25; // for the clock period
parameter integer P = 1000; // a constant passed to the system under test
parameter integer M = 200; // number of test vectors
int i;
bit clk = 0, reset = 0;
byte unsigned x;
wire [10:0] y;
initial forever #(T) clk = !clk;
initial begin
@(negedge clk);
reset = 1'b1;
repeat(6) @(negedge clk);
reset = 1'b0;
end
initial begin
@(posedge reset);
@(negedge reset);
for (i = 0; i < M; i=i+1) begin
x = {$random} % 255;
@(negedge clk);
if (y !== P-1) begin
$display ("ERROR");
$finish;
end
end
#100;
$display ("PASSED");
$finish;
end
const_system #(P) duv (.clk(clk), .reset(reset), .x(x), .y(y) );
endmodule