diff --git a/rtl/generator/tests/generator_tb.sv b/rtl/generator/tests/generator_tb.sv index 621766a..4ef2322 100644 --- a/rtl/generator/tests/generator_tb.sv +++ b/rtl/generator/tests/generator_tb.sv @@ -229,7 +229,8 @@ module generator_tb; input int pulse_p, input int pulse_n, input int pulse_h, - input bit skip_reset + input bit skip_reset, // skip reset sequence on demand + input bit count_level // count ticks of amplitude == pulse_h or amplitude != pulse_h ); int total_impulse_cycles = 0; @@ -253,8 +254,15 @@ module generator_tb; begin : counter_proc forever begin @(posedge dac_wrt); - if (dac_out == pulse_h) begin - total_impulse_cycles++; + if (count_level) begin + if (dac_out == pulse_h) begin + total_impulse_cycles++; + end + end + else begin + if (dac_out != current_zero_level) begin + total_impulse_cycles++; + end end end end @@ -271,11 +279,21 @@ module generator_tb; disable counter_proc; repeat(10) @(posedge clk); - if (total_impulse_cycles == pulse_w*pulse_n) - $display("[TB] -run_test_case- Pulse generation CORRECT"); + if (count_level) begin + if (total_impulse_cycles == pulse_w*pulse_n) + $display("[TB] -run_test_case- Pulse generation CORRECT"); + else begin + $display("[ERROR] -run_test_case- Pulse generation INCORRECT. Total number of pulses: %d, must be: %d", total_impulse_cycles, pulse_w*pulse_n); + $finish; + end + end else begin - $display("[ERROR] -run_test_case- Pulse generation INCORRECT. Total number of pulses: %d, must be: %d", total_impulse_cycles, pulse_w*pulse_n); - $finish; + if (total_impulse_cycles == 0) + $display("[TB] -run_test_case- Pulse generation CORRECT"); + else begin + $display("[ERROR] -run_test_case- Pulse generation INCORRECT. Total number of pulses: %d, must be: %d", total_impulse_cycles, 0); + $finish; + end end endtask @@ -321,11 +339,23 @@ module generator_tb; .pulse_p(r_p), .pulse_n(r_n), .pulse_h(r_h), - .skip_reset(r_skip) + .skip_reset(r_skip), + .count_level(1) ); end $display("[TB] Test 2 complete"); + $display("[TB] Test 3. Zero level of pulse height"); + run_test_case( + .pulse_w(77), + .pulse_p(131), + .pulse_n(13), + .pulse_h(current_zero_level), + .skip_reset(0), + .count_level(0) + ); + $display("[TB] Test 3 complete"); + $display("[TB] All Tests complete!"); $finish; end