Subject: RE: [sv-bc] left/right justified and patched with zero
From: Gover, Keith (keithg@model.com)
Date: Wed Nov 05 2003 - 00:40:24 PST
Hi Arturo,
I think your statement about assignments to unpacked arrays conflicts with what is stated in section 2.6. It states:
A string literal can be assigned to an unpacked array of characters,
and a zero termination is added like in C. If the size differs, it
is left justified.
byte c3 [0:12] = "hello world\n" ;
Therefore the assignment in Andy's example should be legal:
byte [0:13] pk = "hello world\n";
-Keith
--------------------------------------------------------
-- Keith Gover
-- Technical Marketing Engineer
-- Model Technology, Inc.
-- office: (503) 685-0896
-- mobile: (503) 703-2476
-- email: keithg@model.com
--------------------------------------------------------
------- __@ __@ __@ __@ __~@
----- _`\<,_ _`\<,_ _`\<,_ _`\<,_ _`\<,_
---- (*)/ (*) (*)/ (*) (*)/ (*) (*)/ (*) (*)/ (*)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"The Only Easy Day was Yesterday!"
-----Original Message-----
From: owner-sv-bc@eda.org [mailto:owner-sv-bc@eda.org]On Behalf Of
Arturo Salz
Sent: Wednesday, November 05, 2003 5:16 PM
To: Andy Tsay; Greg Jaxon
Cc: sv-bc@eda.org
Subject: Re: [sv-bc] left/right justified and patched with zero
Andy,
The declaration "byte [0:13] pk " is illegal.
Packed arrays can only be made of the single bit types (bit, logic, reg, wire,...).
The legal version of what I believe you want is:
bit [0:13][0:7] pk = "hello world\n";
And then
pk[0] is 0
pk[1] is 0
...
pk[12] is "d"
pk[13] is "\n"
The declaration "byte unpk[0:13]" is legal, but the assignment is illegal.
You could do the following:
byte unpk[0:13] = { "h", "e", "l", "l", ... "d", 0, 0 };
But then the sizes have to match, which is why I added 0,0 at the end.
Arturo
----- Original Message -----
From: "Andy Tsay" <andytsay@yahoo.com>
To: "Greg Jaxon" <Greg.Jaxon@synopsys.COM>
Cc: <sv-bc@eda.org>
Sent: Monday, November 03, 2003 5:13 PM
Subject: Re: [sv-bc] left/right justified and patched with zero
Hi,
Let me try to put it in another way.
For the following examples:
byte unpk[0:13] = "hello world\n";
byte [0:13] pk = "hello world\n";
What are the values for unpk[12], unpk[13], pk[0], and pk[1]?
Thanks,
Andy
--- Greg Jaxon <Greg.Jaxon@synopsys.com> wrote:
> Andy Tsay wrote:
>
> > byte unpk[0:13] = "hello world\n";
> > // same as unpk = {"hello world\n",8'b0, 8'b0}; ???
>
> Please ask this in the form
>
> // same as unpk = "hello world\n\0\0"; ???
>
> Since as posed it yields a length error trying to put three things into
> and array of 14 things.
>
> Greg Jaxon
>
>
This archive was generated by hypermail 2b28 : Wed Nov 05 2003 - 00:42:18 PST