@@ -20,6 +20,7 @@ module XMLdecoder_test;
20
20
// Outputs
21
21
wire [7 :0 ] out;
22
22
wire outValid;
23
+ wire outEop;
23
24
wire isData;
24
25
wire isTag;
25
26
wire isTagName;
@@ -44,11 +45,11 @@ module XMLdecoder_test;
44
45
.CLOCK(CLOCK),
45
46
.in(stream),
46
47
.inValid(svalid),
47
- .reset(reset),
48
48
.inEop(eop),
49
49
50
50
.out(out),
51
51
.outValid(outValid),
52
+ .outEop(outEop),
52
53
.isData(isData),
53
54
.isTag(isTag),
54
55
.isComment(isComment),
@@ -71,9 +72,9 @@ module XMLdecoder_test;
71
72
always #5 CLOCK = ~ CLOCK;
72
73
integer file;
73
74
integer r;
74
- integer i;
75
+ integer i, x ;
75
76
integer overrun;
76
- reg [7 :0 ] outNoNL;
77
+ reg [7 :0 ] outNoNL, inNoNL ;
77
78
78
79
initial begin
79
80
@@ -95,52 +96,45 @@ module XMLdecoder_test;
95
96
96
97
$display ("Reading XML" );
97
98
$display (" ! comment, d data, t tag, n tagname, k tagkey, v tagvalue" );
98
- $display (" i in | out dp + - ! d t n k v stack 0 1 2 3 4 5 6 7" );
99
+ $display (" i e v in | v e out dp + - ! d t n k v stack 0 1 2 3 4 5 6 7" );
99
100
100
101
// Wait 100 ns for global reset to finish
101
102
#100 ;
102
103
eop <= $feof(file) != 0 ;
103
104
104
105
// stimulus
105
- while (~ eop || outValid ) begin
106
+ while (overrun > 0 ) begin
106
107
@(posedge CLOCK)
107
- stream <= $fgetc(file);
108
- svalid <= $feof(file) == 0 ;
109
- eop <= $feof(file) != 0 ;
108
+ x = $fgetc(file);
109
+ stream <= x ;
110
+ svalid <= $feof(file) == 0 && x != "#" ;
111
+ eop <= $feof(file) != 0 && overrun == 10 ;
110
112
i <= i+ 1 ;
111
- if ( ! svalid ) begin
113
+ if ( $feof(file) != 0 ) begin
112
114
overrun <= overrun - 1 ;
113
115
end
114
116
outNoNL = (out == 10 ) ? "." : out;
115
- $display (" %4d %b %x | %b %x %s %02d %b %b %b %b %b %b %b %b %1d %1d %1d %1d %1d %1d %1d %1d " ,
116
- i, svalid, stream,
117
- outValid, out, outNoNL, tagDepth, depthPush, depthPop, isComment, isData, isTag, isTagName, isTagKey, isTagValue,
117
+ inNoNL = (stream == 10 ) ? "." : stream;
118
+ $display (" %4d %b %b %x %s | %b %b %x %s %02d %b %b %b %b %b %b %b %b %1d %1d %1d %1d %1d %1d %1d %1d " ,
119
+ i, eop, svalid, stream, inNoNL,
120
+ outValid, outEop, out, outNoNL, tagDepth, depthPush, depthPop, isComment, isData, isTag, isTagName, isTagKey, isTagValue,
118
121
s0, s1, s2, s3, s4, s5, s6, s7);
119
122
120
- end
123
+ if (overrun == 5 ) begin
124
+ // just after EOP
125
+ if (s0 != 1 ) begin
126
+ $display ("should be exactly one root element" );
127
+ $finish_and_return(1 );
128
+ end
129
+ if (tagDepth != 0 ) begin
130
+ $display ("depth did not finish flat" );
131
+ $finish_and_return(1 );
132
+ end
133
+ end
121
134
122
- // post-test checks
123
- if (tagDepth != 0 ) begin
124
- $display ("depth did not finish flat" );
125
- $finish_and_return(1 );
126
- end
127
- if (s0 != 1 ) begin
128
- $display ("should be exactly one root element" );
129
- $finish_and_return(1 );
130
135
end
131
136
132
- @(posedge CLOCK)
133
- $display (" %4d %b %x | %b %x %s %02d %b %b %b %b %b %b %b %b %1d %1d %1d %1d %1d %1d %1d %1d " ,
134
- i, svalid, stream,
135
- outValid, out, outNoNL, tagDepth, depthPush, depthPop, isComment, isData, isTag, isTagName, isTagKey, isTagValue,
136
- s0, s1, s2, s3, s4, s5, s6, s7);
137
-
138
- @(posedge CLOCK)
139
- $display (" %4d %b %x | %b %x %s %02d %b %b %b %b %b %b %b %b %1d %1d %1d %1d %1d %1d %1d %1d " ,
140
- i, svalid, stream,
141
- outValid, out, outNoNL, tagDepth, depthPush, depthPop, isComment, isData, isTag, isTagName, isTagKey, isTagValue,
142
- s0, s1, s2, s3, s4, s5, s6, s7);
143
-
137
+ // post-test checks
144
138
if (tagDepth != 0 ) begin
145
139
$display ("depth did not reset" );
146
140
$finish_and_return(1 );
0 commit comments