Определение интерфейса внутри пакета

В IEEE Std 1800-2012 мы можем найти описание пакеты и такая информация:

Типы, сети, переменные, задачи, функции, последовательности, свойства и средства проверки могут быть объявлены внутри пакета.

Мне было интересно, есть ли какая-то особая причина, по которой интерфейсы не могут быть определены внутри пакета? Мне кажется, что это могло бы быть полезно, но, видимо, создатели стандарта не согласились бы.


person Qiu    schedule 08.08.2014    source источник


Ответы (1)


Основная причина связана с различными пространствами имен, которые существуют в SystemVerilog, и требованиями к отдельной компиляции. Interfaces являются одним из элементов дизайна (см. LRM 1800-2012 раздел 3.2 Элементы дизайна), определения которых существуют в собственном пространстве имен и не требуют компиляции перед использованием. Packages предназначались для типов, которые имеют определенные требования к порядку компиляции, а также создают отдельное пространство имен. Из-за различных редакций стандарта это первоначальное намерение могло быть утрачено.

Verilog имеет механизм configuration, который позволяет вам иметь разные реализации одних и тех же элементов дизайна, существующих в разных библиотеках.

person dave_59    schedule 08.08.2014
comment
+1 за контекст и первоначальный замысел могли быть утеряны! Так много асимметрии в правилах SystemVerilog для интерфейсов, пакетов, модулей, что тем, кто не участвует в комитете по стандартам, трудно понять или сделать выводы... Почему я не могу параметризовать пакет? Почему я не могу передать модуль или интерфейс в качестве параметра? Обычному пользователю это кажется недосмотром, но, возможно, это были сознательные решения! - person Chiggs; 13.08.2014
comment
SystemVerilog — отличный пример расползания функций. Каждая функция сама по себе кажется хорошей идеей, но в целом она делает ситуацию еще хуже из-за ненужной сложности. Это происходит не только в комитете, но и у поставщиков, которые либо внедряют расширения, либо ошибки, которые становятся расширениями, которые должны быть включены обратно в стандарт. - person dave_59; 13.08.2014
comment
Согласованный. С SV мы, похоже, пришли к чему-то, что все еще не допускает хороших абстракций для синтезируемого RTL, но также не является очень хорошим программным языком, что также делает проверку беспорядочной. - person Chiggs; 14.08.2014