Есть еще одна причина, по которой я люблю использовать без упаковки. При распаковке нет соблазна (и случайной возможности) рассматривать все имя массива как переменную и делать ошибочное присваивание. Также не существует возможности кровотечения из одного элемента в другой, когда вы, возможно, думаете, что получаете доступ к битам B элемента N, но в действительности вы можете обращаться к битам K элемента N и битам BK элемента N + -1. .
Моя философия состоит в том, чтобы хранить только вещи, которые принадлежат друг другу, как «единицу информации» в упакованном измерении. Все остальное в неупакованном измерении. Мышление по умолчанию следует распаковать и упаковать только то, что вам нужно.
Например, если у меня 9 портов, каждый из которых содержит 21 бит информации, я хотел бы объявить его как:
input logic [20:0] p1 [9];
Часть 20:0
представляет собой единицу информации, назначенную и отобранную вместе (номинально). Разделение этих битов разрушит протокол или символ порта. С другой стороны, изменение количества портов с 9 на, скажем, 16, не повлияет на характер информации в каждом порту, так что 9 портов действительно принадлежат мне в распакованном измерении.
Надеюсь, что это может дать вам парадигму для размышлений ... В этой парадигме вы будете удивлены, как много вещей начинают казаться неупакованными, которые вы всегда считали упакованными !!