Генерация часов в тестовом стенде верхнего уровня

Верхний уровень моего тестового стенда выглядит так:

module top();
    // `timescale 1ns/1ps

    reg_intf intfc(.clk(Clk));
    register_m dut (intfc);
    register_test_m (intfc);

    bit Clk = 0;
    initial 
    forever #1 Clk = ~Clk;
endmodule : top

reg_intf — интерфейс, register_m — модуль дизайна, register_test_m — программа (тестбенч).

Я получаю эту ошибку компиляции:

Тип сети нельзя использовать в левой части этого назначения. Оскорбительное выражение: Clk Информация об источнике: Clk = (~Clk);

Я попытался использовать logic, reg и wire для Clk и получил ту же ошибку.


person jkg    schedule 15.10.2013    source источник


Ответы (1)


Переместите объявление Clk перед его использованием:

module top();
    // `timescale 1ns/1ps
    bit Clk = 0;

    reg_intf intfc(.clk(Clk));
    register_m dut (intfc);
    register_test_m (intfc);

    initial 
    forever #1 Clk = ~Clk;
endmodule : top

Не имеет отношения к вашей проблеме: вам нужно имя экземпляра для модуля register_test_m:

register_test_m tb (intfc);
person toolic    schedule 15.10.2013
comment
Следует отметить, что причина, по которой вы получили эту ошибку, заключалась в том, что Clk было неявно объявлено как провод или тип сети, когда он впервые встретился в сопоставлении портов. - person dwikle; 15.10.2013