ConstHw 0 17 мая, 2016 Опубликовано 17 мая, 2016 (изменено) · Жалоба Всем привет. Есть чужой кусок кода, в котором 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 и там может сидеть единорог? Или при симуляции обработается так же как в Си, выдав случайный кусок памяти? Изменено 17 мая, 2016 пользователем ConstHw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
7777777alex 0 17 мая, 2016 Опубликовано 17 мая, 2016 · Жалоба Добрый день. По первому. Процесс симуляции идет с идексами вида [-1] и нужно убрать просто сообщения из консоли? или симуляция останавливается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ConstHw 0 17 мая, 2016 Опубликовано 17 мая, 2016 · Жалоба [-1] для примера, там сложная логика в цикле виде for (i=0;i<M;i++) register (i*8**MAGIC-FOO+i/3), то есть индексы выходят за обе границы. Симуляция не останавливается, варнинги сыпятся на компиляции, их много и это мешает вычитывать остальные Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 5 17 мая, 2016 Опубликовано 17 мая, 2016 · Жалоба grep -v BNDWRN и есть у ncelab ключ для блокировки варнингов (не помню) но вообще - самое правильное - разобраться с индексами Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
7777777alex 0 17 мая, 2016 Опубликовано 17 мая, 2016 · Жалоба Может поможет -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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lexx 0 21 мая, 2016 Опубликовано 21 мая, 2016 · Жалоба 2) Что вообще говорит стандарт Verilog об обращении к несуществующим индексам? Там гарантировано будет X при симуляции и 0 при имплементации? Или это undefined behaviour и там может сидеть единорог? Или при симуляции обработается так же как в Си, выдав случайный кусок памяти? Правьте код, единорог там сидит точно. Но EC расскажет все. Из собственного примера: Переполнение индекса, ворнинга не было, на выходе ncverilog ноль. При синтезе (FPGA, конретный тулз сейчас не вспомню) выходит, что старший бит "оптимизируется" и то что ранее было переполнением индекса сейчас становиться валидным значением (по циклу). Так что правьте Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ConstHw 0 24 мая, 2016 Опубликовано 24 мая, 2016 · Жалоба Всем большое спасибо за помощь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться