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.

testCase0.v 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // ---------------------------------- testcase0.v ----------------------------
  2. `include "timescale.v"
  3. `include "i2cSlave_define.v"
  4. `include "i2cSlaveTB_defines.v"
  5. module testCase0();
  6. reg ack;
  7. reg [7:0] data;
  8. reg [15:0] dataWord;
  9. reg [7:0] dataRead;
  10. reg [7:0] dataWrite;
  11. integer i;
  12. integer j;
  13. initial
  14. begin
  15. $write("\n\n");
  16. testHarness.reset;
  17. testHarness.tb_readEn <= 1'b0;
  18. testHarness.tb_writeEn <= 1'b0;
  19. // set i2c master clock scale reg PRER = (48MHz / (5 * 400KHz) ) - 1
  20. $write("Testing register read/write\n");
  21. testHarness.u_wb_master_model.wb_write(1, `PRER_LO_REG , 8'h17);
  22. testHarness.u_wb_master_model.wb_write(1, `PRER_HI_REG , 8'h00);
  23. testHarness.u_wb_master_model.wb_cmp(1, `PRER_LO_REG , 8'h17);
  24. // enable i2c master
  25. testHarness.u_wb_master_model.wb_write(1, `CTR_REG , 8'h80);
  26. multiByteReadWrite.write({`I2C_ADDRESS, 1'b0}, 16'h1234, 32'h89abcdef, `SEND_STOP);
  27. multiByteReadWrite.read({`I2C_ADDRESS, 1'b0}, 16'h1234, 32'h89abcdef, dataWord, `NULL);
  28. #100;
  29. testHarness.tb_addr <= 16'h1234;
  30. testHarness.tb_dataIn <= 16'h5555;
  31. #10 testHarness.tb_writeEn <= 1'b1;
  32. #10 testHarness.tb_readEn <= 1'b1;
  33. #10 testHarness.tb_writeEn <= 1'b0;
  34. #10 testHarness.tb_readEn <= 1'b0;
  35. #100;
  36. multiByteReadWrite.read({`I2C_ADDRESS, 1'b0}, 16'h1234, 32'h89abcdef, dataWord, `NULL);
  37. #100;
  38. multiByteReadWrite.write({`I2C_ADDRESS, 1'b0}, 16'h1234, 32'h89abcdef, `SEND_STOP);
  39. multiByteReadWrite.read({`I2C_ADDRESS, 1'b0}, 16'h1234, 32'h89abcdef, dataWord, `NULL);
  40. $write("Finished all tests\n");
  41. $finish;
  42. end
  43. endmodule