|HOME |ABOUT |ARTICLES |ACK |FEEDBACK |TOC |LINKS |BLOG |JOBS |


Tutorials



PACKING N UNPACKING

Packing and Unpacking Packing performs concatenation of scalars, strings, list elements, or struct fields in the order that you specifyUnpacking performs the reverse operation, splitting a single expression into multiple expressions.



Packing.High

Places the least significant bit of the last physical field declared or the highest list item at index [0] in the resulting list of bit.  


EXAMPLE:
<'
struct instruction {
%opcode : uint (bits : 3);
%operand : uint (bits : 5);
%address : uint (bits : 8);
!data_packed_high : list of bit;
keep opcode == 0b100;
keep operand == 0b11001;
keep address == 0b00001111;

do_packs () is {
data_packed_high = pack(packing.high, opcode, operand);
};
};

extend sys {
instruction : instruction;
run() is also {
instruction.do_packs();
print instruction;
print "----------------------------";
out (" %b \n",instruction.data_packed_high );
}
};
'>


RESULT:

  instruction = instruction-@0: instruction
                                                        @test
0       %opcode:                        4
1       %operand:                       25
2       %address:                       15
3       !data_packed_high:              (8 items)
  "----------------------------" = "----------------------------"
 %b
1 0 0 1 1 0 0 1


Packing.Low

Places the least significant bit of the first physical field declared or lowest list item at index [0] in the resulting list of bit.  

 Syntax Example    i_stream = pack(packing.high, opcode, operand1, operand2);


EXAMPLE:
<'
struct instruction {
%opcode : uint (bits : 3);
%operand : uint (bits : 5);
%address : uint (bits : 8);
!data_packed_low : list of bit;
keep opcode == 0b100;
keep operand == 0b11001;
keep address == 0b00001111;

do_packs () is {
data_packed_low = pack(packing.low, opcode, operand);
};
};

extend sys {
instruction : instruction;
run() is also {
instruction.do_packs();
print instruction;
print "----------------------------";
out (" %b \n",instruction.data_packed_low );
}
};
'>

RESULT:

 instruction = instruction-@0: instruction
                                                        @test
0       %opcode:                        4
1       %operand:                       25
2       %address:                       15
3       !data_packed_low:               (8 items)
  "----------------------------" = "----------------------------"
 %b
0 0 1 1 0 0 1 1


Index
Introduction
E Basics
Data Types
Operators
Struct
Units
List
Methods
Concurrency Actions
Constraints
Extend
When And Like
Events
Temporal Expressions
Temporal Operators 1
Temporal Operators 2
Synchronizing With The Simulator
Wait And Sync
Physical Virual Feilds
Packing N Unpacking
Pre Run N On The Fly
Coverage
Commands
Extendable Methods
Non Extendable Methods
And Gate Evc

Report a Bug or Comment on This section - Your input is what keeps Testbench.in improving with time!





<< PREVIOUS PAGE

TOP

NEXT PAGE >>

copyright © 2007-2017 :: all rights reserved www.testbench.in::Disclaimer