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

 
 
> [полу]авто-ClockGating в ASIC, последние тенденции
Doka
сообщение Apr 19 2018, 08:45
Сообщение #1


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



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/Женуса


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 10:00
Рейтинг@Mail.ru


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