Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Прошу немного помощи по Synopsys DC
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Разработка цифровых, аналоговых, аналого-цифровых ИС
Страницы: 1, 2, 3
SM
Цитата(starley @ Apr 14 2009, 19:00) *
Если я вас правильно понимаю, - то для входа, а у DC достаточно сообразительности, что бы проигнорировать в расчетах ИО буфер клока и при расчетах использовать то значение transition_time, которое я установил в set_clock_transition?

Правильно понимаете. По дефолту в DC клок идеальный, так что никто по дороге никаких задержек вносить не должен. Что касается резетов и прочих high-fanout-ов, так их DC при синтезе буферирует нормально. Там же нет требований к latency/uncertainty
starley
Цитата(SM @ Apr 14 2009, 19:26) *
По дефолту в DC клок идеальный, так что никто по дороге никаких задержек вносить не должен.


Ан нет. Практика-то говорит о другом. smile3046.gif Объявляю клок на выходе IO буфера - все нормально считается. Объявляю на входе - максимальная задержка становится в 10 раз больше. cranky.gif
Может dont_touch_network на клок не надо ставить?

Поглядел внимательнее отчет - увидел, что такие большие задержки возникают там, где клок неподобающим ему образом используется, например, как вход комбинационной цепи. И на клоковходе макроблоков.
SM
Цитата(starley @ Apr 16 2009, 18:52) *
Может dont_touch_network на клок не надо ставить?

Ясен пень не надо, это нужно только для propagated clock.
Quater
Добрый день...

подскажите пожалуста как можно сказать DC чтобы соединил TE (Test Enable) вход на всех FF со ScanTest на 0. А то он исползует эти флопы для обычных целей и поэтому вся симулация валится.

Всё это происчодит если я использую compile -inc, а если исползовать compile -scan то все TE флопов соединины на 0 и всё работает как надо.

заранее благодарю.
grigorik
Цитата(Quater @ Apr 28 2009, 09:37) *
Добрый день...

подскажите пожалуста как можно сказать DC чтобы соединил TE (Test Enable) вход на всех FF со ScanTest на 0. А то он исползует эти флопы для обычных целей и поэтому вся симулация валится.

Всё это происчодит если я использую compile -inc, а если исползовать compile -scan то все TE флопов соединины на 0 и всё работает как надо.

заранее благодарю.


Pochemu v vashem designe DC postavil Scan FF esli vi ne delaite "compile -scan" ? V biblioteke net drugix FF? Mojete skazat podrobnosti?
SM
Цитата(Quater @ Apr 28 2009, 10:37) *
подскажите пожалуста как можно сказать DC чтобы соединил TE (Test Enable) вход на всех FF со ScanTest на 0. А то он исползует эти флопы для обычных целей и поэтому вся симулация валится.

Очень странно, с какого это перепугу он юзает эти FF для обычных целей... Попробуйте им поставить set_dont_use, чтобы DC забыл об этих ячейках. Но, вообще-то, он и не должен бы их ставить. Так что, присоединяясь к вопросу grigoryk - а что, в либе других FF нет?
starley
Клок победить так и не удалось. dont_touch_network, set_ideal_network не влияют - DC все равно задержки в местах нестандартного использования клока расчитывает неправильно crying.gif
Пока решил объявлять этот клок на выходе ИО буфера, это, вроде, ничему не противоречит.
Назрел еще один вопрос. Может, кто-нибудь подсказать как правильно работать с защелками или ссылку на методу дать. В частности, часть памяти предполагается реализовать на регистровых файлах, а они - защелки. Интересует их сопряжение с обычными тригерами, задание кострейнов, особенности выполнения STA и т. п.
SM
Цитата(starley @ Apr 29 2009, 13:58) *
Интересует их сопряжение с обычными тригерами, задание кострейнов, особенности выполнения STA и т. п.

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

Единственная особенность работы с защелками - их можно объявлять как transparent, если в данном месте важно время прохождения через открытую защелку, работающую как буфер, а не холды-сетапы защелки, как регистра, если, допустим, они априори выполнены. И то, если либа это поддерживает. Мне вот лично пришлось самому характеризовать защелку на транспарентный режим и править либу.
grigorik
Цитата(starley @ Apr 29 2009, 13:58) *
Клок победить так и не удалось. dont_touch_network, set_ideal_network не влияют - DC все равно задержки в местах нестандартного использования клока расчитывает неправильно crying.gif


starley!

Poprobui eto. Dumayu pomojet.
set_ideal_network [all_fanout -flat -clock_tree ]
Quater
Цитата(SM @ Apr 28 2009, 23:57) *
Очень странно, с какого это перепугу он юзает эти FF для обычных целей... Попробуйте им поставить set_dont_use, чтобы DC забыл об этих ячейках. Но, вообще-то, он и не должен бы их ставить. Так что, присоединяясь к вопросу grigoryk - а что, в либе других FF нет?


Все спосибо так и сделал.
Всё заработало.
starley
Цитата(SM @ Apr 29 2009, 14:37) *
Нет никаких особенностей. Если, например, триггер тактируется положительным фронтом, то защелка (с положительным разрешением), записывающая данные с его выхода, должна тактироваться гейтированным инверсным клоком, а триггер, записывающий в себя с выхода защелки, как правило, инверсным клоком (отрицательным фронтом).

Если напрямую с триггера брать - то понятно. А вот если между ними логика висит, ДЦ обеспечит стабильность данных к отрицательному фронту (для защелки с положительным разрешением)? Иными словами, в понимании ДЦ защелка в качестве регистра - это эдакий триггер запоминающий данные на полтакта? Причем если она не объявлена как прозрачная, то путь после нее в момент прозрачности в СТА не учитывается?
Quater
Подскажите пожалуста, почему STA не находит ни каких проблем в дизайне а симулатор постояно падает на холде.

Установил set_dont_touch, set_ideal_network.

Может еще чего нибудь надо добавить например

set_anotted_delay или еще чего.
SM
Цитата(Quater @ Apr 30 2009, 22:34) *
Может еще чего нибудь надо добавить например

например set_fix_hold. Как я понимаю по умолчанию DC холдами не занимается, это back-end-ово, холды фиксить. Так как непофиксенный холд на этапе синтеза запросто может оказаться корректным после разводки.
grigorik
Цитата(Quater @ Apr 30 2009, 22:34) *
Подскажите пожалуста, почему STA не находит ни каких проблем в дизайне а симулатор постояно падает на холде.

Установил set_dont_touch, set_ideal_network.

Может еще чего нибудь надо добавить например

set_anotted_delay или еще чего.


Esli u vas hold mejdu raznimi clock domainami to nichego STA ne pomojet poskolku vi zakrili glaza STA na pathi mejdu raznimi clock domainami.

foreach_in_collection clock [all_clocks] {
set_false_path -from $clock -to [remove_from_collection [all_clocks] [get_clocks $clock]]
}

Uberite set_false_path i plyus dobavte v DC (ili back end tool) to chto SM skazal.
SM
Цитата(starley @ Apr 30 2009, 22:01) *
Иными словами, в понимании ДЦ защелка в качестве регистра - это эдакий триггер запоминающий данные на полтакта? Причем если она не объявлена как прозрачная, то путь после нее в момент прозрачности в СТА не учитывается?

1. Если она не объявлена, как прозрачная, то комбинаторный путь через нее не учитывается вообще, она чисто регистр.
2. Если она объявлена как прозрачная, то она не регистр, а чисто буфер.
3. Если она регистр, то "рабочим фронтом", для которого регламентированы Tsu/Th для входа данных является задний фронт открывающего импульса (т.е. для латча, открытого единицей, тайминги setup_falling и hold_falling), а для выхода данных описаны unate (для моего примера positive_unate) тайминг по переднему фронту открывающего импульса, а также тайминг типа _edge (в моем примере rising_edge) от входа Enable. Так что DC в курсе событий, что сигнал на выход проходит по одному фронту, а фиксируется по другому. И обеспечит стабильность записываемого сигнала в момент окончания импульса записи.

ЗЫ. Формат Liberty ни для кого не секрет, сами посмотрите на описание латча в вашей либе, в ее исходнике, и увидите все-все-все про него, что и увидит DC.
sleep
Цитата(SM @ Apr 29 2009, 00:57) *
Очень странно, с какого это перепугу он юзает эти FF для обычных целей... Попробуйте им поставить set_dont_use, чтобы DC забыл об этих ячейках. Но, вообще-то, он и не должен бы их ставить. Так что, присоединяясь к вопросу grigoryk - а что, в либе других FF нет?

если собираетесь делать DFT в проекте, действительно, ставьте на скановые триггера dont_use.
насчет почему он юзает скановые вместо обычных - это он пытается запихнуть внутрь триггера часть ведущей его логики.
у сканового триггера по входу есть дополнительная логика, он выкусывает её из ведущей этот триггер логики и использует скановый триггер.
в принципе, проекты с таким подходом работают, не стоит DC ругать за такую инициативу )
SM
Цитата(sleep @ May 4 2009, 18:39) *
в принципе, проекты с таким подходом работают, не стоит DC ругать за такую инициативу )

Так там речь шла о каком-то некорекктном подключении сигнала Test Enable, что валило симуляцию. Вот за эту инициативу и ругали. А так бы конечно, пусть все использует, что по speed или area выгодно. Кстати, возможно, просто кривизна либов.
Quater
Добрый день Господа,,

Помогите пожалуста запустить вот этот FOR в DC

set clocks [list host_clk sys_clk]
set resets [list host_resetn sys_resetn]
set clock_periods [list 19 9]

for {set i 0} {$i < {expr [llength $clocks] -1}} {incr i} {
create_clock -name [lindex $clocks $i] -period [lindex $clock_periods $i] [get_ports [lindex $clocks $i]]
}

а то постояно говорит что -period can't be ''.

заранее благодарю.
SM
IMHO как-то так:

set clocks {host_clk sys_clk}
set resets {host_resetn sys_resetn}
set clock_periods {19 9}

for {set i 0} {$i < [llength $clocks]} {incr i} {
create_clock -name [lindex $clocks $i] -period [lindex $clock_periods $i] [get_ports [lindex $clocks $i]]
}
Quater
Большое спосибо,

вот так это работает

set clocks [list host_clk sys_clk]
set resets [list host_resetn sys_resetn]
set clock_periods [list 19 9]

for {set i 0} {$i < [llength $clocks]} {incr i} {
create_clock -name [lindex $clocks $i] -period [lindex $clock_periods $i] [get_ports [lindex $clocks $i]]
}


Тут у меня по ходу еще вопросик


почему он говорит что есть ФФ которые получают 2 клока, и что такое disable_timing?

заранее благодарю.
Quater
Дорогой СМ,

Подскожите пожалуста в чем разница между dc_shell-xg-t и dc_shell-t?

И почему DFT commands у них разные?

Спосибо.
SM
Касаемо нескольких клоков - я конечно не телепат, но по ходу дела у Вас там мультиплексор на клоки стоит, и у DC крышу снесло от того, по какому клоку что констрейнить. Я бы объявил set_clock_groups с ключиком asynchronous, чтобы оно запретило междоменные тайминги на этих клоках.

Что касается xg - так это была попытка у синопсиса перейти на другой формат базы данных. На сколько я знаю, на сегодня разницы нет, и XG-mode считается устаревшей, юзайте dc_shell-t и не заморачивайтесь smile.gif

PS.
Какого черта задание list-ов через фигурные скобки-то не работает? Обязано!
Quater
Спосибо большое за XG а то я думал что XG более продвинутая штука.
SM
Цитата(Quater @ Jul 31 2009, 23:40) *
а то я думал что XG более продвинутая штука.

Они и сами по началу так думали smile.gif
ArMouReR
Если я правильно понимаю, то они по прежнему так и думают:

From DC 2007.03 version onwards, DCSH mode is no longer supported

Так что сейчас DC работает в XG моде без лишних раговоров и по умолчанию начиная с 2005.09.
SM
Цитата(ArMouReR @ Aug 6 2009, 00:56) *
Так что сейчас DC работает в XG моде без лишних раговоров и по умолчанию начиная с 2005.09.

Не в XG моде, а в TCL моде. А XG-mode / DB-mode это совсем другое. Сейчас (с версии 2008.03), как и раньше, DC по умолчанию работает в db-mode, соответственно используя внутри стандартный синопсисовский db-формат базы данных, а не XG-шный ddc-формат. Однако поддерживает при этом все XG-команды. Так что будет правомерно и то, что сейчас единственным возможным режимом остался tcl-mode + db-mode если брать за основу формат базы данных, и, одновременно, можно сказать, что единственным режимом остался tcl-mode + xg-mode, если брать набор команд. Что касается 2007.03 - там DCSH убрали, оставив DCTCL, но XG/DB еще было.
ArMouReR
Цитата(SM @ Aug 6 2009, 00:33) *
единственным возможным режимом остался tcl-mode + db-mode если брать за основу формат базы данных, и, одновременно, можно сказать, что единственным режимом остался tcl-mode + xg-mode, если брать набор команд.

Ага, теперь понял есть разница... Спасибо за разъеснение.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.