2015-06-22 4 views
-1

Почему typedef нельзя использовать в локальном режиме в systemveriliog?Почему typedef нельзя использовать в локальных системах?

Я ссылки от http://www.asic-world.com/systemverilog/data_types7.html

У меня есть проблема, когда я использую структуру вместо ЬурейеЙ структуры. Почему он не используется?

+1

, какие именно проблемы/ошибки вы столкнулись, если вы используете только STRUCT вместо ЬурейеЕ? – Emman

ответ

0

Для вашего первого вопроса «почему typedef нельзя использовать локально?» Typedef может использоваться внутри любого модуля SystemVerilog и может быть доступен/инициализирован на основе наших потребностей. См Раздел 6.18, определяемые пользователем типы SV LRM IEEE 1800 - 2012

Вот один пример, который использует ЬурейеЕ внутри модуля

struct { //using struct without typedef 
    byte a; 
    reg b; 
    shortint unsigned c; 
} myStruct; 

module struct_data(); 

struct { 
    byte a; 
    reg b; 
    shortint unsigned c; 
} myLocalStruct = '{11,1,101}; 

typedef struct { //using typedef inside the module 
real r0, r1; 
int i0, i1; 
logic [ 7:0] opcode; 
logic [23:0] address; 
} instruction_word_t; 

instruction_word_t IW; 
assign IW = '{ real:1.0,default:0}; 

assign myStruct = '{10,0,100}; 

initial begin 
    #1; 
    $display ("a = %b b = %b c = %h", myStruct.a, myStruct.b, myStruct.c); 
    $display ("a = %b b = %b c = %h", myLocalStruct.a, myLocalStruct.b, myLocalStruct.c); 
    $display ("r0 = %b r1 = %d opcode = %h ,address = %h ",IW.r0, IW.r1, IW.opcode,IW.address); 
    #1 $finish; 
end 

endmodule 

Для вашего второго вопроса, то мы можем также использовать-структуру без использования ЬурейеЕ и я показал в пример выше.

выход кода выше

a = 00001010 b = 0 c = 0064 
a = 00001011 b = 1 c = 0065 
r0 = 00000000000000000000000000000001 r1 =   1 opcode = 00 ,address = 000000 
Смежные вопросы