Subject: [sv-cc] Draft 5 Changes Review Request - 4-state part select indexing
From: Duncan, Ralph (ralph_duncan@mentorg.com)
Date: Tue Feb 24 2004 - 14:07:52 PST
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 - 14:12:42 PST