Search
Write a publication
Pull to refresh
21
0
Alex Surkov @Khort

Пользователь

Send message

Спасибо! Timing reports - уже показатель, что тул не просто так оптимизирует булевы функции, но и немножко смотрит на тайминг. Т.е. к примеру известен чисто математический минимизатор булевых функций - Espresso, и его гипотетически можно припрячь делать синтез, просто результат будет .. математический, т.е. от наших задач далекий. А вот чтобы смотреть еще и на тайминг при синтезе - это уже нужен STA-engine, так что Yosys здорово вырос в моих глазах.


Так, а нетлист (я его выше structural verilog-ом обозвал) точно не выписывается? Это как-бы основной результат синтеза, он должен быть. Расширения могут быть любые, но внутри - верилог.

Честно говоря, хотелось бы узнать

  1. Какие брали библиотеки, как подключали. Есть ведь, к примеру, в сети различные FreePDK с библиотеками селлов. Хочется видеть конкретные ссылки

  2. Как используется топологическая информация при синтезе - грузится LEF abstract, или используется допотопный wireload? А как быть с макро ячейками?

  3. Что получилось на выходе - просто structural verlog, или к примеру можно sdf выписать, а может быть даже timing_reports?

    Тема очень интересная, а бесплатных синтезаторов как бы и нет больше (поправьте, если не прав). К сожалению, у самого пока руки не дошли этот тул попробовать, отсюда и вопросы. Спасибо!

Не считайте придиркой, но latency - общий термин, измеряется в отсчетах времени (любых). К примеру, в STA это просто задержка сигнала insertion/propagation (etc.) delay - в пикосекундах, если угодно, а в логическом дизайне - в тактах если угодно. Ключевое слово - если угодно. Т.е. зависит от дисциплины и аудитории.

Интересное решение, мне такое в голову не пришло. Но оно не корректно по одной простой причине - единственное известное решение по получению скважности 50% из "грязного" клока , это деление частоты в два раза на флопе с обратной связью. В вашем варианте выход комбинационный, наклоны сигнала зависят от летенси клока в двух параллельных путях, а такие пути никогда и ничем не выровнять даже в теории (из-за вариации параметров - процесса, среды и т.д.).

Итого, плясать надо от делителя на выходе. А поскольку коэфф. деления бывает дробный - надо поднимать частоту в два раза. Так получилось мое решение. Простите, много лет не писал на верилоге, вот так сходу не готов предложить код, только описание словами. Может быть позже опубликую - надо вспомнить синтаксис и где нибудь промоделировать. Или просто схему нарисую

Давайте я попробую ответить, про сигнал в N раз медленнее.
Я бы сделал так: из опорного клока я бы сформировал импульсы отдельно по переднему и отдельно по заднему фронту (умножаем клок на его задержанную инверсию -получаем импульс. При этом задержка - не менее MPW для библиотеки), затем я бы эти импульсы сложил и получил частоту X2 (констрейнт - generated_clock -edges), затем поставил бы счетчик деления на N, а после него - делитель на 2 на одном флопе, чтобы выровнять скважность. Поскольку все работает от переднего и заднего фронта опорного клока, MPW не нарушается, и скважность 50% - задача выполнена, причем на стандартных селлах, синхронно и понятно тулу.

Это универсальный синтезатор для почти всех существующих ПЛИС, лет 10 назад его купил Synopsys и продает под тем же именем https://www.synopsys.com/implementation-and-signoff/fpga-based-design/synplify.html

Конвеерные вычисления - частный случай параллельных, о которых не сказано ни слова. А между тем, параллельные вычисления - основа синхронной логики. И именно понимание параллельных вычислений проходит тяжелее всего, в т.ч. и в программировании.

Зависит от задачи. К примеру, в чипах для биткоин майнинга вычислительные конвееры имеют глубину ~30-40 стадий (точно уже не вспомню) и на ~90% строятся на защелках - можно считать что 89% всего чипа на защелках. В этой области рынка микроэлектроники самая жесткая конкуренция Ватт/такт (хеш/ватт).

Борьба с паразитным свитчингом только недавно стала актуальной - на тонких finfet процессах. Раньше не заморачивались.

Pulsed latch - давно забытое старое, из 80х. К примеру мипс R3000 был полностью на защелках (хотя не уверен насчет палс - кажется, там был просто 50/50 меандр в управлении). А сейчас .. у многих вендоров (пример - dolphin) есть соотвествующие айпи на продажу - защелки и палс-генераторы.

Хорошо, пример. Есть кусок комб. логики с большим количеством XOR и флопами на выходе. В этой схеме будет сумашедший процент потребления за счет паразитного свитчинга, верно? Разламываем флопы на две части, и левые защелки двигаем влево в "середину" комб схемы, отсекая таким образом часть паразитного свитчинга. Профит.

Но иногда весь дизайн строят на защелках. К примеру, есть такая штука как pulsed latch. Там получается экономия на ликедже (защелка в два раза меньше) и холд-бафферах (практически не нужны), за счет более сложной схемы тактирования.

Про пассаж на тему защелок не понятно. Они использовались, используются, и будут использоваться. А time borrow в STA такой же устоявшийся термин как setup или hold. Другое дело, что дизайнеры зачастую не знают как с защелками обращаться и проектировать на них ... но, это проблема самих дизайнеров. Настоящие лоу-пауэрные штуки делаются на защелках, а не флопах. Зависит от дизайна, конечно же.

Алгоритмы и возможности по оптимизации синтеза по power и area в современных синтезаторах не менее мощные и интересные чем оптимизация тайминга. При этом тул всегда принимает во внимание и timing и area и power, все вместе. Жаль, но об этом ни слова не сказано

Рассматривая инвертор как логический элемент на двух ключах и отбрасывая имплементацию (КМОП, БП, электромеханический ключ), мы говорим о событии, когда оба ключа открыты, т.е. КЗ в определении википедии. Если считать инвертер просто аналоговым усилителем (в контексте имплементации), то не КЗ. Но мы говорим о цифре. Получается, что КЗ здесь - очень даже концептуальное

КЗ - короткое замыкание. Деление на статическое и динамическое КЗ мне не понятно. Во временах работы цифровых схем, время переключения инвертора, сопровождающееся открытыми NMOS и PMOS можно считать статическим - ведь за это время происходит полный перезаряд паразитной емкости выхода элемента. Т.е. вполне себе короткое замыкание. Другой пример: если задержка (latency) в цепи клока больше периода, то можно утверждать что в каждый момент времени какой то из элементов цепи дерева коротит питание на землю - т.е. 100% времени мы имеем КЗ в цепи клока. Довольно неожиданный вывод, верно? Однако, ничего страшного в этом нет.
Про каждый логический элемент - не согласен. КЗ при переключении происходит всегда - в инверторах (и выходных усилителях), и только изредка - в первом каскаде многовходовых логических элементов. Очевидно что для этого требуется одновременное переключение потенциала на всех входах - статистически маловероятное событие, зависящее от множества параметров (температура, питание и т.д.). Чем больше входов у логического элемента, тем реже можно увидеть КЗ. А вот в инверторе - на каждом переключении. Если питание выше Vth, разумеется, т.е. речь про нормальный режим работы.

При проектировании цифровых схем этого стараются избегать, но надо понимать что внутри микросхем такие места сплошь и рядом, просто они спрятаны внутри элементов. К примеру, любой триггер содержит драйверы во встречном включении, и в момент их переключения заряд хранится просто на внутреннем (паразитном) конденсаторе. Или устройство памяти - ячейки обьединяются общими шинами с подтяжкой. Но память сделана не так как логика, это вообще скорее аналоговая схема, чем цифровая. На старых технологиях попадались мультиплексоры по схеме нескольких драйверов с подтяжкой.

Раньше меня тоже интересовал этот вопрос, поскольку несмотря на посты выше, в микросхемах постоянно происходят КЗ в логике, в основном в инверторах. Инветоры используются в виде усилителя сигнала, так в цепи клока их до 99% (буфер считаем за два инвертора), они есть в составе большинства логических селлов и триггеров - опять же в виде выходных усилителей. Момент переключения инвертора - всегда КЗ. Спасает здесь то, что сопротивление открытого канала транзистора - десятки килоОм (pmos), сопротивление цепей питания до транзистора порядка килоОма плюс реактивное за счет паразитных емкостей, плюс надо учесть что события эти не одновременны, т.е. размазаны во времени и по площади чипа.

Т.е. таки КЗ присутствуют, причем постоянно. Но это нормально.

В плис тестируется только RTL, или этапы имплементации тоже? К примеру, DFT: режим скан, компрессоры/декомпрессоры, мультиплексоры клоков, оболочки а-ля ieee 1500, jtag tap, граничное сканирование, mbist, и т.д.

>просто оно стоит после конвейера с латентностью N

В том то и дело что не просто. Тактовый сигнал с множественным прохождением через комбинационную логику, латентность N ... С учетом вариаций параметров, у такого тактового сигнала очень быстро не останется буквально ничего ни от скважности, ни от фронтов, ни от min pulse width, а если что то и останется и схема таки заработает, то разброс летенси на выходе получится километр на километр - это вам любой SSTA инженер скажет. Поэтому единственный вариант общения с таким фифо - асинхронный CDC переход, а максимальная глубина фифо вовсе не N, а до тех пор пока тактовый сигнал еще похож на тактовый. Даже не вникая в логику работы этого фифо сразу видно огромное число проблем.

И, просто для справки - подобные схемы фифо известны с ~80х, к примеру GASP Сазерленда (SUN, 2000г.). Почти все они оказались не рабочими, т.е. дальше публикаций или прототипов дело не заходило.

Но, я ни в коем случае не против. Просто, немного "в теме", отсюда и критика.

Хочется ошибиться, но судя по картинкам, там очередная вариация на тему асинхронного (на хендшейках) фифо.

Есть абстрактная двустабильная система, состояния переключаются импульсом энергии (электрической, механической и т.д.). При некоторых значениях энергии система становится нестабильной — не может переключиться до конца ни в одно ни в другое состояние — явление метастабильности. Выход из этого состояния — флуктуации внешних факторов, поскольку реальная система не может быть замкнутой. Вот и вся суть явления.
Примеры — триггеры на кмоп и биполярных транзисторах. Электромеханические реле — экзотика, но вполне могу себе представить метастабильность в такой системе — будет выглядеть как колебания пружин (они есть в реле) и перезарядка LRC контуров. Что касается второго линка, лень листать 800 страниц, сорри.
Дайте хотя бы один такой бесплатный вариант, если не сложно.
Пока самое полезное что я нашел, это alpha vantage, там доступны вся база данных, но совершенно конские ограничения на число запросов (5 в минуту, 500 в день, если не путаю) — использую только чтобы дополнить или проверить отдельные поля с яхуу.
Еще, вроде бы пишут, что гугл финас до сих пор както работает, но я не нашел их базы данных.

Information

Rating
5,881-st
Location
Россия
Registered
Activity