Решено: Как использовать System-Verilog Assertions на модулях в DUT верхнего уровня - PullRequest
0 голосов
/ 04 июня 2019

Синтаксис был верным, я перепутал два цикла, не выдавая ничего правильного, когда ожидал подтверждения моего утверждения.

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

Я пробовалпоиск "точечной нотации" и использование моего симулятора (ModelSim) для доступа к сигналу (что я могу сделать с точной осциллограммой), но я хочу иметь возможность использовать SVA для проверки правильности значений.

module top(input d, output q)

    //wires
    wire sub1_output

    // Instantiate submodule
    sub_module1 sub1(.sub1_output(sub1_output));

    always begin
        // logic
    end
endmodule
module tb_top();

    reg d;
    wire q;

    DUT top(.*);

    initial begin
        // This is where I want to access something within my DUT
        assert(DUT.sub1_output == 1'b1)
    end
endmodule

Когда я пытаюсь это сделать, мой код компилируется и запускается, но если я напишу утверждение так, что оно должно завершиться сбоем и остановить мой код, ничего не произойдет.

1 Ответ

0 голосов
/ 05 июня 2019

DUT.sub1_output

Правильный формат для использования утверждений в сигналах в экземплярах верхнего уровня.

...