diff options
author | Jon Nordby <jononor@gmail.com> | 2025-04-27 17:04:34 +0200 |
---|---|---|
committer | Jon Nordby <jononor@gmail.com> | 2025-05-02 21:00:12 +0200 |
commit | 6f6536101682085e8093572a0b23cd8a7e4bf584 (patch) | |
tree | 58c12e24c7340bdc5ff138105cfddbf87702e8b9 /cocotb_try | |
parent | ae28e791e60213c4f7fc67cba78578b99b341a1f (diff) |
cocotb: Have two tests, share core
Diffstat (limited to 'cocotb_try')
-rw-r--r-- | cocotb_try/test_cic.py | 47 |
1 files changed, 28 insertions, 19 deletions
diff --git a/cocotb_try/test_cic.py b/cocotb_try/test_cic.py index ea176fc..8242a78 100644 --- a/cocotb_try/test_cic.py +++ b/cocotb_try/test_cic.py @@ -13,20 +13,13 @@ from pcm2pdm import convert from testsignal import generate_test_tone from test_pdm import plot_reconstruct +sr = 16000 +decimation = 64 -async def drive_waveform(dut, waveform): - - high_delay = Timer(1, units="ns") - low_delay = Timer(1, units="ns") +async def drive_waveform(dut, waveform): for a_val in waveform: dut.pdm_in.value = bool(a_val) - - #dut.clk.value = 0 - #await low_delay - #dut.clk.value = 1 - #await high_delay - await RisingEdge(dut.clk) @@ -44,27 +37,43 @@ async def collect_output(dut, samples): return out +async def process_pdm(dut, pdm_data, decimation): + + cocotb.start_soon(Clock(dut.clk, 10, units="ns").start()) + cocotb.start_soon(drive_waveform(dut, pdm_data)) + + pcm_samples = len(pdm_data)//decimation + out = await collect_output(dut, pcm_samples) + + return out + @cocotb.test() -async def my_second_test(dut): +async def test_decode_sine_1000hz(dut): """Try running with PDM input""" - sr = 16000 - decimation = 64 - sig = generate_test_tone(duration_sec=0.004, freqs=[1000.0], noise_level=0.0, sample_rate=sr, amplitude=0.9, ) pdm_data = convert(sig) + output = await process_pdm(dut, pdm_data, decimation) + output = output / 1024 - cocotb.start_soon(Clock(dut.clk, 10, units="ns").start()) - cocotb.start_soon(drive_waveform(dut, pdm_data)) + fig = plot_reconstruct(sig, pdm_data, output, sr=sr, aspect=6.0) + fig.savefig('pdm_cocotb_1khz.png') - pcm_samples = len(pdm_data)//decimation - output = await collect_output(dut, pcm_samples) +@cocotb.test() +async def test_decode_sine_200hz(dut): + """Try running with PDM input""" + sig = generate_test_tone(duration_sec=0.008, + freqs=[200.0], noise_level=0.0, sample_rate=sr, amplitude=0.9, + ) + + pdm_data = convert(sig) + output = await process_pdm(dut, pdm_data, decimation) output = output / 1024 fig = plot_reconstruct(sig, pdm_data, output, sr=sr, aspect=6.0) - fig.savefig('pdm_cocotb.png') + fig.savefig('pdm_cocotb_200hz.png') |