[sv-ec] 1707 redux

From: Jonathan Bromley <jonathan.bromley_at_.....>
Date: Thu Jul 05 2007 - 10:17:27 PDT
hi SV-EC,

Last meeting I was actioned to update the 1707 proposal
(streaming concatenation operators).  I posted a couple
of queries to the reflector but got no response, so I've
taken some "ex cathedra" decisions based on a combination
of common sense, the examples in the existing LRM and 
de facto tool behaviour.  Attached (and uploaded to 
Mantis 1707) are two docs:

* proposal-1707-jb1.pdf:
Mantis proposal in the usual "what to change" format.

* clean-1707-jb1.pdf:
Since the changes are quite significant, I've rewritten the
whole of clause 11.4.15 as it would appear with the proposed
changes; I've also added to that the small changes implied
by Mantis 1384, which is very closely linked.

The potentially controversial points are:

(1) When the streaming operation traverses an unpacked
aggregate, does it stream and re-order each element of 
that aggregate individually, and then concatenate all
those result streams to form its final result?  Or does
it first concatenate all the elements into a single 
long bit-stream and then do its re-ordering on that?  
The original LRM text (just after the first example)
explicitly says "...causes each item to be streamed
individually", but current tools do the opposite, and
Dave Rich's proposal 1707_stream_slice.pdf agrees with
them ("the streams are concatenated into a single stream").
I've gone with the de-facto/Dave-Rich behaviour, contradicting
the existing LRM; it seems to me to make more sense.  None
of the LRM examples gives any clue about this.

(2) How is the slicing performed when right-to-left 
streaming is specified?  The LRM is silent, but its first
group of examples clearly expects slicing to begin at the
right (LSB), leaving a shorter slice at the MSB end. 
Existing tools agree with that example, as does the
"reference algorithm" I posted a couple of weeks ago;
no-one has yet taken issue with that.  However, Dave's 
proposal says "starting with the leftmost bit".  Again
I have chosen to write up the de facto behaviour, as 
captured in the original LRM examples - {<<{}} slices
from the RIGHT-hand end of the stream.

(3) I've written-up the stream concatenation in a
recursive algorithmic style.  Please check that I have 
correctly captured everyone's understanding.

(4) I appear to be in a minority of one in my concerns
about left-to-right streaming using {>>{}}.  The present
rules mean that slicing is irrelevant for this direction,
no re-ordering takes place, and the slice size is effectively
ignored.  I've made this explicit, following the consensus
of the last meeting, but I'd like to double-check that 
everyone is OK with it.

(5) I have not attempted to work my "reference algorithm"
into the proposal, as I believe I have now captured the 
intent clearly enough in the text.

Thanks

-- 
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

This e-mail and any  attachments are  confidential and Doulos Ltd. reserves 
all rights of privilege in  respect thereof. It is intended for the use of 
the addressee only. If you are not the intended recipient please delete it 
from  your  system, any  use, disclosure, or copying  of this  document is 
unauthorised. 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 Thu Jul 5 10:18:30 2007

This archive was generated by hypermail 2.1.8 : Thu Jul 05 2007 - 10:19:00 PDT