почему мне следует использовать распакованные векторы в System Verilog?

StackOverflow https://stackoverflow.com/questions/511542

  •  21-08-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top