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

Как инициировать пользовательскую ошибку

Среда - Quartus 7.2, язык - V/SV. При разработке небольшой библиотеки возник вопрос - можно ли при передаче в модуль заведомо некорректных значений параметров (например, отрицательного числа тактов задержки) как-то инициировать ошибку (или хотя бы предупреждение) на этапе компиляции - то есть вывести в окно Messages собственный текст?

Сейчас используется костылик с generate-if с отрицательными индексами (как ошибка, появление которой маловероятно по другим причинам) - в справке Квартуса более пряморуких решений найти пока не удалось...

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


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

мы как делаем:

юзаем блоки initial:

при синтезе он игнорится, а при моделировании параметры всеравно те же в "библиотечные" модули передаются - а внутри initial вылавливайте нарушения хоть через $display хоть через $error.

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


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

при синтезе он игнорится, а при моделировании параметры всеравно те же в "библиотечные" модули передаются - а внутри initial вылавливайте нарушения хоть через $display хоть через $error.

На сколько я понимаю, стояла задача выловить на этапе компиляции, а не симуляции.

С нетерпением жду развитие темы, ибо бывает актуально.

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


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

На сколько я понимаю, стояла задача выловить на этапе компиляции, а не симуляции.

С нетерпением жду развитие темы, ибо бывает актуально.

нескромный вопрос: а вы прошивку сразу, не верифицируя RTL, будете загружать в железо?

 

точно не помню откуда позаимствовали такое решение - но помоему из тех же исходников альтеры,

хотя если кто знает решение для синтеза, без необходимости "обхода за 35км" -тоже с интересом послушаю

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


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

нескромный вопрос: а вы прошивку сразу, не верифицируя RTL, будете загружать в железо?

Не менее нескромный :05: ответ: освоение ModelSim пока только в планах. Пока симулируем антинаучно, Quartus'ом, а дальше - сразу через SignalTap.

без необходимости "обхода за 35км"

С обходом (если кому пригодится) выглядит так:

//-v--- Инициация ошибки периода компиляции ----------------------------------
//Достаточно передать ненулевое значение.
module generate_error #(parameter P = 0) (
  input                 a);
localparam i = (P === 0) ? 0 : 1'bx;
reg [i:0] tmp;
endmodule
//----------------------------------------------------------------------------

Пример использования:

generate if (STEP <= 1)) begin
  generate_error #(1) (clk);//Некорректный шаг!
end endgenerate

Потом по щелчку второго сверху сообщения об ошибке курсор помещается прямиком на комментарий об ошибке (//"Некорректный шаг!").

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


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

нескромный вопрос: а вы прошивку сразу, не верифицируя RTL, будете загружать в железо?

 

С учетом того, что я свои модули могу отдавать другим людям для исспользования, то лучше перестраховаться.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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