2016-12-20 3 views
1

В руководстве пользователя QuestaSIM в версии 10.5a говорится на странице 336:Как управлять несколькими типами объектов в сети в AMS?

In the most recent SystemVerilog standard (Std IEEE 1800-2012), two important concepts were established:

User-Defined Nettype (UDN) — UDN allows a definition of a net type that can carry arbitrarily complex data using a built-in type (such as real) or a user-defined type (such as struct). Consequently, UDN is a generalization of the wreal net type from Verilog-AMS. In order to allow connectivity of models that rely on UDNs, a more generic connectivity mechanism is needed—the interconnect object.

Но они действительно не уточняют, как строится УДН. Синтаксические ссылки на «nettype» и «interconnect», похоже, близки к этому описанию, но не выполняют его - я не могу назначить межсоединение, и я не могу использовать свои собственные типы с nettype. Я создаю модель, которая должна управлять пользовательскими объектами на UDN, как определено в спецификации.

module SomeModel(output nettype ObjectContainingProperties outputToInterconnect); 

class ObjectContainingProperties; 

endclass 

ObjectContainingProperties ocp; 
assign outputToInterconnect=ocp; 

initial begin 
    ocp=new(); 
end 

endmodule 

, но я получаю сообщение об ошибке:

QuestaSim-64 vlog 10.5a Compiler 2016.04 Apr 4 2016 
Start time: 18:55:05 on Dec 19,2016 
vlog -ams -wireasinterconnect SomeModel.sv 
-- Compiling module SomeModel 
** Error: (vlog-13069) SomeModel.sv(11): near "nettype": syntax error, unexpected nettype, expecting IDENTIFIER. 

Как создать и прикрепить объект к УДН - что синтаксис? Или как я могу надежно управлять объектами разных типов в сети?

+0

Текст, который вы цитируете, не соответствует стандарту IEEE 1800-2012. Вы посмотрели пример в разделе _6.6.7 Определенные пользователем nettypes_? –

+0

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

+0

У вас есть руководство IEEE 1800-2012? –

ответ

2

Определенные пользователем сетевые типы не являются частью системы системы OOP class SystemVerilog. Вы можете определять типы неттипов, которые являются структурами или массивами, содержащими комбинации бит или действительных чисел. Классы используются только для доступа к параметризованным функциям. (См. 13.8 Параметризированные задачи и функции).

Вы можете использовать только подобные типы в сети. Если посмотреть на прототип функции разрешения (из раздела 6.6.7)

function automatic T Tsum (input T driver[]); 

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

Конструкция interconnect - это всего лишь кабель для подключения. Он будет считать тип того, с чем он когда-либо подключен, и вы не сможете подключать сигналы с разными типами нетто к тому же interconnect

+0

Справедливости ради стоит сказать, что если я буду подклассифицировать все из T, то мои объекты могут применяться без проблем? Итак, по существу создавая базовый NetTypeObject, из которого все наследуется? Я предполагаю, что это работает с несколькими драйверами, использующими «с» в качестве разрешения. – Joe

+0

За исключением того, что T не может быть типом класса. –

+0

Итак, похоже, что вождение сети с определенными пользователем типами не поддерживается. Чтобы обойти это, если бы у меня был синглтон в верхней части экрана и выталкивали значения в сети, значение в сети могло бы быть ключом поиска для объекта? Это справедливо? – Joe