Отличаются ли результаты синтеза упакованных и неупакованных массивов в SystemVerilog?

Разницу между упакованными и неупакованными массивами я понимаю в SystemVerilog (7.4 LRM).

У меня есть двумерный массив, который я могу закодировать с одним из измерений как упакованным или распакованным.

Интуитивно я бы попытался закодировать это измерение настолько распакованным, насколько оно кажется более аккуратным, но мне интересно, есть ли на самом деле какая-то разница в синтезе между ними.


person WestHamster    schedule 30.07.2019    source источник


Ответы (2)


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

person dave_59    schedule 30.07.2019

Для синтеза все будет сглажено. Все иерархии, массивы (упакованные, неупакованные) будут сведены к минимуму и будет сгенерирован только один файл.

Вот пример -

Упакованная и неупакованная сеть в RTL -

logic [15:0] next_image_r_p2 [3:0][3:0];         // Pipeline Stage - 2

После Синтеза (Для next_image_r_p2[3][3] net и аналогичных для других) -

wire     next_image_r_p2_3__3__10_, next_image_r_p2_3__3__9_,
         next_image_r_p2_3__3__8_, next_image_r_p2_3__3_7_,
         next_image_r_p2_3__3__6_, next_image_r_p2_3__3__5_,
         next_image_r_p2_3__3__4_;

Таким образом, как упакованные, так и неупакованные, инструмент будет рассматривать их только как одну цепь (в данном случае 4*4*16 = 256 цепей).

person Karan Shah    schedule 01.08.2019