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

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


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

Группа: Свой
Сообщений: 729
Регистрация: 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
 
Start new topic
Ответов
andrew_b
сообщение Jan 16 2018, 09:02
Сообщение #2


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

Группа: Свой
Сообщений: 1 975
Регистрация: 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
Сообщение #3


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

Группа: Свой
Сообщений: 729
Регистрация: 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



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

 


RSS Текстовая версия Сейчас: 18th June 2025 - 02:16
Рейтинг@Mail.ru


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