|
Проектирование асинхронных стейт-машин, Кто и как, каими тулзами решает эту задачу |
|
|
|
Sep 3 2014, 17:21
|
Местный
  
Группа: Свой
Сообщений: 342
Регистрация: 21-02-05
Пользователь №: 2 804

|
Доброго времени суток,
Собственно - $subj. Изучаю вопрос проектирования чипа с использованием асинхронных пайплайнов. I.E. Sutherland, ‘‘Micropipelines’’ неплохо описывает концепцию и дает понимание о том, как работают вычислители при таком подходе, однако как делать управляющие стейт-машины в этой работе не рассматривается. Подход, предложенный в ASYNCHRONOUS FINITE STATE MACHINE DESIGN: A LOST ART? Christopher Carroll, University of Minnesota-Duluth мне не понравился. Другие книги, которые я просмотрел по теме, учат вариациям на тему той-же методологии, однако кардинально ничего не улучшают. В результате асинхронные стейт-машины представляют собой диких паучков из нандов и норов с обратными связями, крайне тяжело модифицируются, плохо верифицируются, короче - обладают целым рядом недостатков, делающих их реальное применение неоправданно дорогим и сложным.
Есть ли у кого мысли как упростить этот процесс и сделать его более простым и контролируемым?
--------------------
WBR, V. Mirgorodsky
|
|
|
|
|
 |
Ответов
|
Sep 22 2014, 05:22
|

Знающий
   
Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950

|
Домино - любопытно. Я правильно понимаю, что у вас логику делает матрица на nmos, один pmos используется как precharge, а на выходе схемы стоит элемент CD? Такие схемы я видел в статьях Таубина.
К сожалению, насколько мне известно, эти схемы так и не пошли, уж не знаю почему. У меня в фирме домино логику пытались использовать (в синхронных проектах), но решили что она слишком медленна, и предали анафеме. Чтобы кто то использовал домино в обычной цифре ниже 180нм я тоже не слышал. А для dual rail на мой взгляд, домино вообще логика не безопасна ; вы ведь понимаете, что при сбое асинхронная схема защелкивается, и тогда все элементы домино могут стать в КЗ. Что до меня, то я работаю только со стандартными элементами. Из кастома необходимый минимум - элементы С2, С3 и RS-защелки. Еще я сомневаюсь, что домино-элементы с n-матрицей полностью индицируются по выходу. Надо подумать.
До лейаута я асинхронные схемы не доводил ни разу, пока отлаживаю синтез в DC, и хочу добиться того чтобы начал работать STA. Пока же я сужу по скорости получаемых схем моделированием нетлиста с sdf в incisive. Но если заработает STA, то станет доступен и автоматический P&R в энкаунтере. С кастомом я связываться вообще не хочу, поскольку не владею тулами (я вообще очень мало работал с ВЕ). В общем, я пытаюсь запустить стандартный маршрут для синхронных схем.
Теперь я по крайней мере понял, почему у Вас получается малая площадь и высокая скорость.
Укажите, пожалуйста, еще тех. процесс, по которому работаете. 120-130пс для 32-х битного сумматора это очень быстро.
|
|
|
|
|
Sep 22 2014, 19:29
|
Местный
  
Группа: Свой
Сообщений: 342
Регистрация: 21-02-05
Пользователь №: 2 804

|
Цитата(Shivers @ Sep 22 2014, 07:22)  Домино - любопытно. Я правильно понимаю, что у вас логику делает матрица на nmos, один pmos используется как precharge, а на выходе схемы стоит элемент CD? Такие схемы я видел в статьях Таубина. Это вы описываете footless domino. Хорошая штука, более быстрая, чем footed domino, однако имеет свои недостатки. В моем случае у меня микс из footed и footless domino co схемами CD по выходу. Все же 120-130ps просто так не получаются. Цитата(Shivers @ Sep 22 2014, 07:22)  К сожалению, насколько мне известно, эти схемы так и не пошли, уж не знаю почему. У меня в фирме домино логику пытались использовать (в синхронных проектах), но решили что она слишком медленна, и предали анафеме. Чтобы кто то использовал домино в обычной цифре ниже 180нм я тоже не слышал. А для dual rail на мой взгляд, домино вообще логика не безопасна ; вы ведь понимаете, что при сбое асинхронная схема защелкивается, и тогда все элементы домино могут стать в КЗ. Что до меня, то я работаю только со стандартными элементами. Из кастома необходимый минимум - элементы С2, С3 и RS-защелки. Еще я сомневаюсь, что домино-элементы с n-матрицей полностью индицируются по выходу. Надо подумать. Поверьте, все получается, индицируется и работает очень надежно. В первом проекте мы тоже немного переживали с динамической логикой, однако после всестороннего моделирования в спайсе отдельных блоков и более крупных сборок таки отправили на производство. Как оказалось, нижняя частота работы динамической логики на bulk 55nm составляет немногим более 100MHz для ff корнера. В наших проектах 10ns - это почти вечность. Где-то год назад читал на этом форуме утверждение, что в мире есть не так много компаний, которые могли бы спроектировать чип с рабочей частотой порядка 1GHz. Сегодня я могу утверждать, что если не стоит задача втиснуться в определенный тепловой пакет, то быстродействие в гигагерц для процессов от 110nm и тоньше является тривиальной задачей. Если говорить о кастоме, то и пара гигагерц не является сверх-сложной задачей. Если говорить о применении динамической логики и домино в частности в синхронных системах, то хорошим примером может быть один из Intel Pentium 4. Я в Сети встречал описание его архитектуры с точки зрения микроэлектроники. Так вот все его сумматоры и умножители выполнены с использованием footless domino. Как-бы синхронный процессор и домино, а потому не понимаю почему вы отказались от этого весьма много обещающего симбиоза у вас на фирме  Цитата(zzzzzzzz @ Sep 22 2014, 17:11)  Да, самый хай. При весьма умеренном потреблении, слабо растущем с частотой. Не ради ли этого жаждут асинхронности в конечном счёте? "Хай" заключается ещё и в том, что для того же техпроцесса можно задрать частоту в 1.5-2 раза выше относительно КМОП. Есть, конечно, и ограничения. Но, они больше "снизу". Так, например, теряется смысл использовать CML для коротких путей. И надо делать преобразователи CML-CMOS и обратно. Один мой гениальный знакомый сумел построить 32 разрядный рипл-керри сумматор на CML логике по bulk 55nm техпроцессу с задержкой "всего" 50ps. Когда мне нужен был очень быстродействующий сумматор я повторять не взялся - по его отзывам топология сумматора сильно зависит от его нагрузок. Еще очень сложно гарантировать работоспособность во всем диапазоне PVT вариаций. Исходя из этого от CML логики я отказался. Еще не мой класс задач. Цитата(zzzzzzzz @ Sep 22 2014, 17:11)  Пардон, что я тут встрял. Только лишь с целью расширения взглядов. Завязываю. Самый писк был бы асинхронный CML, с отключением питания неиспользуемых ячеек.  Круче пока ничего не просматривается ни по скорости, ни по потреблению для ВЧ схем. ПС. Кстати, такие ячейки не сложно формализовать. Почти как стандартные. И использовать синтезаторы, заточенные для синхронных схем. Всю асинхру с burst-mode стейт машинами очень просто формализовать. Я даже думаю, что производители кадов делают с нами такую же шутку, как владельцы патентов на конный трамвай в 30-x годах прошлого столетия. Когда был изобретен электрический трамвай, они купили все патенты и положили их под сукно. Дальше они эксплуатировали свои конные трамвайные линии до тех пор, пока они не окупились и не заработали им денег на модернизацию. И только потом конные трамваи были заменены электрическими. Вот и производители софта ждут...
--------------------
WBR, V. Mirgorodsky
|
|
|
|
|
Sep 23 2014, 07:53
|

Знающий
   
Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950

|
Цитата(v_mirgorodsky @ Sep 22 2014, 23:29)  Это вы описываете footless domino. Хорошая штука, более быстрая, чем footed domino, однако имеет свои недостатки. В моем случае у меня микс из footed и footless domino co схемами CD по выходу. Все же 120-130ps просто так не получаются. И все же, есть сомнения. Думаю, Вы не полностью индицируете свои элементы, поэтому и получается так быстро. Предположим, вы сделали домино-элемент. Существует ограничение на число последовательно включенных транзисторов - на 65нм это число равно 3. Если включить больше, резко падает скорость работы. Поэтому и в SC нет однокаскадных элементов с числом входов больше 3х. Многокаскадные элементы нельзя индицировать по выходу, как известно. Итого, какую функцию можно сделать на домино, с числом входов не более 3х? Да в общем то и смысла нет связываться. Это означает, что нужно вводить большее число каскадов транзисторов, и тогда можно делать более сложные функции. При этом CD надо ставить в каждом транзисторном каскаде и выводить наружу. Если же CD ставить только в самом конце, схема становится не полностью индицированная, а значит потенциально может привести к состязаниям. Т.е. схема становится квази индицируемой. Еще момент - все же, как вы делали схему сжатия индикаторов? Варианта известно всего два - на мажоритарных однокаскадных элементах, и на С-элементах. Какие параметры у Вашего С-элемента, сколько задержка переключения? И последнее. Вы учитываете, что строя дерево для распределения нагрузки, нужно ставить CD на все его листья? Ведь каждый внутренний элемент логики - это фактически новая переменная в графе, и эту каждую переменную надо индицировать. В дереве каждая новая ветвь - новая переменная. В общем, это очень тонкий момент - либо у Вас схема полностью индицируема, либо квази. Но если схема квази - тогда зачем столько мучений, если можно было сделать сразу BD? Я часто наталкиваюсь на этот вопрос, поскольку полная индикация буквально топит производительность.
|
|
|
|
|
Sep 23 2014, 09:19
|
Местный
  
Группа: Свой
Сообщений: 342
Регистрация: 21-02-05
Пользователь №: 2 804

|
Цитата(Shivers @ Sep 23 2014, 09:53)  И все же, есть сомнения. Думаю, Вы не полностью индицируете свои элементы, поэтому и получается так быстро.
Предположим, вы сделали домино-элемент. Существует ограничение на число последовательно включенных транзисторов - на 65нм это число равно 3. Если включить больше, резко падает скорость работы. Поэтому и в SC нет однокаскадных элементов с числом входов больше 3х. Многокаскадные элементы нельзя индицировать по выходу, как известно. Итого, какую функцию можно сделать на домино, с числом входов не более 3х? Да в общем то и смысла нет связываться. Это означает, что нужно вводить большее число каскадов транзисторов, и тогда можно делать более сложные функции. При этом CD надо ставить в каждом транзисторном каскаде и выводить наружу. Если же CD ставить только в самом конце, схема становится не полностью индицированная, а значит потенциально может привести к состязаниям. Т.е. схема становится квази индицируемой. Еще момент - все же, как вы делали схему сжатия индикаторов? Варианта известно всего два - на мажоритарных однокаскадных элементах, и на С-элементах. Какие параметры у Вашего С-элемента, сколько задержка переключения? И последнее. Вы учитываете, что строя дерево для распределения нагрузки, нужно ставить CD на все его листья? Ведь каждый внутренний элемент логики - это фактически новая переменная в графе, и эту каждую переменную надо индицировать. В дереве каждая новая ветвь - новая переменная.
В общем, это очень тонкий момент - либо у Вас схема полностью индицируема, либо квази. Но если схема квази - тогда зачем столько мучений, если можно было сделать сразу BD? Я часто наталкиваюсь на этот вопрос, поскольку полная индикация буквально топит производительность. Ну, с тремя транзисторами в пулл-даун цепи я не согласен. В моем случае некоторое количество элементов имеет до 5 транзисторов. Другой вопрос, что все транзисторы для таких элементов имеют очень разную ширину канала. Скажу так, в некоторых элементах нижние транзисторы имели ширину канала в микрон и более. Еще такие элементы представляли собой целый комплекс компромисов с точки зрения площадь/задержка/потребление. Скажу так, что один из таких элементов потребовал около 30 часов рабочего времени от человека, который работал со мной - нарисовать, просимулировать, поменять, снова просимулировать и так до полного удовлетворения. При этом скажу, что без спайс-моделирования эта затея была бы обречена на провал - простые инженерные расчеты врали в полтора-два раза. Теперь немного о индикации. Для dual-rail domino индикация промежуточных состояний вычислительной функции не требуется. Это не очевидно в начале. Мне на старте работы с этой технологией казалось, что разные по скорости пути должны конфликтовать и разряжать высокоомные точки в процессе вычислений. Однако спайс-моделирование рипл-керри сумматора полностью развеяло мои сомнения. Десяток включенных последовательно рипл-керри сумматоров давали верный ответ для любых входных данных при этом не порождали ни единого глитча ни на одном из проводов. Так вот, всю цепочку из десяти сумматоров можно было индицировать по 31 биту последнего сумматора. В моем случае индикация более сложная, поскольку сумматор у меня префиксный, но принцип тот же. Еще можно вдвигать CD внутрь префиксного дерева, поскольку с момента "дифференциальности" некоторого набора промежуточных сигналов задержка до полного установления всех выходов в истинное состояние будет уже константой. Такая себе машина времени
--------------------
WBR, V. Mirgorodsky
|
|
|
|
|
Sep 23 2014, 10:11
|

Знающий
   
Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950

|
Цитата(v_mirgorodsky @ Sep 23 2014, 13:19)  Теперь немного о индикации. Для dual-rail domino индикация промежуточных состояний вычислительной функции не требуется. Это не очевидно в начале. Мне на старте работы с этой технологией казалось, что разные по скорости пути должны конфликтовать и разряжать высокоомные точки в процессе вычислений. Однако спайс-моделирование рипл-керри сумматора полностью развеяло мои сомнения. Дело вот в чем. Индикация сигнализирует об окончании всех переходных процессов. В BD схемах это делается в лоб: рассчитывается максимально возможная задержка с учетом PVT разброса, и с ее выхода берется как бы сигнал завершения. В Вашем случае - Вы просто симулировали, убеждались что глитчей нет, и делали вывод о правильности выбранной точки для индикации. Неплохо, но не совсем правильно. Согласно теории, Вы должны построить граф, соответствующей Вашей логической схеме, и уже анализируя каждое ребро и каждую вершину графа, делать вывод - куда нужно ставить индикатор, а куда нет. Отсюда и вывод, что Вы сделали не полную индикацию. Возможно, я и не прав. Тем не менее, я считаю, что в Вашем случае и не нужно делать полную индикацию, поскольку вся схема целиком должна работать в обычных для синхронных схем PVT corners. Т.е. от нее не требуют работы при питании 150мВ, и не нужно охлаждать до -100С. Т.е. никакого экстрима. Если Вы гарантируете работу схемы в заданных диапазонах - это самое главное. Но основных достоинств SI схем со строгой индикацией, вы лишаетесь. По крайне мере, теперь мне стало ясно, над чем Вы работаете. Возвращаясь к главному вопросу этого топика. Я занимаюсь немного другими асинхронными схемами (это уже и так уже стало понятно). Поэтому могу только посоветовать почитать об т.н. Elastic circuits. Это разработка Кишиневского, который изначально работал с Варшавским, а потом слинял в Америку, и уже лет 20 работает в Интел. Он в свое время приложил руку к открытию Российского отделения Интел, и он же придумал Elastic - некое подобие самосинхронных схем, которое интел по некоторой информации активно использует в своих разработках. Информации по этим схемам очень мало, как и вообще по технологиям интела. Но какие то статьи Кишиневского есть в интернете. Возможно, это окажется Вам полезным, именно в ключе разработки кастома под high prefomance. По работам Таубина, которые я упоминал ранее в ключе связки домино+dual rail, я не слышал о практической реализации. Так что возможно, Вы первый, кто это использует на практике.
|
|
|
|
|
Sep 23 2014, 15:11
|
Местный
  
Группа: Свой
Сообщений: 342
Регистрация: 21-02-05
Пользователь №: 2 804

|
Цитата(Shivers @ Sep 23 2014, 12:11)  Дело вот в чем. Индикация сигнализирует об окончании всех переходных процессов. В BD схемах это делается в лоб: рассчитывается максимально возможная задержка с учетом PVT разброса, и с ее выхода берется как бы сигнал завершения. В Вашем случае - Вы просто симулировали, убеждались что глитчей нет, и делали вывод о правильности выбранной точки для индикации. Неплохо, но не совсем правильно. Согласно теории, Вы должны построить граф, соответствующей Вашей логической схеме, и уже анализируя каждое ребро и каждую вершину графа, делать вывод - куда нужно ставить индикатор, а куда нет. Отсюда и вывод, что Вы сделали не полную индикацию. Возможно, я и не прав.
Тем не менее, я считаю, что в Вашем случае и не нужно делать полную индикацию, поскольку вся схема целиком должна работать в обычных для синхронных схем PVT corners. Т.е. от нее не требуют работы при питании 150мВ, и не нужно охлаждать до -100С. Т.е. никакого экстрима. Если Вы гарантируете работу схемы в заданных диапазонах - это самое главное. Но основных достоинств SI схем со строгой индикацией, вы лишаетесь. Ну даже не знаю. Расчетный пайплайн в Монте-Карло симуляции с sigma=6 работал при напряжении питания 0.6 вольта. Разброс по температуре до -100С - не знаю, думаю, что модели, которые есть у меня, такой диапазон не поддерживают. Однако и симуляции от 0 до 125С никаких аномалий не выявили. Реальный кремний в таком режиме работать не сможет, поскольку небольшая часть проекта была собрана с использованием стандартных библиотек, а они не характеризовались для низких напряжений и широкого диапазона температур. Цитата(Shivers @ Sep 23 2014, 12:11)  По крайне мере, теперь мне стало ясно, над чем Вы работаете. Возвращаясь к главному вопросу этого топика. Я занимаюсь немного другими асинхронными схемами (это уже и так уже стало понятно). Поэтому могу только посоветовать почитать об т.н. Elastic circuits. Это разработка Кишиневского, который изначально работал с Варшавским, а потом слинял в Америку, и уже лет 20 работает в Интел. Он в свое время приложил руку к открытию Российского отделения Интел, и он же придумал Elastic - некое подобие самосинхронных схем, которое интел по некоторой информации активно использует в своих разработках. Информации по этим схемам очень мало, как и вообще по технологиям интела. Но какие то статьи Кишиневского есть в интернете. Возможно, это окажется Вам полезным, именно в ключе разработки кастома под high prefomance. По работам Таубина, которые я упоминал ранее в ключе связки домино+dual rail, я не слышал о практической реализации. Так что возможно, Вы первый, кто это использует на практике. Спасибо за информацию - попробую поискать.
--------------------
WBR, V. Mirgorodsky
|
|
|
|
Сообщений в этой теме
v_mirgorodsky Проектирование асинхронных стейт-машин Sep 3 2014, 17:21 Jurenja Способа сделать проектирование асинхронные схемы б... Sep 5 2014, 06:39 v_mirgorodsky Жаль, придется использовать существующую методолог... Sep 5 2014, 09:51 Serhiy_UA Цитата(v_mirgorodsky @ Sep 5 2014, 12:51)... Sep 8 2014, 04:40  v_mirgorodsky Цитата(Serhiy_UA @ Sep 8 2014, 06:40) Уто... Sep 8 2014, 09:02 v_mirgorodsky Нашел еще одну книгу по дизайну асинхронных систем... Sep 7 2014, 19:18 des00 Есть книга Asynchronous Circuit Design.Chris J. My... Sep 8 2014, 05:39 Serhiy_UA Цитата(des00 @ Sep 8 2014, 09:39) если ну... Sep 8 2014, 07:51 des00 Документы не читал, поэтому аннотаций дать не могу... Sep 8 2014, 09:07 Serhiy_UA Когда-то изучал в институте асинхронные автоматы, ... Sep 9 2014, 04:53  Кнкн Залил кое-что по асинхронщине
/upload/BOOKS/Async... Sep 9 2014, 06:51 krux ЦитатаСпособа сделать проектирование асинхронные с... Sep 9 2014, 19:05 dvladim По асинхронным схемам (и особенно по преобразовани... Sep 15 2014, 17:57 Shivers Цитата(v_mirgorodsky @ Sep 3 2014, 20:21)... Sep 19 2014, 07:21 yes книжки переехали сюда?
/pub/BOOKS/IC_Design/_Async... Sep 19 2014, 14:47 yes книжки переехали сюда?
/pub/BOOKS/IC_Design/_Async... Sep 19 2014, 15:03 v_mirgorodsky Цитата(yes @ Sep 19 2014, 17:03) я на уро... Sep 20 2014, 22:59  Shivers Цитата(v_mirgorodsky @ Sep 21 2014, 01:59... Sep 21 2014, 13:16   v_mirgorodsky Цитата(Shivers @ Sep 21 2014, 15:16) Забл... Sep 21 2014, 21:49    Shivers p.s.
Цитата(v_mirgorodsky @ Sep 22 2014, 00... Sep 22 2014, 06:59  yes Цитата(v_mirgorodsky @ Sep 21 2014, 02:59... Sep 22 2014, 11:14   Shivers Цитата(yes @ Sep 22 2014, 15:14) но обычн... Sep 22 2014, 16:31  zzzzzzzz Цитата(v_mirgorodsky @ Sep 22 2014, 22:29... Sep 22 2014, 20:38      Shivers Цитата(v_mirgorodsky @ Sep 23 2014, 19:11... Sep 23 2014, 15:31 zzzzzzzz Есть ещё одна альтернатива - CML.
На высоких часто... Sep 22 2014, 09:01 Shivers Цитата(zzzzzzzz @ Sep 22 2014, 13:01) Ест... Sep 22 2014, 10:06  zzzzzzzz Цитата(Shivers @ Sep 22 2014, 13:06) Альт... Sep 22 2014, 15:11 SIA Цитата(zzzzzzzz @ Sep 22 2014, 12:01) Ест... Nov 30 2014, 20:59
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|