2014-12-08 2 views
0

Множественное наследование - это очень общая концепция OOPS, то почему она не реализована в systemverilog и разрешено только одно наследование?Наследование и виртуальный интерфейс в systemverilog?

2. Почему интерфейсы не допускаются внутри класса? Это из-за реализации хранилища, такого как динамическое хранилище в классе и статичного в модулях, программах, интерфейсе?

ответ

4

Это действительно должно быть два отдельных сообщения для двух разных вопросов. К сожалению, ключевое слово интерфейс будет использоваться для ответа на оба из них с совершенно разными значениями.

Я написал 2010 DVCon paper, описывающий некоторые причины, по которым множественное наследование не было в исходном SystemRerilog LRM и возможные решения. SystemVerilog 1800-2012 добавила несколько наследования класса интерфейса, а вот a link - хорошее описание этой функции. Это использование ключевого слова интерфейса как своего рода класс не имеет ничего общего с интерфейсом в вашем втором вопросе.

В основном вы правы, почему экземпляры интерфейсов не допускаются в классах. Интерфейс SV очень похож на элементы дизайна модуль и программа, которые являются экземплярами иерархических контейнеров. В процессе разработки эти контейнеры сглаживаются перед началом моделирования. Экземпляры класса создаются только во время выполнения, выполняя процедурный код.

Процесс разработки относится к языкам описания аппаратных средств и является частью процесса генерации и репликации кода. Это также позволяет вам иерархически ссылаться на сигналы по всему дизайну без использования указателей. Объекты класса, с другой стороны, ссылаются только на динамически созданные дескрипторы.

+0

В вашей статье вы упомянули проблему алмазной формы, но все же в C++ мы ее разрешаем с помощью концепции виртуального класса, поэтому будет создана только одна копия. Так что-то вроде этого невозможно в systemverilog ?? И для ответа виртуального интерфейса я не могу понять, как поведение времени выполнения класса связано с тем, что не допускает интерфейс в классе, потому что в конечном итоге все, что касается памяти, будет выделено только во время выполнения? –

+0

К сожалению, классы, создаваемые во время выполнения, означают, что параметризованные функции обычно не поддерживаются инструментами синтеза (за исключением DC). Существует очень сильный аргумент в отношении контейнера с параметризацией времени разработки, такого как пакет, который должен быть добавлен к языку, поскольку, как представляется, невозможно убедить производителей синтеза поддержать классы для этой цели. – Chiggs

+0

С языком, разработанным комитетом, все возможно, а некоторые вещи невозможны. Независимо от того, что добавлено к языку, для принятия решений требуется время и деньги. @maheshShah, я добавлю дополнительную информацию выше –