Jump to content

    

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

Коллеги,

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
14 minutes ago, des00 said:

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

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

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

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

Share this post


Link to post
Share on other sites
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ом верилоге)

Share this post


Link to post
Share on other sites
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"); 

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

Share this post


Link to post
Share on other sites
On 3/24/2020 at 9:34 PM, Kluwer said:

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

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

Share this post


Link to post
Share on other sites

А разве на 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;

 

Share this post


Link to post
Share on other sites
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. Результат будет нужный, просто выход нестандартный.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this