Вопросы по теме 'system-verilog-assertions'

SVA для рукопожатия
Я пытаюсь написать утверждение SVA для процедуры рукопожатия. В своих поисках я обнаружил следующее: property p_handshake(clk,req,ack); @(posedge clk) req |=> !req [*1:max] ##0 ack; endproperty assert...
1998 просмотров

Утверждение для проверки сбоя в сигнале
Допустим, есть сигнал a . Когда сигнал становится высоким, он должен оставаться высоким как минимум в течение трех положительных фронтов тактовой частоты. Мы можем записать свойство как property p; @(posedge clk) $rose(a) -> a[*3];...
4310 просмотров

Последовательное тестирование и утверждения с помощью System-Verilog
У меня есть последовательный вывод модуля Verilog, который я хотел бы протестировать с помощью system-verilog. Результат, названный 'SO', будет выводить что-то вроде 8'hC6 при правильном последовательном входе 'SI' со значением, скажем, 8'h9A....
1506 просмотров

Последовательность systemverilog - хотите проверить значение данных при первом переходе vld в высокий уровень?
Это была моя первая наивная попытка. В основном vld может достигать максимума в любое время за 20 циклов. Но в первый раз, когда он становится высоким, data должно быть определенным значением, скажем 'h20 . sequence correct_vld_and_data;...
92 просмотров

рекомендовать способ записи монитора в UVM с разной полярностью событий
Я пытаюсь реализовать монитор для VDU (блок отображения видео), и способ программирования VDU говорит о том, что сигналы синхронизации имеют контролируемую полярность. Это означает, что в соответствии с настройками VDU монитор должен реагировать на...
56 просмотров

Блокирует ли событие Verilog выполнение процедуры?
Блокирует ли управление событиями Verilog выполнение процедуры до тех пор, пока событие не произойдет? Рассмотрим пример ниже. module test; reg a; initial begin @(a) $display("%b", a); $display("the_message"); end endmodule...
58 просмотров

SVA (утверждения SystemVerilog): разница между $ assertoff и $ assertkill?
В чем разница между $assertoff; и $assertkill; с утверждениями SystemVerilog? Они оба, кажется, останавливают выполнение утверждений.
5559 просмотров

Использование очередей в рекурсивных свойствах
У меня есть некоторые данные из 1-битного последовательного порта, которые кратны байтам разной длины как таковые: byte expected_1 [$] = {8'hBA, 8'hDD, 8'hC0, 8'hDE}; byte expected_2 [$] = {8'h01, 8'h23, 8'h45, 8'h67, 8'h89, 8'hAB, 8'hCD, 8'hEF};...
894 просмотров

Могу ли я получить доступ к отложенному значению в утверждении SystemVerilog
Я хочу использовать старое значение сигнала в утверждении SystemVerilog. Это то, что я сейчас делаю logic [ADDRESS_WIDTH-1:0] old_address [1:0]; always_ff@(posedge rdclock) begin old_address[0] <= rdaddress; old_address[1] <=...
175 просмотров

Утверждение для действительного приходит один раз в транзакции req-ack
Я хочу написать утверждение, которое проверяет, что «Действительный должен быть высоким только один раз в транзакции req 1, ack 1, req 0, ack 0» Я думал о следующем, но это дает мне ошибку. assert property (@(posedge clk_r) req &...
138 просмотров

[SVA]: Есть ли способ пропустить первую оценку SVA?
У меня есть следующее свойство: property p_0; $rose(signal_a) |-> $rose(signal_b) ; endproperty моя проблема в том, что после HW RST сигнал_b повышается (нормальное поведение), но утверждение не выполняется, и я хочу, чтобы эта проверка...
140 просмотров
schedule 12.08.2022

Утверждение не выполняется с , имя экземпляра не является допустимым значением rvalue [7.1 (IEEE)]
Мой код утверждения выглядит следующим образом: property p_crossbar_halted_chk12; @(posedge `SOG_REST_SCOPE.clk) $rose(`SOG_REST_SCOPE.crossbar_halted) |-> ##[0:1] $rose(`SOG_REST_SCOPE.last_cycle) |->...
186 просмотров

как написать утверждение для поведения асинхронного сброса
Давайте рассмотрим простой пример d-триггера с асинхронным сбросом. q должен быть обновлен с помощью d на следующем фронте часов, это можно записать с помощью простого утверждения оператора импликации. Однако как зафиксировать поведение сброса в...
2851 просмотров

Утверждение Systemverilog для проверки неверного перехода сигнала
Я пытаюсь написать утверждение, которое будет срабатывать, только если сигнал переходит на передний фронт clk. Я написал ниже код, чтобы проверить свои идеи module test(); bit clk, clkb; int d; assign clkb = ~clk; initial begin clk = 0;...
2912 просмотров

Использование $ past в утверждениях System Verilog
Я хочу проверить, равно ли текущее значение переменной «1», тогда предыдущее значение переменной должно быть «0». Я использую $ past в утверждениях System Verilog. Здесь я проверяю, если cal_frame_mode = 1, то это предыдущее значение cal_frame_mode...
11887 просмотров

Почему использование НЕ с подразумеваемым видом - плохая идея в SVA?
В утверждениях SystemVerilog (SVA) почему используется: not (a |-> b) плохая идея? Это связано с бессмысленным аспектом успеха (то есть, когда a не соответствует действительности)?
157 просмотров

Как я могу использовать свойства последовательности SystemVerilog в утверждениях?
Я хочу сказать: «Если есть неограниченное количество входов, в конечном итоге я получу выход», как я могу это сделать? В других частях сценария я хочу предположить ограниченное количество входных данных, поэтому я не могу просто написать...
229 просмотров

Как проверить, не изменяется ли сигнал, используя Immediate Assertions в SystemVerilog Assertions
Я новичок в SystemVerilog Assertions и знаю, что могу проверить, не меняется ли сигнал между тактами часов, используя Concurrent Assertions: assert property (@(posedge clk) enable == 0 |=> $stable(data)); Но как мне делать это постоянно,...
2791 просмотров

как использовать assertoff из теста, чтобы отключить утверждение в стороннем объекте uvm
Я ищу способ отключить утверждение в боковом компоненте uvm для определенного теста. Ниже простой код представляет мою среду с комментариями по требованию. Я думал, что могу использовать $assertoff. Я могу модифицировать компонент uvm, если для...
11656 просмотров

Как покрыть свойство fifo rd/wt?
Я пытаюсь написать точку прикрытия fiford rd write. module M; bit stop; bit clk; initial while (!stop) #5 clk = ~clk; bit A, B, rst; initial rst = 0; initial begin A = 0; #20 A = 1; #10 A = 0; // #10 B = 1; #10 B =...
77 просмотров