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

Yaahoo

Участник
  • Постов

    22
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Yaahoo

  • Звание
    Участник
    Участник

Посетители профиля

278 просмотров профиля
  1. Двигать клок относительно данных, или данные относительно клока - без разницы. При этом если двигать клок, то нужно двигать именно клок тактирующий выходные флопы, а не тот что наружу выходит. А если двигать дату, то нужно флопы размещать подальше от выхода, так что от идеи с размещение флопов в паде придется отказаться. При этом мне кажется что при правильных констрейнтах (плюс в сетапе и минус в холде, как я написал, и как в примере терасика) тул сам затянет клок для выходных флопов и постарается разместить их так, чтобы выходная задержка уложилась в констрейнт. И да, не нужно пытаться разместить флопы в паде, это может сильно помешать. А вот выходной клок лучше сделать дедикейтед пином чтобы было поменьше лэтенси.
  2. 1. На мой взгляд констрейт правильный, надо только плюс на минус заменить (холд), и наборот (для сетапа) 2. вообще пофигу, это сорс-синхронная шина, дата привязана к выходному клоку а не внутреннему 3. желательно, но необязательно 4. можете поджать констрейнты процентов на 10-20
  3. Спасибо. Но, это общая информация, на уровне студенческого курса. Я думал, вы какойто патент альтеры или зайлинкса имели ввиду.
  4. На одних pass gate много логики не наваяешь, обязательно нужны усилители (кмоп инвертор можно рассматривать как инвертирующий усилитель), а с ними есть и обычная логика - в коммутаторах трассировки глобальных сигналов, локальных сигналов, в тех же LUT есть обратные связи, да и много чего еще. Что до флопов, то я не в курсе как их делают, но охотно верю что дизайн похож на ячейку SRAM, т.е. с pass gate на входе, но сам элемент хранения обязан быть сделан на двух инверторах во встречном включении. Если есть транзисторная схема флопа в ПЛИС, скиньте, любопытно было бы взглянуть, чисто для общего развития
  5. Отвечу на первый вопрос, хотя не уверен что это то, что нужно автору. В КМОП логике ключом выступает транзистор - nmos или pmos. При этом логический элемент может состоять из большого числа ключей (к примеру, классический инвертор состоит из 2 ключей) Если транзистор включен последовательно (от входа к выходу, т.н. pass gate), то сопротивление открытого nmos - от десятков до сотен Ом, для pmos - то же но килоОм, т.е. почти в 100 раз больше. Но это если nmos и pmos одинакового размера, а на практике pmos делают шире nmos, и сопротивление у них становится примерно одного порядка. В ПЛИС на подобных проходных транзисторах сделан LUT - это просто таблица истинности, универсальная функция от 3 (4 или 5) входов, которая программируется в зависимости от задачи. Но внутри это матрица из проходных транзисторов, фактически - ключей. Далее, что есть задержка? Это время нарастания RC, где сопротивление складывается из сопр. открытого транзистора и сопр. проводника, а С это емкость затвора транзистора и паразитная емкость между проводами. Кстати, сопротивление закрытого транзистора - мегаОмы, т.е. большое, но конечное, и в отличие от идеального ключа закрытый транзистор таки может переключить свой выход, просто это займет ооочень много времени. Вся остальная логика в том же ПЛИС делается по другому принципу, где транзисторы включены между питанием и землей, и получается что выход логического элемента полностью развязан со входом. Т.е. в виде сопротивления такой элемент представить уже нельзя. Задержка расчитывается по другому принципу - это по прежнему RC провода, плюс время переключения транзисторов в элементе. Важный момент - в современных процессах задержки RC сопоставимы, а часто даже больше, чем задержки в лог. элементах. Т.е. RC пренебрегать нельзя Зачем это все вам, я не знаю. Информация скорее из аналоговой области, плисоводам это не нужно.
  6. Судя по всему у вас проблема не одна, а целая куча, поэтому не стоит их сваливать вместе, а лучше решать по очереди, отдельно. По репорту из предпоследнего поста - я уже ответил. Регистра с нарушением (byte_cnt) в приведенном коде нет. И по прежнему не ясно что там с clock_skew По последнему репорту, очевидно что нарушения в CDC. Если клоки асинхронные - нужно описать их соотв. Вы же разбирали этот кейс в первых постах, тут все то же самое.
  7. Это значит, что у вас Hold нарушается. Загуглите, что такое Hold Причем пути не CDC, т.е. внутри одного клокового домена. Что очень плохо. Чтобы понять причину, надо для начала посмотреть в колонку clock skew в репорте (на скриншоте отсутствует). Если Clock skew большой, проблема с деревом клока - сильный перекос; если же маленький, то надо делать репорты по указанным путям по Setup: если запас по Setup отсутствует (slack маленький), то надо понижать частоту; если большой, то по каким то причинам тул не хочет вставлять баферы задержки. Так же есть вероятность что эти пути тоже асинхронные (даже если клок один и тот же - так иногда делают), читайте документацию на айпи. Но на вскидку, не похоже. Похоже на обычный счетчик, в котором просто нарушен холд.
  8. В памяти на шине данных используется Hi-Z, это аналоговая схема. Да и сама по себе схема SRAM больше аналоговая. Так что пример крайне неудачный. В цифровых дизайнах (эсик) раньше тоже использовали три-стейт. До 350нм примерно. После - уже нет. Но в ПЛИС этого точно нет. Вообще, что умеет, и что не умеет ПЛИС - достаточно скачать на нее мануал и посмотреть схемы ячеек (lab - logic array block). Про симулятор я писал - Hi-Z еще надо уметь правильно описать на верилоге, и правильно эмулировать. Итого, вам нужен обычный мультиплексор, в общем случае. Если, скажем, на всех каналах всегда нули и лишь на одном может появиться 1, то можно обьединить все каналы по ИЛИ: получится большой многовходовой ИЛИ, а не как у вас. Я надеюсь что вы понимаете о чем я пишу
  9. Соединять выходы нельзя категорически, по крайней мере в ПЛИС. В симуляторе можно, но не так, а используя элементы с High-Z выходом, они же три-стейты. В вашем случае нужен просто мультиплексор, правда для него придется городить управление - с какого канала вы хотите наблюдать выход Про убунту и линукс. Весь EDA софт, 99%, пишется под редхат. Редхат штука очень консервативная, там библиотеки, которые были в убунте 10 лет назад. Сдружить это все, заставить работать - задача та еще. Если машина для работы, просто ставьте Centos 7 и не имейте проблем. Ну а саму схему даже комментировать не буду, трешак полнейший, никто так цифровые схемы не строит, глазу даже зацепиться не за что - не отдельные куски треш, а вообще все треш. Вы уж извините.
  10. Алгоритмы коммерческих тулов - коммерческая тайна. На кой вам это? Если статью пишете, погуглите побликации МИЭТа, у Гаврилова много аспирантов что то копало на тему синтеза, и даже что то писать пытались. При этом от синтеза не многое зависит, весь ppa (power/performance/area) тянется из кода и имплементации (pnr). Современные тулы pnr могут и сами заметно перетрясти нетист: поменять мэппинг в малтибит селлах или сделать композицию/декомпозицию отдельных логических ячеек если ppa от этого выиграет. По большому счету от синтезатора только зависит способ реализации сумматора и поизводных вроде умножителя или fma. При этом грамотный дизайнер не будет отдавать это на откуп тулу: реализацию таких функцию прописывают явно в коде, благо вариантов много и есть из чего выбрать.
  11. Изделие - плис или микросхема? Какой размер проекта, метрики (к примеру, число инстансов), и какой размер кода для ревью (к примеру, число строк)?
  12. Проще говоря: вход сброса асинхронный, но архитектурно он обязан использоваться как синхронный, что означает что проверятся setup/hold относительно тактового входа. Точно так же, как и по входу данных. В литературе эти setup/hold еще называются recovery/removal - сделано специально для сброса, можно загуглить. Почему на асинхронный вход нельзя подать действительно асинхронный сброс -другой вопрос. Если кратко, то это приводит к метастабильности и поэтому запрещено правилами проектирования.
  13. Одной квесты недостаточно, нужен еще спайс симулятор и потом еще состыковать их вместе. Сорцы проекта тоже состоят из двух частей, цифра и аналог. В моем варианте это было: тестбенч на верилоге, спайс-нетлист тестируемой схемы, и верхний уровень для всего на верилог-А.
  14. Фронт сигнала вещь аналоговая, и измерить можно только в аналоговой симуляции. Верилог-А это просто надстройка/обертка, позволяющая состыковать аналоговую симуляцию с цифровым тестбенчем. Например, используется при характеризации памяти: аналоговый дизайн в цифровом тестбенче. Никогда не использовал измерение фронта в верилог-А, и не уверен что это вообще возможно, но если и возможно то только на интерфейсе с аналоговой схемой.
×
×
  • Создать...