Sunday, January 11, 2015

Project Update

Results from the DUT (interpolation filtering block)

Based on the last blog update I said that I need to finish the interpolation_filtering block soon because the project is not moving quick enough.

This weekend I completed the scoreboard for the block. The only pending issue is the rounding/scaling sub-block but I am going to move on anyway. If this proves to be a serious issue then I will come back to it.

I ran a test where I sent 500 samples to the block. Because of resampleing and filtering the block outputs 120 samples. The DUT and model produce the same results. It seems like everything is working well.

# UVM_INFO C:/questasim_10.2c/examples/julian/projects/autotune/src/tb/uvm/interpolation_filter/scoreboard_interpolation_filter.sv(174) @ 2500550.0ns: uvm_test_top.env0.sb [SCOREBOARD_CMP] tb_top_interpolation_filter.scoreboard_interpolation_filter.check_phase : dut_sample_data = 00000000, model_sample_data = 00000000, dut_sample_width = 00000012, model_sample_width = 00000012
# UVM_INFO C:/questasim_10.2c/examples/julian/projects/autotune/src/tb/uvm/interpolation_filter/scoreboard_interpolation_filter.sv(177) @ 2500550.0ns: uvm_test_top.env0.sb [SCOREBOARD_MATCH] tb_top_interpolation_filter.scoreboard_interpolation_filter.check_phase


# UVM_INFO C:/questasim_10.2c/examples/julian/projects/autotune/src/tb/uvm/interpolation_filter/scoreboard_interpolation_filter.sv(174) @ 2500550.0ns: uvm_test_top.env0.sb [SCOREBOARD_CMP] tb_top_interpolation_filter.scoreboard_interpolation_filter.check_phase : dut_sample_data = 0000000a, model_sample_data = 0000000a, dut_sample_width = 00000012, model_sample_width = 00000012
# UVM_INFO C:/questasim_10.2c/examples/julian/projects/autotune/src/tb/uvm/interpolation_filter/scoreboard_interpolation_filter.sv(177) @ 2500550.0ns: uvm_test_top.env0.sb [SCOREBOARD_MATCH] tb_top_interpolation_filter.scoreboard_interpolation_filter.check_phase


# [SCOREBOARD_CMP]   120
# [SCOREBOARD_MATCH]   120
# [TESTCASE_PASS]     1


Going Forward

I have to start spec-ing out the "Processing Engine" block. This block will take the audio samples from the interpolation filter and do the pitch correction on the stream and finally write the samples to memory. At a basic algorithm level I still have many questions about how this will work. The next few weeks I will be spending in GNU Octave to prototype the algorithm. This block will include complex numbers, FFT, trigonometric calculations so there should be lots of fun implementing it.

No comments:

Post a Comment