0

В спецификации дизайна, в которой я подчеркиваю DUT, существует требование, чтобы часы слова и битовые часы генерировались, когда сигнал active_clk высок. У меня мало опыта использования SVA, поэтому я надеялся, что кто-то с немного большим опытом может указать мне в правильном направлении или, еще лучше, предоставить решение.SystemVerilog Assertion, который проверяет, что часы предоставлены, когда active_clk высок

+0

Есть ли три часа? Один главный тактовый генератор, один высокочастотный бит и один низкочастотный синхросигнал? Или только двое из них? Какова частотная зависимость между битовыми часами и часами слова? – sharvil111

+0

Есть два часа; бит и часы слова. Когда сигнал active_clk высок, эти часы должны быть сгенерированы. Оба эти генератора генерируются независимо друг от друга, поэтому я ищу два отдельных (но, вероятно, одинаковых) утверждения, чтобы проверить, что оба момента генерируются, когда active_clk = 1. –

+0

Возможно [это] (https://verificationacademy.com/ форумы/systemverilog/frequency-checker-system-verilog-or-verilog) и [this] (https://verificationacademy.com/forums/systemverilog/checking-clock-period-using-system-verilog-assertion] вопросы форума и [doulos] (https://www.doulos.com/knowhow/sysverilog/tutorial/assertions/) учебник может дать некоторое начальное понимание. – sharvil111

ответ

0

Всегда используйте часы ON, которые вы можете использовать для прогнозирования нарастающих/спадающих границ других 2 тактов в течение определенной фиксированной/рассчитанной продолжительности. Что-то вроде кода ниже:

bit aon_clk; 
always #1 aon_clk = ~aon_clk; 

property clk_chk; 
    @(aon_clk) 
    // Within say 25 Always ON Clks, you should expect a rise/fall of bit_clk 
    active_clk |=> ##[0:25] $rose(bit_clk) && active_clk ##[0:25] $fell(bit_clk) && active_clk; 
endproperty 

assert property (clk_chk) else $display($time," Clks not generated"); 
Смежные вопросы