Hello All,
module top;
initial begin
bit data_source [];
byte unsigned pack_data[];
data_source = new[3];
pack_data = new[2];
for(int i = 0 ; i < (data_source.size()) ; i++)begin
if ((i %2) == 0)data_source[i] = 1'b1;
$display("INITIALIZED VALUE OF DATA SOURCE [%d] = 0x%x",i,data_source[i]);
end
foreach(pack_data[i])$display("\nUNINITIALIZED VALUE OF PACKED ARRAY[%d] = 0x%x",i,pack_data[i]);
// Casting Little endianess
pack_data = {<<{data_source}};
foreach(pack_data[i])$display("\nVALUE OF {LITTLE ENDIAN} PACKED ARRAY[%d] = 0x%x",i,pack_data[i]);
// Casting BIG endianess
pack_data = {>>{data_source}};
foreach(pack_data[i])$display("\nVALUE OF {BIG ENDIAN} PACKED ARRAY[%d] = 0x%x",i,pack_data[i]);
end
endmodule:top
generates the following results:
Both the little endian and big endian results same ???
INITIALIZED VALUE OF DATA SOURCE [ 0] = 0x1
INITIALIZED VALUE OF DATA SOURCE [ 1] = 0x0
INITIALIZED VALUE OF DATA SOURCE [ 2] = 0x1
UNINITIALIZED VALUE OF PACKED ARRAY[ 0] = 0x00
UNINITIALIZED VALUE OF PACKED ARRAY[ 1] = 0x00
VALUE OF {LITTLE ENDIAN} PACKED ARRAY[ 0] = 0xa0
VALUE OF {BIG ENDIAN} PACKED ARRAY[ 0] = 0xa0
but if keeping data_source = new[any even number]; // lets say keeping it 4
the following results looks fine
VALUE OF {LITTLE ENDIAN} PACKED ARRAY[ 0] = 0x50
VALUE OF {BIG ENDIAN} PACKED ARRAY[ 0] = 0xa0
Can anybody help me with this ??
Thanks ,
KS