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

[полу]авто-ClockGating в ASIC

1. раньше ClockGating вставляли ручками, получалось коряво, но худо-бедно работало, напр:

Код
`ifdef FPGA
  BUFGCE (.I(clk_in), .O(clk_out), .CE(enable));
   // or use:
   // assign clk_out = clk_in;
`else
   CLNGTX1 (.ci(clk_in), .co(clk_out), .e(enable), .te(test_en));
`endif


- таким образом вставляются обычно технологозависимые штуки, некий workaround для того, чтобы синтезировать под разные технологии (ПЛИС/СБИС) но неудобно - смешивается технологозависимая и технологонезависимая части РТЛ, не очень с точки зрения методологии.

2. потом появилась автоматическая вставка ClockGating, когда тул синтеза сам анализирует конструкции наподобие таких:

Код
reg [31:0] a;
always @(posedge clk)
if (rst)
  a <= 0;
else if (enable)
  a <= b;


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

3. Мой случай:
есть память, реализованная на россыпи триггеров (достаточно маленькая, чтобы делать ее как HardMacro)
алгоритм работы таков: в память производится запись (один раз за всё время работы), после чего эта память используется на чтение 5тактов в алгоритме, цикл которого 100 тактов, есть желание всё остальное время эти триггеры выключать, однако автоматически это сделать проблематично: из-за того что синтезатор не понимает как быть с сигналом записи памяти - он приходит в абсолютно произвольный момент (по его анализу), т.е. авто-ClockGating по понятной причине не срабатывает, а вручную (как в пп.1) ставить ячейки клог-гейта не хочется, поэтому вопрос:


может появилось какое-то средство/директива/прагма/команда/проч. для гайда синтезатору:
мол, эта группа регистров должна гейтиться по клоку этим сигналом?
Мне это нужно только для целевой технологии (ASIC), в ПЛИС и поведенческой симуляции этого не надо, поэтому реализовать такое в скрипте синтеза под ASIC было бы оптимальным решением.

PS: Если говорить про конкретный синтез, то интересует как это делается средствами RC/Женуса

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


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

Советую почитать учебники по лоу пауер, там много полезного есть и для просто разработчиков rtl (не вникая в физ дизайн).

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


Ссылка на сообщение
Поделиться на другие сайты
Раньше в RC делалось так. В мануалах можно уточнить.






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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Shivers @ Apr 20 2018, 15:28) <{POST_SNAPBACK}>
Если хочется клок-гейты где то генерить, а где то нет, то используют иерархический синтез с разными настройками синтезатора в разных иерархиях.

да, есть такое в Генусе, спасибо.

Цитата(Shivers @ Apr 20 2018, 15:28) <{POST_SNAPBACK}>
Советую почитать учебники по лоу пауер, там много полезного есть и для просто разработчиков rtl (не вникая в физ дизайн).

а есть что-то помимо LPMM от Синопсис?

Цитата(Losik @ Apr 20 2018, 15:48) <{POST_SNAPBACK}>
Раньше в RC делалось так. В мануалах можно уточнить.


Спасибо!
Заметил, что в нетлист попадают технолого-зависимые примитивы ICG уже на этапе генерик-синтеза, что как-то странно - они там единственные из технологозависимых примитивов

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


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

offtop: Решили перейти из синопсис флоу на кэденс или для себя балуетесь?

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


Ссылка на сообщение
Поделиться на другие сайты
/* offtop: на новом месте кейденс всем больше по душе */

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти