почему я должен использовать распакованные векторы в System Verilog? - PullRequest
7 голосов
/ 04 февраля 2009

В ответ на этот вопрос о разнице между упакованными и неупакованными векторами в SV, зачем мне когда-нибудь использовать распакованные векторы? Упакованные векторы имеют следующие преимущества, которых нет у распакованных векторов:

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

Какое преимущество имеют распакованные векторы по сравнению с упакованными векторами?

Ответы [ 2 ]

10 голосов
/ 06 августа 2011

Есть еще одна причина, по которой я люблю использовать без упаковки. При распаковке нет соблазна (и случайной возможности) рассматривать все имя массива как переменную и делать ошибочное присваивание. Также не существует возможности кровотечения из одного элемента в другой, когда вы, возможно, думаете, что получаете доступ к битам B элемента N, но в действительности вы можете обращаться к битам K элемента N и битам BK элемента N + -1. .

Моя философия состоит в том, чтобы хранить только вещи, которые принадлежат друг другу, как «единицу информации» в упакованном измерении. Все остальное в неупакованном измерении. Мышление по умолчанию следует распаковать и упаковать только то, что вам нужно.

Например, если у меня 9 портов, каждый из которых содержит 21 бит информации, я хотел бы объявить его как:

input logic [20:0] p1 [9];

Часть 20:0 представляет собой единицу информации, назначенную и отобранную вместе (номинально). Разделение этих битов разрушит протокол или символ порта. С другой стороны, изменение количества портов с 9 на, скажем, 16, не повлияет на характер информации в каждом порту, так что 9 портов действительно принадлежат мне в распакованном измерении.

Надеюсь, что это может дать вам парадигму для размышлений ... В этой парадигме вы будете удивлены, как много вещей начинают казаться неупакованными, которые вы всегда считали упакованными !!

7 голосов
/ 11 июня 2009

Распакованные массивы существуют по нескольким причинам.

1) Упакованные массивы хранятся в памяти в виде непрерывной последовательности битов. В распакованных массивах каждый элемент может храниться независимо, что может повысить производительность моделирования.

2) Распакованные массивы могут быть типов, которые не являются битовыми векторами. Массивы целых чисел, байтов, событий, структур, классов и т. Д. Могут быть только распакованы.

3) Большинство методов манипулирования массивами работают только с неупакованными массивами.

4) Возможно, только распакованные массивы могут быть назначены с использованием литералов массива. Я не уверен.

Могут быть и другие причины.

...