Я собираюсь протестировать сложный модуль, который имеет интерфейсы axi4-stream и apb в качестве входных данных и интерфейс axi4 в качестве выходного.
Как я понимаю, я должен создать такую среду:
|-----------------------------------------------
| |
_________|_________ _______________ ______v______
| | | | | |
| APB-monitor | | AXI4-monitor |--->| |
|___________________| |_______________| | |
| | | |
____________ ______________ | _________ | | |
| | | | | | | | | |
| APB-seqr |----->| APB-master |---*--->| | | | |
|____________| |______________| | | | | |
| DUT | | | |
____________ ______________ | |-----------*----------->| Scoreboard |
| | | | | | | |
|AXI4-S-seqr |----->|AXI4-S-master |---*--->| | | |
|____________| |______________| | |_________| | |
| | |
| | |
-------------------- | |
| | | |
| AXI4-S-monitor |---------------------------->| |
|____________________| |____________|
Это правильно?Если да, то как мне отправлять транзакции с мониторов на табло?Думаю, мне следует использовать пару analysis_port / imp, но я не могу перегрузить метод write
в классе табло, поэтому, как я понимаю, я не могу использовать три порта анализа в одном классе.
Может кто-нибудь указать мне на пример uvmтакого сложного дизайна?
В настоящее время у меня появляется этот тип ошибки при попытке использовать порты анализа:
# Time: 0 ps Iteration: 0 Region: /uvm_pkg::uvm_analysis_imp #(axi4_s_pkg::axi4_s_seq_item, ecaa_pkg::ecaa_scoreboard) File: D:/questasim64_10.4c/win64/../verilog_src/uvm-1.1d/src/uvm_pkg.sv
# ** Error: (vsim-8754) D:/questasim64_10.4c/win64/../verilog_src/uvm-1.1d/src/tlm1/uvm_analysis_port.svh(114): Actual input arg. of type 'class work.axi4_s_pkg::axi4_s_seq_item' for formal 'trans' of 'write' is not compatible with the formal's type 'class work.apb_pkg::apb_seq_item #(3, 2, 32, 32, 4)'.```