реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Использование разных библиотек стандартных ячеек в одном проекте
Fat Robot
сообщение Oct 23 2014, 21:47
Сообщение #1


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



Добрый день.

Сейчас эту задачу приходится решеать разделением проекта на уровне RTL на две части. Первую синтезировать с библиотекой 12t, вторую с 7t. Синтез и timing closure приходится делать фактически для двух проектов. Еще дополнительно нужна сшивка цепочек сканирования. В общем боль и несправедливость..

Подскажите, если какие-то сдвиги в этом направлении? Может есть что-то автоматическое?
Go to the top of the page
 
+Quote Post
Shivers
сообщение Oct 24 2014, 03:23
Сообщение #2


Знающий
****

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



Сам не пробовал, но в маршруте кеданса есть такая возможность. Почитайте про CPF и разделение доменов питания. Но RTL в любом случае придется бить иерархически.
Go to the top of the page
 
+Quote Post
aht
сообщение Jan 16 2015, 13:43
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 96
Регистрация: 11-01-10
Из: Moscow
Пользователь №: 54 725



Цитата(Fat Robot @ Oct 24 2014, 00:47) *
Добрый день.

Сейчас эту задачу приходится решеать разделением проекта на уровне RTL на две части. Первую синтезировать с библиотекой 12t, вторую с 7t. Синтез и timing closure приходится делать фактически для двух проектов. Еще дополнительно нужна сшивка цепочек сканирования. В общем боль и несправедливость..

Подскажите, если какие-то сдвиги в этом направлении? Может есть что-то автоматическое?

А какой маршрут? DC+Encounter?
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 16 2015, 21:17
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Fat Robot @ Oct 24 2014, 00:47) *
Подскажите, если какие-то сдвиги в этом направлении? Может есть что-то автоматическое?


А поподробнее можно, по части того, по какому принципу требуется часть ячеек брать из одной библиотеки, а часть из другой? Я как-то делал сам себе библиотеку, вырезая из двух нужные мне ячейки и собирая в одну. Собственно, это задача не особо сложная.
Go to the top of the page
 
+Quote Post
Shivers
сообщение Jan 17 2015, 09:51
Сообщение #5


Знающий
****

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



Я так понимаю, проблема только в высоте ячеек. Если есть два блока на одном уровне иерархии, причем один надо делать на 12t, а второй на 7t, то и синтез и BE можно делать в один заход. Но для этого надо вводить информацию о пауер-доменах. Как это выглядит: один блок объявляется одним пауер доменом, с библиотекой 12t, а второй блок - объявляется вторым доменом с библиотекой 7t. Тот факт, что питание может совпадать, ничего не меняет - тул начинает блюсти, чтобы элементы одного домена не попали во второй домен. У каденса это маршрут с CPF, у синопсиса UPF. А поскольку UPF недавно признали стандартом IEEE, то каденс по идее должен и с CPF работать. В общем, читайте юзергайды по lowpower, они хорошо описаны и у синопсиса и у каденса.
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Jan 17 2015, 21:18
Сообщение #6


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



Спасибо за ответы. Буду смотреть upf-cpf. Маршрут: rc+encounter.

В моем случае этот подход нужен для уменьшения площади кристалла.

Принцип разбиения простой: проект на уровне rtl делится на 2 части на верхнем уровне иерархии. Блоки с высокой тактовой объединяются и синтезируются под быструю, но менее компактную 12t-библиотеку. А 'медленные' блоки синтезируются под медленную, но более компактную 7t, при этом 'быстрая' часть подключается в 'медленную', как black box.

Как я писал, если делать 'в лоб', то объём работы увеличивается уже на этапе синтеза. Что там на этапе back end, я представляю лишь в общих чертах: 2 разных сетки для линий питания в одном проекте.
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 18 2015, 17:08
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Fat Robot @ Jan 18 2015, 00:18) *
Принцип разбиения простой: проект на уровне rtl делится на 2 части на верхнем уровне иерархии. Блоки с высокой тактовой объединяются и синтезируются под быструю, но менее компактную 12t-библиотеку. А 'медленные' блоки синтезируются под медленную, но более компактную 7t, при этом 'быстрая' часть подключается в 'медленную', как black box.


Тогда, кроме upf/ucf, есть еще вариант, как такое раньше делали. Та часть, которая выглядит как black box, синтезируется отдельно, и разводится совершенно отдельно, получается IP-блок, который при разводке для роутера выглядит черным ящиком с пинами, как, например, блоки памяти, сгенерированные memory compiler-ом, или всякие покупные запчасти.
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Jan 18 2015, 18:01
Сообщение #8


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



Именно об этом подходе идет речь в моем исходном сообщении.

"Совершенно отдельно" - это верно лишь умозрительно. На практике же все оборачивается значительным количеством итераций синтеза для обеих частей проекта.

Цитата(SM @ Jan 18 2015, 18:08) *
Тогда, кроме upf/ucf, есть еще вариант, как такое раньше делали. Та часть, которая выглядит как black box, синтезируется отдельно, и разводится совершенно отдельно, получается IP-блок, который при разводке для роутера выглядит черным ящиком с пинами, как, например, блоки памяти, сгенерированные memory compiler-ом, или всякие покупные запчасти.

Go to the top of the page
 
+Quote Post
SM
сообщение Jan 18 2015, 18:16
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Fat Robot @ Jan 18 2015, 21:01) *
Именно об этом подходе идет речь в моем исходном сообщении.


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

Насчет автоматизации синтеза при таком подходе "в лоб" - это ведь получается классический bottom-up синтез вроде, то есть, по терминологии Synopsys DC, compile-characterize-write_script-recompile - в этом автоматизация и заключается. Но, процесс итеративный, тут уж никуда не деться.
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Jan 18 2015, 18:42
Сообщение #10


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



Все бы ничего, но вот только этот "блочок" около 40% площади занимает. Так что на стороне back-end'a тоже не праздник.

В общем, буду смотреть маршруты, предлагаемые для low power. Всем спасибо!

Цитата(SM @ Jan 18 2015, 19:16) *
Это да, я лишь добавил, что делать при таком подходе с backend-ом. Там все это вырождается в относительно несложную задачу разводки IP-блочка и подключения его потом как единого и неделимого. Он делается со своей сеткой и со своими кольцами, и потом "встает" куда-то в другую сетку, "пробивая" в ней соответствующую брешь, в любое удобное место.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 02:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01438 секунд с 7
ELECTRONIX ©2004-2016