mirror of
https://github.com/verilator/verilator.git
synced 2025-01-07 15:17:36 +00:00
66 lines
1.4 KiB
Verilog
66 lines
1.4 KiB
Verilog
// DESCRIPTION: Verilator: Verilog Test module
|
|
//
|
|
// This file ONLY is placed into the Public Domain, for any use,
|
|
// without warranty, 2009 by Wilson Snyder.
|
|
|
|
typedef int unit_type_t;
|
|
|
|
function [3:0] unit_plusone(input [3:0] i);
|
|
unit_plusone = i+1;
|
|
endfunction
|
|
|
|
package p;
|
|
typedef int package_type_t;
|
|
integer pi = 123;
|
|
function [3:0] plusone(input [3:0] i);
|
|
plusone = i+1;
|
|
endfunction
|
|
endpackage
|
|
|
|
package p2;
|
|
typedef int package2_type_t;
|
|
function [3:0] plustwo(input [3:0] i);
|
|
plustwo = i+2;
|
|
endfunction
|
|
endpackage
|
|
|
|
module t (/*AUTOARG*/
|
|
// Inputs
|
|
clk
|
|
);
|
|
input clk;
|
|
unit_type_t vu;
|
|
$unit::unit_type_t vdu;
|
|
p::package_type_t vp;
|
|
|
|
t2 t2 ();
|
|
|
|
initial begin
|
|
if (unit_plusone(1) !== 2) $stop;
|
|
if ($unit::unit_plusone(1) !== 2) $stop;
|
|
if (p::plusone(1) !== 2) $stop;
|
|
p::pi = 124;
|
|
if (p::pi !== 124) $stop;
|
|
|
|
$write("*-* All Finished *-*\n");
|
|
$finish;
|
|
end
|
|
always @ (posedge clk) begin
|
|
p::pi += 1;
|
|
if (p::pi < 124) $stop;
|
|
end
|
|
endmodule
|
|
|
|
module t2;
|
|
import p::*;
|
|
import p2::plustwo;
|
|
import p2::package2_type_t;
|
|
package_type_t vp;
|
|
package2_type_t vp2;
|
|
initial begin
|
|
if (plusone(1) !== 2) $stop;
|
|
if (plustwo(1) !== 3) $stop;
|
|
if (p::pi !== 123 && p::pi !== 124) $stop; // may race with other initial, so either value
|
|
end
|
|
endmodule
|