OpenCores
URL https://opencores.org/ocsvn/ha1588/ha1588/trunk

Subversion Repositories ha1588

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /ha1588
    from Rev 35 to Rev 36
    Reverse comparison

Rev 35 → Rev 36

/trunk/sim/tsu/gmii_rx_bfm.v
35,7 → 35,7
end
assign #2 gmii_rxclk = gmii_rxclk_offset;
 
integer feeder_file_rx, r_rx;
integer feeder_file_rx, r_rx, s_rx;
integer start_addr_rx, end_addr_rx;
integer index_rx, num_rx;
reg eof_rx;
59,9 → 59,9
// test pcap file endian
r_rx = $fread(pcap_4bytes_rx, feeder_file_rx);
pcap_endian_rx = (pcap_4bytes_rx == 32'ha1b2c3d4)? 1:0;
$fseek(feeder_file_rx, -4, 1);
s_rx = $fseek(feeder_file_rx, -4, 1);
// skip pcap file header 24*8
$fseek(feeder_file_rx, 24, 1);
s_rx = $fseek(feeder_file_rx, 24, 1);
// read packet content
eof_rx = 0;
num_rx = 0;
69,7 → 69,7
begin : fileread_loop
// skip frame header (8+4)*8
start_addr_rx = $ftell(feeder_file_rx);
$fseek(feeder_file_rx, 8+4, 1);
s_rx = $fseek(feeder_file_rx, 8+4, 1);
// get frame length big endian 4*8
r_rx = $fread(packet_leng_rx, feeder_file_rx);
packet_leng_rx = pcap_endian_rx?
/trunk/sim/tsu/ptpdv2_rx.txt
0,0 → 1,83
5
20
25
27
29
36
43
53
62
63
71
74
80
87
88
91
101
103
107
118
119
120
128
141
146
152
159
166
167
170
171
184
195
197
198
200
202
212
214
221
234
236
256
261
268
278
287
290
317
341
385
386
388
389
390
391
393
394
395
396
398
399
400
401
402
403
404
405
406
407
408
409
410
411
413
414
415
416
418
419
420
421
422
/trunk/sim/tsu/gmii_tx_bfm.v
35,7 → 35,7
end
assign #2 gmii_txclk = gmii_txclk_offset;
 
integer feeder_file_tx, r_tx;
integer feeder_file_tx, r_tx, s_tx;
integer start_addr_tx, end_addr_tx;
integer index_tx, num_tx;
reg eof_tx;
59,9 → 59,9
// test pcap file endian
r_tx = $fread(pcap_4bytes_tx, feeder_file_tx);
pcap_endian_tx = (pcap_4bytes_tx == 32'ha1b2c3d4)? 1:0;
$fseek(feeder_file_tx, -4, 1);
s_tx = $fseek(feeder_file_tx, -4, 1);
// skip pcap file header 24*8
$fseek(feeder_file_tx, 24, 1);
s_tx = $fseek(feeder_file_tx, 24, 1);
// read packet content
eof_tx = 0;
num_tx = 0;
69,7 → 69,7
begin : fileread_loop
// skip frame header (8+4)*8
start_addr_tx = $ftell(feeder_file_tx);
$fseek(feeder_file_tx, 8+4, 1);
s_tx = $fseek(feeder_file_tx, 8+4, 1);
// get frame length big endian 4*8
r_tx = $fread(packet_leng_tx, feeder_file_tx);
packet_leng_tx = pcap_endian_tx?
/trunk/sim/tsu/tsu_queue_tb.v
45,12 → 45,6
rst = 1'b0;
#10 rst = 1'b1;
#20 rst = 1'b0;
 
fork
@(posedge BFM_RX.eof_rx);
@(posedge BFM_TX.eof_tx);
join
#100 $stop;
end
 
initial begin
119,23 → 113,61
.gmii_txdata(gmii_txdata)
);
 
integer rx_ptp_event_cnt;
integer rx_ptp_event_cnt, rx_ptp_mismatch_cnt;
integer ref_file_handle_rx, return_fscanf_rx, ref_num_rx;
initial begin
rx_ptp_event_cnt = 0;
rx_ptp_event_cnt = 0;
rx_ptp_mismatch_cnt = 0;
ref_file_handle_rx = $fopen("ptpdv2_rx.txt","r");
forever @(posedge DUT_RX.q_wr_en) begin
rx_ptp_event_cnt = rx_ptp_event_cnt + 1;
$display("%d", BFM_RX.num_rx);
return_fscanf_rx = $fscanf(ref_file_handle_rx, "%d", ref_num_rx);
if (BFM_RX.num_rx != ref_num_rx) begin
$warning("%d %d", BFM_RX.num_rx, ref_num_rx);
rx_ptp_mismatch_cnt = rx_ptp_mismatch_cnt + 1;
end
end
$fclose(ref_file_handle_rx);
end
 
integer tx_ptp_event_cnt;
integer tx_ptp_event_cnt, tx_ptp_mismatch_cnt;
integer ref_file_handle_tx, return_fscanf_tx, ref_num_tx;
initial begin
tx_ptp_event_cnt = 0;
tx_ptp_event_cnt = 0;
tx_ptp_mismatch_cnt = 0;
ref_file_handle_tx = $fopen("ptpdv2_tx.txt","r");
forever @(posedge DUT_TX.q_wr_en) begin
tx_ptp_event_cnt = tx_ptp_event_cnt + 1;
//$display("%d", BFM_TX.num_tx);
return_fscanf_tx = $fscanf(ref_file_handle_tx, "%d", ref_num_tx);
if (BFM_TX.num_tx != ref_num_tx) begin
$warning("%d %d", BFM_TX.num_tx, ref_num_tx);
tx_ptp_mismatch_cnt = tx_ptp_mismatch_cnt + 1;
end
end
$fclose(ref_file_handle_tx);
end
 
initial begin
fork
@(posedge BFM_RX.eof_rx);
@(posedge BFM_TX.eof_tx);
join
 
if (rx_ptp_event_cnt == 0)
$display("RX Parser Test Fail: found 0 PTP-EVENT!");
 
if (tx_ptp_event_cnt == 0)
$display("TX Parser Test Fail: found 0 PTP-EVENT!");
 
if (rx_ptp_mismatch_cnt > 0)
$display("Rx Parser Mismatch Found: RX-PTP-EVENT-MISMATCH = %d", rx_ptp_mismatch_cnt);
else if (tx_ptp_mismatch_cnt > 0)
$display("Tx Parser Mismatch Found: TX-PTP-EVENT-MISMATCH = %d", tx_ptp_mismatch_cnt);
else
$display("RX and TX Parser Test Pass:\n RX-PTP-EVENT = %d\n TX-PTP-EVENT = %d", rx_ptp_event_cnt, tx_ptp_event_cnt);
 
#100 $stop;
end
 
endmodule
 
/trunk/sim/tsu/ptpdv2_tx.txt
0,0 → 1,21
5
7
9
11
17
19
21
27
29
31
37
39
41
47
49
51
57
59
61
67
69
/trunk/sim/tsu/ReadMe.txt
0,0 → 1,9
This folder contains testbench for TSU module.
 
The PCAP files are read by the BFM to generate stimulus to the GMII interface.
The PCAP files can be filtered by "ptp.v2.messageid == 0x00 || ptp.v2.messageid == 0x02" and exported to TXT files as golden references.
 
The TX and RX TSU outputs are monitored and compared to the respective golden reference for the parser validation.
Any mismatch will be reported as Warning in the transcript.
 
When PCAP files are updated, the TXT files should be updated accordingly.

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.