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

Повтор темы: выравнивание задержки глобального клока

да простят меня админы

так как в ПЛИС-ах никто не отвечает, спрошу здесь:

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да простят меня админы

так как в ПЛИС-ах никто не отвечает, спрошу здесь:

 

В проекте 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

 

kondensator42

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

kondensator42

В предыдущем посте я отвечал топикстартеру, теперь отвечу вам: под фиксированным clock tree

имелось ввиду одно большое дерево. и несколько дублирующих и региональных деревьев, причем у каждого дерева могут быть разные источники (две или три pll). Конкретику читайте в доке на ПЛИС, это все должно быть описано. Далее, по задержкам: сделайте backannotate нетлиста с задержками и моделируйте - это единственный вариант увидеть глазами как распределились задержки внутри ПЛИС. И последнее - работа над оптимизацией не может быть бесконечной, т.к. алгоритм предельно простой: берете самый плохой триггер в списке, который можно переписать, правите и переразводите. Затем правите следующий и т.д.-алгоритм конечный, и иногда он приводит к переписыванию целых блоков.

Если же конечная цель- asic, то иногда можно остановиться и на пониженных частотах, т.к. проект работающий в ПЛИС на конкретной частоте, будет работать на той же частоте в asic сделанном по тех процессу примерно в три раза лучше. Т.е. если работает в плис по 90нм, то можно смело синтезировать asic 28нм. Правило (в три раза) естественно чисто эмпирическое, но некая корреляция между тех процессами плис и asic прослеживается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

....если работает в плис по 90нм, то можно смело синтезировать asic 28нм. ....

А я всегда думал наоборот - если FPGA работает на 28нм то ASIC можно вытянуть на 90нм.

Ибо в ASIC нету ничего лишнего что есть в LUT. Ну и конце концов, FPGA делается в ASIC тулзах....

 

 

Подскажите, как реализован механизм выравнивания skew на кристале ?

Что касается FPGA, то Shivers Вам о тветил - клок три фиксировано.

Дополню просто для понимания как это можна в ASIC....

 

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

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

2) Вэтом случае будет не хрень а Useful Skew

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

 

Кроме того, насколько я понимаю процесс выравнивания должен быть динамическим (ведь триггеры каждого квадранта щелкают не в каждом такте ... ) Значит, механзмы синхронизации в матрице должны быть динамическими и реализованными в аналоге ?

3) Динамика тригеров (сколько и когда щёлкает) не учитывается при построении клок три.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

Благодарствую всем, кто потрудился мне ответить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"Конкретику читайте в доке на ПЛИС" и "Что касается 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

to kondensator42

Я в топологии м/сх вообще ничего не смыслю, но опыт работы с fpga имеется. И я, если честно, всегда организацию тактирования в плис примерно представлял так, как описал Torpeda. Не могли бы Вы по существу пояснить в чем конкретно он не прав. То что вы цитируете здесь про DCM думаю здесь не совсем в тему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

to kondensator42

Я в топологии м/сх вообще ничего не смыслю, но опыт работы с fpga имеется. И я, если честно, всегда организацию тактирования в плис примерно представлял так, как описал Torpeda. Не могли бы Вы по существу пояснить в чем конкретно он не прав. То что вы цитируете здесь про DCM думаю здесь не совсем в тему.

 

Да цитирую потому что:

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

- а "To generate de-skewed" это ещё и ответ словами Xilinx на утверждение об полезности "skewed". Из опыта знаю, что иногда как бы не объяснял толку никакого не будет пока не ткнёшь пальцем в какую нибуть книжку или статью.

"Не могли бы Вы по существу пояснить в чем конкретно он не прав." - поробуем ещё раз:

- нет такого в документации"клок три фиксировано" и не может быть, и вообще, что это за ответ на тему топика "потому что клок три фиксировано".

- бороться с возможными гонками играя синхросигналом (вставляя буфера, меняя их розмер) это самое последнее дело, т.к. кроме ухудшения и запутывания ситуации это еще и уменьшает максимальную рабочую частоту схемы. А если кто ещё и не понял, то тема топика и есть предотвращение возможых гонок от реального распределения задержек по синхросигналу. Основное же назначение буферов это обеспечение нагрузочной способности драйвера клока, а не выравнивание задержек. Вообще если не понятно, то нужно читать книги, но только не про VHDL, Verilog, логический дезайн, карты карно, сумматоры и прочее, а про реальный цифровой дезайн максимально приближенный к железу с времянками, гонками, гликами, глюками... И ещё здесь, если вы енту ПЛИСУ примеряете как тест для будующей IC и используете вот это "skew тул выравнивает: вставляя буфера, меняя их розмер, делая оптимальний плейсмент, меняя точки подключение листьев, строя физически симетричную или несиметричную структуру." то во многом ваш труд будет мартышкиным.

- "В этом случае будет не хрень а Useful Skew" - бред (иногда это используют, но зачем здесь если есть более точные и удобные DCM, да и компаратор строго говоря нужен).

"Я в топологии м/сх вообще ничего не смыслю" - а это не важно какой топологии IC, PCB, или FPGA, и как контура рисовать тоже знать не обязательно, а вот с электрической точки зрения знать надо, иначе ваша схема после кривой разводки может и не заработать (испортить можно любую схему).

 

kondensator42

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здесь наверное имеет смысл разделить детали клоковых деревьев между FPGA и ASIC.

Про FPGA - конкретно Xilinx:

У них есть возможность получать локальные клоковые деревья, а так же, есть два набора предварительно разведенных клоковых деревьев - Global и Regional. Дискутировать по поводу их "фиксированности" с точки зрения их разводки по кристаллу на мой взгляд бессмысленно, потому как если бы это было не так, то в FPGA просто небыло бы этих наборов и все клоковые деревья были бы сформированны по типу локальных.

Как использовать DCM для получения de-skewed глобального или регионального клока относительно какого либо внешнешнего или локально сгенеренного клока достаточно очевидно. Как использовать DCM совместно с локальным клоковым деревом с целью сделать что-либо с clock skew мне пока не приходит в голову.

Про ASIC:

Здесь, я так понимаю, есть просто клоковые деревья. Как они формируются и "ложаться" на кристалл зависит от разработчика и тулзы которую он использует.

В процессе обсуждения темы обозначилось два метода работы с клоковыми деревьями:

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

post-26933-1337672338_thumb.png post-26933-1337672355_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...Вообще если не понятно, то нужно читать книги, но только не про VHDL, Verilog, логический дезайн, карты карно, сумматоры и прочее, а про реальный цифровой дезайн максимально приближенный к железу с времянками, гонками, гликами, глюками... И ещё здесь, если вы .... используете вот это "skew тул выравнивает: вставляя буфера, меняя их розмер, делая оптимальний плейсмент, меняя точки подключение листьев, строя физически симетричную или несиметричную структуру." то во многом ваш труд будет мартышкиным.

-"Useful Skew" - бред

kondensator42

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

 

Я этому бреду (Useful Skew) научился вот в этих "мартышек" (вот что нашёл в открытом доступе. см. страницу 14): http://www.cadence.com/rl/Resources/confer...resentation.pdf

Пожалуй соглашусь с Вами, что "бредовые тулзы" этой "шарашкиной конторы" и рядом не валялись с такими "гигантами" как ISE & Quartus.

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

- нет такого в документации"клок три фиксировано" и не может быть, и вообще, что это за ответ на тему топика "потому что клок три фиксировано".

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

- "В этом случае будет не хрень а 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... Нетак-ли?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На втором рисунке я привел пример разводки одной из цепей. Видно что тулза сделала странную петлю через две Switching Matrix.

Интересный результат. А скажите пожалуйста, в clock report этот момент как-то отражается? Какое семейство Вы использовали?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...