Крюк 0 13 февраля, 2014 Опубликовано 13 февраля, 2014 · Жалоба Выскакивает ошибка Xst:528 - Multi-source in Unit <Top> Пишу на VHDL. Использую в нижнеуровневых модулях конструкцию типа: в первом модуле Q (15 downto 0) <= BUS1 when RD1 = '1' else "ZZZZZZZZZZZZZZZZ"; в первом модуле Q (15 downto 0) <= BUS2 when RD2 = '1' else "ZZZZZZZZZZZZZZZZ"; RD1 и RD2 естественно разные сигналы. в топ модуле выходы Q этих субмодулей соединяю. Это аналог на VHDL использования буферов с тремя состояниями. При использовании синтезатора Synplify синтез проходил без замечаний и проект работал нормально. При использовании для синтеза Ise выскакивает ошибка ошибка Xst:528 - Multi-source in Unit <Top>. Я знаю, что эту конструкцию Synplify заменял на мультиплексор, почему синтезатор Ise этого не делает? Ведь языковая конструкция правильная. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 13 февраля, 2014 Опубликовано 13 февраля, 2014 · Жалоба а если RD2 и RD1 оба единицы? в ISE мультиплексор имеет подобное описание, вопрос в том как вы соединили эти модули Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 13 февраля, 2014 Опубликовано 13 февраля, 2014 · Жалоба При использовании синтезатора Synplify синтез проходил без замечаний и проект работал нормально. При использовании для синтеза Ise выскакивает ошибка ошибка Xst:528 - Multi-source in Unit <Top>. Я знаю, что эту конструкцию Synplify заменял на мультиплексор, почему синтезатор Ise этого не делает? Ведь языковая конструкция правильная. Не умеет. Или не хочет ;) Внутренние шины с z-состояниями вроде как были в каких-то древних устройствах. Потом не стало. Сейчас уж точно нету. Для поддержки старого кода в ряде синтезаторов был сделан финт замены на мультиплексоры. Ну а в ряде не сделан или уже выкинут. На мой взгляд это плохая практика, даже если ваш синтезатор это поддерживат. Пишите явно логику которую хотите, если не хотите разного рода сюрпризов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Крюк 0 13 февраля, 2014 Опубликовано 13 февраля, 2014 · Жалоба а если RD2 и RD1 оба единицы? в ISE мультиплексор имеет подобное описание, вопрос в том как вы соединили эти модули Не могут быть обе единицы - это разные выходы адресного декодера. Главное - эта конструкция абсолютно нормально работала при использовании synplify, но не проходит при использовании Ise. Так как Q - выходы с тремя состояниями, то они просто соединяются в топе (структурное описание на VHDL). Неужели в топе надо городит отдельный мультиплексор шин? Люди, как вы мультиплексируете шины при использовании Ise? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 13 февраля, 2014 Опубликовано 13 февраля, 2014 · Жалоба Люди, как вы мультиплексируете шины при использовании Ise? Все как обычно... Из каждого модуля есть выходящие шины, есть входящие... На самом верхнем уровне - "квадрат с логикой", буфера к выводам и DCM. А вот этажом ниже - все крупные модули и мультиплексор шин к ним... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Крюк 0 13 февраля, 2014 Опубликовано 13 февраля, 2014 · Жалоба Не умеет. Или не хочет ;) Внутренние шины с z-состояниями вроде как были в каких-то древних устройствах. Потом не стало. Сейчас уж точно нету. Для поддержки старого кода в ряде синтезаторов был сделан финт замены на мультиплексоры. Ну а в ряде не сделан или уже выкинут. На мой взгляд это плохая практика, даже если ваш синтезатор это поддерживает. Пишите явно логику которую хотите, если не хотите разного рода сюрпризов. На языке - это правильная конструкция, стандарт VHDL её поддерживает. Если конструкция правильная, то синтезатор не должен её забраковывать, если он не кривой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 13 февраля, 2014 Опубликовано 13 февраля, 2014 · Жалоба да говорю же, так и мультипликсирую на верилоге так out <= (CS == 0) ? DATA : 32'bZ; полный аналог вашего варианта, только тут надо понимать 2 вещи. 1. внутри плис реально не будет ZZZZ 2. надо следить за входами - выходами, вы точно эту шину где-то к выходу неконтролируемому не подключили...? покажите кусочек ТОРа Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Крюк 0 13 февраля, 2014 Опубликовано 13 февраля, 2014 · Жалоба Все как обычно... Из каждого модуля есть выходящие шины, есть входящие... На самом верхнем уровне - "квадрат с логикой", буфера к выводам и DCM. А вот этажом ниже - все крупные модули и мультиплексор шин к ним... Я согласен делать это в новых проектах, неохота переделывать старый. И честно говоря люблю смотреть верхний уровень в графическом представлении, при использовании выходов с тремя состояниями графическое представление для меня нагляднее. да говорю же, так и мультипликсирую на верилоге так out <= (CS == 0) ? DATA : 32'bZ; полный аналог вашего варианта, только тут надо понимать 2 вещи. 1. внутри плис реально не будет ZZZZ 2. надо следить за входами - выходами, вы точно эту шину где-то к выходу неконтролируемому не подключили...? покажите кусочек ТОРа Понятно, что не будет третьего состояния. Ничего неконтролированного не подключал, рабочий проект без единого изменения в коде, только синтезатор не Synplify, а Ise. Неохота переделывать старый проект и при использовании старых заделов в новой разработке их придется менять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 13 февраля, 2014 Опубликовано 13 февраля, 2014 · Жалоба А ПЛИС не сменилася вместе со средой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Крюк 0 13 февраля, 2014 Опубликовано 13 февраля, 2014 · Жалоба А ПЛИС не сменилася вместе со средой? Нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 13 февраля, 2014 Опубликовано 13 февраля, 2014 · Жалоба Я согласен делать это в новых проектах, неохота переделывать старый. И честно говоря люблю смотреть верхний уровень в графическом представлении, при использовании выходов с тремя состояниями графическое представление для меня нагляднее. Это когда мало шин, понятно. Но если в проекте несколько сот LVDS сигналов, то кроме LVDS буферов на верхний уровень ничего и не влезет. Иначе файл будет неудобный. Да и симулировать логику удобнее без LVDS и трехстабильных буферов... И вот такое: "на верилоге так out <= (CS == 0) ? DATA : 32'bZ;" - применяю только когда надо симулировать всю плату целиком. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 13 февраля, 2014 Опубликовано 13 февраля, 2014 · Жалоба Выскакивает ошибка Xst:528 - Multi-source in Unit <Top> Пишу на VHDL. Использую в нижнеуровневых модулях конструкцию типа: в первом модуле Q (15 downto 0) <= BUS1 when RD1 = '1' else "ZZZZZZZZZZZZZZZZ"; в первом модуле Q (15 downto 0) <= BUS2 when RD2 = '1' else "ZZZZZZZZZZZZZZZZ"; RD1 и RD2 естественно разные сигналы. в топ модуле выходы Q этих субмодулей соединяю. Это аналог на VHDL использования буферов с тремя состояниями. При использовании синтезатора Synplify синтез проходил без замечаний и проект работал нормально. При использовании для синтеза Ise выскакивает ошибка ошибка Xst:528 - Multi-source in Unit <Top>. Я знаю, что эту конструкцию Synplify заменял на мультиплексор, почему синтезатор Ise этого не делает? Ведь языковая конструкция правильная. А вы попробуйте прицепить атрибут /* synthesis = syn_hard */ на один из ваших модулей - получите под синплифаем весьма неожиданный результат. ИМХО нельзя всё время полагаться на "умный синтезатор", который любые каракули стерпит - надо ещё и немного головой думать. В вашем случае это означает грамотно разбить проект на модули так, чтобы этот мультиплексор оказался внутри одного модуля. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 13 февраля, 2014 Опубликовано 13 февраля, 2014 · Жалоба А почему не синтезировать Synplify, если он все понимает? Дался Вам этот XST. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Крюк 0 13 февраля, 2014 Опубликовано 13 февраля, 2014 · Жалоба А вы попробуйте прицепить атрибут /* synthesis = syn_hard */ на один из ваших модулей - получите под синплифаем весьма неожиданный результат. ИМХО нельзя всё время полагаться на "умный синтезатор", который любые каракули стерпит - надо ещё и немного головой думать. В вашем случае это означает грамотно разбить проект на модули так, чтобы этот мультиплексор оказался внутри одного модуля. Почему старый старый синтезатор Synplify умный, а новый Ise дурак. Я думаю, если языковая конструкция правильна , то это не каракули и синтезатор должен её обрабатывать. Использование трехстабильного буфера есть в стандарте. А почему не синтезировать Synplify, если он все понимает? Дался Вам этот XST. На новом месте приказано использовать Ise. Да и по политике Xilinx-a видно принуждение использования его софта, если не мытьем, так катаньем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 13 февраля, 2014 Опубликовано 13 февраля, 2014 · Жалоба приведите кусочки модулей что вы соединили воедино, и картинку верхнего модуля. у меня настройки всех модулей так передаются, в каждом на выходе шина данных которая выдает либо ЗЗЗЗ либо данные, если выбран модуль. Модулей 12 штук, висят на одной шине, все работает, делаю в ISE. а вот эти BUS1, BUS2 случаем нигде не словили 2 источника? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться