iverilog/ivtest/ivltests/pr1701855b.v

73 lines
1.7 KiB
Verilog

`timescale 100ns/100ps
module dummy;
parameter [1:0] ipval = 2;
endmodule
`timescale 1us/1ns
module top;
parameter [1:0] ipval = 2;
parameter spval = "Help";
parameter rpval = 1.0;
event evt;
reg [1:0] rgval;
reg rgarr [2:0];
wire [1:0] wval;
wire warr [2:0];
integer ival;
real rval;
real rarr [2:0];
time tval;
initial begin:blk
$printtimescale(dummy);
$printtimescale(dummy.ipval);
// These should all print a timescale of 1us / 1ns.
$printtimescale;
$printtimescale(top.ipval);
/* This does not currently work because Icarus does not know how
* to keep the parameter reference in the part select. For now
* it just returns a constant which the runtime will complain
* does not have a vpiModule. */
// $printtimescale(top.ipval[0]);
$printtimescale(top.spval);
/* The same goes here. */
// $printtimescale(top.spval[0]);
$printtimescale(top.rpval);
$printtimescale(top.evt);
$printtimescale(top.rgval);
$printtimescale(top.rgval[0]);
$printtimescale(top.rgarr);
$printtimescale(top.rgarr[0]);
$printtimescale(top.wval);
$printtimescale(top.wval[0]);
$printtimescale(top.warr);
$printtimescale(top.warr[0]);
$printtimescale(top.ival);
$printtimescale(top.ival[1]);
$printtimescale(top.rval);
$printtimescale(top.rarr);
$printtimescale(top.rarr[0]);
$printtimescale(top.tval);
$printtimescale(top.blk);
$printtimescale(top.frk);
$printtimescale(top.tsk);
$printtimescale(top.fnc);
end
initial fork:frk
$write("");
join
task tsk;
begin
end
endtask
function integer fnc;
input integer tmp;
fnc = 2 * tmp;
endfunction
endmodule