RE: [sv-ec] random resizing of associative array

From: Ryan, Ray <Ray_Ryan_at_.....>
Date: Wed May 17 2006 - 14:16:49 PDT
It seems to me that there is little benefit to allowing
resizing of associative arrays. As I understand Arturo's
description, the result is the same as if a dynamic array
is randomized with a size constraint. 
That is:
 a) a random size is selected
 b) all the existing array elements are deleted
 c) 'size' new array element are created (where size is
    the selected random size). These elements are 
    indexed by 0,1,...(size-1).
 d) The values of the elements are then randomized.

If this is the desired behavior, a dynamic array should 
be used.

To truly randomize an associative array I like Arturo's
method of randomizing two dynamic arrays (one for the
indices, the other for the value) - and then combining 
them to form the associative array. With this approach, 
constraints can be applied to the indices as well as
the values.

If re-sizing of associative array is allowed, I believe
many Users would expect behavior other than the dynamic
array model. I would also expect questions (enhancement
requests) about how to constrain the indices. I think 
it would be a better to simply not allow resizing of 
associative arrays - and recommend the two array method instead.


Regarding the discussion about re-sizing an dynamic array 
of class handles. Issue #889 proposes that if the element
type is a class handle, re-sizing is not supported. In
this case, the value of array.size() is treated as state value.

- Ray


> -----Original Message-----
> From: Vreugdenhil, Gordon 
> Sent: Wednesday, May 17, 2006 1:35 PM
> To: Arturo Salz
> Cc: Ryan, Ray; sv-ec@eda.org
> Subject: Re: [sv-ec] random resizing of associative array
> 
> That mostly answers my questions but leaves one important 
> issue open.  If I have indices (1, 3, 5) referring to 
> non-null class objects and specify a size constraint of 3, is 
> that an error?
> I am not "resizing" but would be "reorganizing" the indices.  
> From a user perspective, this doesn't require class 
> construction so if we define it to be illegal (equivalent to 
> requiring class construction) then this needs to be made 
> explicit.  If this is legal then I would wonder about the 
> rules for determining the reinsertion order.
> At the same time the LRM should clarify whether it is legal 
> if the indices were already (0, 1, 2).
> 
> Gord.
> 
> 
> Arturo Salz wrote:
> 
> > Gord,
> > 
> > Your example should end up with an array of size 3, whose 
> indices are 
> > (0, 1, 2), and the contents are randomized according to any 
> constraint.
> > That's why I wrote that constraining the size of an 
> associative array 
> > can be treated in the same way as a dynamic array.
> > 
> > If the element type is a class type then the array cannot 
> grow in size 
> > because the solver doesn't know how to create the 
> additional objects.
> > Object creation as part of the constraint solution is a whole 
> > different discussion, which would lead to several enhancements.
> > 
> > 	Arturo
> 
> --
> --------------------------------------------------------------------
> Gordon Vreugdenhil                                503-685-0808
> Model Technology (Mentor Graphics)                gordonv@model.com
> 
Received on Wed May 17 14:16:40 2006

This archive was generated by hypermail 2.1.8 : Wed May 17 2006 - 14:17:02 PDT