Перейти к содержанию
    

Cadence Incisive : убрать варнинги

Всем привет.

 

Есть чужой кусок кода, в котором Cadence Incisive при симуляции генерит варнинги на тему out of band - в цикле происходит обращение к несуществующим индексам регистров и массивов. При дальнейшем обсуждении будем считать, что исправить это и написать по людски нельзя, но код работает.

 

Вопросы

 

1) Cadense Invisive крутится на RedHat, можно как то средствами ОС, или директивами компилятора, или атрибутами в коде отфильтровать выдачу варнингов на данную строчку кода? Что вроде вроде

(* NO WARNING *) reg[-1] = 32'h42;

Или парсить выдачу симулятора в консоль регулярным выражением, удаляя сообщения вида

ncelab: *W,BNDWRN (/home/my_source.v,32|42): Bit-select or part-select index out of declared bounds.

 

2) Что вообще говорит стандарт Verilog об обращении к несуществующим индексам? Там гарантировано будет X при симуляции и 0 при имплементации? Или это undefined behaviour и там может сидеть единорог? Или при симуляции обработается так же как в Си, выдав случайный кусок памяти?

Изменено пользователем ConstHw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день.

 

По первому. Процесс симуляции идет с идексами вида [-1] и нужно убрать просто сообщения из консоли?

или симуляция останавливается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

[-1] для примера, там сложная логика в цикле виде for (i=0;i<M;i++) register (i*8**MAGIC-FOO+i/3), то есть индексы выходят за обе границы.

 

 

Симуляция не останавливается, варнинги сыпятся на компиляции, их много и это мешает вычитывать остальные

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

grep -v BNDWRN

и есть у ncelab ключ для блокировки варнингов (не помню)

 

но вообще - самое правильное - разобраться с индексами

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может поможет

 

-NOWarn warning_code[:warning_code ...]

 

Disable printing of the warning with the specified code. The warning_code argument is the message code (mnemonic) that appears in the warning message following the error severity code.

 

Example:

 

% ncsim -nowarn HVAPKF worklib.top

 

You can disable the printing of multiple warning messages either by using multiple -nowarn options or by using one -nowarn option and separating the warning_code arguments with a colon. For example,

 

% ncsim -nowarn INTOVF -nowarn CUVWSP worklib.top

 

% ncsim -nowarn INTOVF:CUVWSP worklib.top

 

-NOWarn warning_code[:warning_code ...]

 

Disable the printing of the warning with the specified code. For example, when elaborating, you may know about unconnected signals in your model. While the individual design units or source files may compile without error, the elaborator will generate port mismatch warning messages. If you are not interested in seeing these messages, use -nowarn to turn them off.

 

The warning_code argument is the message code (mnemonic) that appears in the warning message that follows the error severity code.

 

Example:

 

% ncelab -nowarn CUVWSP worklib.top

 

You can disable the printing of multiple warning messages either by using multiple -nowarn options or by using one -nowarn option and separating the warning_code arguments with a colon. For example,

 

% ncelab -nowarn INTOVF -nowarn CUVWSP worklib.top

 

% ncelab -nowarn INTOVF:CUVWSP worklib.top

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2) Что вообще говорит стандарт Verilog об обращении к несуществующим индексам? Там гарантировано будет X при симуляции и 0 при имплементации? Или это undefined behaviour и там может сидеть единорог? Или при симуляции обработается так же как в Си, выдав случайный кусок памяти?

 

Правьте код, единорог там сидит точно. Но EC расскажет все.

Из собственного примера:

Переполнение индекса, ворнинга не было, на выходе ncverilog ноль. При синтезе (FPGA, конретный тулз сейчас не вспомню) выходит, что старший бит "оптимизируется" и то что ранее было переполнением индекса сейчас становиться валидным значением (по циклу). Так что правьте

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...