2
Сценарий: Сигнал active
может быть либо 1 цикл, 2 цикла, 3 цикла или 4 цикла в ширину в зависимости от config[1:0]
входа в модульКак писать импульса ширина SystemVerilog утверждение, когда ширина настраивается
Самый простой способ напишите, что это:
property p_PropA;
@(posedge clk) $rose active ##config ~active;
endproperty
Но это синтаксически неправильно. Каков правильный способ написания этого утверждения?
Спасибо, Как [\ *] используется? Насколько я понимаю, [\ *] означает seq [* 0] или seq [* 1: $]. Это будет уменьшаться каждый цикл до тех пор, пока актив не будет истинным. Но тогда активный может отключить 6 часов позже, и счет будет отрицательным, который не будет выполнен с ошибкой count == 0. Это верно? И мне нужно будет убедиться, что моя симуляция не закончится до тех пор, пока последняя активность не будет отменена. – wisemonkey
'seq [*]' равнозначен 'seq [* 0: $]' (см. 16.9.2 в [lrm] (http://standards.ieee.org/getieee/1800/download/1800-2012. PDF)). Да, счетчик может пойти отрицательно. Чтобы длительный импульс дал сообщения об ошибках раньше, вы можете использовать: '(active && count> 0, count -) [*] ## 1 (~ active && count == 0)'. Вы можете закодировать его и другими способами (мой пример), но все они потребуют локальных переменных. – Greg
Спасибо за объяснение :) – wisemonkey