Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Повтор темы: выравнивание задержки глобального клока
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Разработка цифровых, аналоговых, аналого-цифровых ИС
a123-flex
да простят меня админы
так как в ПЛИС-ах никто не отвечает, спрошу здесь:

В проекте Virtex2 c фаноутом на опорном клоке 1050 цепей skew по отчету составил 240 пс. Клок заведен через bufg. Подскажите, как реализован механизм выравнивания skew на кристале ?
в глобальной матрице ведь нет pll, и если даже просто клок задерживать во всех узлах кроме загруженных, по моему получится хрень. Кроме того, насколько я понимаю процесс выравнивания должен быть динамическим (ведь триггеры каждого квадранта щелкают не в каждом такте ... ) Значит, механзмы синхронизации в матрице должны быть динамическими и реализованными в аналоге ?
kondensator42
Цитата(a123-flex @ May 19 2012, 02:53) *
да простят меня админы
так как в ПЛИС-ах никто не отвечает, спрошу здесь:

В проекте Virtex2 c фаноутом на опорном клоке 1050 цепей skew по отчету составил 240 пс. Клок заведен через bufg. Подскажите, как реализован механизм выравнивания skew на кристале ?
в глобальной матрице ведь нет pll, и если даже просто клок задерживать во всех узлах кроме загруженных, по моему получится хрень. Кроме того, насколько я понимаю процесс выравнивания должен быть динамическим (ведь триггеры каждого квадранта щелкают не в каждом такте ... ) Значит, механзмы синхронизации в матрице должны быть динамическими и реализованными в аналоге ?


У меня опыт работы с FPGA не большой и было это давно, но все же попробую вставить и свой пятак. Да согласен с вами насчёт "по моему получится хрень" и я сравнил бы ещё это с перетягиванием одеяла. Не думаю, что они изобрели что-то принципиально новое типа: "сверхпроводящая разводка и мультиплексироваие", "супер-бупер точная и стабильна технология" или "нано-био само-RCL-выравнивающаяся и устаканивающаяся структура". Конечно в отдельных точках можно контролировать CLK, но это и требует затрат. А значит, когда разрабатываешь схему на FPGA всегда нужно иметь ввиду, что CLK триггеров соединены через резисторы и номиналы этих резисторов намного больше чем на PCB и даже IC. Вы думаете шикарные возможности для формирования CLK (DCM, синтезатоы, точные фазовые сдвиги, CLK мультиплексоры) это только шикарный функционал? Думаю, что это, и даже в первую очередь, для решения проблем с внутренней синхронизацией. Таким образом мы имеем 2 или 3 опции:
1. Строго синхронная схема, т.е. один CLK, но тогда нужно обеспечивать (наращивать), чтобы минимальные задержки (или устаканивания) по данным всегда гарантированно были больше общей временной неопределённости или размазанности CLK.
2. Использовать двух или более фазную синхронизацию. И здесь как раз то и понадобятся эти шикарные возможности для формирования CLK. Я предпочитаю использовать этот метод как более надёжный, меньше помех (меньше выбросы от CLK) и никаких там доп задержек/трат по данным.
3. Ну это что-то специальное для чего-то специального, с контролем CLK в определённых точках.

kondensator42
Shivers
Вы говорите о clock tree, а в ПЛИС он фиксированный. Обычно в ПЛИС выделяют некие быстрые клоки для регионов, и глобальные клоки для всего дизайна. У глобальных большая нагрузочная способность и лучший охват i/o банков и внутренней логики. Итого, если вы завели тактирование правильно (в самую быструю pll, выход которой и есть глобальный клок для ПЛИС), и у вас тем не менее плохая времяннка, значит самое время заняться оптимизацией дизайна - выискивать мультисайкл пути, уменьшать нагрузку на ключевые триггера и т.д. В общем, ваша проблема - в схематехнике дизайна, есть над чем работать
kondensator42
Цитата(Shivers @ May 20 2012, 23:57) *
Вы говорите о clock tree, а в ПЛИС он фиксированный. Обычно в ПЛИС выделяют некие быстрые клоки для регионов, и глобальные клоки для всего дизайна. У глобальных большая нагрузочная способность и лучший охват i/o банков и внутренней логики. Итого, если вы завели тактирование правильно (в самую быструю pll, выход которой и есть глобальный клок для ПЛИС), и у вас тем не менее плохая времяннка, значит самое время заняться оптимизацией дизайна - выискивать мультисайкл пути, уменьшать нагрузку на ключевые триггера и т.д. В общем, ваша проблема - в схематехнике дизайна, есть над чем работать


Не совсем понятно кому вы отвечаете/комментируете, но вообще это не столь важно, вы по-моему не поняли сути вопроса. Сlock tree или без Сlock tree (честно признаюсь, что не знаю что такое фиксированный) ни в этом суть вопроса. У вас, кстати говоря, и получается дерево - ствол это глобальные, а веточки внутри блоков (регионов, по-вашему). Регионы/блоки/иерархия все это естественно и понятно и нужно, и если между этими блоками нет перекрёстных и обратных с связей то почти и никаких вопросов с глобольной синхронизацией. А если эти связи есть? - Вот здесь и получается "петруха-андрюха". Это на глобальном уровне, а на уровне блоков (внутри блоков) хоть и в меньшей степени, но вопрос остаётся тоже. На сколько это опасно - это нужно считать, а для считать нужна информация. Но вот что-то я при беглом просмоте мануала так и не нашел данных по задержкам на шинах и соответствующих расчетных формул (может и не заметил). Эти вопросы, думаю (да вроде и читал когда-то какой-то ноут), это часть работы ихнего синтезатора. Но на бога надейся, но и сам не плошай.
"и у вас тем не менее плохая времяннка, значит самое время заняться оптимизацией дизайна - выискивать мультисайкл пути, уменьшать нагрузку на ключевые триггера и т.д. В общем, ваша проблема - в схематехнике дизайна, есть над чем работать " - работать всегда есть над чем, кто-то, например, круглое таскает, а кто-то плоское катает и оптимизировать можно до бесконечности.

kondensator42
Shivers
Цитата(kondensator42 @ May 21 2012, 06:44) *
Не совсем понятно кому вы отвечаете/комментируете, но вообще это не столь важно, вы по-моему не поняли сути вопроса. Сlock tree или без Сlock tree (честно признаюсь, что не знаю что такое фиксированный) ни в этом суть вопроса. У вас, кстати говоря, и получается дерево - ствол это глобальные, а веточки внутри блоков (регионов, по-вашему). Регионы/блоки/иерархия все это естественно и понятно и нужно, и если между этими блоками нет перекрёстных и обратных с связей то почти и никаких вопросов с глобольной синхронизацией. А если эти связи есть? - Вот здесь и получается "петруха-андрюха". Это на глобальном уровне, а на уровне блоков (внутри блоков) хоть и в меньшей степени, но вопрос остаётся тоже. На сколько это опасно - это нужно считать, а для считать нужна информация. Но вот что-то я при беглом просмоте мануала так и не нашел данных по задержкам на шинах и соответствующих расчетных формул (может и не заметил). Эти вопросы, думаю (да вроде и читал когда-то какой-то ноут), это часть работы ихнего синтезатора. Но на бога надейся, но и сам не плошай.
"и у вас тем не менее плохая времяннка, значит самое время заняться оптимизацией дизайна - выискивать мультисайкл пути, уменьшать нагрузку на ключевые триггера и т.д. В общем, ваша проблема - в схематехнике дизайна, есть над чем работать " - работать всегда есть над чем, кто-то, например, круглое таскает, а кто-то плоское катает и оптимизировать можно до бесконечности.

kondensator42

В предыдущем посте я отвечал топикстартеру, теперь отвечу вам: под фиксированным clock tree
имелось ввиду одно большое дерево. и несколько дублирующих и региональных деревьев, причем у каждого дерева могут быть разные источники (две или три pll). Конкретику читайте в доке на ПЛИС, это все должно быть описано. Далее, по задержкам: сделайте backannotate нетлиста с задержками и моделируйте - это единственный вариант увидеть глазами как распределились задержки внутри ПЛИС. И последнее - работа над оптимизацией не может быть бесконечной, т.к. алгоритм предельно простой: берете самый плохой триггер в списке, который можно переписать, правите и переразводите. Затем правите следующий и т.д.-алгоритм конечный, и иногда он приводит к переписыванию целых блоков.
Если же конечная цель- asic, то иногда можно остановиться и на пониженных частотах, т.к. проект работающий в ПЛИС на конкретной частоте, будет работать на той же частоте в asic сделанном по тех процессу примерно в три раза лучше. Т.е. если работает в плис по 90нм, то можно смело синтезировать asic 28нм. Правило (в три раза) естественно чисто эмпирическое, но некая корреляция между тех процессами плис и asic прослеживается.
Torpeda
Цитата(Shivers @ May 21 2012, 07:28) *
....если работает в плис по 90нм, то можно смело синтезировать asic 28нм. ....

А я всегда думал наоборот - если FPGA работает на 28нм то ASIC можно вытянуть на 90нм.
Ибо в ASIC нету ничего лишнего что есть в LUT. Ну и конце концов, FPGA делается в ASIC тулзах....


Цитата(a123-flex @ May 19 2012, 01:53) *
Подскажите, как реализован механизм выравнивания skew на кристале ?

Что касается FPGA, то Shivers Вам о тветил - клок три фиксировано.
Дополню просто для понимания как это можна в ASIC....

1) skew тул выравнивает: вставляя буфера, меняя их розмер, делая оптимальний плейсмент, меняя точки подключение листьев, строя физически симетричную или несиметричную структуру.
Цитата(a123-flex @ May 19 2012, 01:53) *
если даже просто клок задерживать во всех узлах кроме загруженных, по моему получится хрень.

2) Вэтом случае будет не хрень а Useful Skew
При этом можно как буферы вставлять так и подключать флопы кудато в середину дерева

Цитата(a123-flex @ May 19 2012, 01:53) *
Кроме того, насколько я понимаю процесс выравнивания должен быть динамическим (ведь триггеры каждого квадранта щелкают не в каждом такте ... ) Значит, механзмы синхронизации в матрице должны быть динамическими и реализованными в аналоге ?

3) Динамика тригеров (сколько и когда щёлкает) не учитывается при построении клок три.
a123-flex
Цитата(Shivers @ May 20 2012, 22:57) *
Вы говорите о clock tree, а в ПЛИС он фиксированный. Обычно в ПЛИС выделяют некие быстрые клоки для регионов, и глобальные клоки для всего дизайна. У глобальных большая нагрузочная способность и лучший охват i/o банков и внутренней логики. Итого, если вы завели тактирование правильно (в самую быструю pll, выход которой и есть глобальный клок для ПЛИС), и у вас тем не менее плохая времяннка, значит самое время заняться оптимизацией дизайна - выискивать мультисайкл пути, уменьшать нагрузку на ключевые триггера и т.д. В общем, ваша проблема - в схематехнике дизайна, есть над чем работать


проблема не в выравнивании клоков в каком-то моем проекте. Там все понятно и никаких вопросов нет. Идея была в том, что мне приглючилось, что любой сигнал, введенный через IBUFG на глобальную клоковую цепь, получает автоматическое выравнивание при распространении по глобальным цепям (безо всяких DCM), и соответственно, меня интересовал етот чудесный механизм подстройки фазы. Теперь, после разъяснения уважаемых all, и более внимательного чтения доки, я понимаю, что чуда не случилось, и механизма такого нет.

Благодарствую всем, кто потрудился мне ответить.
kondensator42
"Конкретику читайте в доке на ПЛИС" и "Что касается FPGA, то Shivers Вам ответил - клок три фиксировано" - и прочитал и поиском на "tree" и "fixed" искал в двух документах: "Virtex-II Platform FPGA User Guide" и "Virtex-II Platform FPGAs: Complete Data Sheet", и никаких таких "клок три фиксировано" ибн "fixed clock tree"не нашел.
А нашел вот это для DCM: "Phase offset between CLKIN and CLKFB is the worst-case fixed time difference between rising edges of CLKIN and CLKFB, excluding output jitter and input clock jitter." и ещё подобное для синтезаторов. И понял откуда ноги растут у этих заявлений "клок три фиксировано". Не "клок три фиксировано", а максимальная ошибка PLL в точке подключения сигнала CLKFB нормирована. И опять же это DCM, то о чем я писал в первом сообщении, а не какие-то там мифические "клок три фиксировано" претендующие на нобелевскую премию. И возножное число этих контролируемых точек равно числу блоков DCM.
Просматривая иногда приглашения на работу иногда находишь очень забавные объявления от очень известных фирм типа: "Требуется инженер-схемотехник с 8-летним стажем знающий Cadence, Synopsys, Mentor,.., VHDL, Verilog, C++,.., и понимающий схемотехнику. Значит как-то просачиваются/туннелируют туда эти операторы тулзоф. Существуют некоторые прописные истины в электронике и в частности это Clock. Даже любой более или менее профессиональный тополог знает что синхросигнал нужно разводить аккуратно с минимизацией переходов и без никакого там поликремния. Однако:
"skew тул выравнивает: вставляя буфера, меняя их розмер, делая оптимальний плейсмент, меняя точки подключение листьев, строя физически симетричную или несиметричную структуру." или "В этом случае будет не хрень а Useful Skewp. При этом можно как буферы вставлять так и подключать флопы кудато в середину дерева"
Последний перл вдвойне интересен если учитывать возможную неустойчивую работу триггера при заваленном синхросигнале. Ну а здесь для особо одарённых операторов тулзоф инфа от самого Xilinx:
"Up to 12 DCM blocks are available. To generate de-skewed internal or external clocks, each DCM can be used to elimi-
nate clock distribution delay"
Ваши ракеты, Torpeda, могут и не туда полететь. Если, конечно, вы имеете к ним хоть какое-то отношение. Был я раза два на таком Харьковском предприятии с очень крутым допуском и было это очень давно.
kondensator42
dm.pogrebnoy
to kondensator42
Я в топологии м/сх вообще ничего не смыслю, но опыт работы с fpga имеется. И я, если честно, всегда организацию тактирования в плис примерно представлял так, как описал Torpeda. Не могли бы Вы по существу пояснить в чем конкретно он не прав. То что вы цитируете здесь про DCM думаю здесь не совсем в тему.
kondensator42
Цитата(dm.pogrebnoy @ May 21 2012, 23:55) *
to kondensator42
Я в топологии м/сх вообще ничего не смыслю, но опыт работы с fpga имеется. И я, если честно, всегда организацию тактирования в плис примерно представлял так, как описал Torpeda. Не могли бы Вы по существу пояснить в чем конкретно он не прав. То что вы цитируете здесь про DCM думаю здесь не совсем в тему.


Да цитирую потому что:
- в этой краткой фразе от Xilinx собственно и разъясняется механизм синхронизации, т.е. DCM обеспечивает достаточную крутизну фронтов и ограничивает разброс задержек синхросигнала, а это,извините, и есть самая что ни есть тема топика.
- а "To generate de-skewed" это ещё и ответ словами Xilinx на утверждение об полезности "skewed". Из опыта знаю, что иногда как бы не объяснял толку никакого не будет пока не ткнёшь пальцем в какую нибуть книжку или статью.
"Не могли бы Вы по существу пояснить в чем конкретно он не прав." - поробуем ещё раз:
- нет такого в документации"клок три фиксировано" и не может быть, и вообще, что это за ответ на тему топика "потому что клок три фиксировано".
- бороться с возможными гонками играя синхросигналом (вставляя буфера, меняя их розмер) это самое последнее дело, т.к. кроме ухудшения и запутывания ситуации это еще и уменьшает максимальную рабочую частоту схемы. А если кто ещё и не понял, то тема топика и есть предотвращение возможых гонок от реального распределения задержек по синхросигналу. Основное же назначение буферов это обеспечение нагрузочной способности драйвера клока, а не выравнивание задержек. Вообще если не понятно, то нужно читать книги, но только не про VHDL, Verilog, логический дезайн, карты карно, сумматоры и прочее, а про реальный цифровой дезайн максимально приближенный к железу с времянками, гонками, гликами, глюками... И ещё здесь, если вы енту ПЛИСУ примеряете как тест для будующей IC и используете вот это "skew тул выравнивает: вставляя буфера, меняя их розмер, делая оптимальний плейсмент, меняя точки подключение листьев, строя физически симетричную или несиметричную структуру." то во многом ваш труд будет мартышкиным.
- "В этом случае будет не хрень а Useful Skew" - бред (иногда это используют, но зачем здесь если есть более точные и удобные DCM, да и компаратор строго говоря нужен).
"Я в топологии м/сх вообще ничего не смыслю" - а это не важно какой топологии IC, PCB, или FPGA, и как контура рисовать тоже знать не обязательно, а вот с электрической точки зрения знать надо, иначе ваша схема после кривой разводки может и не заработать (испортить можно любую схему).

kondensator42
MadGarry
Здесь наверное имеет смысл разделить детали клоковых деревьев между FPGA и ASIC.
Про FPGA - конкретно Xilinx:
У них есть возможность получать локальные клоковые деревья, а так же, есть два набора предварительно разведенных клоковых деревьев - Global и Regional. Дискутировать по поводу их "фиксированности" с точки зрения их разводки по кристаллу на мой взгляд бессмысленно, потому как если бы это было не так, то в FPGA просто небыло бы этих наборов и все клоковые деревья были бы сформированны по типу локальных.
Как использовать DCM для получения de-skewed глобального или регионального клока относительно какого либо внешнешнего или локально сгенеренного клока достаточно очевидно. Как использовать DCM совместно с локальным клоковым деревом с целью сделать что-либо с clock skew мне пока не приходит в голову.
Про ASIC:
Здесь, я так понимаю, есть просто клоковые деревья. Как они формируются и "ложаться" на кристалл зависит от разработчика и тулзы которую он использует.
В процессе обсуждения темы обозначилось два метода работы с клоковыми деревьями:
1. Описанный Torpeda "skew тул выравнивает: вставляя буфера, меняя их розмер, делая оптимальний плейсмент, меняя точки подключение листьев, строя физически симетричную или несиметричную структуру."
2. Описанный kondensator42 "Даже любой более или менее профессиональный тополог знает что синхросигнал нужно разводить аккуратно с минимизацией переходов и без никакого там поликремния."

kondensator42 не могли бы Вы порекомендовать литературу по упомянутоми Вами методу работы с клоковыми деревьями или может быть поподробнее описать его здесть на форуме?
dm.pogrebnoy
Сделал пару картинок (из FPGA Editor от Xilinx) по поводу разводки клоков и данных в FPGA. На первом рисунке клок из моего проекта с fanout ~22000. Видим что структура ветвей имеет периодический характер. Думаю понятно откуда взялось мое убеждение, что дерево Global clock в FPGA является фиксированным. На втором рисунке я привел пример разводки одной из цепей. Видно что тулза сделала странную петлю через две Switching Matrix. Не этот ли факт и является механизмом обеспечения skew в FPGA?

Нажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла
Torpeda
Цитата(kondensator42 @ May 22 2012, 06:03) *
...Вообще если не понятно, то нужно читать книги, но только не про VHDL, Verilog, логический дезайн, карты карно, сумматоры и прочее, а про реальный цифровой дезайн максимально приближенный к железу с времянками, гонками, гликами, глюками... И ещё здесь, если вы .... используете вот это "skew тул выравнивает: вставляя буфера, меняя их розмер, делая оптимальний плейсмент, меняя точки подключение листьев, строя физически симетричную или несиметричную структуру." то во многом ваш труд будет мартышкиным.
-"Useful Skew" - бред
kondensator42

Прошу простить меня великодушно за мой бред, как Вы выразились.Никак не хотел ввести уважаемое сообщество в заблуждение!

Я этому бреду (Useful Skew) научился вот в этих "мартышек" (вот что нашёл в открытом доступе. см. страницу 14): http://www.cadence.com/rl/Resources/confer...resentation.pdf
Пожалуй соглашусь с Вами, что "бредовые тулзы" этой "шарашкиной конторы" и рядом не валялись с такими "гигантами" как ISE & Quartus.



Torpeda
Цитата(kondensator42 @ May 22 2012, 06:03) *
- нет такого в документации"клок три фиксировано" и не может быть, и вообще, что это за ответ на тему топика "потому что клок три фиксировано".
- бороться с возможными гонками играя синхросигналом (вставляя буфера, меняя их розмер) это самое последнее дело, т.к.
- "В этом случае будет не хрень а Useful Skew" - бред (иногда это используют, но зачем здесь если есть более точные и удобные DCM, да и компаратор строго говоря нужен).
kondensator42

ну и добавлю....

1) "нет такого в документации"клок три фиксировано" и не может быть" - в документации Xilinx это написано так: "Global Clock Network"
Скажите пожалуйста, можно ли менять "Global Clock Network"?

2) Xilinx DCM - это по-сути управляемая линия задержки (Delay-Locked loop). Их аж 4 в XC3S50!
DCM собственно то и делает что " бореться со SKEW играя синхросигналом (вставляя буфера)", аж до целого периода!
так-что в чём " самое последнее дело" - непонятно.

3) "Useful Skew" - бред (иногда это используют, но зачем здесь если есть более точные и удобные DCM)
- сколько тайминг виолейшинов Вы сможете пофиксить при помощи DCM?
- можно ли использовать DCM только для 2 флопов (которые виолейтят)?
- а случайно не для выравнивания SKEW между Global Clock Network или внешними девайсами эти DCM предназначены?
- как изменить SKEW между флопами, подключёнными к одной Global Clock Network?

4) А есть ли доступ FPGA дизайнера к ASIC "Useful Skew" технологии (пр и фиксированном Global Clock Network)?
Кажется я упоминал "Useful Skew" относительно к ASIC... Нетак-ли?
MadGarry
Цитата(dm.pogrebnoy @ May 22 2012, 11:39) *
На втором рисунке я привел пример разводки одной из цепей. Видно что тулза сделала странную петлю через две Switching Matrix.

Интересный результат. А скажите пожалуйста, в clock report этот момент как-то отражается? Какое семейство Вы использовали?
dm.pogrebnoy
Цитата(MadGarry @ May 22 2012, 17:10) *
Интересный результат. А скажите пожалуйста, в clock report этот момент как-то отражается? Какое семейство Вы использовали?


virtex-6, в clock report в данном случае не смотрел. да и что я там должен был увидеть? требуемые времянки сошлись.
kondensator42
Цитата(Torpeda @ May 22 2012, 16:59) *
ну и добавлю....

1) "нет такого в документации"клок три фиксировано" и не может быть" - в документации Xilinx это написано так: "Global Clock Network"
Скажите пожалуйста, можно ли менять "Global Clock Network"?

2) Xilinx DCM - это по-сути управляемая линия задержки (Delay-Locked loop). Их аж 4 в XC3S50!
DCM собственно то и делает что " бореться со SKEW играя синхросигналом (вставляя буфера)", аж до целого периода!
так-что в чём " самое последнее дело" - непонятно.

3) "Useful Skew" - бред (иногда это используют, но зачем здесь если есть более точные и удобные DCM)
- сколько тайминг виолейшинов Вы сможете пофиксить при помощи DCM?
- можно ли использовать DCM только для 2 флопов (которые виолейтят)?
- а случайно не для выравнивания SKEW между Global Clock Network или внешними девайсами эти DCM предназначены?
- как изменить SKEW между флопами, подключёнными к одной Global Clock Network?

4) А есть ли доступ FPGA дизайнера к ASIC "Useful Skew" технологии (пр и фиксированном Global Clock Network)?
Кажется я упоминал "Useful Skew" относительно к ASIC... Нетак-ли?


""нет такого в документации"клок три фиксировано" и не может быть" - в документации Xilinx это написано так: "Global Clock Network"
Скажите пожалуйста, можно ли менять "Global Clock Network"?"

- Я как раз и не собираюсь его менять, а вы да - "вставляя буфера, меняя их розмер".
Далее, т.е. как я понял, вы вместе с Shivers "Global Clock Network" переименовываете в "клок три фиксировано" и после этого волшебного деяния, переименования, этот клок становится магическим- имеет нулевые задержки и соответственно не зависящие от нагрузок. Интересно!, вам вместе Shivers надо срочно подавать на Нобелевскую премию пока кто-то не украл ваш большой секрет.

"Xilinx DCM - это по-сути управляемая линия задержки (Delay-Locked loop). Их аж 4 в XC3S50!
DCM собственно то и делает что " бореться со SKEW играя синхросигналом (вставляя буфера)", аж до целого периода!
так-что в чём " самое последнее дело" - непонятно."

- Печально что вам это не понятно. DCM это ещё и драйвер или синхронизированный источник синхросигнала и его задержка никакого влияния на распределение задержек по подключенному к нему Clock не имеет - это всего лишь будет абсолютное смещение (с точкой привязки в месте подключения CLKFB). А в случае двух или более DCM-ов будет влияние конечно, но это уже будет взаимодействие между разными клоками или разными фазами одного клока (последнее для многофазной синхронизации). Вы же рвёте клок или делаете ветви "вставляя буфера, меняя их розмер". Если же вы ничего не рвёте и не ветвите, а делаете это только над буфером у драйвера, то тогда опять же как и с DCM - это всего лишь будет абсолютное смещение, и тогда вообще ни понятно о чем реч и к чему, вы просто не понимаете вопроса топика и не только.

"- сколько тайминг виолейшинов Вы сможете пофиксить при помощи DCM?"

- да я как раз и пишу в моём первом сообщении, что не много, и предлогаю метод фри от этих проблем - многофазная синхронизация либо что делать в случае однофазной синхронозации.

"- можно ли использовать DCM только для 2 флопов (которые виолейтят)?"

- дети ой дети - смотрите предыдущий ответ (это наверное потому, что начинают изучение цифры с VHDL/Verilog).

"а случайно не для выравнивания SKEW между Global Clock Network или внешними девайсами эти DCM предназначены?"

- смотрите Figure 3-23: Using De-Skew as a Clock Mirror из "Virtex-II Platform FPGA User Guide" там по всякому подключается.

"- как изменить SKEW между флопами, подключёнными к одной Global Clock Network?"

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

"Кажется я упоминал "Useful Skew" относительно к ASIC... Нетак-ли?"

- к сожалению, не так:
"Цитата(a123-flex @ May 19 2012, 01:53)
если даже просто клок задерживать во всех узлах кроме загруженных, по моему получится хрень.
2) Вэтом случае будет не хрень а Useful Skew
При этом можно как буферы вставлять так и подключать флопы кудато в середину дерева"

- Вы отвечаете a123-flex, а он, a123-flex, даже как-бы и не заикался про ASIC, sorry.

kondensator42
dm.pogrebnoy
Мне одному кажется что здесь никто не понимает как все-таки устроена ПЛИС, и как там выравнивается этот самый пресловутый skew?
kondensator42
Цитата(MadGarry @ May 22 2012, 09:05) *
Здесь наверное имеет смысл разделить детали клоковых деревьев между FPGA и ASIC.
Про FPGA - конкретно Xilinx:
У них есть возможность получать локальные клоковые деревья, а так же, есть два набора предварительно разведенных клоковых деревьев - Global и Regional. Дискутировать по поводу их "фиксированности" с точки зрения их разводки по кристаллу на мой взгляд бессмысленно, потому как если бы это было не так, то в FPGA просто небыло бы этих наборов и все клоковые деревья были бы сформированны по типу локальных.
Как использовать DCM для получения de-skewed глобального или регионального клока относительно какого либо внешнешнего или локально сгенеренного клока достаточно очевидно. Как использовать DCM совместно с локальным клоковым деревом с целью сделать что-либо с clock skew мне пока не приходит в голову.
Про ASIC:
Здесь, я так понимаю, есть просто клоковые деревья. Как они формируются и "ложаться" на кристалл зависит от разработчика и тулзы которую он использует.
В процессе обсуждения темы обозначилось два метода работы с клоковыми деревьями:
1. Описанный Torpeda "skew тул выравнивает: вставляя буфера, меняя их розмер, делая оптимальний плейсмент, меняя точки подключение листьев, строя физически симетричную или несиметричную структуру."
2. Описанный kondensator42 "Даже любой более или менее профессиональный тополог знает что синхросигнал нужно разводить аккуратно с минимизацией переходов и без никакого там поликремния."

kondensator42 не могли бы Вы порекомендовать литературу по упомянутоми Вами методу работы с клоковыми деревьями или может быть поподробнее описать его здесть на форуме?


"Дискутировать по поводу их "фиксированности" с точки зрения их разводки по кристаллу на мой взгляд бессмысленно"

- Совершенно верно, но дискуссия здесь о 4-м измерении - о временном. Кое-кто утверждает, что если "Global Clock Network" переименовывать в "клок три фиксировано" то все проблемы с выравниванием клока чудесным (божественным) образом решаются автоматически, но правда при этом они же пытаются ещё и править его, это божество , а это, вы знаете, БОЛЬШОЙ ГРЕХ.

"1. Описанный Torpeda "skew тул выравнивает: вставляя буфера, меняя их розмер, делая оптимальний плейсмент, меняя точки подключение листьев, строя физически симетричную или несиметричную структуру."

- это не метод, а без системное и без грамотное ковыряние в стиле "метод тыка".

"2. Описанный kondensator42 "Даже любой более или менее профессиональный тополог знает что синхросигнал нужно разводить аккуратно с минимизацией переходов и без никакого там поликремния.""

- это не метод тоже, а знане, правило или элементарная истина, а методы (и кстати не мои, а известные и обще принятые) смотрите в моём первом сообщении.

"kondensator42 не могли бы Вы порекомендовать литературу по упомянутоми Вами методу работы с клоковыми деревьями или может быть поподробнее описать его здесть на форуме? "

- Я вам пока даю одну книгу, я её не читал (и вообще мало читаю, хотя книги собираю) но с виду вроде не плохая книга и её рекомендуют и хвалят:
William J. Dally, John W. Poulton, 1998 Digital Systems Engineering.
Если что попадётся на глаза, то сообщу.

kondensator42
Torpeda
Цитата(kondensator42 @ May 22 2012, 20:36) *
- Я как раз и не собираюсь его менять, а вы да - "вставляя буфера, меняя их розмер".
Далее, т.е. как я понял, вы вместе с Shivers "Global Clock Network" переименовываете в "клок три фиксировано"

1) Ну начнём по порядку:
- "Global Clock Network" это то, что есщё называется "клоковым деревом" (это термин ASIC тулзов, а не волшебное переименование).
- Клоковое дерево строится в любой синхронной схеме. Правда FPGA дизайнеры про это не знают....
- Один из его параметров это SKEW - розбросс времени прихода сигнала на различные листья (~10-100ps).
Другой параметр - insertion delay - задержка от корня дерева до листьев (~10ns)
- FPGA дизайнер не может менять клоковое дерево - оно встроено производителем раз и навсегда (поэтому "клок три фиксировано").
ASIC дизайнер полностью может его контролировать, т.к. он лично его создаёт.
Цитата
и после этого волшебного деяния, переименования, этот клок становится магическим- имеет нулевые задержки и соответственно не зависящие от нагрузок. Интересно!, вам вместе Shivers надо срочно подавать на Нобелевскую премию пока кто-то не украл ваш большой секрет.

2) Какой параметр клок три Вы имеете ввиду под "нулевые задержки и соответственно не зависящие от нагрузок" не понятно.
Предположу что это SKEW.
Как сказано в п.1), SKEW это параметр клок три обеспеченый в FPGA раз и навсегда и он !=0.
Также добавлю, что SKEW и insertion delay зависит от нагрузок только в момент создания клок три.
Собственно целью построения клок три и есть выполнение заданных SKEW и insertion delay при заданных нагрузках.
Таким образом, проектировщик FPGA кристала создаёт клок три, которое имеет заданные SKEW и insertion delay при любих прошивках.
(навсякий случай скажу, что клоковое дерево представляет из себя набор инверторов, подключённых друг к друшу в виде дерева....т.е. каждый FPGA.LUT драйверится своим буфером)
Врядли это на Нобелевку правда тянет.....
Цитата
- Печально что вам это не понятно. DCM это ещё и драйвер или синхронизированный источник синхросигнала и его задержка никакого влияния на распределение задержек по подключенному к нему Clock не имеет - это всего лишь будет абсолютное смещение (с точкой привязки в месте подключения CLKFB). А в случае двух или более DCM-ов будет влияние конечно, но это уже будет взаимодействие между разными клоками или разными фазами одного клока (последнее для многофазной синхронизации).

скажу проще, DCM это линия задержки которая может выровнять SKEW между разными деревьями ("Global Clock Network" в разных корпусах напр.).
На SKEW в пределах одного клок три DCM конечно-же не влияет, ибо этло параметр фиксированной "Global Clock Network".
Или дайте Ваше определение SKEW, которое можно выровнять при помощи DCM.
Цитата
Вы же рвёте клок или делаете ветви "вставляя буфера, меняя их розмер".

Да, такое можно и нужно делать в ASIC для устранения локальных тайминг виолейшенов.
Вы читали уже http://www.cadence.com/rl/Resources/confer...resentation.pdf
Цитата
"- сколько тайминг виолейшинов Вы сможете пофиксить при помощи DCM?"
- да я как раз и пишу в моём первом сообщении, что не много, и предлогаю метод фри от этих проблем - многофазная синхронизация либо что делать в случае однофазной синхронозации.

Кстати прочитал Ваш первый пост.....
Что такое по Вашему "Использовать двух или более фазную синхронизацию."
Это например когда тригер источник срабатывает по наростающему фронту, а приёмник по падающему (или сдвинутому на 0.5 периода)?
Цитата
"Кажется я упоминал "Useful Skew" относительно к ASIC... Нетак-ли?"- к сожалению, не так:

Надо быть чуть внимательней: "Дополню просто для понимания как это можна в ASIC...."



AJIEKCEu
Попробую изложить свое видение. Специально для kondensator42 постараюсь сделать это более аргументировано.
Возможно все, что я пишу сейчас не нужно и достаточно почитать Virtex-6 FPGA Clocking Resources User Guide

1. Clock Tree.
Clock Tree - то есть дерево распространения синхросигналов. В FPGA действительно есть такое понятие. Причем, их там не одно, а несколько. Аж до 12 в каждом регионе! То есть с некоторыми ограничениями пара соседних триггеров (умоляю не будем вдаваться в особенности ограничений) может тактироваться совершенно разными клоками. Причем регионов таких в ПЛИСе - несколько, и в каждом из них эти 12 синхросигналов могут быть разными.
Выдержка из вышеуказанного документа:
CODE

Clock Tree and Nets - GCLK

Virtex-6 FPGA clock trees are designed for low-skew and low-power operation. Any
unused branch is disconnected. The clock trees also manage the load/fanout when all the
logic resources are used.
All global clock lines and buffers are implemented differentially. This facilitates much
better duty cycles and common-mode noise rejection.
In the Virtex-6 architecture, the pin access of the global clock lines are not limited to the
logic resources clock pins. The global clock lines can drive pins in the CLB other than CLK
pins (for example: the control pins SR and CE). Applications requiring a very fast signal
connection and large load/fanout benefit from this architecture.

Clock Regions

Virtex-6 devices improve the clocking distribution by the use of clock regions. Each clock
region can have up to 12 global clock domains. These 12 global clocks can be driven by any
combination of the 32 global clock buffers. The dimensions of a clock region are fixed to 40
CLBs tall (40 IOBs) and spanning half of the die (Figure 1-20). By fixing the dimensions of
the clock region, larger Virtex-6 devices can have more clock regions. As a result, Virtex-6
devices can support many more multiple clock domains than previous FPGA
architectures. Ta ble 1- 5 shows the number of clock regions in each Virtex-6 device. The
CMT and global clocking resources are located to the right of the center column containing
the configuration pins.


Насколько я понимаю, изначально при разработке ПЛИСа Clock Tree создается таким образом, чтобы разброс (то есть относительная задержка) между его концами (лисьтями, как наверное правильно заметил Torpeda) был минимален. При этом о задержке (то есть абсолютной задержке от корня дерева до листьев) беспокоятся меньше, так как именно задержка может быть скомпенсирована при помощи MMCM (см. ниже).

2. DCM и зачем они нужны.
В данном случае оно называется MMCM, но суть работы такая же.
Всего лишь один из возможных режимов работы MMCM - это выравнивание задержек синхросигнала. Как правило это нужно именно для выравнивания внутреннего синхросигнала ПЛИСа с внешним синхросигналом.
Подробнее:
CODE

Схема такого применения указана на рисунке на 57-й странице документа (см. 2-ю строку сообщения).
Там 1 точка - это вход внешнего синхросигнала. При этом он идет по специальной короткой линии,
не набирая большой задержки и не запитывая огромное дерево синхросигнала. Поэтому в точке 1 синхросигнал практически равен входному.
В точке 2 (см. риунок справа с фронтами) сигнал слегка задерживается (на картинке - не совсем слегка для наглядности).
Сейчас обратим внимание на обратную связь. Она идет от точки 6 до точки 3 и проходит через bufg - это по сути означает,
что она идет через Global Clock Tree и набирает точно такую же задержку как между точками 4 и 5.
MCM подстраивает сигнал в точке 6 (а в точке 4 он такой же) таким образом, чтобы в синхросигналы в точке 3 (а в точке 5 он такой же) и в точке 2 совпадали (обратите внимание,
для этого фронт в точке 6 появляется раньше чем фронт в точке 2, а может и раньше чем в точке 1).

Таким образом синхросигнал в точке 2 и в точке 5 (а это по суди вход в триггер) - совпадают.

Если MMCM не использовать, то фронт в точке 5 будет запаздывать на задержку между точками 4 и 2.

Уфф... Надеюсь понятно объяснил. Нужно это как правило для приема входных сигналов на триггер с меньшими требованиями к временам setup/hold.

А кроме этого, MMCM умеет: умножать частоту в (n/(m+1)) раз, где n=1..32, m=0..31, устанавливать фиксированное значение фазы между точками 2 и 3 (в приведенном примере - 0), динамически смещать фазу по управляющим командам из схемы ПЛИС. Возможно ещё что-нибудь я забыл.

ЗЫ. Про асики - ничего не знаю, извините. Случайно сюда зашел. На вопросы по теме попробую ответить.
ЗЗЫ. А почему вы вопросы связанные с ПЛИСами задаете в форуме про асики? Может надо в форуме про ПЛИСы спрашивать? И тогда не будет странных ощущений:
Цитата(dm.pogrebnoy)
Мне одному кажется что здесь никто не понимает как все-таки устроена ПЛИС, и как там выравнивается этот самый пресловутый skew?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.