Re: Query related to escaped character in verilog

From: Neil Korpusik (Neil.Korpusik@sun.com)
Date: Wed Feb 09 2005 - 17:32:16 PST

  • Next message: Neil Korpusik: "Re: Query related to escaped character in verilog"

    I ran a small experiment using two different simulators. Both of them
    produced the same results. Both of them are converting a leading zero and
    a leading NUL into a space. ASCII 0 is the only ASCII character that
    appears to be getting converted into a space (ASCII decimal 32). All of the
    other characters are printed out "as-is". All of the ASCII decimal 10's that
    are showing up in the output file are from new-line characters.

       ascii.file is the output from the simulator.
       output is the output from the small c program.

    You can't really tell what value is being displayed by the simulator
    for many of the ASCII characters just by looking at the results on the screen.
    Many of them look just like a space. We are able to see exactly what ASCII
    character is being written out by reading them back in with a C program.

    VerilogXL was one of the simulators that I ran.

    --------------------< Verilog code with $display for strings >-------------

    module m;
    integer i;
    reg [15:0] a,b;

    initial
    begin
    for (i=0;i<127;i=i+1) // ASCII is 0:127
    begin
        a = i;
        b = {"\0",i};
        $display("%s%s", a,b); // a has leading 0's and b has a leading NUL
    end
    end

    endmodule

    --------------------< c code to read in simulator output >-------------

    #include <stdio.h>

    main() {
       int done;
       char *fname = "ascii.file";
       char *nc_p;
       char buf[2];
       FILE *fd;

       fd = fopen(fname,"r");
       if (!fd) {
          printf("unable to open %s\n",fname);
       } else {
          printf("file %s was opened for reading\n",fname);

          for (done=0; !done; done = (nc_p==NULL)) {
             nc_p = fgets(buf, 2, fd);
             printf("'%c' decimal=%d\n",buf[0],buf[0]);
          }
       }
    }

    Steven Sharp wrote:
    >>17.1.1.7 String format
    >>
    >> "No termination character or value is required at the end of a string, and
    >> leading zeros are never printed."
    >
    >
    > This text came directly from the Verilog-XL Reference Manual, word for word.
    > So however the text is interpreted, the intent of the standard was to match
    > Verilog-XL here.
    >
    > This may have been an error in the XL documentation, or it may have been
    > intended to be interpreted as Shalom suggested: like decimal numbers, leading
    > zeroes are not printed, but are replaced with spaces instead.
    >
    > Steven Sharp
    > sharp@cadence.com
    >

    -- 
    ---------------------------------------------------------------------
    Neil Korpusik                                     Tel: 408-720-4852
    Staff Engineer                                    Fax: 408-720-4850
    Frontend Technologies - ASICs & Processors (FTAP)
    Sun Microsystems
    email: neil.korpusik@sun.com
    ---------------------------------------------------------------------
    

      
      
      
      
      
      
      
      
                      
     
     

     
     
     
     
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
        
     ! !
     " "
     # #
     $ $
     % %
     & &
     ' '
     ( (
     ) )
     * *
     + +
     , ,
     - -
     . .
     / /
     0 0
     1 1
     2 2
     3 3
     4 4
     5 5
     6 6
     7 7
     8 8
     9 9
     : :
     ; ;
     < <
     = =
    > >
     ? ?
     @ @
     A A
     B B
     C C
     D D
     E E
     F F
     G G
     H H
     I I
     J J
     K K
     L L
     M M
     N N
     O O
     P P
     Q Q
     R R
     S S
     T T
     U U
     V V
     W W
     X X
     Y Y
     Z Z
     [ [
     \ \
     ] ]
     ^ ^
     _ _
     ` `
     a a
     b b
     c c
     d d
     e e
     f f
     g g
     h h
     i i
     j j
     k k
     l l
     m m
     n n
     o o
     p p
     q q
     r r
     s s
     t t
     u u
     v v
     w w
     x x
     y y
     z z
     { {
     | |
     } }
     ~ ~

    file ascii.file was opened for reading
    ' ' decimal=32
    '' decimal=1
    ' ' decimal=32
    '' decimal=1
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=2
    ' ' decimal=32
    '' decimal=2
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=3
    ' ' decimal=32
    '' decimal=3
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=4
    ' ' decimal=32
    '' decimal=4
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=5
    ' ' decimal=32
    '' decimal=5
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=6
    ' ' decimal=32
    '' decimal=6
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=7
    ' ' decimal=32
    '' decimal=7
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=8
    ' ' decimal=32
    '' decimal=8
    '
    ' decimal=10
    ' ' decimal=32
    ' ' decimal=9
    ' ' decimal=32
    ' ' decimal=9
    '
    ' decimal=10
    ' ' decimal=32
    '
    ' decimal=10
    ' ' decimal=32
    '
    ' decimal=10
    '
    ' decimal=10
    ' ' decimal=32
    ' ' decimal=11
    ' ' decimal=32
    ' ' decimal=11
    '
    ' decimal=10
    ' ' decimal=32
    ' ' decimal=12
    ' ' decimal=32
    ' ' decimal=12
    '
    ' decimal=10
    ' ' decimal=32
    '
    ' decimal=13
    ' ' decimal=32
    '
    ' decimal=13
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=14
    ' ' decimal=32
    '' decimal=14
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=15
    ' ' decimal=32
    '' decimal=15
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=16
    ' ' decimal=32
    '' decimal=16
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=17
    ' ' decimal=32
    '' decimal=17
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=18
    ' ' decimal=32
    '' decimal=18
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=19
    ' ' decimal=32
    '' decimal=19
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=20
    ' ' decimal=32
    '' decimal=20
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=21
    ' ' decimal=32
    '' decimal=21
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=22
    ' ' decimal=32
    '' decimal=22
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=23
    ' ' decimal=32
    '' decimal=23
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=24
    ' ' decimal=32
    '' decimal=24
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=25
    ' ' decimal=32
    '' decimal=25
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=26
    ' ' decimal=32
    '' decimal=26
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=27
    ' ' decimal=32
    '' decimal=27
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=28
    ' ' decimal=32
    '' decimal=28
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=29
    ' ' decimal=32
    '' decimal=29
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=30
    ' ' decimal=32
    '' decimal=30
    '
    ' decimal=10
    ' ' decimal=32
    '' decimal=31
    ' ' decimal=32
    '' decimal=31
    '
    ' decimal=10
    ' ' decimal=32
    ' ' decimal=32
    ' ' decimal=32
    ' ' decimal=32
    '
    ' decimal=10
    ' ' decimal=32
    '!' decimal=33
    ' ' decimal=32
    '!' decimal=33
    '
    ' decimal=10
    ' ' decimal=32
    '"' decimal=34
    ' ' decimal=32
    '"' decimal=34
    '
    ' decimal=10
    ' ' decimal=32
    '#' decimal=35
    ' ' decimal=32
    '#' decimal=35
    '
    ' decimal=10
    ' ' decimal=32
    '$' decimal=36
    ' ' decimal=32
    '$' decimal=36
    '
    ' decimal=10
    ' ' decimal=32
    '%' decimal=37
    ' ' decimal=32
    '%' decimal=37
    '
    ' decimal=10
    ' ' decimal=32
    '&' decimal=38
    ' ' decimal=32
    '&' decimal=38
    '
    ' decimal=10
    ' ' decimal=32
    ''' decimal=39
    ' ' decimal=32
    ''' decimal=39
    '
    ' decimal=10
    ' ' decimal=32
    '(' decimal=40
    ' ' decimal=32
    '(' decimal=40
    '
    ' decimal=10
    ' ' decimal=32
    ')' decimal=41
    ' ' decimal=32
    ')' decimal=41
    '
    ' decimal=10
    ' ' decimal=32
    '*' decimal=42
    ' ' decimal=32
    '*' decimal=42
    '
    ' decimal=10
    ' ' decimal=32
    '+' decimal=43
    ' ' decimal=32
    '+' decimal=43
    '
    ' decimal=10
    ' ' decimal=32
    ',' decimal=44
    ' ' decimal=32
    ',' decimal=44
    '
    ' decimal=10
    ' ' decimal=32
    '-' decimal=45
    ' ' decimal=32
    '-' decimal=45
    '
    ' decimal=10
    ' ' decimal=32
    '.' decimal=46
    ' ' decimal=32
    '.' decimal=46
    '
    ' decimal=10
    ' ' decimal=32
    '/' decimal=47
    ' ' decimal=32
    '/' decimal=47
    '
    ' decimal=10
    ' ' decimal=32
    '0' decimal=48
    ' ' decimal=32
    '0' decimal=48
    '
    ' decimal=10
    ' ' decimal=32
    '1' decimal=49
    ' ' decimal=32
    '1' decimal=49
    '
    ' decimal=10
    ' ' decimal=32
    '2' decimal=50
    ' ' decimal=32
    '2' decimal=50
    '
    ' decimal=10
    ' ' decimal=32
    '3' decimal=51
    ' ' decimal=32
    '3' decimal=51
    '
    ' decimal=10
    ' ' decimal=32
    '4' decimal=52
    ' ' decimal=32
    '4' decimal=52
    '
    ' decimal=10
    ' ' decimal=32
    '5' decimal=53
    ' ' decimal=32
    '5' decimal=53
    '
    ' decimal=10
    ' ' decimal=32
    '6' decimal=54
    ' ' decimal=32
    '6' decimal=54
    '
    ' decimal=10
    ' ' decimal=32
    '7' decimal=55
    ' ' decimal=32
    '7' decimal=55
    '
    ' decimal=10
    ' ' decimal=32
    '8' decimal=56
    ' ' decimal=32
    '8' decimal=56
    '
    ' decimal=10
    ' ' decimal=32
    '9' decimal=57
    ' ' decimal=32
    '9' decimal=57
    '
    ' decimal=10
    ' ' decimal=32
    ':' decimal=58
    ' ' decimal=32
    ':' decimal=58
    '
    ' decimal=10
    ' ' decimal=32
    ';' decimal=59
    ' ' decimal=32
    ';' decimal=59
    '
    ' decimal=10
    ' ' decimal=32
    '<' decimal=60
    ' ' decimal=32
    '<' decimal=60
    '
    ' decimal=10
    ' ' decimal=32
    '=' decimal=61
    ' ' decimal=32
    '=' decimal=61
    '
    ' decimal=10
    ' ' decimal=32
    '>' decimal=62
    ' ' decimal=32
    '>' decimal=62
    '
    ' decimal=10
    ' ' decimal=32
    '?' decimal=63
    ' ' decimal=32
    '?' decimal=63
    '
    ' decimal=10
    ' ' decimal=32
    '@' decimal=64
    ' ' decimal=32
    '@' decimal=64
    '
    ' decimal=10
    ' ' decimal=32
    'A' decimal=65
    ' ' decimal=32
    'A' decimal=65
    '
    ' decimal=10
    ' ' decimal=32
    'B' decimal=66
    ' ' decimal=32
    'B' decimal=66
    '
    ' decimal=10
    ' ' decimal=32
    'C' decimal=67
    ' ' decimal=32
    'C' decimal=67
    '
    ' decimal=10
    ' ' decimal=32
    'D' decimal=68
    ' ' decimal=32
    'D' decimal=68
    '
    ' decimal=10
    ' ' decimal=32
    'E' decimal=69
    ' ' decimal=32
    'E' decimal=69
    '
    ' decimal=10
    ' ' decimal=32
    'F' decimal=70
    ' ' decimal=32
    'F' decimal=70
    '
    ' decimal=10
    ' ' decimal=32
    'G' decimal=71
    ' ' decimal=32
    'G' decimal=71
    '
    ' decimal=10
    ' ' decimal=32
    'H' decimal=72
    ' ' decimal=32
    'H' decimal=72
    '
    ' decimal=10
    ' ' decimal=32
    'I' decimal=73
    ' ' decimal=32
    'I' decimal=73
    '
    ' decimal=10
    ' ' decimal=32
    'J' decimal=74
    ' ' decimal=32
    'J' decimal=74
    '
    ' decimal=10
    ' ' decimal=32
    'K' decimal=75
    ' ' decimal=32
    'K' decimal=75
    '
    ' decimal=10
    ' ' decimal=32
    'L' decimal=76
    ' ' decimal=32
    'L' decimal=76
    '
    ' decimal=10
    ' ' decimal=32
    'M' decimal=77
    ' ' decimal=32
    'M' decimal=77
    '
    ' decimal=10
    ' ' decimal=32
    'N' decimal=78
    ' ' decimal=32
    'N' decimal=78
    '
    ' decimal=10
    ' ' decimal=32
    'O' decimal=79
    ' ' decimal=32
    'O' decimal=79
    '
    ' decimal=10
    ' ' decimal=32
    'P' decimal=80
    ' ' decimal=32
    'P' decimal=80
    '
    ' decimal=10
    ' ' decimal=32
    'Q' decimal=81
    ' ' decimal=32
    'Q' decimal=81
    '
    ' decimal=10
    ' ' decimal=32
    'R' decimal=82
    ' ' decimal=32
    'R' decimal=82
    '
    ' decimal=10
    ' ' decimal=32
    'S' decimal=83
    ' ' decimal=32
    'S' decimal=83
    '
    ' decimal=10
    ' ' decimal=32
    'T' decimal=84
    ' ' decimal=32
    'T' decimal=84
    '
    ' decimal=10
    ' ' decimal=32
    'U' decimal=85
    ' ' decimal=32
    'U' decimal=85
    '
    ' decimal=10
    ' ' decimal=32
    'V' decimal=86
    ' ' decimal=32
    'V' decimal=86
    '
    ' decimal=10
    ' ' decimal=32
    'W' decimal=87
    ' ' decimal=32
    'W' decimal=87
    '
    ' decimal=10
    ' ' decimal=32
    'X' decimal=88
    ' ' decimal=32
    'X' decimal=88
    '
    ' decimal=10
    ' ' decimal=32
    'Y' decimal=89
    ' ' decimal=32
    'Y' decimal=89
    '
    ' decimal=10
    ' ' decimal=32
    'Z' decimal=90
    ' ' decimal=32
    'Z' decimal=90
    '
    ' decimal=10
    ' ' decimal=32
    '[' decimal=91
    ' ' decimal=32
    '[' decimal=91
    '
    ' decimal=10
    ' ' decimal=32
    '\' decimal=92
    ' ' decimal=32
    '\' decimal=92
    '
    ' decimal=10
    ' ' decimal=32
    ']' decimal=93
    ' ' decimal=32
    ']' decimal=93
    '
    ' decimal=10
    ' ' decimal=32
    '^' decimal=94
    ' ' decimal=32
    '^' decimal=94
    '
    ' decimal=10
    ' ' decimal=32
    '_' decimal=95
    ' ' decimal=32
    '_' decimal=95
    '
    ' decimal=10
    ' ' decimal=32
    '`' decimal=96
    ' ' decimal=32
    '`' decimal=96
    '
    ' decimal=10
    ' ' decimal=32
    'a' decimal=97
    ' ' decimal=32
    'a' decimal=97
    '
    ' decimal=10
    ' ' decimal=32
    'b' decimal=98
    ' ' decimal=32
    'b' decimal=98
    '
    ' decimal=10
    ' ' decimal=32
    'c' decimal=99
    ' ' decimal=32
    'c' decimal=99
    '
    ' decimal=10
    ' ' decimal=32
    'd' decimal=100
    ' ' decimal=32
    'd' decimal=100
    '
    ' decimal=10
    ' ' decimal=32
    'e' decimal=101
    ' ' decimal=32
    'e' decimal=101
    '
    ' decimal=10
    ' ' decimal=32
    'f' decimal=102
    ' ' decimal=32
    'f' decimal=102
    '
    ' decimal=10
    ' ' decimal=32
    'g' decimal=103
    ' ' decimal=32
    'g' decimal=103
    '
    ' decimal=10
    ' ' decimal=32
    'h' decimal=104
    ' ' decimal=32
    'h' decimal=104
    '
    ' decimal=10
    ' ' decimal=32
    'i' decimal=105
    ' ' decimal=32
    'i' decimal=105
    '
    ' decimal=10
    ' ' decimal=32
    'j' decimal=106
    ' ' decimal=32
    'j' decimal=106
    '
    ' decimal=10
    ' ' decimal=32
    'k' decimal=107
    ' ' decimal=32
    'k' decimal=107
    '
    ' decimal=10
    ' ' decimal=32
    'l' decimal=108
    ' ' decimal=32
    'l' decimal=108
    '
    ' decimal=10
    ' ' decimal=32
    'm' decimal=109
    ' ' decimal=32
    'm' decimal=109
    '
    ' decimal=10
    ' ' decimal=32
    'n' decimal=110
    ' ' decimal=32
    'n' decimal=110
    '
    ' decimal=10
    ' ' decimal=32
    'o' decimal=111
    ' ' decimal=32
    'o' decimal=111
    '
    ' decimal=10
    ' ' decimal=32
    'p' decimal=112
    ' ' decimal=32
    'p' decimal=112
    '
    ' decimal=10
    ' ' decimal=32
    'q' decimal=113
    ' ' decimal=32
    'q' decimal=113
    '
    ' decimal=10
    ' ' decimal=32
    'r' decimal=114
    ' ' decimal=32
    'r' decimal=114
    '
    ' decimal=10
    ' ' decimal=32
    's' decimal=115
    ' ' decimal=32
    's' decimal=115
    '
    ' decimal=10
    ' ' decimal=32
    't' decimal=116
    ' ' decimal=32
    't' decimal=116
    '
    ' decimal=10
    ' ' decimal=32
    'u' decimal=117
    ' ' decimal=32
    'u' decimal=117
    '
    ' decimal=10
    ' ' decimal=32
    'v' decimal=118
    ' ' decimal=32
    'v' decimal=118
    '
    ' decimal=10
    ' ' decimal=32
    'w' decimal=119
    ' ' decimal=32
    'w' decimal=119
    '
    ' decimal=10
    ' ' decimal=32
    'x' decimal=120
    ' ' decimal=32
    'x' decimal=120
    '
    ' decimal=10
    ' ' decimal=32
    'y' decimal=121
    ' ' decimal=32
    'y' decimal=121
    '
    ' decimal=10
    ' ' decimal=32
    'z' decimal=122
    ' ' decimal=32
    'z' decimal=122
    '
    ' decimal=10
    ' ' decimal=32
    '{' decimal=123
    ' ' decimal=32
    '{' decimal=123
    '
    ' decimal=10
    ' ' decimal=32
    '|' decimal=124
    ' ' decimal=32
    '|' decimal=124
    '
    ' decimal=10
    ' ' decimal=32
    '}' decimal=125
    ' ' decimal=32
    '}' decimal=125
    '
    ' decimal=10
    ' ' decimal=32
    '~' decimal=126
    ' ' decimal=32
    '~' decimal=126
    '
    ' decimal=10
    '
    ' decimal=10



    This archive was generated by hypermail 2.1.4 : Wed Feb 09 2005 - 17:14:05 PST and
    sponsored by Boyd Technology, Inc.