Pull to refresh
22
0
Alex Surkov @Khort

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

Send message

Не считайте придиркой, но 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 в день, если не путаю) — использую только чтобы дополнить или проверить отдельные поля с яхуу.
Еще, вроде бы пишут, что гугл финас до сих пор както работает, но я не нашел их базы данных.
Очень полезная статья, спасибо! Забил основные метрики с яху финас в ibreoffice calc, работает нормально.
Однако, есть претензии к самому яхуфинанс — цифры зачастую не совпадают с информацией с других сайтов, и/или помечена как полученная из сторонних источников различными неназванными методиками. Другими словами, зачастую на яху финанс лежит неверная информация. Отсюда вопрос
А что есть еще, бесплатное, по американским акциям, в формате XML/JSON?

парсить html — не вариант, очень быстро банят айпи, буквально 500-1000 запросов, и все.
Честно говоря, всего неделю как приехали в Мюнхен, и первое впечатление — серый, унылый, и не особо чистый город. Живу в центре, видел только ближайшие окрестности вокзала, поэтому субьективен. До этого в Германии жил только в Дрездене, недолго, где то с месяц — ощущения были на порядок лучше.

Information

Rating
Does not participate
Location
Россия
Registered
Activity