diff --git a/libraries/dsp/correlator/tb/python/verify_correlator.py b/libraries/dsp/correlator/tb/python/verify_correlator.py index c5bb8884347f36d1cd4d193302d77ec9707367f6..47f9d399e2616b37f9e3cb2e3c33c7dda0335087 100644 --- a/libraries/dsp/correlator/tb/python/verify_correlator.py +++ b/libraries/dsp/correlator/tb/python/verify_correlator.py @@ -18,10 +18,8 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # ############################################################################### +import sys from common import * -#import matplotlib -#matplotlib.use('TkAgg') - from common_dsp import * from mem_init_file import list_to_hex @@ -307,41 +305,19 @@ correlator_src_out_arr_ref = correlate(correlator_snk_in_arr_int, INTEGRATION_PE # Read test bench output file written by dp_stream_rec_play.vhd correlator_src_out_arr = rec_file_to_complex(REC_FILE, complex_width=CORRELATOR_OUTPUT_COMPLEX_WIDTH) -def nozero(input_nr): - """ - Returns a/b when b is non-zero. Otherwise returns almost zero. - """ - if not(input_nr==0): - return input_nr - else: - return 0.00000000000000000000000000000000000001 - -import sys -def compare_correlator_src_out_arr(vhdl_out, model_out, max_deviation_factor): +def compare_correlator_src_out_arr(vhdl_out, model_out): """ Compare the VHDL correlator's output to the Python model output. - . A max_deviation_factor (0..1) is allowed in both the real and the imaginary - values -> 1% max = 0.01 - . A too great deviation results in a False being returned. """ - passed = True channel_nr = 0 for vhdl_channel,model_channel in zip(vhdl_out, model_out): vis_nr = 0 for vhdl_visibility,model_visibility in zip(vhdl_channel, model_channel): - diff_re = abs(model_visibility.real-vhdl_visibility.real) / nozero(abs(model_visibility.real)) - diff_im = abs(model_visibility.imag-vhdl_visibility.imag) / nozero(abs(model_visibility.imag)) - - if diff_re>max_deviation_factor or diff_im>max_deviation_factor: + if not(vhdl_visibility==model_visibility): print 'compare_correlator_src_out_arr: FAILED' print '. channel', channel_nr, 'visibility', vis_nr - print ' . diff_re', diff_re - print ' . model_visibility.real', model_visibility.real - print ' . vhdl_visibility.real', vhdl_visibility.real - print ' . diff_im', diff_im - print ' . model_visibility.imag', model_visibility.imag - print ' . vhdl_visibility.imag', vhdl_visibility.imag - + print ' . model:', model_visibility + print ' . VHDL :', vhdl_visibility sys.exit() vis_nr+=1 channel_nr+=1 @@ -349,7 +325,7 @@ def compare_correlator_src_out_arr(vhdl_out, model_out, max_deviation_factor): print 'corr out', correlator_src_out_arr[0] print 'corr ref', correlator_src_out_arr_ref[0] -compare_correlator_src_out_arr(correlator_src_out_arr, correlator_src_out_arr_ref, 0.001) +compare_correlator_src_out_arr(correlator_src_out_arr, correlator_src_out_arr_ref) def plot_phase_shifts(correlator_output): """