AXI-Verification architecture, functional coverage and assertions based coverage code
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

axi_top.sv 2.2 KiB

6 meses atrás
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. `include "uvm_macros.svh"
  2. import uvm_pkg::*;
  3. import my_pkg::*;
  4. `include "design.sv"
  5. `include "pkg.sv"
  6. `include "axi_sequence_item.sv"
  7. `include "axi_sequence.sv"
  8. `include "axi_sequencer.sv"
  9. `include "axi_env.sv"
  10. `include "axi_interface.sv"
  11. `include "axi_driver.sv"
  12. `include "axi_test.sv"
  13. `include "axi_agent.sv"
  14. module top;
  15. //interface instance
  16. axi_if vif ();
  17. //connecting dut signals with interface and gloable signals
  18. axi_slave dut(.clk(vif.clk),
  19. .resetn(vif.resetn),
  20. ///////////////////write address channel
  21. .awvalid(vif.awvalid),
  22. .awready(vif.awready),
  23. .awid(vif.awid),
  24. .awlen(vif.awlen),
  25. .awsize(vif.awsize),
  26. .awaddr(vif.awaddr),
  27. .awburst(vif.awburst),
  28. /////////////////////write data channel
  29. .wvalid(vif.wvalid),
  30. .wready(vif.wready),
  31. .wid(vif.wid),
  32. .wdata(vif.wdata),
  33. .wstrb(vif.wstrb),
  34. .wlast(vif.wlast),
  35. ///////////////write response channel
  36. .bready(vif.bready),
  37. .bvalid(vif.bvalid),
  38. .bid(vif.bid),
  39. .bresp(vif.bresp),
  40. ////////////// read address channel
  41. .arready(vif.arready),
  42. .arid(vif.arid),
  43. .araddr(vif.araddr),
  44. .arlen(vif.arlen),
  45. .arsize(vif.arsize),
  46. .arburst(vif.arburst),
  47. .arvalid(vif.arvalid),
  48. ///////////////////read data channel
  49. .rid(vif.rid),
  50. .rdata(vif.rdata),
  51. .rresp(vif.rresp),
  52. .rlast(vif.rlast),
  53. .rvalid(vif.rvalid),
  54. .rready(vif.rready));
  55. initial begin
  56. vif.clk <= 0;
  57. vif.resetn <=0;
  58. end
  59. initial begin
  60. #10
  61. vif.resetn <=1;
  62. end
  63. //clock generator
  64. always #5 vif.clk <= ~vif.clk;
  65. initial begin
  66. //pass interface to lower hierarchy
  67. uvm_config_db#(virtual axi_if)::set(null, "*", "vif", vif);
  68. run_test("give test name please");// need to write UVM_test name
  69. end
  70. initial begin
  71. $dumpfile("dump.vcd");
  72. $dumpvars;
  73. end
  74. endmodule