[sv-bc] hex number in string literal

From: Krishanu Debnath <krishanu_at_.....>
Date: Thu Mar 23 2006 - 08:15:18 PST
Hello,

This has been discussed before(http://www.eda.org/sv-bc/hm/1539.html), But I
still don't find the normative answer. Lets try again.

Here is the Chapter & Verse(CV) from standard about special string character -
hex number.

3.6 String literals
[...]  SystemVerilog adds the following special string characters:
\v vertical tab
\f form feed
\a bell
\x02 hex number

Sec 4.7 String data type shows an example of hex number in string literal.

[page 20]

bit [10:0] a = "\x41"; // assigns to a ‘b000_0100_0001

But It does not mandate about the number of hex digits required. is it 2?

Please note that Verilog 2005 draft is very clear about how many characters
are required to specify octal digits in string literal. Here is the CV from
Verilog 2005 draft ...

Sec 3.6.3 Special characters in strings

\ddd A character specified in 1–3 octal digits (0 ? d ? 7).

If less than three characters are used, the following character shall not be an
octal digit. Implementations may issue an error if the character represented is
greater than \377.

Now consider this example: (note the embedded comments)

module sample;

     string s;

     initial
     begin
         s = "\x41";  // this means now s is "A". ASCII value of A is 0x41.
         $display("value of s %s \n", s);

         s = "\x4142"; // does this mean s is "A42" ?
         $display("value of s %s \n", s);

         s = "\x41\x42"; // does this mean s is "AB" ?
         $display("value of s %s \n", s);

         s = "\x4"; // less than two characters followed by x, so it will be not
                    // treated as hex number.
         $display("value of s %s \n", s);
     end
endmodule

Does the above make sense?

Krishanu

-- 
"The C++ standard is full of compromises, so as life.  Not everyone likes all of 
them."
Received on Thu Mar 23 08:14:27 2006

This archive was generated by hypermail 2.1.8 : Thu Mar 23 2006 - 08:14:44 PST