Я хочу сказать: «если последовательность A
встречается, то последовательность B
встречается в этой последовательности». Как я могу это сделать?
Я бы подумал, что могу использовать утверждение:
assert property (@(posedge clk) (A |-> (B within A));
но в моем примере это не работает.
Я читал это:
Говорят, что линейная последовательность соответствует на протяжении конечного интервала последовательных тактов часов при условии, что первое логическое выражение оценивается как истинное в первом такте часов, второе логическое выражение оценивается как истинное при втором такте часов и так далее, вплоть до последнее логическое выражение, принимающее истинное значение на последнем такте часов.
но я подозреваю, что такт часов перешел на другую сторону |->
последнего такта часов, когда я хочу, чтобы он был первым.
Мой конкретный пример - это аккумулятор, который, как я ожидаю, переполнится, если я добавлю достаточно положительных чисел, поэтому мне нужны A = (input == 1)[*MAX_SIZE]
и B = (output == 0)
, поэтому здесь B
- это последовательность длины 1, я не знаю, вызывает ли это проблемы.
Я очень новичок в system-verilog, поэтому, возможно, что-то другая часть моего кода работает неправильно, но я нигде не видел, чтобы этот пример был выполнен.