[sv-bc] streaming operator: svlog LRM

From: Kapil Kaushik <kkapil_at_.....>
Date: Wed Jul 18 2007 - 23:35:07 PDT
Hi,

 

I was looking at the streaming operator section (8.17) in the system
verilog LRM.

 

In the LRM there are two statements:

1. The result of the pack operation can be assigned directly to any
bit-stream type variable. As defined in section 4.16, a bit-stream type
is a type consisting of the following:

- Any integral, packed, or string type

- Unpacked arrays, structures, or classes of the above types

- Dynamically sized arrays (dynamic, associative, or queues) of any of
the above types

2. The stream is not an integral value; to participate in an expression,
a cast is required. 

 

 

I am a bit confused as to what [1] and [2] would mean together. Consider
the following test case:

 

Typdef Struct{

            logic a;

            logic b;

} myType

 

Typdef Struct{

            logic a;

            logic b;

            logic c;

            logic d;

} myType

 

 

Module test(input myType in1, input myType in2, output myType out1
[1:0], output logic[3:0] out2, output out3);

            assign out1 = {>>{in1, in2}}; 

            assign out2 = {>>{in1, in2}};

            assign out3 = {>>{in1, in2}};

endmodule

 

Would all the assignment statements work? Also, what would be type of
"{>>{in1,in2}}" every time? (What does [2] mean?? - it is not an
integral value!!)

 

Thanks,

Kapil

 


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Wed Jul 18 23:33:29 2007

This archive was generated by hypermail 2.1.8 : Wed Jul 18 2007 - 23:35:29 PDT