Вызов задач из разных тестовых стендов systemverilog - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь вызвать задачи, определенные в файле интерфейса, из файла testbench.задача определена как

task master_monitor(
                   output bit [ADDR_WIDTH-1:0] addr,
                   output bit [DATA_WIDTH-1:0] data,
                   output bit we                    
                  );

          while (!cyc_o) @(posedge clk_i);                                                  
          while (!ack_i) @(posedge clk_i);
          addr = adr_o;
          we = we_o;
          if (we_o) begin
            data = dat_o;
          end else begin
            data = dat_i;
          end
          while (cyc_o) @(posedge clk_i);                                                  
     endtask 

В моем тестовом стенде интерфейс создается как wb_bus, и я пытаюсь вызвать задачу следующим образом:

wire [WB_DATA_WIDTH-1:0] dat_wr_o;
wire [WB_DATA_WIDTH-1:0] adr;
wire we;
initial
begin
    repeat(10) begin
    wb_bus.master_monitor(adr, dat_wr_o, we);

    end
end

при моделировании этогона modelsim я получаю следующие ошибки:

   ** Error: (vsim-3047) ../testbench/top.sv(52): actual value for formal 'data' of 'master_read' must be assignable.
#    Time: 0 ps  Iteration: 0  Instance: /top File: ../testbench/top.sv
# ** Error: (vsim-3047) ../testbench/top.sv(53): actual value for formal 'we' of 'master_monitor' must be assignable.
#    Time: 0 ps  Iteration: 0  Instance: /top File: ../testbench/top.sv
# ** Error: (vsim-3047) ../testbench/top.sv(53): actual value for formal 'data' of 'master_monitor' must be assignable.
#    Time: 0 ps  Iteration: 0  Instance: /top File: ../testbench/top.sv
# ** Error: (vsim-3047) ../testbench/top.sv(53): actual value for formal 'addr' of 'master_monitor' must be assignable.
#    Time: 0 ps  Iteration: 0  Instance: /top File: ../testbench/top.sv

Правильно ли я передаю переменные?Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 22 января 2019

Нельзя передавать проводные сигналы, такие как adr, на выходную часть задачи.Либо измените их на logic, либо создайте промежуточные переменные, которые вы передаете аргументам задачи, а затем assign их подключите.

...