From: Neil Korpusik (Neil.Korpusik@sun.com)
Date: Wed Feb 09 2005 - 17:32:16 PST
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.