2016-06-08 3 views
1

Я написал код в системном verilog для интерфейса. но это дало мне ошибку в clk. ошибка Неопределенная переменная CLK .... код ошибка при всегда (posedge CLK)с использованием интерфейсов в systemverilog?

interface simple_bus(input logic clk); 
    // Define the interface 
    logic req, gnt; 
    logic [7:0] addr, data; 
    logic [1:0] mode; 
    logic start, rdy; 
    endinterface: simple_bus 

    module memMod(simple_bus a); 
    // simple_bus interface port logic avail; 
    //logic clk; 
    always @(posedge clk) 
    a.gnt <= a.req & avail; 
    endmodule 

при использовании часов в всегда блокировать его давать ошибки «неопределенная переменная: CLK»

+0

Почему вы прокомментировали определение сигнала clk? 'logic clk' в строке 3 memMod? Вы должны раскомментировать его, чтобы избежать ошибки. Как только вы раскомментируете его, вам все равно нужно каким-то образом его запустить из другого всегда блока или из основного входного порта memMod. – Ari

+0

спасибо, это сработало Я сделал это двумя способами, сделав в качестве входных данных и бит clk –

ответ

1

clk вводится в заданный интерфейс simple_bus, вам необходимо иерархически обращаться к нему. Например, a.clk.

Так что ваш код модуля будет:

module memMod(simple_bus a); 
    always @(posedge a.clk) 
     a.gnt <= a.req & avail; 
    endmodule 

Edit:
Я попробовал ваш код в моем конце, и это работает. Код exf кода PFB.

interface simple_bus(input logic clk); 
    // Define the interface 
    logic req, gnt; 
    logic [7:0] addr, data; 
    logic [1:0] mode; 
    logic start, rdy; 
endinterface: simple_bus 

module memMod(simple_bus a); 
    // simple_bus interface port logic avail; 
    //logic clk; 
    always @(posedge a.clk) a.gnt <= a.req; 
endmodule 

module main(); 
    logic clk; 

    simple_bus sb(clk); 
    memMod m(sb); 

    initial repeat(10) clk = #5 ~clk; 
endmodule 
+0

Теперь я получаю ошибку при poedege a.clk Ошибка: (vlog-13069) C:/Users/venkat/Desktop/Новая папка/systemverilog/second.sv (9): рядом с «.»: синтаксическая ошибка, неожиданное «.», ожидающее «)». –

+0

@venkatpasumarthi Что такое 'avail'? – sharvil111

+0

это как готовый сигнал в memMod –

Смежные вопросы