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

$error работает не правильно

Коллеги,

часто для "защиты от дурака" использую в initial_секции верилог кода инструкцию $error. Во всех версиях Квартуса, что я использовал до этого, сборщик проекта, наткнувшись на $error выдавал сообщение в окно ошибок и останавливал сборку. Но в версии 19.2pro, почему-то $error ведёт себя точно так же как и $info: просто выдаёт сообщение в окно info и как ни в чём не бывало продолжает собирать дальше. Что делать?

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


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

1. Не использовать 19.2pro

2. Использовать другую систему анализа ошибок

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


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

14 minutes ago, des00 said:

1. Не использовать 19.2pro

2. Использовать другую систему анализа ошибок

1. Не можно. Всё там собирается и в более молодых версиях (19.3 и 19.4) та же история.

2. Что вы имеете в виду?

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


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

1 hour ago, Kluwer said:

1. Не можно. Всё там собирается и в более молодых версиях (19.3 и 19.4) та же история.

тогжа в альтеру писать, предьявлять что нелегальный софт работает не верно)

1 hour ago, Kluwer said:

2. Что вы имеете в виду?

из текущего

    end
    else if (pDAT_NUM == cCOL_BY_CYCLE) begin // no remap write data as is

      assign owrite = write & dwc_cnt.done;
      assign owfull = wfull;
      assign owaddr = waddr;
      assign owdat  = dwc_dat[pDAT_NUM-1 : 0];

    end
    else begin

      assign owdat[-1] = 'x;  // incorrect parameter settings

    end
  endgenerate

работает на любом софте и даже в древнем 95ом верилоге)

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


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

1 hour ago, des00 said:

тогжа в альтеру писать, предьявлять что нелегальный софт работает не верно)

Отчего ж нелегальный? Просто Циклон 10 GX нужен, а он только в pro-версиях сейчас поддерживается с бесплатной лицензией (была уже тема недавно на форуме).

1 hour ago, des00 said:

тогжа в альтеру писать, предьявлять что нелегальный софт работает не верно)

из текущего

работает на любом софте и даже в древнем 95ом верилоге)

Согласен, тоже возможно, но дико не информативно. Вот я передаю модуль коллеге (у нас типично, когда в одной плисине по 2-3 разработчика одновременно живут), у него выскакивает ошибка по типу "incorrect parameter settings". Какого параметра, почему? Пока он сообразит, что это исскуственно заложенная бомба, пока он начнёт меня пытать и т.д.

А вот так, на мой скромный взгляд, гораздо информативнее

initial
	if ( (NUM_CHANNELS < 1) || (NUM_CHANNELS > 2) )
			$error("\n ==== NUM_CHANNELS should be equal to 1 or 2 only ==== \n"); 

Но, правда, ваш способ можно объеденить с этим: ваш остановит компиляцию, а мой хотя бы выведет доп.пояснения. Но, просто, как-то не изящно :)

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


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

On 3/24/2020 at 9:34 PM, Kluwer said:

Но, правда, ваш способ можно объеденить с этим: ваш остановит компиляцию, а мой хотя бы выведет доп.пояснения. Но, просто, как-то не изящно :)

ну комментарии можно любые добить) но вообще, в до SV эпоху, боролись так)

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


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

А разве на Verilog нет аналога Assert как в VHDL ?

    --===========================================================================================
    -- Разрядность регистра не может быть меньше 2 !
    --=========================================================================================== 
    assert (sync_stages >= 2) 
    report LF& 
    "Incorrect parametr 'sync_stages'. Check the syntax !" &LF& 
    "Note : parametr Must be > 2 !"&LF severity error;

 

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


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

On 3/25/2020 at 9:12 PM, Flip-fl0p said:

А разве на Verilog нет аналога Assert как в VHDL ?


    --===========================================================================================
    -- Разрядность регистра не может быть меньше 2 !
    --=========================================================================================== 
    assert (sync_stages >= 2) 
    report LF& 
    "Incorrect parametr 'sync_stages'. Check the syntax !" &LF& 
    "Note : parametr Must be > 2 !"&LF severity error;

 

Есть, но приписка $error и является уровнем Severity error. И вот она по-видимому неправильно отрабатывается.

Как вариант, если нужно именно прекратить работу, задействовать $finish. Результат будет нужный, просто выход нестандартный.

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


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

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

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

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

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

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

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

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

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

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