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

При симуляции появляется

WARNING: CONV_INTEGER: There is an 'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, and it has been converted to 0.

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


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

При симуляции появляется

WARNING: CONV_INTEGER: There is an 'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, and it has been converted to 0.

Ну, появляется, и что? Вопрос-то в чем состоит? :blush:

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


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

В том что функция CONV_INTEGER не работает, как я понял нужно задать начальное значение для аргумента: Address_In : IN std_ulogic_vector((Adr_width - 1) DOWNTO 0). Но может я не прав?

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


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

А поподробнее можно?

Кстати, какой тип у Вас имеет Adr_width?

Изменено пользователем Very_hard

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


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

GENERIC( Adr_width : integer := 4; -- Width of address bus

Dec_width : integer := 4; -- Width of address decode internal registers

Dat_width : integer := 16); -- Width of data bus

 

PORT (Address_In : IN std_ulogic_vector((Adr_width - 1) DOWNTO 0); -- Slave Address

Reg_Data : IN std_ulogic_vector(((2 ** Dec_width) * Dat_width) - 1 DOWNTO 0); -- Data from all internal registers

RWI : IN std_ulogic; -- Read/Write

Rd_Early : IN std_ulogic; -- read early signal

Rd_Clr : IN std_ulogic; -- read clear signal

Wr_Stb : IN std_ulogic; -- write strobe signal

Rd_Stb : IN std_ulogic; -- Read strobe signal

Data_out : OUT std_ulogic_vector((Dat_width - 1) DOWNTO 0); -- Data out FispBus

Rd_Early_strobes : OUT std_ulogic_vector(((2 ** Dec_width) - 1) DOWNTO 0); -- read early strobes (for each regsiter)

Rd_Clr_strobes : OUT std_ulogic_vector(((2 ** Dec_width) - 1) DOWNTO 0); -- read clear strobes (for each regsiter)

Rd_Stb_strobes : OUT std_ulogic_vector(((2 ** Dec_width) - 1) DOWNTO 0); -- read Strobes (for each Register)

Wr_Stb_strobes : OUT std_ulogic_vector(((2 ** Dec_width) - 1) DOWNTO 0) -- write strobes (for each regsiter)

);

...

 

Функция в которой WARNING: uvect_2_int

Decode_address <= uvect_2_int(Address_In((Dec_width - 1) DOWNTO 0)); -- Convert decode address to integer

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


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

С какой целью вы используете неразрешаемые(resolved) типы сигналов?

Гараздо удобнее пользоваться std_logic' ами.

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


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

В том что функция CONV_INTEGER не работает, как я понял нужно задать начальное значение для аргумента: Address_In : IN std_ulogic_vector((Adr_width - 1) DOWNTO 0). Но может я не прав?

Почему, функция работает, она возвращает 0 (то, что и выводит в сообщении). Просто в качестве аргумента она получает вектор, содержащий в одном или нескольких битах состояния U|X|W|Z, что лишает ее возможности конвертировать этот вектор в адекватное целое число, она выводит предупреждение и возвращает 0. Причины могут быть разными, в том числе и отсутствие начального значения сигнала-аргумента этой функции. Так что Вы правы.

 

С какой целью вы используете неразрешаемые(resolved) типы сигналов?

Гараздо удобнее пользоваться std_logic' ами.

Неразрешаемый тип сигналов (unresolved) иногда вполне оправдано использовать с целью предупреждения ошибки назначения более одного драйвера (источника) сигнала. В этом случае данная ошибка обнаруживается уже на этапе компиляции. Уловить преимущество использования std_logic по отношению к std_ulogic мне так и не удалось. Везде, где сигнал имеет единственный драйвер (источник), я использую тип std_ulogic. А вот, что касается векторов, то использование std_ulogic_vector ведет к некоторым проблемам при преобразовании типов, равно как и для std_ulogic_vector нет некоторых полезных функций. Поэтому всегда использую std_logic_vector.

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


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

Как правильно задать начальное значение для

Address_In : IN std_ulogic_vector((Adr_width - 1) DOWNTO 0);

 

Address_In : IN std_ulogic_vector((Adr_width - 1) DOWNTO 0):=(others => '0');

Вроде так.

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


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

После прочтения данной темы решил задать всем сигналам (в модулях и тестбенче) своего проекта начальные значения (раньше не обращал на это внимания). При симуляции прекратилось "мелькание" в логе, вызванное постоянными появлениеми сообщений типа WARNING: CONV_INTEGER: There is an 'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, and it has been converted to 0. Но, самое главное, значительно уменьшилось время симуляции проекта: вчера ждал три часа, так и не дождался, ушел домой, а сегодня - 25 минут.

В качестве лирического отступления замечу, что освоение процесса проектирования на ПЛИС в нашей конторе держится, к сожалению, на энтузиазме (моем). Часто слышу, как руководство гордо заявляет заказчикам "Мы перешли на ПЛИС!!!". А я в это время сижу в углу и посмеиваюсь.

Вообще я это к тому, что посоветоваться мне на работе не с кем, так что хорошо, что есть такой форум, который мне помогает вырабатывать правильный стиль проектирования. Всем большое спасибо!!!

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


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

Присимуляции прекратилось "мелькание" в логе, вызванное постояннымипоявлениеми сообщений типа WARNING: CONV_INTEGER: There is an'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, and it has been convertedto 0. Но, самое главное, значительно уменьшилось время симуляциипроекта: вчера ждал три часа, так и не дождался, ушел домой, а сегодня- 25 минут.

Логично: вывод разных сообщений и запись их в файл занимает относительно много времени.

Кстати, нигде не промелькнуло название симулятора, который вы используете. В ModelSim есть возможность подавить вывод этих сообщений либо через диалоги настройки симулятора, либо редактированием ini-файла, либо соответствующей командой tcl.

Изменено пользователем andrew_b

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


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

Кстати, нигде ни промелькнуло название симулятора, который выиспользуете. В ModelSim есть возможность подавить вывод этих сообщениелибо через диалоги настройки симулятора, либо редактированиемini-файла, либо соответствующей командой tcl.

Сравнительно недавно попробовал Active HDL, и понял что это надолго :) Классная вещь! Сейчас проектирую в нем, даже синтез и имплемент запускаю оттуда (ISE 6.3).

C моделсимом работал раньше, мне очень не нравятся его тормоза и даже полные зависоны при путешествии по вейфрейму :(

Спасибо за подсказку душить сообщения. Иногда это может помочь быстрее выполнить работу. Но мне кажется, лучше все же присвоить сигналам нач. значения.

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


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

Сравнительно недавно попробовал Active HDL, и понял что это надолго :) Классная вещь! Сейчас проектирую в нем, даже синтез и имплемент запускаю оттуда (ISE 6.3).

C моделсимом работал раньше, мне очень не нравятся его тормоза и даже полные зависоны при путешествии по вейфрейму :(

 

К большому сожалению этот симулятор не поддерживает PSL :(, поэтому квеста сим рулит :)

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


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

Сравнительно недавно попробовал Active HDL, и понял что это надолго :) Классная вещь!
Такой монстр, что ужоснах.

C моделсимом работал раньше, мне очень не нравятся его тормоза и даже полные зависоны при путешествии по вейфрейму :(

Я всегда пользовался только моделсимом, но ни с чем подобным никогда не сталкивался. Все работало замечательно.

Изменено пользователем andrew_b

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


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

Сравнительно недавно попробовал Active HDL, и понял что это надолго :) Классная вещь! Сейчас проектирую в нем, даже синтез и имплемент запускаю оттуда (ISE 6.3).

C моделсимом работал раньше, мне очень не нравятся его тормоза и даже полные зависоны при путешествии по вейфрейму :(

 

К большому сожалению этот симулятор не поддерживает PSL :(, поэтому квеста сим рулит :)

В смысле Active HDL и моделсим не поддерживают PSL? Я правильно понял? Для меня это не страшно, я слаб еще в тестбенчах на vhdl, а до PSL мне как до луны. Тем более с таким подходом, как у нас в конторе.

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


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

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

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

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

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

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

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

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

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

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