60 lines
1.1 KiB
Verilog
60 lines
1.1 KiB
Verilog
|
|
|
|
module testr(input clk, output real out, input wire real in);
|
|
always @(posedge clk)
|
|
out <= in + 1.0;
|
|
endmodule // testr
|
|
|
|
module testi(input clk, output int out, input wire int in);
|
|
always @(posedge clk)
|
|
out <= in + 1;
|
|
endmodule // testi
|
|
|
|
module main;
|
|
|
|
reg clk;
|
|
always begin
|
|
#10 clk = 0;
|
|
#10 clk = 1;
|
|
end
|
|
|
|
real srcr;
|
|
int srci;
|
|
|
|
wire real valr;
|
|
wire int vali;
|
|
testr r0 (.clk(clk), .out(valr), .in(srcr));
|
|
testi i0 (.clk(clk), .out(vali), .in(srci));
|
|
|
|
real refr;
|
|
int refi;
|
|
always @(posedge clk) begin
|
|
refr <= srcr + 1.0;
|
|
refi <= srci + 1;
|
|
end
|
|
|
|
initial begin
|
|
@(negedge clk) ;
|
|
srcr = 2.0;
|
|
srci = 2;
|
|
@(negedge clk) ;
|
|
@(negedge clk) ;
|
|
|
|
$display("srcr=%f, valr=%f, refr=%f", srcr, valr, refr);
|
|
if (valr != refr && valr != 3.0) begin
|
|
$display("FAILED");
|
|
$finish;
|
|
end
|
|
|
|
$display("srci=%0d, vali=%0d, refi=%0d", srci, vali, refi);
|
|
if (vali != refi && vali != 3) begin
|
|
$display("FAILED");
|
|
$finish;
|
|
end
|
|
|
|
$display("PASSED");
|
|
$finish;
|
|
end
|
|
|
|
endmodule // main
|