2016-09-19 2 views
1

В Systemveilog есть ли способ передать переменную типа перечисления в другие модули? То есть, чтобы определить переменную типа enum как входной или выходной. Есть ли какой-нибудь пример?Перечислимый тип ввода или вывода

+1

Вы искали примеры в бесплатном IEEE Std 1800-2012? – toolic

+0

IEEE Std 1800-2012: https://standards.ieee.org/getieee/1800/download/1800-2012.pdf – wilcroft

ответ

2

Да, вы можете это сделать, но вам нужно использовать typedef в общем пакете, чтобы сделать присвоение перечислений совместимым. Затем вы можете использовать перечисление в порте, как и любой тип данных.

package myCommon; 
    typedef enum {ONE,TWO} e_t; 
endpackage 
module first import myCommon::*; (output e_t p1); 
endmodule 
module second import myCommon::*; (input e_t p2); 
endmodule 
module top; 
    import myCommon::*; 
    e_t e; 
    first f(.p1(e)); 
    second s(.p2(e)); 
endmodule 
+1

Работало. Благодарю. Я думаю, вы имели в виду typedef enum {ONE, TWO} e_t; в коде. Кстати, любая идея, как эта вещь будет синтезирована? Я хочу использовать этот тип перечисления для обозначения разных состояний. В старом программировании стиля я могу использовать регистр и параметр для создания метки состояния. Я знаю, что он будет синтезирован как регистры. Но для этого я понятия не имею. – Nan

+1

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

Смежные вопросы