RE: [sv-bc] semantics of unpack operation

From: Jonathan Bromley <jonathan.bromley_at_.....>
Date: Wed Sep 12 2007 - 10:13:04 PDT
[Sending this for the second time, since the first 
attempt didn't seem to make it to the reflector]


> The lrm should define the semantics of the unpack operation.
> The pack operation (streaming on the rhs) is defined well
> enough, but nothing is said about the unpack operation.

I attempted to address this in Mantis 1707: the new text for
11.4.15.3 says 

  When a streaming_concatenation appears as the target of an 
  assignment, the streaming operators perform the reverse operation;

With hindsight it might have been better to say "inverse" rather
than "reverse".  I believe that the definition of packing in
1707 is now both unambiguous and invertible (apart from possible
information loss through 4-state to 2-state conversion).

There is, I think, a possible approach to a rigorous 
definition - here's a sketch:
  
  Let S be an expression conforming to the syntax production 
  "streaming_concatenation".

  Let B be a variable of some bitstream type.
  Let C be a variable of identical type to B.
  Further, let the number of bits in B be equal to the 
  number of bits yielded by S, so that the pack operation
    B = S;
  writes to all bits of B with no surplus bits and with
  no padding required.

  The unpack operation 
    S = B;
  behaves so that, after sequential execution of the following
  procedural statements, and for arbitrary initial contents of S:
    B = S;  // pack, possible 4-to-2-state conversion
    S = B;  // unpack
    C = S;  // pack the results of unpack to a different variable
  the contents of B and C shall be identical.

This definition is flawed because it would be satisfied by
an implementation of S=B; that failed to write to the variables
that comprise S.  Otherwise, though, I think it's OK.

I agree that the current LRM text and the Mantis 1707 revision both
fall somewhat short here, but 
 - I am unable to imagine a different interpretation that 
   would make any sense;
 - I have failed in my attempts to write a definition of unpack
   that is less obscure;
 - I don't see the style of definition presented here as being
   something that would fit with the rest of the LRM.

Suggestions welcomed!
-- 
Jonathan Bromley, Consultant

DOULOS - Developing Design Know-how
VHDL * Verilog * SystemC * e * Perl * Tcl/Tk * Project Services

Doulos Ltd. Church Hatch, 22 Market Place, Ringwood, Hampshire, BH24 1AW, UK
Tel: +44 (0)1425 471223                   Email: jonathan.bromley@doulos.com
Fax: +44 (0)1425 471573                           Web: http://www.doulos.com

The contents of this message may contain personal views which 
are not the views of Doulos Ltd., unless specifically stated.

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Wed Sep 12 10:13:30 2007

This archive was generated by hypermail 2.1.8 : Wed Sep 12 2007 - 10:13:38 PDT