iverilog/ivtest/ivltests/credence20041209.v

83 lines
1.8 KiB
Verilog

// Copyright C(O) 2004 Burnell G West
// The following text may be utilized and / or reproduced by anybody for
// any reason.
//
// verr.v
//
module verr (clk, vout);
input clk;
output vout;
reg vout;
real start_edge;
real end_edge;
wire trigger_en;
wire [9:0] v_value;
initial vout = 1'b0;
always @( posedge clk)
begin
if (trigger_en)
begin
start_edge = ( v_value[0] * 1.95)
+ ( v_value[1] * 3.9 )
+ ( v_value[2] * 7.8 )
+ ( v_value[3] * 15.6 )
+ ( v_value[4] * 31.2 )
+ ( v_value[5] * 62.5 )
+ ( v_value[6] * 125 )
+ ( v_value[7] * 250 )
+ ( v_value[8] * 0 )
+ ( v_value[9] * 0 )
+ 0;
end_edge = start_edge + 100; // make pulse width = 1ns
end
else
begin
start_edge <= start_edge;
end_edge <= end_edge;
end
end
endmodule
module vtest;
wire vout0, vout1, vout2, vout3, vout4, vout5, vout6, vout7, vout8, vout9;
wire vout10, vout11, vout12, vout13, vout14, vout15, vout16, vout17,
vout18, vout19;
reg clk, bit0;
verr v0 (clk, vout0);
verr v1 (clk, vout1);
verr v2 (clk, vout2);
verr v3 (clk, vout3);
verr v4 (clk, vout4);
verr v5 (clk, vout5);
verr v6 (clk, vout6);
verr v7 (clk, vout7);
verr v8 (clk, vout8);
verr v9 (clk, vout9);
verr v10 (clk, vout10);
verr v11 (clk, vout11);
verr v12 (clk, vout12);
verr v13 (clk, vout13);
verr v14 (clk, vout14);
verr v15 (clk, vout15);
verr v16 (clk, vout16);
verr v17 (clk, vout17);
verr v18 (clk, vout18);
verr v19 (clk, vout19);
initial begin
#10000 $display("This test doesn't check itself.");
$display("PASSED");
end
endmodule