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

Проясните про виваду

За все время прибивать гвоздями приходилось только сигналы для вывода в отладчик. Иначе уползают неизвестно куда, и ищи их потом. Но я использую hierarchy=rebuild, поэтому считаю такое поведение нормой.

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


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

ну так гвозди тогда покажите

как обычно keep = true, dont_touch = true

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


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

как обычно keep = true, dont_touch = true

wololo!

vivado!

keep away from my logical nets! Don't touch 'em!

wololo!

 

картинка на доске в рабочей комнате правильная =)

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


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

Приветствую!

 

как обычно keep = true, dont_touch = true

 

Если хотите чтобы сохранять имена и чтобы шины не расползались

в в vivado лучше использовать (* MARK_DEBUG="true" *)

А для сохранения пинов в иерархи модулей (* keep_hierarchy="yes" *)

По умолчанию в Vivado стоит hierarchy=rebuild при этом он пытается восстановить иерархию с плоского нетлиста ПОСЛЕ синтеза а не сохранить ее ПРИ синтезе. Отсюда и проблемны с "расползанием" логики по другим модулям.

 

Что же касается некорректного синтеза то пока на такое не нарывался (может мне в жизни жутко везет ? :)

 

Успехов! Rob.

 

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


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

Вот я низачто не поверю, что в подобном коде (то место где он из 80 бит сделал 67) есть логическое обоснование его поведению

  dat_buffer <= oreq ? idat : (dat_buffer >> 8); // вот тут опачки и часть шины данных потерялась

 

если idat не выходит за 67 бит - то вы dat_buffer можете хоть 256 бит обозвать - xilinx соптимизирует!

 

 

тут все много интереснее. Для затравки выложу код, который глючит при сборке, на предмет проблем с coding style

  serv_val_line <= '0;
       serv_val_line <= ival ? 4'b1111 : (serv_val_line >> 1);
       serv_dat_line <= ival ? idat : (serv_dat_line >> 2);

 

Проблемные видны невооруженным глазом:

1 Какой разрядности 0 писать?

2 Использование >>

 

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


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

1 Какой разрядности 0 писать?

 

Тут как раз всё ок. В VHDL была такая классная штука как others => '1' или '0'. Вне зависимости от размера регистра данное присвоение все биты взводило либо в 1, либо в 0. В veriloge такой удобной фичи нет, а вот в System Verilog есть. Присвоение reg <= '0 все биты обнуляет.

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

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


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

des00, а проект после "оптимизации" в симуляторе рассыпается? А то может хилые втихаря -O4 запили.

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


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

Если бы такие простые вещи, как a <= b не работали в вивадо, ей было бы совершенно невозможно пользоваться. А это не так.

 

Подниму тему. Я тоже думал что такого не может быть, пока сам не столкнулся в Vivado 2016.2

Убирает сигналы самым наглым образом и именно в местах a <= b.

Причем 2 из 3 однотипных записи могут работать, а у последней цепи потерялись. Пришлось прибивать.

И кстати, я на VHDL пишу.

 

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


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

Могу предположить, что некорректно воспринимается вложенная конструкция if else if....

Можно попробовать либо расставить у каждого if и else операторные скобки begin-end, либо заменить конструкцию на case

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


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

Получается, Vivado надо в связке с Synplify использовать :-( Особенно, если подсел на SystemVerilog. Да-а-а... Квартус имеет, конечно, свои болячки, но так злобно не поступает.

Кстати, а в ISE что-то подобное этим тихим оптимизациям наблюдалось? Когда мне доводилось немного с ним работать, что-то не припомню таких проблем.

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


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

Я пока с таким поведением не сталкивался, но понимаю, раз жалуется уже не один человек - значит, оно возможно. Что синтезирует хуже XST по таймингам - да, бывало.

Агрументом в пользу относительной адекватности Вивадо является то, что Xilinx давно перетащил на него всю свою базу IP-ядер и активно развивает новые. А это огромный объем HDL-кода, втч кривого "индийского".

 

Было бы разумно вычленить некорректно синтезируемое место и отправить код в техподдержку или как минимум на форум Xilinx - пусть разбираются.

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


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

Тут как раз всё ок. В VHDL была такая классная штука как others => '1' или '0'. Вне зависимости от размера регистра данное присвоение все биты взводило либо в 1, либо в 0. В veriloge такой удобной фичи нет, а вот в System Verilog есть. Присвоение reg <= '0 все биты обнуляет.

Не пойму, а какие проблемы в верилоге просто написать: regname <= 0;

???

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


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

Подниму тему. Я тоже думал что такого не может быть, пока сам не столкнулся в Vivado 2016.2

Убирает сигналы самым наглым образом и именно в местах a <= b.

Причем 2 из 3 однотипных записи могут работать, а у последней цепи потерялись. Пришлось прибивать.

И кстати, я на VHDL пишу.

Подтверждаю, есть некоторые косяки под VHDL, тестировал в 2015.2, 2016.1-2016.3.

У меня сложилось впечатление что некоторые стили описания Вивада просто не распознает и выдает странную чепуху. При этом ISE или Quartus таких фокусов не показывали.

В общем заметил эти интересные свойства в описании сдвиговых регистров и памяти.

Никакие директивы не помогают, только угодный Виваде стиль описания.

Ну и еще заметил, что даже для быстрого "функционального" прототипирования нужно выпилить все варнинги и

постоянно проверять скематик.

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


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

Не пойму, а какие проблемы в верилоге просто написать: regname <= 0;

???

 

C нулём все ок. А все биты в единицы как будете присваивать? Если так же, то у меня для вас плохая новость.

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

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


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

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

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

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

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

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

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

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

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

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