реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Quartus + несинтезируемые констуркции VHDL, Конструкции поддерживаемые Quartus вешают Modelsim
Flip-fl0p
сообщение Jan 16 2018, 08:04
Сообщение #1


В поисках себя...
***

Группа: Свой
Сообщений: 498
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



У меня в модуле применяется настройка, меняющая его поведение.

Код
    generic
    (
        Edge_type                : string  := "All_edge"   -- Rising / Falling / All_edge тип детектированного фронта
    );


Захотелось мне добавить в описание модуля конструкцию report, которая отслеживает правильность ввода параметров модуля. Мало ли я где буковкой или регистром ошибусь. Так пусть мне на консоль выводится сообщения об этом. Но столкнулся с проблемой, что языковые конструкции которые понимает Quartus - наглухо вешают Modelsim, да так, что только через диспетчер задач его можно закрыть...
Код
    --===================================
    -- Понимает quartus, но вешает modelsim
    --===================================
    parametr_checker : process(all)
    begin

        if (Edge_type    /= "All_edge" and
            Edge_type    /= "Falling" and
            Edge_type    /= "Rising") then
            report LF&
                "Incorrect parametr : 'Edge_type' Check syntaxis !" &LF&
                "Note : parametr case-sensitive !"&LF severity error;
        end if;
    end process;


А вот конструкции, которые понимает Modelsim заставляют ругаться Quartus.
Код
    --===================================
    -- Понимает modelsim но ругается quartus
    --===================================
    parametr_checker : process
    begin

        if (Edge_type    /= "All_edge" and
            Edge_type    /= "Falling" and
            Edge_type    /= "Rising") then
            report LF&
                "Incorrect parametr : 'Edge_type' Check syntaxis !" &LF&
                "Note : parametr case-sensitive !"&LF severity error;
        end if;
        wait;
    end process;


Как убедить Quartus и Modelsim сообщать мне Report и не ругаться ?
Go to the top of the page
 
+Quote Post
goodsoul
сообщение Jan 16 2018, 08:22
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 129
Регистрация: 3-09-09
Пользователь №: 52 178



Если я правильно понял задачу, то
VHDL:
-- synthesis translate_off
-- synthesis translate_on

должно помочь. Указывает синтезатору квартуса игнорить кусок кода. Оно?

Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jan 16 2018, 08:24
Сообщение #3


В поисках себя...
***

Группа: Свой
Сообщений: 498
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(goodsoul @ Jan 16 2018, 11:22) *
Если я правильно понял задачу, то
VHDL:
-- synthesis translate_off
-- synthesis translate_on

должно помочь. Указывает синтезатору квартуса игнорить кусок кода. Оно?

Код то он игнорирует. Причем полностью. И соответственно Report не выводит....
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Jan 16 2018, 09:02
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 855
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Насколько я понял, в коде, который вешает Modelsim, получается что-то типа бесконечного цикла.
Я делаю по-другому:
Код
architectute rtl of foo is

function CheckParameters return boolean is
variable ok : boolean;
begin
       ok = ...;

       if (!ok) then
          report ...;
       end if;

       return ok;
end;

constant ok : boolean := CheckParameters;


Таки образом мы гарантируем, что, во-первых, функция выполнится один раз и, во-вторых, фунция выполнится в самом начале симуляции, потому что она инициализирует константу.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jan 16 2018, 09:53
Сообщение #5


В поисках себя...
***

Группа: Свой
Сообщений: 498
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(andrew_b @ Jan 16 2018, 12:02) *

Спасибо !
Что-то не догадался попробовать через функции beer.gif !

Сообщение отредактировал Flip-fl0p - Jan 16 2018, 09:54
Go to the top of the page
 
+Quote Post
alexadmin
сообщение Jan 16 2018, 13:44
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 548
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



Вообще-то как раз для этого assert придумали...
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jan 16 2018, 13:50
Сообщение #7


В поисках себя...
***

Группа: Свой
Сообщений: 498
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(alexadmin @ Jan 16 2018, 16:44) *
Вообще-то как раз для этого assert придумали...

Так не работает....
Go to the top of the page
 
+Quote Post
Viktuar
сообщение Jan 16 2018, 18:51
Сообщение #8





Группа: Участник
Сообщений: 9
Регистрация: 18-12-16
Пользователь №: 94 676



Цитата(Flip-fl0p @ Jan 16 2018, 13:50) *
Так не работает....


А что именно не работает? В квартусе проблема?
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jan 16 2018, 19:10
Сообщение #9


В поисках себя...
***

Группа: Свой
Сообщений: 498
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(Viktuar @ Jan 16 2018, 21:51) *
А что именно не работает? В квартусе проблема?

Modelsim виснит наглухо без оператора wait. А с ним отказывается работать Quartus. Замкнутый круг какой-то...
Проблему решил по методу, который мне посоветовал уважаемый andrew_b, т.е написал вывод сообщения через функцию и константу.
Go to the top of the page
 
+Quote Post
alexadmin
сообщение Jan 17 2018, 07:45
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 548
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



Цитата(Flip-fl0p @ Jan 16 2018, 16:50) *
Так не работает....


Так а зачем вам process? Пишите непосредственно в теле архитектуры
Код
     assert (Edge_type = "All_edge" or
      Edge_type = "Falling" or
     Edge_type = "Rising")
             report LF& "Incorrect parametr : 'Edge_type' Check syntaxis !" &LF&
                      "Note : parametr case-sensitive !"&LF severity error;
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jan 17 2018, 08:29
Сообщение #11


В поисках себя...
***

Группа: Свой
Сообщений: 498
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(alexadmin @ Jan 17 2018, 10:45) *
Так а зачем вам process? Пишите непосредственно в теле архитектуры
Код
     assert (Edge_type = "All_edge" or
      Edge_type = "Falling" or
     Edge_type = "Rising")
             report LF& "Incorrect parametr : 'Edge_type' Check syntaxis !" &LF&
                      "Note : parametr case-sensitive !"&LF severity error;

Да действительно можно и так. Спасибо...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd February 2018 - 04:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.00904 секунд с 7
ELECTRONIX ©2004-2016