Verwendeter Programmcode in Studienarbeit für ESY1B zum Thema "Verifikation mit SystemVerilog und Python"
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

test.py 925B

1234567891011121314151617181920212223242526272829303132
  1. import cocotb
  2. from cocotb.clock import Clock
  3. from cocotb.triggers import RisingEdge
  4. import wave
  5. import struct
  6. import numpy as np
  7. @cocotb.test()
  8. async def test(dut):
  9. clock = Clock(dut.clk, 10, units="us")
  10. cocotb.fork(clock.start())
  11. # open audio files for read and write
  12. audio_in = wave.open('hello.wav')
  13. audio_out = wave.open('out.wav', 'wb')
  14. audio_out.setnchannels(audio_in.getnchannels())
  15. audio_out.setsampwidth(audio_in.getsampwidth())
  16. audio_out.setframerate(audio_in.getframerate())
  17. nframes = audio_in.getnframes()
  18. print("sending %d frames" % nframes)
  19. # process the audio through the dut
  20. for i in range(nframes):
  21. frame = audio_in.readframes(1)
  22. val, = struct.unpack('h', frame)
  23. dut.data_in <= val
  24. await RisingEdge(dut.clk)
  25. raw_out = struct.pack('h', dut.data_out.value.signed_integer)
  26. audio_out.writeframes(raw_out)