Doka 4 19 апреля, 2018 Опубликовано 19 апреля, 2018 · Жалоба 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/Женуса Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shivers 0 20 апреля, 2018 Опубликовано 20 апреля, 2018 · Жалоба Различают архитектурный клок-гейтинг (тот что ручками вставляется дизайнером ртл), и как элемент техники лоу пауер. Новых тенденций тут нет уже лет 15 как, используют и тот и другой подход, смотря что хочется получить на выходе. Пример кода с триггером - это обычный флоп с разрешением записи, а вот реализация его может разниться: можно флоп с разрешением поставить, а можно флоп без разрешения, но с клок-гейтом - так схема будет меньше потреблять, но увеличится дерево клока. Если хочется клок-гейты где то генерить, а где то нет, то используют иерархический синтез с разными настройками синтезатора в разных иерархиях. Советую почитать учебники по лоу пауер, там много полезного есть и для просто разработчиков rtl (не вникая в физ дизайн). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Losik 1 20 апреля, 2018 Опубликовано 20 апреля, 2018 · Жалоба Раньше в RC делалось так. В мануалах можно уточнить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Doka 4 3 мая, 2018 Опубликовано 3 мая, 2018 · Жалоба Если хочется клок-гейты где то генерить, а где то нет, то используют иерархический синтез с разными настройками синтезатора в разных иерархиях. да, есть такое в Генусе, спасибо. Советую почитать учебники по лоу пауер, там много полезного есть и для просто разработчиков rtl (не вникая в физ дизайн). а есть что-то помимо LPMM от Синопсис? Раньше в RC делалось так. В мануалах можно уточнить. Спасибо! Заметил, что в нетлист попадают технолого-зависимые примитивы ICG уже на этапе генерик-синтеза, что как-то странно - они там единственные из технологозависимых примитивов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Losik 1 3 мая, 2018 Опубликовано 3 мая, 2018 · Жалоба offtop: Решили перейти из синопсис флоу на кэденс или для себя балуетесь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Doka 4 3 мая, 2018 Опубликовано 3 мая, 2018 · Жалоба /* offtop: на новом месте кейденс всем больше по душе */ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
topor_topor 0 4 ноября, 2018 Опубликовано 4 ноября, 2018 · Жалоба Насколько я понимаю, тулза анализирует схему статически - т.е. ей пофигу когда и в какой последовательности чтото может приходить (как и при STA). Тулза смотрит есть ли общий сигнал (по функции - enable, но с любым именем) который разрешает запись в группу тригеров и ставит туда клок-гейти (если число тригеров не меньше N). Почему не ставит в конкретном случае - трудно сказать без RTL Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться