Может ли кто-нибудь дать мне подсказку, почему этот интерфейс с модами и блоками синхронизации может не работать?Использование тактовых блоков и модификаций внутри интерфейсов
interface axis (input logic aclk);
logic [15:0] tdata_s;
logic tvalid_s;
logic tready_s;
logic [15:0] tdata_m;
logic tvalid_m;
logic tready_m;
// clocking block for AXI Stream master
clocking cb_axis_mst @(posedge aclk);
default input #1step output #3ns;
output tdata_m;
output tvalid_m;
input tready_m;
endclocking
// clocking block for AXI Stream slave
clocking cb_axis_slv @(posedge aclk);
default input #1step output #1ns;
input tdata_s;
input tvalid_s;
output tready_s;
endclocking
// AXI stream master modport for testbench only
modport tb_axis_mst_mp(clocking cb_axis_mst);
// AXI stream slave modport for testbench only
modport tb_axis_slv_mp(clocking cb_axis_slv);
endinterface
QuestaSIM 10.5c дает мне ряд ошибок, как это:
** Ошибка: (VSIM-3773) ../../../../ РТЛ/test_driver.sv (37): Элемент интерфейса 'tvalid_m' не находится в modport 'tb_axis_mst_mp'.
Проблема уходит, если я добавляю порты в modport, но я понял, что достаточно просто использовать блок синхронизации.
Полный код здесь: https://www.edaplayground.com/x/5FzC