Я пытаюсь написать утверждение SVA для процедуры рукопожатия.SVA для рукопожатия
В моих поисках я нашел следующий:
property p_handshake(clk,req,ack);
@(posedge clk)
req |=> !req [*1:max] ##0 ack;
endproperty
assert property(p_handshake(clock,valid,done));
Однако мой «сделано» сигнал разрешается приходить много циклов после того, как действует цикл переходит на высоком уровне. Как вы делаете это заявление, убедитесь, что «сделано» указано на любой точка после того, как действительный утверждается, без действительного удаления?
Интересным моментом здесь является то, что вы (правильно) используете '$ rose()' для условия включения. Причина, по которой вы это делаете, а не просто 'req | -> ...', состоит в том, чтобы вы не порождали поток утверждений каждый цикл, который 'req' высок, а только первый. Это большой выигрыш в производительности. –