Как обработать интерфейс с пакетом в системверилоге - PullRequest
0 голосов
/ 16 мая 2018

В настоящее время я создаю простой uvm tb и сталкиваюсь с проблемой использования интерфейса.Вот мой код

в файле /my_proj/tb_uvm/intf/my_if.svh: (определение интерфейса)

interface my_if (
    input iCLK,
    input iRSTb,
    inout data
);
clocking monitor_cb @(posedge iCLK);
    input iRSTb;
    input data;
endclocking
modport monitor_mp(
    clocking monitor_cb
); 
endinterface : my_if

, и мне нужно создать экземпляр этого интерфейса в / my_proj / tb_uvm / agent / my_driverФайл .svh:

class my_driver extends uvm_driver;
    `uvm_component_utils(my_driver)
    virtual my_if m_vif;
    ...
endclass

Я попытался определить файл пакета (с именем my_agt_pkg.sv) в / my_proj / tb_uvm / agent /, потому что в этом каталоге есть несколько файлов драйвера / монитора, включая my_driver.svhЯ упоминал выше.

package my_agt_pkg;
    import uvm_pkg::*;

    `include "my_driver.svh"
    `include "../intf/my_if.svh"
     ....
endpackage

, но мне не удалось скомпилировать из-за ошибки ниже.Может ли кто-нибудь помочь мне в этом вопросе?

Найден «интерфейс» внутри пакета перед «конечной упаковкой».«Интерфейс» внутри «пакета» не допускается.

1 Ответ

0 голосов
/ 16 мая 2018

Сообщение об ошибке означает то, что говорит: Вы не можете объявить интерфейс внутри пакета .

A virtual interface - это своеобразная концепция.Он ведет себя как переменная класса, но interface определяется и создается как модуль.

Просто переместите объявление интерфейса за пределы package

...