ViKo 1 7 июня, 2011 Опубликовано 7 июня, 2011 · Жалоба Простенький вопрос, Quartus 9.1, SystemVerilog. Имею топ-модуль, и в нем несколько младших модулей. Сигналы, общие для большинства, соединил с помощью интерфейса. Но есть куча сигналов, идущих только от одного модуля к другому. Их приходится описывать в топ-модуле (wire netX;). Потом при создании экземпляров младших модулей ссылаться на эти цепи. Вернее, и ссылаться не надо, если имена те же. Нельзя просто иерархически передать цепь из модуля B в модуль C. B_mod B_inst(.netX(C_inst.netX), .*); C_mod C_inst(.netX(B_inst.netX), .*); Вижу пока решение - собрать все такие цепи еще в одну кучу (интерфейс). И подключить этот интерфейс ко всем модулям. Лишних цепей модули все равно не возьмут. Но это не проще, чем описать все цепи в топ-модуле. Или есть способ лучше? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 7 июня, 2011 Опубликовано 7 июня, 2011 · Жалоба Или есть способ лучше? нет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vadim 0 7 июня, 2011 Опубликовано 7 июня, 2011 · Жалоба Всегда объявляю сигналы/переменные, необходимые для межсоединений дочерних модулей, внутри топа, и не парюсь. Если Вам так хочется их убрать из модуля, попробуйте объявить внутренние цепи/переменные в пакете и импортировать его в топ и дочерние модули. Заодно и количество портов в дочерних модулях уменьшится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 7 июня, 2011 Опубликовано 7 июня, 2011 · Жалоба Всегда объявляю сигналы/переменные, необходимые для межсоединений дочерних модулей, внутри топа, и не парюсь. Если Вам так хочется их убрать из модуля, попробуйте объявить внутренние цепи/переменные в пакете и импортировать его в топ и дочерние модули. Заодно и количество портов в дочерних модулях уменьшится. От пакета отказался, вот здесь описал свои мучения. http://electronix.ru/forum/index.php?showtopic=90224 Оставлю в топе, пожалуй. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vadim 0 7 июня, 2011 Опубликовано 7 июня, 2011 · Жалоба Имхо, мучения оттого, что Вы используете инструменты не по назначению. Квартус пускай делает разводку в кристалл, без этого никак. Он умеет синтезировать SV? Замечательно, пускай перед разводкой ещё и синтезирует. Но зачем создавать в нем какие-то проекты и использовать его в качестве кнопки для запуска моделсима? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 7 июня, 2011 Опубликовано 7 июня, 2011 · Жалоба Имхо, мучения оттого, что Вы используете инструменты не по назначению. Квартус пускай делает разводку в кристалл, без этого никак. Он умеет синтезировать SV? Замечательно, пускай перед разводкой ещё и синтезирует. Но зачем создавать в нем какие-то проекты и использовать его в качестве кнопки для запуска моделсима? К чему привык, тем и пользуюсь. А ну как насимулирую в ModelSim, а потом Quartus откажется укладывать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 7 июня, 2011 Опубликовано 7 июня, 2011 · Жалоба нет И правильно! Ибо: 1. Моветон. (это как необъявленные переменные в pure C) 2. Потенциальные грабли. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 7 июня, 2011 Опубликовано 7 июня, 2011 · Жалоба 1. Моветон. (это как необъявленные переменные в pure C) 2. Потенциальные грабли. А не моветон и грабли описывать одну цепь три раза - в топе, и в каждом из модулей? А захочешь изменить название, или выбросить, добавить - лазить по всем трем модулям. Именно по этой причине были изобретены интерфейсы. Можно, в принципе, понаделать интерфейсов на каждую такую цепь. :) P.S. Или вы подтверждаете, что лучше интерфейсов для этой цели ничего нет? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vadim 0 8 июня, 2011 Опубликовано 8 июня, 2011 · Жалоба Свой совет попробовать объявить внутренние сигналы в пакете признаю вредным. Стандарт это позволяет, но Precision 2009a.95 говорит : Variable/Net declaration is not supported inside package/compilation unit scope. Думаю, в других синтезаторах дело обстоит аналогично. ЗЫ Ещё долго ждать придётся, пока тулзы начнут нормально поддерживать нормальный язык :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 8 июня, 2011 Опубликовано 8 июня, 2011 · Жалоба Свой совет попробовать объявить внутренние сигналы в пакете признаю вредным. Стандарт это позволяет, но Precision 2009a.95 говорит : Хотел ответить вам так же (ну, не вредным, а ошибочным), но когда заглянул в стандарт, увидел, вроде, можно. А в книге "SystemVerilog for Design" написано следующее: The synthesizable constructs that a packages can contain are: • parameter and localparam constant definitions • const variable definitions • typedef user-defined types • Fully automatic task and function definitions • import statements from other packages • Operator overload definitions Packages can also contain global variable declarations, static task definitions and static function definitions. These are not synthesiz- able, however, and are not covered in this book. Видимо, разработчики по книжке делали. :) Тем более, авторы книги и стандарта одни и те же. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 8 июня, 2011 Опубликовано 8 июня, 2011 · Жалоба А не моветон и грабли описывать одну цепь три раза - в топе, и в каждом из модулей? проектируйте интерфейсы заранее. А захочешь изменить название, или выбросить, добавить - лазить по всем трем модулям. а вам все равно лазить, порт в инстансе переименовывать. Именно по этой причине были изобретены интерфейсы. Можно, в принципе, понаделать интерфейсов на каждую такую цепь. :) немного для другого. интерфейс для цепи можно, но геморно....... ЗЫ. а за использование глобальных сигналов для синтеза, оторвал бы руки, по самую голову Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 8 июня, 2011 Опубликовано 8 июня, 2011 · Жалоба проектируйте интерфейсы заранее. Так есть у меня интерфейс, общая шина для чтения-записи от микроконтроллера. Не хочу ее поганить всякими сигналами от точки к точке. Разве что сделать еще один интерфейс. ЗЫ. а за использование глобальных сигналов для синтеза, оторвал бы руки, по самую голову Они у меня в топ-модуле описаны, там же, где и дочерние модули создаются. Не совсем глобальные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 8 июня, 2011 Опубликовано 8 июня, 2011 · Жалоба Так есть у меня интерфейс, общая шина для чтения-записи от микроконтроллера. Не хочу ее поганить всякими сигналами от точки к точке. Разве что сделать еще один интерфейс. под интерфейсами я понимал не SV объект interface а интерфейсы модулей, разрабатываемые на этапе функциональной схемы. Они у меня в топ-модуле описаны, там же, где и дочерние модули создаются. Не совсем глобальные. я про другие глобальные сигналы. ЗЫ. Кстати в случае переименования, вам потребуется изменить : объявление интерфейса, модуль источник, модуль приемник. Те же три модуля (для случая глубины иерерахии 1). так интерфейс на каждый сигнал, это шило на мыло. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vadim 0 8 июня, 2011 Опубликовано 8 июня, 2011 · Жалоба я про другие глобальные сигналы. Ну не томите уже, расскажите какие_такие_другие, интересно :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 8 июня, 2011 Опубликовано 8 июня, 2011 · Жалоба Ну не томите уже, расскажите какие_такие_другие, интересно :) кхм, это же старая фича VHDL "глобальный сигнал", можно было без всяких агентов обрабатывать/смотреть сигналы внутри модуля в симуляторе например. Реализовалось с помощью объявления сигнала в пакете и использования по месту %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться