Subject: [sv-cc] RE: Draft 5 Changes Review Request - part select
From: David W. Smith (dwsmith@synopsys.com)
Date: Tue Feb 24 2004 - 15:30:13 PST
Per Swapnajits guidance I will wait for the change from him. I need to know section etc... as well.
Regards
David
-----Original Message-----
From: Andrzej Litwiniuk [mailto:ail@Synopsys.COM] 
Sent: Tuesday, February 24, 2004 3:28 PM
To: David.Smith@Synopsys.COM; Duncan Ralph
Cc: doug_warmke@mentor.com; sv-cc@eda.org; stuart@sutherland-hdl.com
Subject: Re: Draft 5 Changes Review Request - part select
David,
Please use Ralph's wording:
"In part select operations, the data is copied to or from the
 canonical representation part designated by range [w-1:0] and 
 the implementation representation part designated by range [w+i-1:i]."
Ralph and I agreed that no other changes are required.
Thanks, Ralph, for rephrasing my wording! I like your version much better.
Regards,
Andrzej
> 
> > ...It was intended that a normalized range [n-1:0] would be always
> > used for part select in canonical representation array.
> 
> First, thanks for your well-timed remarks, which pinpoint a matter 
> that's drawn our recent attention, too.  There appear to be at least 
> two potential problems: lack of clarity and (depending on interpretation)
> possible lack of symmetry in operations.
> 
> 1. Clarity 
> 'svGetPartSelectLogic' can write to a canonical array destination, 
> rather than just to a 'chunk' (i.e., to "svLogicVec32*", rather than to a
> parameter of type svLogicVec32).  The current prototype is:
> 
> 	void svGetPartSelectLogic(svLogicVec32* d,
> 		const svLogicPackedArrRef s, int i, int w);
> 
> >From the comment text as it now stands, we cannot tell whether we are 
> writing the contents of implementation array [w+i-1:i] to the corresponding
> bits of the canonical array or to its bits [w-1:0] as you suggest.
> 
> 2. Operation Symmetry
> The companion operation, svPutPartSelectLogic, has no such ambiguity.  
> Since it copies from a single canonical 'chunk' "svLogicVec32 s", the part
> must run from [w-1:0], with w <= 32.  If this were not so, we could start at
> some non-zero lower index and overshoot the chunk's legal upper index.
> 
> 	void svPutPartSelectLogic(svLogicPackedArrRef d,
> 		 const svLogicVec32 s, int i, int w);
> 
> 3. Conclusion
> I support your interpretation, which would make the two operations
> symmetrical,
> since both would unambiguously move data to or from a canonical
> representation chunk.
> Therefore, I'd suggest:
> 
> a. Changing the svGetPartSelectLogic parameters to use a 'chunk' as
> destination
>    (remove the "*") in both E.10.3.2 and F.1:
> 
> 	void svGetPartSelectLogic(svLogicVec32 d,
> 		const svLogicPackedArrRef s, int i, int w);
> 
> > "The selected range in canonical representation will always 
> > be [w-1:0] and [w+i-1:i] in implementation representation array."
> > or:
> > "Part select will be copied between [w-1:0] range in canonical
> representation 
> > and [w+i-1:i] in implementation representation."
> 
> . The content is fine but I'd suggest a somewhat more idiomatic expression:
> 
> 	"In part select operations, the data is copied to or from the
> canonical 
>  	representation part designated by range [w-1:0] and the 
>       implementation representation part designated by range [w+i-1:i]."
>  
> Thanks and hope this is helpful,
> Ralph Duncan
> Mentor Graphics
> 
This archive was generated by hypermail 2b28 : Tue Feb 24 2004 - 15:35:14 PST