Jump to content

    

Aleх

Участник
  • Content Count

    98
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Aleх

  • Rank
    Частый гость

Recent Profile Visitors

956 profile views
  1. Вокруг асинхронных схем больше слухов и мистики, чем реального использования. Микропроцессоры делали и продолжают делать, но только в рамках исследований и диссертаций, т.е. их мало, и никому они не нужны по большому счету. Есть области микроэлектроники, где асинхронная логика очень близка к масспродакшн - к примеру, это контроллеры ШИМ для силовой электроники, где внутри вставлен асинхронный автомат. А есть перспективные области, где асинхра очень и очень востребована, но пока еще не мейнстрим - это криптомайнинг, нейросети, и прочие числодробилки, где нужно не просто потребление или производительность, а их оптимум, который, как известно, находтится при напряжении питания, равном порогу открытия транзисторов. Синхронные схемы при таком питании не работают. В общем, корабли бороздят ... )
  2. Отличный гайд, спасибо! По этому гайду удалось запустить моделсим отдельно, т.е. без квартуса. Из под квартуса по прежнему не работает, но этого и не нужно. Супер!
  3. Дело в том, что "шагов установки" как таковых просто нет, по кр. мере я не нашел ничего похожего на сайте Интела. Есть разрозненная информация на различных форумах, которая только отчасти похожа на проблемы непосредственно с ModelSim. И одной только установкой пакетов там не ограничиваются - нужно что то ковырять в исходниках и пересобирать, необходим откат на старые версии билиотек. По моему опыту, это чревато с проблемами при очередном апдейте системы, ковырять так далеко я не хочу. Убунта кстати 18.04, т.е. не самая новая. Если линканете гайд по "шагам установки", буду очень признателен. А пока повожусь с виртуалкой.
  4. Выбрал именно Modelsim-Altera. Поковырялся в консоли, обнаружил что lmdiag не работает. Оказалось, проблема известная - надо доустанавливать пакеты (lsb и еще по мелочи). Теперь lmdiag тоже запускается, и тоже говорит что нет лицензий. Далее, попытался пустить консольный vsim. Отругался, что не хватает библиотек ... доставил библиотеки и - получил fatal error. Усиленное гугленье показало, что это г-но мало того, что идет на убунте не новее 16, так еще и требует 32 битных либ. Все, финиш, это я уже не осилю, да и ломать систему не хочется - много всего полезного стоит и работает. Уроды, что сказать. Придется виртуалку ставить.
  5. Привет! Я абсолютно точно выбрал стартер едишн при установке. Хотел написать в саппорт на сайте Интела, но там есть чекбоксы только для стандарт и премиум. Лайт версии в саппорте нет )
  6. Привет! Поставил себе Quartus Prime Lite и ModelSim Altera Starter Edition. Ставил последние версии под линукс убунту, из коробки встало на ура. Квартус работает хорошо, а вот с моделсимом проблемы. Моделсим пытаюсь запустить из оболочки квартуса, для этого в настройках прописал путь к исполняемым файлам. Проект собран, есть тестбенч, все компилируется, т.е. все готово для запуска симуляции. Проблема выглядит так - когда запускаю симуляцию, немедленно вылезает окошко с отсутствием лицензии моделсима. Я искал файл лицензий, но похоже что у квартус-лайта его нет. Качал абсолютно точно - лайт и стартер едишн, ошибки быть не может. Сервер лицензий я искал, но не нашел (раньше ставились отдельно всяческие flexlm и т.д.) В общем, все выглядит так, что симулятор как бы отдельно, а квартус отдельно. Лиц ломать не хочу, мне нужна чистая среда. Вопрос - что делать, как чинить? Может, что докрутить надо в настройках?
  7. @KA3AKOB Я на прошлой странице привел ссылку на статьи Лемберского. Чем гадать, почитайте сначала, как другие асинхронные схемы на плис делают.
  8. Не очень понимаю, что именно нужно тс, но обычно асинхронные схемы требуют наличия в базисе RS защелки, и вот здесь то и возникает затык при использовании ПЛИС. Вроде бы эта проблема как-то решается в Зайлинксах - привел ссылку выше, но в тех ПЛИСах, с чем приходилось работать (Альтера преимущественно), RS защелок не было.
  9. Можно спросить у Igor Lemberski , он много лет занимается прототипированием асинхронных схем в ПЛИС. Мы как то общались на эту тему, он утверждал что у Зайлинксов есть подходящие чипы. Впрочем, Лемберский занимается классическими асинхронными схемами, а в указанной статье что то другое имеется ввиду, мне не понятное. Я бы не советовал эту статью читать, слишком старая - написана еще до разработок Варшавского, Сазерленда, Фанта и т.д.
  10. Два черных ящика можно сравнить только по интерфейсам. А два куска кода сравнить ... вообще это называется LEC - logical equivalence check, и для этой процедуры есть специальные тулы (conformal, formality и т.д.). На мой взгляд, в первом посте допущена только одна ошибка - в оригинале сброс асинхронный, а во втором куске кода уже синхронный. В остальном разве только читабельность страдает, как писали выше. А, и наверно tsr-orig это tsr-cmp, опечатка
  11. Привет! Пытаюсь разобраться, как работают спайковые нейросети. Как я понял, срабатывание нейрона - одиночный импульс, фиксированной ширины и амплитуды. Вопрос - что является информацией в таком случае: задержка от предыдущего выходного импульса, задержка срабатывания (от получения входного импульса до выдачи сигнала наружу), что то другое? Ответ найден, всем спасибо
  12. Теперь главное - не понижать частоту. Потому что если период будет больше или равен 22.724, посыпется холд. Такова плата за использование малтисайкла.
  13. Нетлист, как известно, это не sv, а verilog, причем флатованый с точки зрения параметров, дженерейтов и т.д. При конвертации sv->verilog так же флатуются все многомерные шины/интерфейсы sv, c этим ничего не сделаешь. Далее, касательно опций. Не скажу за симплифай (не работал с ним уже лет 15), но старший синтезатор синопсиса (равно как и аналогичный кэденса) имеет ключи, команды и опции, позволяющие делать следующее: 1. флатовать дизайн, начиная с любого уровня иерархии (ungroup) 2. запретить менять список портов конкретного модуля (no_boundary_optimisation) или модуль целиком (set_dont_touch , preserve) 3. запретить пропагировать константы (1 и 0) через логику и - опционально - через триггеры. Опция опасная, т.к. пропагирование констант часто помогает найти ошибку в коде, поскольку тул просто оптимизирует дизайн в ноль :-) Но сталкивался и с таким, когда пропагировать константы просто нельзя - они нужны для работы. 4. запретить пропагировать инверсии через триггеры 5. запретить удалять ненужные и дублирующие триггеры 6. набор правил для формирования имен иерархических модулей (naming conventions) в случае если есть параметры/дженерейты и т.д. и т.п. Это только из того, что вы упомянули в своем посте. Все это есть в старших синтезаторах, и, я уверен, есть и в младшем - симплифае. Надо только поискать в документации. Что касается сборки проекта по частям, он действительно может получиться неоптимальным. Но, никто ведь не запрещает после сборки еще раз натравить на него симплифай безо сяких ограничений, и добиться этой самой оптимальности. К сожалению, не видел, как выглядит нетлист после синплифай. После DC это нетлист на примитивах из generic библиотеки DC. А вот у кэденса (genus) есть опция выписывать не нетлист на примитивах, а полноценный верилог - конструкции assign, always и т.д.
  14. На мой взгляд, малтисайкл ни к чему здесь, а проблема - в фазах клока, поскольку, я так понял, с генератора тактирование подается и на ПЛИС, и на CY7C68013A, причем в ПЛИС явно клок задерживается больше. А лучше бы было наоборот, так что надо очень аккуратно задержать фазу приемного клока в CY7C68013A - пропустить через ПЛИС (взять клок с выхода), или скорректировать внешней RC. И еще, необходимо проанализировать возможности ПЛИС в выдаче сигнала pktend в интервале 0..14.6нс : если разница в репортах между сетап и холд окажется больше 14.6нс, то корректировки фазы недостаточно, и придется увеличивать период IFCLK. + Можно еще попробовать подвинуть фазу клока выходного триггера ptkend - вроде бы современные ПЛИС допускают небольшие манипуляции с деревом клока (на этапе мэппера). Но это лучше почитать в документации. И еще замечание. Задержку внешнего преобразователя неверно считать как 2.5нс одинаковой и для сетап и для холд. Т.е. по сетап наверно правильно, а вот по холду лучше брать более жесткое (меньшее) значение, скажем 1.5нс (если в даташите не указан разброс задержек) - так гарантированно не промахнетесь.
  15. Вопрос не понятен. Судя по вейвформам, переходные процессы (окно между hold и setup) сдвинулось на один период вправо, и данные пришли во втором такте, а не первом. Получилось что то около 3/4 периода сетап и около 1/4 периода холд (по скринам точнее не скажешь) - соотвествует требованиям задания констрейнтов set_output_delay. Итого, констрейнты, включая multicycle 2, выполнены, все в порядке. Другое дело, что судя по скрину данные (data required) должны придти в первом такте а не втором ... но тогда малтисайкл использовать нельзя!