|
Прошу немного помощи по Synopsys DC |
|
|
|
 |
Ответов
(1 - 99)
|
Jan 27 2009, 09:04
|

Местный
  
Группа: Свой
Сообщений: 453
Регистрация: 22-04-07
Пользователь №: 27 235

|
Цитата(Jools @ Jan 27 2009, 11:41)  Привет всем!
Прошу немного помочь местных гуру относительно нижеследующего:
Решил немного разобраться с ASIC. Про Линукс посредственные знания. Хочется запустить Synopsys DC и поработать с ним. Отсюда вопросы:
1. Что взять из закромов чтобы установить данный пакет. (Желательно пути до файлов)? 2. Какой комп и ОС для этого необходимы? 3. Может быть есть инструкция по инсталяции данной софтины и вообще мануалы по работе с ней?
Сильно можно не разжевывть. Если чего не понятно будет, лучше задам конкретный вопрос.
Пока вроде все. Сильно ногами не пинайте если что не так. Заранее спасибо. 1.вам нужен пакет syn. в eda/_synopsys_ берите самый последний(2008.09) там же посмотрите файлик для генерации lic src-2008.09 + Efa_LicGen_0.4b 2. suse 10.1 (32-64b) Centos 4.6(32-64) это те на которых я работал 3. пакеты нужно разархивировать. читать файлик readme в корне/ документация по продуктам в пакете sold
|
|
|
|
|
Jan 27 2009, 13:02
|

Патриот
  
Группа: Свой
Сообщений: 384
Регистрация: 26-12-04
Пользователь №: 1 682

|
спасибо всем! Буду тернить к звездам  Цитата(designner @ Jan 27 2009, 15:34)  Могу скинуть User_GUIDE на DC свеженький(сент.2008) если нужно Спасибо, если не затруднит. Мейл: amigateam(обезьяна)yandex.ru
|
|
|
|
|
Jan 27 2009, 15:43
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(Losik @ Jan 27 2009, 12:04)  1.вам нужен пакет syn. в eda/_synopsys_ берите самый последний(2008.09) там же посмотрите файлик для генерации lic src-2008.09 + Efa_LicGen_0.4b 2. suse 10.1 (32-64b) Centos 4.6(32-64) это те на которых я работал 3. пакеты нужно разархивировать. читать файлик readme в корне/ 4. Туда же разархивировать installer, взятый оттуда же, еда/сунопсус. 5. Запустить этот инсталлер из-под рута, он все сделает. пункт 3 не обязателен, инсталлер сам умеет разархивировать пакеты. Если пакеты разархивированы вручную, то архивы стереть. пункт 1 - для генерации кроме этого нужен еще SSS Feature Keygen. Для 2008.09 обязателен. пункт 2 - FC4 x86_64 smp тоже без проблем. Это та, на которой я работаю. касаемо юзер гайдов - они все есть на фтп, входят в состав пакета с названием sold. (synopsys online documentation)
|
|
|
|
|
Jan 28 2009, 05:30
|

Патриот
  
Группа: Свой
Сообщений: 384
Регистрация: 26-12-04
Пользователь №: 1 682

|
Цитата(SM @ Jan 27 2009, 18:43)  4. Туда же разархивировать installer, взятый оттуда же, еда/сунопсус. 5. Запустить этот инсталлер из-под рута, он все сделает.
пункт 3 не обязателен, инсталлер сам умеет разархивировать пакеты. Если пакеты разархивированы вручную, то архивы стереть. пункт 1 - для генерации кроме этого нужен еще SSS Feature Keygen. Для 2008.09 обязателен. пункт 2 - FC4 x86_64 smp тоже без проблем. Это та, на которой я работаю.
касаемо юзер гайдов - они все есть на фтп, входят в состав пакета с названием sold. (synopsys online documentation) Да, спасибо, ценная подсказка.
|
|
|
|
|
Jan 29 2009, 10:15
|
Знающий
   
Группа: Свой
Сообщений: 646
Регистрация: 21-06-04
Пользователь №: 71

|
Цитата(Losik @ Jan 29 2009, 10:15)  залил в eda_syn лабы и pdf-ки к ним(astro ic dc). + пару тренингов по синтезу + книга asic-synopsys_advanced.asic.chip.synthesis.using.synopsys.design.compiler.physical если есть недокаченные файлы - сообщите. Спасибо! Но у меня не открывается synthesis_training/Synthesis.pdf (скачивал два раза)
|
|
|
|
|
Jan 29 2009, 14:54
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085

|
Меня тут тоже вопрос один с DC замучал. В проекте два модуля, модуль А при помощи команды generate (VHDL) многократно вставлен в модуль B. При попытки отсинтезировать DC почему-то генерит модули A_1, A_2, A_3 и т.д.(добавляет номер к названию модуля), а потом жалуется, что не может их найти. Скрипт синтезатора выглядит в общем виде так: analyze {A.vhd, B.vhd} elaborate B link uniquify compile... Что я не так делаю?  Пробовал -flatten сделать, не помогло.
|
|
|
|
|
Jan 30 2009, 06:24
|
Частый гость
 
Группа: Свой
Сообщений: 77
Регистрация: 21-09-06
Из: msk
Пользователь №: 20 563

|
Цитата(starley @ Jan 29 2009, 17:54)  Меня тут тоже вопрос один с DC замучал. В проекте два модуля, модуль А при помощи команды generate (VHDL) многократно вставлен в модуль B. При попытки отсинтезировать DC почему-то генерит модули A_1, A_2, A_3 и т.д.(добавляет номер к названию модуля), а потом жалуется, что не может их найти. Скрипт синтезатора выглядит в общем виде так: analyze {A.vhd, B.vhd} elaborate B link uniquify compile... Что я не так делаю?  Пробовал -flatten сделать, не помогло. A_0, A_i - это процесс uniquify, необходимо, чтобы на каждый instance модуля был уникальный design. Либо это процесс вставки generic-ов из VHDL, но тогда там в названии модуля получается что-то вроде initialnameofmodule_param1val1_param2val2_... попробуйте действовать проще: read_file -f vhdl A.vhd read_file -f vhdl B.vhd read_file -f vhdl/verilog ...... current_design B ; link uniquify если выдает ошибку на каком-нить из read_file/current_design/link на TOP, то тогда разбирайтесь с конкретными ворнингами/ошибками. просто так дизайны не находить он не может, либо что-то с инстантиированием в rtl, либо еще что-то с синтезом. также посмотрите переменную hdlin_auto_save_templates. также, если хотите что-то синтезировать иерархически, то лучше, чтобы на этих уровнях иерархии не было generic-ов.
|
|
|
|
|
Jan 30 2009, 09:48
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(starley @ Jan 29 2009, 17:54)  Меня тут тоже вопрос один с DC замучал. В проекте два модуля, модуль А при помощи команды generate (VHDL) многократно вставлен в модуль B. При попытки отсинтезировать DC почему-то генерит модули A_1, A_2, A_3 и т.д.(добавляет номер к названию модуля), а потом жалуется, что не может их найти. Скрипт синтезатора выглядит в общем виде так: analyze {A.vhd, B.vhd} elaborate B link uniquify compile... Что я не так делаю?  Пробовал -flatten сделать, не помогло. Я бы делал так: analyze -f vhdl A.vhd read_vhdl B.vhd current_design B link uniquify compile.... т.е. всему, что не топ, analyze. топу - read. elaborate не надо, read всех кого надо отэлаборирует. И еще - что в search_path? есть в ~/.synopsys_dc.setup что-то типа того: set work_lib_path "./work" define_design_lib WORK -path $work_lib_path set search_path {. ~/work/lib /opt/synopsys/dc/libraries/syn ./work };
|
|
|
|
|
Jan 30 2009, 09:57
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085

|
Помогла команда ungroup, добавление в link_library звездочки (*) и удаление промежуточных файлов. Но назрел следующий вопрос. В area репорте есть строчка: Net Interconnect Area, имеющая нехилое значение. Я думал, что разводка в ASIC, где доступно много слоев металла, идет поверх ячеек. А DC, судя по всему, так не считает и площадь разводки подсуммирует к площади ячеек. Кто из нас неправ? Или это он эту площадь (Total Area Count) в качестве математической абстракции выдает - для сравнения вариантов. Если это так, то как тогда оценить требуемую реальную площадь?
Сообщение отредактировал starley - Jan 30 2009, 09:57
|
|
|
|
|
Jan 30 2009, 12:47
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(starley @ Jan 30 2009, 12:57)  Но назрел следующий вопрос. В area репорте есть строчка: Net Interconnect Area, имеющая нехилое значение. Я думал, что разводка в ASIC, где доступно много слоев металла, идет поверх ячеек. А DC, судя по всему, так не считает и площадь разводки подсуммирует к площади ячеек. Кто из нас неправ? Или это он эту площадь (Total Area Count) в качестве математической абстракции выдает - для сравнения вариантов. Если это так, то как тогда оценить требуемую реальную площадь? Ну во первых в разных библиотеках и в разных технологиях предусмотрены разные методики разводки - бывает разводка в специально выделенных каналах, бывает разводка поверх. Во вторых - не каждый проект можно развести, установив все целлы вплотную друг к другу. В третьих - про net interconnect area указано в библиотеке, это свойство ее моделей разводки. В четвертых - юзайте топографикал моде, сами задавая set_utilization, и забудьте все вайрлоад-модели как страшный сон и все оценки будут как минимум на порядок точнее. Если точно знаете, что разводка поверх и целлы вплотную - то возьмите чистую площадь ячеек, и поделите на 0.7...0.8 - получите реальную площадь. Но, еще учтите, что зачастую не площадь внутренностей определяет площадь кристалла, а периметр, необходимый для размещения IO-падов.
|
|
|
|
|
Jan 30 2009, 19:03
|
Частый гость
 
Группа: Свой
Сообщений: 77
Регистрация: 21-09-06
Из: msk
Пользователь №: 20 563

|
насколько я понимаю, информация для Net Interconnect Area берется из данных в .lib файле для wireload model. число слабо нужное и слабо удобное для работы, обычно получается очень большое. report_area генерит в том числе и более полезную информацию: Total cell area - просто сумма всех площадей ячеек, которые указаны в .lib файле. это как если бы вы раскатали сейчас раскатали нетлист в топологию без добавления/убирания элементов/ресайзинга и тп со 100% утилизацией. реально 70% утилизации в топологии имхо достаточно хороший показатель, но всё зависит от дизайна и технологии, конечно. также DC делает разбиение на sequential (памяти и триггера) и логику в этом же репорте, полезность этих данных бывает сложно переоценить.
если хочется, можно модифицировать .lib файл так, что эта net interconnect area будет нулевой и цифры в прогрессе синтеза/репорте будут более адекватные.
topographical mode - это да, это круто как бы... и синопсис и кейденс в своих синтезаторах годах так в 2005-2006 стали уходить от подхода анализа задержек нагруженных цепей через wireload model. у кейденс такой подход afaik называется PLE (physical layout estimation) и он появился чутка раньше topographical mode.
что не дает полноценно перейти на -topo всегда и везде, это то, что они в версиях 2007+ вроде как придумали использовать исключительно собственный(?) формат FRAM. 2006-й DC использовал .pdb, который можно было получить из .lib + .lef. и если вендоры ну не предоставляют библиотеки с FRAM представлением, и не рвутся что-то менять/добавлять в их библиотеках - как быть? что должно быть в этом .FRAM не особо очевидно... вроде как этот FRAM является нативным для milkyway, но есть ли возможность конвертить стандартные представления в него пока не ясно.
Сообщение отредактировал sleep - Jan 30 2009, 19:05
|
|
|
|
|
Jan 30 2009, 20:30
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(sleep @ Jan 30 2009, 22:03)  что не дает полноценно перейти на -topo всегда и везде, это то, что они в версиях 2007+ вроде как придумали использовать исключительно собственный(?) формат FRAM. 2006-й DC использовал .pdb, который можно было получить из .lib + .lef. и если вендоры ну не предоставляют библиотеки с FRAM представлением, и не рвутся что-то менять/добавлять в их библиотеках - как быть? что должно быть в этом .FRAM не особо очевидно... вроде как этот FRAM является нативным для milkyway, но есть ли возможность конвертить стандартные представления в него пока не ясно. А что - plib/pdb flow убрали? Не знал. Вроде бы он работает до сих пор. Касабельно FRAM - это абстракт ячейки - грубо то же, что и в LEF. Пины и зоны, запретные для трассировки. Делается одной левой например из полной топологии в виде GDS-II или из LEF. Формат древний как мир, его еще Apollo юзал авантовский на заре веков, и я пока не встретил фаба, который бы не дал этого формата. Вот plib/pdb - да, редкость. Milkyway есть в Astro, есть в star-rcxt, отдельно его нет.
|
|
|
|
|
Jan 30 2009, 22:59
|
Частый гость
 
Группа: Свой
Сообщений: 77
Регистрация: 21-09-06
Из: msk
Пользователь №: 20 563

|
Цитата(SM @ Jan 30 2009, 23:30)  А что - plib/pdb flow убрали? Не знал. Вроде бы он работает до сих пор.
Касабельно FRAM - это абстракт ячейки - грубо то же, что и в LEF. Пины и зоны, запретные для трассировки. Делается одной левой например из полной топологии в виде GDS-II или из LEF. Формат древний как мир, его еще Apollo юзал авантовский на заре веков, и я пока не встретил фаба, который бы не дал этого формата. Вот plib/pdb - да, редкость.
Milkyway есть в Astro, есть в star-rcxt, отдельно его нет. видимо, в разных фабах тейпаутимся : )
|
|
|
|
|
Jan 31 2009, 16:37
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 2-11-06
Из: Москва
Пользователь №: 21 900

|
plib/pdb - пройденный этап. Развития нет. PhysC его по прежнему понимает, но и этот тул-то уже вчерашний день (с точки зрения Synopsys). Надо юзать IC Compiler. Как я уже писал, 65нм еще идет в Astro, а под 45нм Synopsys будет поддерживать только ICC. Имеется в виду, что если фабрика родит какую-то совершенно новую DRC норму (типа треугольного VIA  ), то Synopsys не будет апдейтить Astro под эту норму. Milkyway (FRAM) - некоторые библиотечные вендоры (не фабы) его не поставляют в своих либах. типа LEFа/GDSа достаточно, а дальше сами нагенерите че хотите (например Dolphin Tech не даёт FRAM). Да это и не проблема - легко можно сгенерить. Кстати, как говорит Synopsys, у них скоро должна выйти замена Milkyway базы данных. Будет что-то новое, да еще и откроют её для всех желающих (используйте в своих САПРах). Но это так, слухи. По поводу либов от Avant/Synopsys - ностальгия, я к их разработке когда-то руку прикладывал. Давно это было.
|
|
|
|
|
Feb 2 2009, 13:59
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085

|
Цитата(SM @ Jan 30 2009, 15:47)  В четвертых - юзайте топографикал моде, сами задавая set_utilization, и забудьте все вайрлоад-модели как страшный сон и все оценки будут как минимум на порядок точнее. Топографикал это хорошо, но вот как мне ему блоки памяти, сделанные синтезатором, подсунуть? Цитата(SM @ Jan 30 2009, 15:47)  Если точно знаете, что разводка поверх и целлы вплотную - то возьмите чистую площадь ячеек, и поделите на 0.7...0.8 - получите реальную площадь. А как можно узнать про то, какая именно разводка предполагается? Я так думал, что ежели технология поддерживает 6 слоев металла - так и вся разводка, по определению, поверх ячеек. Это не так? А насколько точной, по-вашему, будет такая оценка? Цитата(SM @ Jan 30 2009, 15:47)  Но, еще учтите, что зачастую не площадь внутренностей определяет площадь кристалла, а периметр, необходимый для размещения IO-падов. На этот счет тоже непонятки имеются. В ките у меня есть библиотека IO cells, каждая ячейка площадью 10000 мкм. Пока не могу понять, включает ли она в себя сам пад (кусок металла для соединения с корпусом). Или это только выходной буфер, а пады рисуются отдельно на этапе разводки? Иными словами, надо ли еще под них площадь резервировать?
|
|
|
|
|
Feb 2 2009, 18:37
|
Частый гость
 
Группа: Свой
Сообщений: 199
Регистрация: 8-09-05
Из: Зеленоград
Пользователь №: 8 390

|
Цитата(starley @ Feb 2 2009, 16:59)  На этот счет тоже непонятки имеются. В ките у меня есть библиотека IO cells, каждая ячейка площадью 10000 мкм. Пока не могу понять, включает ли она в себя сам пад (кусок металла для соединения с корпусом). Или это только выходной буфер, а пады рисуются отдельно на этапе разводки? Иными словами, надо ли еще под них площадь резервировать? Каждая IO-cell должна включать контактную площадку, логику и ESD-защиту. Обычно так.
|
|
|
|
|
Feb 2 2009, 19:27
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 2-11-06
Из: Москва
Пользователь №: 21 900

|
>Топографикал это хорошо, но вот как мне ему блоки памяти, сделанные синтезатором, подсунуть? А точно так же, как подсовываете библиотеку std cell. Есть .db файл, добавьте в link/target_library. Есть Milkyway - добавьте как reference.
> и вся разводка, по определению, поверх ячеек. Это не так? Обычно этого не хватает. Там еще присутствует разводка земли/питания, клоковские деревья. Если std cell обычно использует внутри только первый метал, и разрешает разводку в остальных над собой, то память может использовать и 4 и 5 металлов. Да еще может запретить разводку сигнальных проводов над собой, чтобы избежать наводок (cross talk). Так, что , после синтеза (до размещения) суммарную площадь ячеек нужно умножить на два (это с запасом, потом при размещении, площадь ячеек вырастет, и core utilization будет меньше) - это и будет примерная площадь (core area). Chip area может определятся (как уже заметил SM) не только core area, но и периметром необходимым для размещения IO падов (это если Вы используете pad ring, а не flip chip pads).
> Каждая IO-cell должна включать контактную площадку, логику и ESD-защиту Не всегда так. Если библиотека содержит так называемые staggered pads, то контактные площадки шире чем сам IO cell. В этом случае IO селы ставят впритык, а контактные площадки в шахматном порядке в два ряда. Это позволяет уменьшить периметр чипа. Если у вас обычная либа (inline pads), то приведена, скорее всего, суммарная площадь ячейки+площадки. Вам лучше посмотреть в топологическом редактора на эту площадку или повнимательнее почитать даташит, что это за площадь - ячейки с площадкой или без.
|
|
|
|
|
Feb 2 2009, 19:37
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(starley @ Feb 2 2009, 16:59)  Топографикал это хорошо, но вот как мне ему блоки памяти, сделанные синтезатором, подсунуть? Сделанные кем? Синтезатором? Может мемори компилером? Так сделайте тем же компилером FRAM-ы, или LEF, или что он там делает для PAR. Цитата(starley @ Feb 2 2009, 16:59)  А как можно узнать про то, какая именно разводка предполагается? Я так думал, что ежели технология поддерживает 6 слоев металла - так и вся разводка, по определению, поверх ячеек. Это не так? Понятия не имею. Читать доку на либу. Смотреть глазами топологию ячеек. Других способов не знаю. Цитата(starley @ Feb 2 2009, 16:59)  В ките у меня есть библиотека IO cells, каждая ячейка площадью 10000 мкм. Пока не могу понять, включает ли она в себя сам пад (кусок металла для соединения с корпусом). Может включать, может не включать. читайте, блин, доки на либы. Или гляньте на топологию ячейки. У меня есть одна либа, где буфера отдельно, пады отдельно, и можно их собирать как и в staggered, так и в linear. А другая - только linear, и там все включено. А по хорошему - не надо считать IO-пады в area вообще. Они как не крути займут весь периметр чипа, даже если там не все будет забито падами, придется добивать филлерами. Или наоборот, падов может оказаться столько, что внутри периметра будет куча лишнего места. Ее, площадь этого периметра, проще посчитать на обычном калькуляторе. Или у вас там флипчип?
|
|
|
|
|
Feb 2 2009, 20:38
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085

|
Цитата(SM @ Feb 2 2009, 22:37)  Может включать, может не включать. читайте, блин, доки на либы. Кабы там было написано нормальным английским языком, что включает, - не задавал бы лишних вопросов. Я думал, что спецы по площади смогут определить, включен пад или нет. Размер ячейки 245 на 40 мкм. Из отсутствия отдельной ячейки для пада следует, что они включены? Топологию бы посмотрел, но редактора нет, да и пользоваться им пока не умею Цитата(SM @ Feb 2 2009, 22:37)  Или у вас там флипчип? У нас разгильдяйство организации-исполнителя, которая полгода не может нормально посчитать площадь.  В результате приходится это за них делать, а это несколько не мой профиль. От этого и вопросов много, потому как результат надо быстрее, а разбираться во всем нужно время. Все же отдельная область знаний и далеко не самая простая. А вообще мы на флипчип расcчитываем.
Сообщение отредактировал starley - Feb 2 2009, 20:51
|
|
|
|
|
Feb 2 2009, 20:57
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(starley @ Feb 2 2009, 23:38)  Топология стандартной ячейки занимает не больше 2-3 слоев металла. Доступно 6. С какого бодуна разводка может идти не поверх ячеек? При чем тут библиотека и доки на нее? Обычно да, поверх можно. Но мало ли что там взбрело разработчику либы. Так что лучше проверить. В этом деле перебдеть всегда лучше, чем недобдеть. Цитата(starley @ Feb 2 2009, 23:38)  Размер ячейки 245 на 40 мкм. 40 мкм... Это что, пад получается примерно 30 мкм сторона? Не маловато ли... Похоже, что не включены. Так как 2*40 получается 80, а это уже ближе к делу в случае staggered расположения. Таким образом два пада будут занимать примерно 325х80. Но может хватит гадать? Не верю, чтобы в доках на либы об этом не было. Цитата(starley @ Feb 2 2009, 23:38)  Из отсутствия отдельной ячейки для пада следует, что они включены? Да. Но как-то не сходится с 40 мкм...
|
|
|
|
|
Feb 3 2009, 14:35
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085

|
Не поленился-таки вчера поставить Astro и посмотреть топологию. Итог - пады не включены, для них отдельная ячейка про которую в описании ни слова. Как в астро можно определить размеры этой ячейки? Если я правильно понимаю, то примерную площадь под ИО при линейном расположении надо считать так: (ширина пада + ширина выходного буфера)*периметр. Для staggered - (2*ширина пада + ширина выходного буфера)*периметр. Правильно? Цитата(oratie @ Feb 2 2009, 22:27)  суммарную площадь ячеек нужно умножить на два А это не сильно круто? С чего ей в два раза вырасти, не из дерева же синхросигналов? Глобальная разводка земли и питания идет в первом слое металла?
|
|
|
|
|
Feb 3 2009, 17:59
|
Частый гость
 
Группа: Свой
Сообщений: 77
Регистрация: 21-09-06
Из: msk
Пользователь №: 20 563

|
Цитата(SM @ Feb 3 2009, 03:39)  А как это так может быть, стаггеред, и со включенным? Там же бонд-пады в шахматном порядке расставляются, и заранее их нельзя включить в IO-целл, потому как заранее не известно, какое будет расстояние от именно этого экземпляра буфера до пада. очень просто, на каждый io cell есть его 2 варианта: обозначим их условно "S" и "T", то есть "короткий" и "длинный". bonding pads уже включены в габариты, но перекрытие или "двухрядность" получаются видны только при переходе lef-gds. на .lef-представлении просто стоящие плотно друг к другу более длинные и более тонкие по сравнению с inline пады. при нормально сделанном .lef расставляем их на стороне по очереди: STSTS... получаются staggered io.
|
|
|
|
|
Feb 3 2009, 18:01
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 2-11-06
Из: Москва
Пользователь №: 21 900

|
> (ширина пада + ширина выходного буфера)*периметр. Для staggered - (2*ширина пада + ширина выходного буфера)*периметр. Это правильно.
> С чего ей в два раза вырасти
1. разводка земли и питания должна как минимуи идти в двух слоях (вертикальном и горизонтальном). Первый метал практически весь занят std cell. Если у вас длинный ряд из этих ячеек, а подключаете питание только по краям ряда, то будут помехи по питанию. Вдобавок, пин питания памяти памяти, я думаю, не в первом металле, к ним тоже надо подключится широкой шиной. И желательно не одной, а рингом или сеткой. Да и пады земли/питания тоже выдают не в первом металле. Например мы делаем сплошную сетку земли питания (очень частую) в двух верхних металлах (и запрещаем сигнальную трассировки в них), а дальше спускаемся до первого металла через более редкую сетку. Есть специальный тулы, которые помогают оценить, достаточно ли вы сделали шин земли питания (например Astro-Rail).
2. Хоть вы и используете DC -topo, реальное размещение (сделанное, например, в Astro) будет отличатся от первоначального. Соответственно, и ячейки будут умощнятся (расти в размерах) и дополнительные буфера будут вставляться. Это из личного опыта.
3. Потом, вам, наверняка, нужно будет вставлять специальные ячейки (tap-cell) для подклячения питания к карману (если, конечно, во всех std cell не сделано это).
4. А добавлять spare cells вы будете? (это чтобы, потом после изготовления, если выявится ошибка в логике, можно было бы изменением одной маски (перекомутацией пары ячеек) исправить ошибку)
5. А после трассировки могут появится проблемы с cross talk (хотя на 0.13 они невелики), следовательно, трассировщик будет раздвигать параллельные трассы, делать shielding или еще что.
6. Да мало ли что еще потом придется добавлять. По моему опыту, если проект новый и большой, то core utilization 0.5 после синтеза это нормально. А к детальной трассировке он повысится до 0.7. Я лично не встречал серьёзных дизайнов, которые бы развелись при utilization > 0.8
|
|
|
|
|
Feb 4 2009, 04:52
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085

|
Цитата(oratie @ Feb 3 2009, 21:01)  Например мы делаем сплошную сетку земли питания (очень частую) в двух верхних металлах (и запрещаем сигнальную трассировки в них), а дальше спускаемся до первого металла через более редкую сетку. Тогда получается, что разводка питания не увеличивает требуемую площадь. Цитата(oratie @ Feb 3 2009, 21:01)  3. Потом, вам, наверняка, нужно будет вставлять специальные ячейки (tap-cell) для подклячения питания к карману (если, конечно, во всех std cell не сделано это). Я думал, что во всех нормальных библиотеках это сделано в ячейках. Цитата(oratie @ Feb 3 2009, 21:01)  4. А добавлять spare cells вы будете? (это чтобы, потом после изготовления, если выявится ошибка в логике, можно было бы изменением одной маски (перекомутацией пары ячеек) исправить ошибку) Не будем. Во-первых, у нас еще две итерации, помимо этой, а, во-вторых, наши исполнители топологии не делают, ее буржуи делать будут. Цитата(oratie @ Feb 3 2009, 21:01)  5. А после трассировки могут появится проблемы с cross talk (хотя на 0.13 они невелики), следовательно, трассировщик будет раздвигать параллельные трассы, делать shielding или еще что. Неужто трассировщик и перекрестные помехи учитывает? Я думал для этого специальный софт используется. Цитата(oratie @ Feb 3 2009, 21:01)  6. Да мало ли что еще потом придется добавлять. По моему опыту, если проект новый и большой, то core utilization 0.5 после синтеза это нормально. А к детальной трассировке он повысится до 0.7. Я лично не встречал серьёзных дизайнов, которые бы развелись при utilization > 0.8 Ну 0.7 это все же не 0.5. Цитата(SM @ Feb 3 2009, 21:36)  Открыть FRAM или CEL view ячейки, и в астровском просмотрщике слева внизу есть жирная кнопка "Ruler". Далее интуитивно  Спасибо, попробую.
|
|
|
|
|
Feb 4 2009, 07:52
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085

|
Цитата(SM @ Feb 4 2009, 09:41)  Еще как увеличивает. Не думайте, что если там есть куча слоев, то их всех не забъет трассировщик напрочь и ему их с легкостью хватит. А в процентах?
|
|
|
|
|
Feb 4 2009, 11:26
|
Частый гость
 
Группа: Свой
Сообщений: 77
Регистрация: 21-09-06
Из: msk
Пользователь №: 20 563

|
Цитата(SM @ Feb 3 2009, 22:36)  А в .lib указана площадь по lef/FRAM? Или по gds/CEL? А то как бы topo не начал орать, что одно с другим не сходится... в .lib на staggered пады площадь стратежно указана 0.000. в .lib и .lef на inline площадь, логично, указана и сходится.
|
|
|
|
|
Feb 27 2009, 16:52
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 3-11-05
Из: ARM
Пользователь №: 10 424

|
Цитата(oratie @ Feb 20 2009, 11:55)  Получится, правда не знаю, где будет хранится эта информация (в самом FRAM или в lib), но такая инфа должна присутствовать в Milkyway db. Другой путь запихивания её в Milkyway это через clf файл (команды dbDefineAntennaRule, dbAddAntennaLayerRule, defineGateSize, defineDiodeProtection.
Если вы загрузите antenna LEF, а потом выгрузите clf, то должны увидеть какие-то из этих команд. Если вы загрузите antenna LEF, antenna info будет хранится в самом FRAM. Tochno, Если вы потом выгрузите antenna clf то должны увидеть какие-то из этих команд. Eto zavisit eshyo iz versii Milkyway. Est takie kommandi v LEF chto starie versii Milkyway ne poderjivayut.
--------------------
G.
|
|
|
|
|
Feb 28 2009, 09:43
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 3-11-05
Из: ARM
Пользователь №: 10 424

|
Kogda vi govorite макроблок vi imeite vvidu hard macro ? vi dali .db v link_libarary ? U vas est FRAM dlya makro block? Dlya makroblokov vi mojete dat koordinati sami po komande set_cell_location. Chtobi ponyat problemu davaite log syuda posmotrim (esli eto vi xotite konechno). Floorplan mojno i sdelat v DC topographical. Budet xorosho esli vi dadite DC topo tot floorplan kotori budete ispolzovat vo vremya okonchatelnogo P&R.
JupiterXT eto dlya hierarchich designs. Astro dlya flat designs. Tak chto zavisit iz vashego designa.
Udachi
--------------------
G.
|
|
|
|
|
Feb 28 2009, 20:28
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085

|
Под макроблоком имею в виду хард-макро памяти. db и FRAM сделал и синтезатору передаю. Насчет координат, то что могу сам дать - это понятно, только, по-моему, синтезатору виднее, где их располагать (если он, конечно, это умеет). Под иерархическим дизайном понимается дизайн, отдельные части которого физически реализуются по отдельности, а потом объединяются как макроблоки? Лог синтезатора выложу после выходных.
Сообщение отредактировал starley - Feb 28 2009, 20:29
|
|
|
|
|
Mar 1 2009, 10:00
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 3-11-05
Из: ARM
Пользователь №: 10 424

|
DC topo umeyet i mojet raspolagt makro bloki. No kak vi znayte vi ne smojete uznat kuda DC topo postavil macro block, i drugie celli. Pro ierarxhicheki design vi pravi, dobavlyu v Jupitere mojete sozdat floorplan top designa i potom Jupiter iz floorplana topa poluchit floorplani vsex child design ov. Eshyo Jupiter is constraintov top -a poluchit constrainti child blokov kotorie vi budete ispolzovat dlya otdelnix blockov. Tak chto esli u vas malenki block i ne nujno sdelat vishe skazannoe to vi smojete sdelat floorplan v Astro.
--------------------
G.
|
|
|
|
|
Mar 3 2009, 10:35
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085

|
Цитата(grigorik @ Mar 1 2009, 13:00)  DC topo umeyet i mojet raspolagt makro bloki. No kak vi znayte vi ne smojete uznat kuda DC topo postavil macro block, i drugie celli. Похоже, вы правы. А Physical Compiler умел PDEF писать. Тогда получается, что от умения ДЦ расставлять макроблоки толку почти никакого. А из каких же тогда соображений расставлять макроблоки вручную - почти от балды что-ли? И вообще, мне тогда не понятен смысл топографического синтеза. Получается, что задержки вычисляются и дизайн оптимизируется для одного расположения ячеек, а после бэк-энд расположение будет совсем другим. Понятно, что это лучше чем wireload, но почему нельзя было сделать возможность выгрузки хотя бы координат макроблоков? Цитата(grigorik @ Mar 1 2009, 13:00)  Pro ierarxhicheki design vi pravi, dobavlyu v Jupitere mojete sozdat floorplan top designa i potom Jupiter iz floorplana topa poluchit floorplani vsex child design ov. Eshyo Jupiter is constraintov top -a poluchit constrainti child blokov kotorie vi budete ispolzovat dlya otdelnix blockov. Стало быть придется еще и с Юпитером разбираться
|
|
|
|
|
Mar 3 2009, 13:27
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085

|
Вот фрагмент лога, который меня смущает. Ослабление временных констрейнов не помогает. Констрейны на размещение пока никакие не задавал. CODE Information: Running stand-alone coarse placer in a separate process (PSYN-605) Information: Executable name is '/usr/synopsys/Z-2007.03-SP1/linux/syn/bin/rpsa_exec'. (PSYN-877) ...25%... Warning: Placer unable to satisfy constraints on macro cell fc_apb_unit_i/EmptyBuffers_FIFO_I/dp_memory32x1024_i1. (PSYN-362)
Warning: Placer unable to satisfy constraints on macro cell RxData_FIFO_I/dp_memory32x2048_i1. (PSYN-362)
Warning: Placer unable to satisfy constraints on macro cell axi_slave_write_channel_i/TX_Messages_FIFO_I/dp_memory64x512_i. (PSYN-362)
Warning: Placer unable to satisfy constraints on macro cell FC_Sequences_Controller_i/transmitting_sequences_i/abts_performer_i/abts_context_memory_i/Context_Memory_i/U2. (PSYN-362)
Warning: Placer unable to satisfy constraints on macro cell TxData_FIFO_I1/dp_memory32x1024_i1. (PSYN-362)
Warning: Placer unable to satisfy constraints on macro cell TxData_FIFO_I/dp_memory32x1024_i1. (PSYN-362) 50%...75%...100% done. Information: Running stand-alone coarse placer in a separate process (PSYN-605) Information: Executable name is '/usr/synopsys/Z-2007.03-SP1/linux/syn/bin/rpsa_exec'. (PSYN-877) ...13%...25%... Warning: Placer unable to satisfy constraints on macro cell fc_apb_unit_i/ReadyBuffers_FIFO_1_I/dp_memory32x1024_i1. (PSYN-362)
Warning: Placer unable to satisfy constraints on macro cell fc_apb_unit_i/Ports_Table_LSW_I/mem. (PSYN-362)
Warning: Placer unable to satisfy constraints on macro cell axi_slave_write_channel_i/TX_Messages_FIFO_I1/dp_memory64x512_i. (PSYN-362)
Warning: Placer unable to satisfy constraints on macro cell axi_slave_write_channel_i/TX_Messages_FIFO_I/dp_memory64x512_i. (PSYN-362)
Warning: Placer unable to satisfy constraints on macro cell LS_TxData_FIFO_I/dp_memory32x512_i1. (PSYN-362)
Warning: Placer unable to satisfy constraints on macro cell TxData_FIFO_I/dp_memory32x1024_i1. (PSYN-362) 38%...50%...63%...75%...88%...100% done.
|
|
|
|
|
Mar 4 2009, 05:45
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085

|
Цитата(SM @ Mar 3 2009, 17:49)  Возможно, слишком большая утилизация (set_utilization) стоит, и оно не может все правильно разместить с таким требованием к утилизации. Вы правы. Уменьшение утилизации помогло. Спасибо. Судя по всему, это из-за того, что суммарная площадь макросов в блоке ощутимо больше площади ячеек и расставить все с большой утилизацией действительно невозможно.
|
|
|
|
|
Mar 4 2009, 22:23
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 3-11-05
Из: ARM
Пользователь №: 10 424

|
Цитата(starley @ Mar 3 2009, 14:35)  Похоже, вы правы. А Physical Compiler умел PDEF писать. Тогда получается, что от умения ДЦ расставлять макроблоки толку почти никакого. А из каких же тогда соображений расставлять макроблоки вручную - почти от балды что-ли? И вообще, мне тогда не понятен смысл топографического синтеза. Получается, что задержки вычисляются и дизайн оптимизируется для одного расположения ячеек, а после бэк-энд расположение будет совсем другим. Понятно, что это лучше чем wireload, но почему нельзя было сделать возможность выгрузки хотя бы координат макроблоков? Стало быть придется еще и с Юпитером разбираться  Voobshe-to zavisit ot kolichestvo makro blokov. Esli ix u vas slishkom mnogo i vi ne smojete naiti optimalnie mesta dlay makro blokov vruchnuyu to ya bi posovetoval takoe Iteration: #1 synthesis v DC topo bez constrantov na macro blocki i avtomaticheski sdelat macro placement v back end tool(Astro ili ICC). Posle chego vi smojete uznat priblizitelnie coordinati macro blockov. Iteration: #2 Vospolzuites etimi coordinatami v DC topo i sdelaite eshyo odin synthesis. Vospolzuites tem je coordinatami macro blockov v back end i sdelaite place and route. смысл топографического синтеза sostoit v tom chto resultati ICC placement i DC topo placemnt korrelirovani (mojed i daje odno i samoe ya ne uveren na 100%). Vot i eto privodit k tomu chto back end raspolojenie ne budet dast drugie resultati. Pro etot vopros: но почему нельзя было сделать возможность выгрузки хотя бы координат макроблоков? Sprosite synopsys -a. U synopsysa daje est novinka DC dlya congestion optimization vo vreamya RTL synthesis. Eto kakoi to enhancement v DC topo daje est greficheski vozmojnosti v DC vi mojete uvidet congested mesta. Udachi.
--------------------
G.
|
|
|
|
|
Mar 5 2009, 16:31
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085

|
Цитата(grigorik @ Mar 5 2009, 01:23)  Iteration: #1 synthesis v DC topo bez constrantov na macro blocki i avtomaticheski sdelat macro placement v back end tool(Astro ili ICC). Posle chego vi smojete uznat priblizitelnie coordinati macro blockov. Iteration: #2 Vospolzuites etimi coordinatami v DC topo i sdelaite eshyo odin synthesis. Vospolzuites tem je coordinatami macro blockov v back end i sdelaite place and route. Разве бэк-энд делает расстановку макроблоков с оптимизацией по временным параметрам? У меня сложилось впечатление, что он их от балды расставляет. Это ведь делается на этапе планирования, когда еще ничего о задержках неизвестно. Я думаю пока ручками расставлять, вроде не сильно сложно.
|
|
|
|
|
Mar 5 2009, 20:32
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085

|
Цитата(SM @ Mar 5 2009, 19:48)  О задержках уже известно очень многое. Как минимум, что с чем соединено, у кого какая мощность выхода и емкость входа. А также все констрейны. Исходя из этого уже вполне можно прикидывать оптимальное размещение по приблизительным длинам трасс и минимизации суммы этих длин, но с ограничением макс. длины для вписывания в констрейны. Вот если бы он вместе с ячейками макроблоки расставлял, - тогда да, а поскольку он их сами по себе расставляет, то вряд ли. Во всяком случае то размещение, которое он мне сделал совсем не было похоже на оптимальное.
|
|
|
|
|
Mar 5 2009, 22:23
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 3-11-05
Из: ARM
Пользователь №: 10 424

|
Цитата(SM @ Mar 5 2009, 22:39)  А вот интересно, DC Graphical это отдельная приблуда, или просто фича обычного DC Topo? Eto kakoi add on na sushestvuyushii DC topo. Kak ya ponyal licenzia nujna. Цитата(starley @ Mar 6 2009, 00:32)  Вот если бы он вместе с ячейками макроблоки расставлял, - тогда да, а поскольку он их сами по себе расставляет, то вряд ли. Во всяком случае то размещение, которое он мне сделал совсем не было похоже на оптимальное. Da eto ojidayemi resultat. poskolku tooli ne silni dlya macro placementa. Luchshe samim posmotret leyaout i postavit tak chtobi dlina routinga bila naskolko vozmojna korotkoi.
--------------------
G.
|
|
|
|
|
Mar 6 2009, 17:52
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 3-11-05
Из: ARM
Пользователь №: 10 424

|
Цитата(SM @ Mar 6 2009, 13:54)  Лицензия не вопрос. Главное - это отдельно устанавливаемый пакет, или оно уже включено в пакет syn ? оно уже включено в пакет syn, topographical shell (dc_shell-topo).
--------------------
G.
|
|
|
|
|
Mar 6 2009, 22:08
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 3-11-05
Из: ARM
Пользователь №: 10 424

|
Цитата(SM @ Mar 6 2009, 22:30)  Хм. А доки на этот режим есть? Хотелось бы узнать, как им пользоваться, но sold у меня всего лишь 2007.09, и там ни слова. doka netu. sorry. sam ne proboval ya prosto sleju za novosyam u synopsysa vot tut http://www.synopsys.com/Tools/Implementati...rGraphical.aspx
--------------------
G.
|
|
|
|
|
Mar 7 2009, 18:02
|

Местный
  
Группа: Свой
Сообщений: 453
Регистрация: 22-04-07
Пользователь №: 27 235

|
Цитата(SM @ Mar 6 2009, 22:30)  Хм. А доки на этот режим есть? Хотелось бы узнать, как им пользоваться, но sold у меня всего лишь 2007.09, и там ни слова. DC-topo Synthesis Training
|
|
|
|
|
Mar 20 2009, 10:07
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 2-11-06
Из: Москва
Пользователь №: 21 900

|
Если max_tran не определён в либе, то DC использует max tran из индексов для LUT. То, есть тот диапазон, в котором была отхарактеризована ячейка (то же самое и для max_cap).
Какой ставить max_tran - обычно характеризуют ячейку на больший диапазон, поэтому полагаться на max tran из LUT индекса не стоит, ставить на поменьше. Чем меньше ставите, тем меньше проблем будет с cross-talk, но взамен увеличивается мощность, площадь и т.д. Строгих рекомендаций, какой ставить max_tran нет. Для начала возьмите половинку от max tran из индекса.
Какой ставить max_fanout - посмотрите в библиотеке, прописаны ли там fanout_load для входных пинов (или только capacitance) - если нет, то надо использовать max_capacitance. Если есть, то используйте max_fanout из либы. Если и его нет - тогда вопрос (я использую 30 для внутренних цепей)
Какой ставить max_cap - можно оставить, тот какой есть в либе (если его нет, то тул сам поставит его равным max cap из LUT индекса).
Подводя итог: - max_cap и max_tran не могут быть большо чем max индексы для LUT - никаких методик по определению этих констрэйнтов я не встречал - ставьте их исходя из своего дизайна - он у вас high-speed либо low power либо ещё чего.
|
|
|
|
|
Mar 23 2009, 07:41
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(starley @ Mar 23 2009, 00:21)  То есть действуем тут методом подбора до тех пор пока не удастся развестись на нужную частоту и нулевую сумму DRC. В общем - да. Экспериментируем с разными там set_flatten, set_structure, set hdlin_xxxxx = ???, set compile_xxxxx = ?, ну и т.д. Так же правим исходники по результатам отчетов по критическим путям... Цитата(starley @ Mar 23 2009, 00:21)  Что означает, если эта сумма после процесса оптимизации ненулевая - задачка решения не имеет? Можно ли как-нибудь определить какой именно DRC констрейн нарушен и где? Это все в общем прикидки. Решение рассматривается исключительно после разводки - там в графике все будет видно как на ладони, где и что нарушилось, и там же in-place чаще всего можно их и пофиксить. А на небольшие нарушения рулезов при синтезе можно просто забить. Какой где нарушен - report_cons -all_v Цитата(starley @ Mar 23 2009, 00:21)  По опыту с xilinx знаю, что максимальная рабочая частота после размещения и разводки влегкую оказывается раза в полтора больше той, что была предсказана по результатам синтеза. А по опыту с lattice - то после synplify тайминги +-10%, А после прецижена - хуже раза в три, чем он предсказал. Этот опыт совершенно не о чем. Цитата(starley @ Mar 23 2009, 00:21)  А насколько обычно далеки результаты синтеза в топографическом режиме DC от того, что будет получено после разводки? плюс минус процентов 10. Причем вот три разные итерации, в двух улучшение от предсказанного, в одной ухудшение.
|
|
|
|
|
Mar 23 2009, 15:30
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(starley @ Mar 23 2009, 18:22)  Временные констрейны начинают выполняться только при установке max_trans и max_cap в районе их минимально допустимых значений. Это чревато еще чем-нибудь, кроме увеличения площади, потребляемой мощности и возможных проблем с наводками? совершенно не понял вопроса. И вообще - все эти рулезы описаны в либе, обычно их крутить не надо. С какой целью Вы туда сунулись? Цитата(starley @ Mar 23 2009, 18:22)  Небольшие нарушения рулезов это порядка нескольких процентов или как? Ну как-то так... Замкнутый круг... Такие, которые можно при PAR пофиксить  Цитата(starley @ Mar 23 2009, 18:22)  И еще вопрос (извиняйте если глупый) может ли transition_time для клока внутри микросхемы быть меньше фронта синхроимпульса подаваемого на ее вход? Легко. Особенно если IO-пад с триггером шмитта воткнуть. Так тогда вообще на вход ей можно будет синус полать.
|
|
|
|
|
Mar 23 2009, 16:19
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085

|
Цитата(SM @ Mar 23 2009, 18:30)  совершенно не понял вопроса. И вообще - все эти рулезы описаны в либе, обычно их крутить не надо. С какой целью Вы туда сунулись? Приехали... Я ж про эти констрейны и спрашивал, надо ли их менять и из каких соображений. Из док и объяснений oratie я понял, что эти констрейны можно менять в сторону ужесточения. В моем случае это положительно влияет на тайминги. На самом деле так не надо делать? У меня DC topo делает последние 3 шага оптимизации (Timing, DRC, Area) 2 раза с запуском расстановщика перед каждым шагом. Второй шаг начинается с площадью, полученной по результатам первого шага, но с другими задержками и DRC стоимостью. Это он влияние межсоединений посчитал или что-то другое? В доках пока не нашел описания процесса оптимизации для топографического режима
Сообщение отредактировал starley - Mar 23 2009, 16:21
|
|
|
|
|
Mar 23 2009, 16:32
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(starley @ Mar 23 2009, 19:19)  Приехали... Я ж про эти констрейны и спрашивал, надо ли их менять и из каких соображений. Из док и объяснений oratie я понял, что эти констрейны можно менять в сторону ужесточения. В моем случае это положительно влияет на тайминги. На самом деле так не надо делать? Да, можно, конечно, но я еще не встречал, чтобы это было реально нужно. Он же сам умеет за счет area улучшить timing в процессе оптимизации, что автоматом может уменьшить емкостную нагрузку в критическом пути. А влияния этого параметра на потребляемую мощность я особо не вижу, так как увеличивая емкость растягиваем переходной процесс, но при этом и уменьшаем количество драйверов (на один драйвер даем больше нагрузки), а в сумме-то те же яйца. Цитата(starley @ Mar 23 2009, 19:19)  Это он влияние межсоединений посчитал или что-то другое? Да.
|
|
|
|
|
Mar 23 2009, 17:10
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085

|
Цитата(SM @ Mar 23 2009, 19:32)  А влияния этого параметра на потребляемую мощность я особо не вижу, так как увеличивая емкость растягиваем переходной процесс, но при этом и уменьшаем количество драйверов (на один драйвер даем больше нагрузки), а в сумме-то те же яйца. Ну, например, за счет тока кз - оба транзистора дольше открыты при более длинном переходном процессе. Но это так - домыслы...
|
|
|
|
|
Mar 27 2009, 19:41
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085

|
Цитата(SM @ Mar 27 2009, 17:22)  Исходя из гарантии работоспособности всех целлов и блоков, этот клок юзающий. На длинных транзишенах у них могут начинаться всякие глюки от невыдерживания сетапов/холдов и вплоть до полного "сноса крыши". А какое задавать... Так в библиотеке все уже должно быть. Это ведь верхний предел. Вряд ли именно его стоит задавать на этапе синтеза. По итогам генерации клокового дерева, по идее, должен быть лучший результат получен.
|
|
|
|
|
Mar 28 2009, 15:42
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 3-11-05
Из: ARM
Пользователь №: 10 424

|
Vo vremya syntesa set_clock_transition zadayut chtobi modelirovat tranzition time kotoroe budet posle clock tree syntesis (CTS). Transition time vo vremya CTS vi sami mojete upravlayt zadavaya constrainti. Kak vibirat tranzition time ? Transition time eto takoe chto zavisit ot texnologi. Transition time Clocka ne doljen bit blizok k verxnemu predelu potomu chto bolshie transitioni na klocke privedut k tomu chto 1. Clock budet slab k Xtalk u. A eto potom mojet privesti funkcionalnim problememam, naprimer DFF mogut izmenyat sostoyani iz-za glicthov kotorie induciruyutsya na clock. 2. Zadavat malenki transition time constraint na clock privedyot k tomu chto CTS engin dobavit mnogo bufferov(invertrov) eto privedyot k bolshim delay-am na clock tree, i bolshemu upotrebleniyu moshnoti Poskolku clock eto signal v sxeme kotori menayert sostoyanie bolshe chem drugie.
Iz-za vishe skazannago mojno naprimer brat constraint ot 60-80% verxnego predela library. Nu voobshe postoroites vsegda bit v predelax transiton i cpapcitance kotorie naxoditysa v library, potomuschto kogda budete vne etogo diapazona resultati timing analysa budut ne vernimi. Eshyo nado uchtit chto est 5% nevernost v raschyotax (v toolax) i postoraites v konce proekta imet design gde transiton i max cap bili mali chem 95% predelov.
Luchse vsegdo ostavit max cap/transition fiksirovat vo vremya P&R.
Vsyo vishe skazannoe eto prosto misli iz moego opita yesli kto-to ne soglasen ya budu rad obsudid so vsemi.
Udachi.
--------------------
G.
|
|
|
|
|
Apr 13 2009, 18:56
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085

|
Цитата(SM @ Apr 13 2009, 20:30)  Ясно дело в хдл-код. Ведь это чуть ли не главная составляющая задержек входных и выходных сигналов, которые должны констрейниться с учетом буферов и емкостей их внешних нагрузок. Вот и я так думал. Но тогда загвоздка с синхросигналами и ресетом получается. DC при выполнении STA берет drive ио буфера и рассчитывает исходя из него, например, transition time для клока, Значение, разумеется, получается охрененно большим. Какой тут обходной путь предполагается?
|
|
|
|
|
Apr 13 2009, 20:01
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 3-11-05
Из: ARM
Пользователь №: 10 424

|
Цитата(starley @ Apr 13 2009, 22:56)  Вот и я так думал. Но тогда загвоздка с синхросигналами и ресетом получается. DC при выполнении STA берет drive ио буфера и рассчитывает исходя из него, например, transition time для клока, Значение, разумеется, получается охрененно большим. Какой тут обходной путь предполагается? starley mojet set_ideal_network na vixode IO bufera pomojet?
--------------------
G.
|
|
|
|
|
Apr 14 2009, 06:40
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085

|
Цитата(SM @ Apr 14 2009, 10:34)  Ну во первых - возможно вы всунули клоковый буфер. Который вовсе не I/O, а специальный клокодрайвер сверхмощный. Так как драйв у обычных буферов как правило соответствует драйву обычного элемента логики. Нет, совершенно точно обычный ио буфер.
|
|
|
|
|
Apr 14 2009, 06:52
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 3-11-05
Из: ARM
Пользователь №: 10 424

|
Цитата(starley @ Apr 14 2009, 09:40)  Нет, совершенно точно обычный ио буфер. ubedites chto u vas v constraintax net set_propagated_clock komandi.
--------------------
G.
|
|
|
|
|
Apr 14 2009, 15:00
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085

|
Цитата(SM @ Apr 14 2009, 13:46)  Тогда остается лишь подозрение, что Вы его туда вставили не той стороной  PAD-ом к ядру... Ну раз пошли такие варианты... Сreate_clock надо делать для входа или для выхода ИО буфера клока? Если я вас правильно понимаю, - то для входа, а у DC достаточно сообразительности, что бы проигнорировать в расчетах ИО буфер клока и при расчетах использовать то значение transition_time, которое я установил в set_clock_transition? А как тогда быть с ресетом? Дерево буферов для него обычно генерится на этапе реализации или в DC? Цитата(grigorik @ Apr 14 2009, 10:52)  ubedites chto u vas v constraintax net set_propagated_clock komandi. Точно нет, вместо него set_clock_latency и set_clock_uncertainty.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|