URL
https://opencores.org/ocsvn/ha1588/ha1588/trunk
Subversion Repositories ha1588
Compare Revisions
- This comparison shows the changes necessary to convert path
/ha1588/trunk/sim/top
- from Rev 23 to Rev 24
- ↔ Reverse comparison
Rev 23 → Rev 24
/sim.sh
1,8 → 1,15
quit -sim |
|
vlib altera |
vdel -lib altera -all |
vlib work |
vdel -lib work -all |
|
vlib altera |
# compile vendor dependent files |
vlog -work altera altera_mf.v |
|
vlib work |
|
# compile vendor independent files |
vlog -work work ../../rtl/top/ha1588.v +initreg+0 |
vlog -work work ../../rtl/reg/reg.v +initreg+0 |
11,13 → 18,14
vlog -work work ../../rtl/tsu/ptp_queue.v +initreg+0 |
vlog -work work ../../rtl/tsu/ptp_parser.v +initreg+0 |
|
# compile vendor dependent files |
vlog -work work altera_mf.v |
|
# compile testbench files |
vlog -work work -sv ha1588_tb.v |
|
# compile driver bfm files |
# compile nic driver bfm files |
vlog -work work -sv nic_drv_bfm/gmii_rx_bfm.v |
vlog -work work -sv nic_drv_bfm/gmii_tx_bfm.v |
|
# compile ptp driver bfm files |
vlog -work work -sv ptp_drv_bfm/ptp_drv_bfm.v |
|
# compile driver bfm files |
32,6 → 40,7
gcc -shared -Bsymbolic -o ptp_drv_bfm_c.so ptp_drv_bfm.o |
|
vsim -novopt \ |
-L altera \ |
-sv_lib ptp_drv_bfm_c \ |
-t ps \ |
ha1588_tb |
40,4 → 49,4
radix -hexadecimal |
do wave.do |
|
run 10000ns |
run 50000ns |
/ptp_drv_bfm/ptp_drv_bfm.c
32,7 → 32,7
cpu_data_i = 0x0; |
cpu_wr(cpu_addr_i, cpu_data_i); |
cpu_addr_i = 0x00000000; |
cpu_data_i = 0x10; |
cpu_data_i = 0xA10; |
cpu_wr(cpu_addr_i, cpu_data_i); |
// LOAD RTC SEC AND NS |
cpu_addr_i = 0x00000010; |
76,7 → 76,11
cpu_addr_i = 0x00000000; |
cpu_data_i = 0x1; |
cpu_wr(cpu_addr_i, cpu_data_i); |
cpu_rd(cpu_addr_i, &cpu_data_o); |
do { |
cpu_addr_i = 0x00000000; |
cpu_rd(cpu_addr_i, &cpu_data_o); |
//printf("%08x\n", (cpu_data_o & 0x1)); |
} while ((cpu_data_o & 0x1) == 0x0); |
cpu_addr_i = 0X00000040; |
cpu_rd(cpu_addr_i, &cpu_data_o); |
cpu_addr_i = 0X00000044; |
92,7 → 96,11
cpu_addr_i = 0x00000000; |
cpu_data_i = 0x1; |
cpu_wr(cpu_addr_i, cpu_data_i); |
cpu_rd(cpu_addr_i, &cpu_data_o); |
do { |
cpu_addr_i = 0x00000000; |
cpu_rd(cpu_addr_i, &cpu_data_o); |
//printf("%08x\n", (cpu_data_o & 0x1)); |
} while ((cpu_data_o & 0x1) == 0x0); |
cpu_addr_i = 0X00000040; |
cpu_rd(cpu_addr_i, &cpu_data_o); |
cpu_addr_i = 0X00000044; |
102,6 → 110,50
cpu_addr_i = 0X0000004C; |
cpu_rd(cpu_addr_i, &cpu_data_o); |
|
int i; |
// POLL TSU RX STATUS |
int rx_queue_num; |
do { |
cpu_addr_i = 0x00000004; |
cpu_rd(cpu_addr_i, &cpu_data_o); |
rx_queue_num = cpu_data_o; |
//printf("%08x\n", rx_queue_num); |
} while (!(rx_queue_num > 0x2)); |
// READ TSU RX FIFO |
for (i=rx_queue_num; i>=0; i--) { |
cpu_addr_i = 0x00000000; |
cpu_data_i = 0x0; |
cpu_wr(cpu_addr_i, cpu_data_i); |
cpu_addr_i = 0x00000000; |
cpu_data_i = 0x400; |
cpu_wr(cpu_addr_i, cpu_data_i); |
cpu_addr_i = 0x00000050; |
cpu_rd(cpu_addr_i, &cpu_data_o); |
cpu_addr_i = 0x00000054; |
cpu_rd(cpu_addr_i, &cpu_data_o); |
} |
// POLL TSU TX STATUS |
int tx_queue_num; |
do { |
cpu_addr_i = 0x00000008; |
cpu_rd(cpu_addr_i, &cpu_data_o); |
tx_queue_num = cpu_data_o; |
//printf("%08x\n", tx_queue_num); |
} while (!(tx_queue_num > 0x2)); |
// READ TSU TX FIFO |
for (i=tx_queue_num; i>=0; i--) { |
cpu_addr_i = 0x00000000; |
cpu_data_i = 0x0; |
cpu_wr(cpu_addr_i, cpu_data_i); |
cpu_addr_i = 0x00000000; |
cpu_data_i = 0x100; |
cpu_wr(cpu_addr_i, cpu_data_i); |
cpu_addr_i = 0x00000058; |
cpu_rd(cpu_addr_i, &cpu_data_o); |
cpu_addr_i = 0x0000005C; |
cpu_rd(cpu_addr_i, &cpu_data_o); |
} |
|
// READ BACK ALL REGISTERS |
for (;;) |
{ |
108,10 → 160,10
int t; |
for (t=0; t<=0x5c; t=t+4) |
{ |
cpu_hd(10); |
|
cpu_addr_i = t; |
cpu_rd(cpu_addr_i, &cpu_data_o); |
|
cpu_hd(10); |
} |
} |
|
/ptp_drv_bfm/ptp_drv_bfm.v
46,6 → 46,7
up_addr_o = addr; |
up_rd_o = 1'b0; |
for (i=0; i<2; i=i+1) @(posedge up_clk); |
data = up_data_rd; |
//$display("rd %08x %08x", addr, data); |
endtask |
|
/wave.do
1,52 → 1,67
onerror {resume} |
quietly WaveActivateNextPane {} 0 |
add wave -noupdate -divider {New Divider} |
add wave -noupdate -format Logic /ha1588_tb/up_clk |
add wave -noupdate -format Logic /ha1588_tb/up_wr |
add wave -noupdate -format Logic /ha1588_tb/up_rd |
add wave -noupdate -format Literal /ha1588_tb/up_addr |
add wave -noupdate -format Literal /ha1588_tb/up_data_wr |
add wave -noupdate -format Literal /ha1588_tb/up_data_rd |
add wave -noupdate -format Logic /ha1588_tb/rtc_clk |
add wave -noupdate -divider {New Divider} |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_rgs/addr_in |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/wr_in |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/rd_in |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_rgs/data_in |
add wave -noupdate -divider {New Divider} |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/cs_00 |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_rgs/reg_00 |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_rgs/data_out_reg |
add wave -noupdate -divider {New Divider} |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/period_ld_out |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/rtc_rst_out |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/time_ld_out |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/adj_ld_out |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/time_rd_req |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/time_rd_ack |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/time_ok |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_rtc/time_reg_ns |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rtc/time_acc_48s_inc |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_rtc/time_reg_sec |
add wave -noupdate -divider {New Divider} |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rtc/adj_ld |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_rtc/adj_cnt |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_rtc/time_adj |
add wave -noupdate -divider {New Divider} |
TreeUpdate [SetDefaultTree] |
WaveRestoreCursors {{Cursor 1} {1082162 ps} 0} |
configure wave -namecolwidth 333 |
configure wave -valuecolwidth 100 |
configure wave -justifyvalue left |
configure wave -signalnamewidth 0 |
configure wave -snapdistance 10 |
configure wave -datasetprefix 0 |
configure wave -rowmargin 4 |
configure wave -childrowmargin 2 |
configure wave -gridoffset 0 |
configure wave -gridperiod 1 |
configure wave -griddelta 40 |
configure wave -timeline 0 |
configure wave -timelineunits ns |
update |
WaveRestoreZoom {0 ps} {10500 ns} |
onerror {resume} |
quietly WaveActivateNextPane {} 0 |
add wave -noupdate -divider {New Divider} |
add wave -noupdate -format Logic /ha1588_tb/up_clk |
add wave -noupdate -format Logic /ha1588_tb/up_wr |
add wave -noupdate -format Logic /ha1588_tb/up_rd |
add wave -noupdate -format Literal /ha1588_tb/up_addr |
add wave -noupdate -format Literal /ha1588_tb/up_data_wr |
add wave -noupdate -format Literal /ha1588_tb/up_data_rd |
add wave -noupdate -format Logic /ha1588_tb/rtc_clk |
add wave -noupdate -divider {New Divider} |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_rgs/addr_in |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/wr_in |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/rd_in |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_rgs/data_in |
add wave -noupdate -divider {New Divider} |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/cs_00 |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_rgs/reg_00 |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_rgs/data_out_reg |
add wave -noupdate -divider {New Divider} |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/period_ld_out |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/rtc_rst_out |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/time_ld_out |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/adj_ld_out |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/time_rd_req |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/time_rd_ack |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rgs/time_ok |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_rtc/time_reg_ns |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rtc/time_acc_48s_inc |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_rtc/time_reg_sec |
add wave -noupdate -divider {New Divider} |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rtc/rst |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rtc/adj_ld |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_rtc/adj_cnt |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_rtc/time_adj |
add wave -noupdate -divider {New Divider} |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rx_tsu/rst |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rx_tsu/q_rst |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_rx_tsu/ptp_found |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_rx_tsu/ptp_infor |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_rx_tsu/q_rdusedw |
add wave -noupdate -format Literal -radix unsigned /ha1588_tb/NIC_DRV_RX_BFM/num_rx |
add wave -noupdate -divider {New Divider} |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_tx_tsu/rst |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_tx_tsu/q_rst |
add wave -noupdate -format Logic /ha1588_tb/PTP_HA_DUT/u_tx_tsu/ptp_found |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_tx_tsu/ptp_infor |
add wave -noupdate -format Literal /ha1588_tb/PTP_HA_DUT/u_tx_tsu/q_rdusedw |
add wave -noupdate -format Literal -radix unsigned /ha1588_tb/NIC_DRV_TX_BFM/num_tx |
add wave -noupdate -divider {New Divider} |
TreeUpdate [SetDefaultTree] |
WaveRestoreCursors {{Cursor 1} {3718000 ps} 0} |
configure wave -namecolwidth 333 |
configure wave -valuecolwidth 100 |
configure wave -justifyvalue left |
configure wave -signalnamewidth 0 |
configure wave -snapdistance 10 |
configure wave -datasetprefix 0 |
configure wave -rowmargin 4 |
configure wave -childrowmargin 2 |
configure wave -gridoffset 0 |
configure wave -gridperiod 1 |
configure wave -griddelta 40 |
configure wave -timeline 0 |
configure wave -timelineunits ns |
update |
WaveRestoreZoom {0 ps} {2026775 ps} |
/ha1588_tb.v
23,6 → 23,25
#10 rst = 1'b0; |
end |
|
wire rx_gmii_clk; |
wire rx_gmii_ctrl; |
wire [ 7:0] rx_gmii_data; |
wire tx_gmii_clk; |
wire tx_gmii_ctrl; |
wire [ 7:0] tx_gmii_data; |
|
gmii_rx_bfm NIC_DRV_RX_BFM ( |
.gmii_rxclk(rx_gmii_clk), |
.gmii_rxctrl(rx_gmii_ctrl), |
.gmii_rxdata(rx_gmii_data) |
); |
|
gmii_tx_bfm NIC_DRV_TX_BFM ( |
.gmii_txclk(tx_gmii_clk), |
.gmii_txctrl(tx_gmii_ctrl), |
.gmii_txdata(tx_gmii_data) |
); |
|
ptp_drv_bfm_sv PTP_DRV_BFM ( |
.up_clk(up_clk), |
.up_wr(up_wr), |
32,7 → 51,7
.up_data_rd(up_data_rd) |
); |
|
ha1588 PTP_HA_DUT( |
ha1588 PTP_HA_DUT ( |
.rst(rst), |
.clk(up_clk), |
.wr_in(up_wr), |
43,12 → 62,12
|
.rtc_clk(rtc_clk), |
|
.rx_gmii_clk(), |
.rx_gmii_ctrl(), |
.rx_gmii_data(), |
.tx_gmii_clk(), |
.tx_gmii_ctrl(), |
.tx_gmii_data() |
.rx_gmii_clk(rx_gmii_clk), |
.rx_gmii_ctrl(rx_gmii_ctrl), |
.rx_gmii_data(rx_gmii_data), |
.tx_gmii_clk(tx_gmii_clk), |
.tx_gmii_ctrl(tx_gmii_ctrl), |
.tx_gmii_data(tx_gmii_data) |
); |
|
initial begin |
/nic_drv_bfm/gmii_rx_bfm.v
0,0 → 1,110
`timescale 1ns/1ns |
|
module gmii_rx_bfm |
( |
output gmii_rxclk, |
output reg gmii_rxctrl, |
output reg [7:0] gmii_rxdata |
); |
|
reg gmii_rxclk_offset; |
initial begin |
gmii_rxclk_offset = 1'b0; |
forever #4 gmii_rxclk_offset = !gmii_rxclk_offset; |
end |
assign #2 gmii_rxclk = gmii_rxclk_offset; |
|
integer feeder_file_rx, r_rx; |
integer start_addr_rx, end_addr_rx; |
integer index_rx, num_rx; |
reg eof_rx; |
reg pcap_endian_rx; |
reg [31:0] pcap_4bytes_rx; |
reg [31:0] packet_leng_rx; |
reg [ 7:0] packet_byte_rx; |
initial |
begin : feeder_rx |
gmii_rxctrl = 1'b0; |
gmii_rxdata = 4'd0; |
#100; |
feeder_file_rx = $fopen("nic_drv_bfm/ptpdv2_rx.pcap","rb"); |
if (feeder_file_rx == 0) |
begin |
$display("Failed to open ptpdv2_rx.pcap!"); |
disable feeder_rx; |
end |
else |
begin |
// 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); |
// skip pcap file header 24*8 |
$fseek(feeder_file_rx, 24, 1); |
// read packet content |
eof_rx = 0; |
num_rx = 0; |
while (!eof_rx & !$feof(feeder_file_rx)) |
begin : fileread_loop |
// skip frame header (8+4)*8 |
start_addr_rx = $ftell(feeder_file_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? |
{packet_leng_rx[31:24], packet_leng_rx[23:16], packet_leng_rx[15: 8], packet_leng_rx[ 7: 0]}: |
{packet_leng_rx[ 7: 0], packet_leng_rx[15: 8], packet_leng_rx[23:16], packet_leng_rx[31:24]}; |
// check whether end of file |
if (r_rx == 0) |
begin |
eof_rx = 1; |
@(posedge gmii_rxclk_offset); |
gmii_rxctrl = 1'b0; |
gmii_rxdata = 8'h00; |
disable fileread_loop; |
end |
// send ifg 96bit=12*8 |
repeat (12) |
begin |
@(posedge gmii_rxclk_offset) |
gmii_rxctrl = 1'b0; |
gmii_rxdata = 8'h00; |
end |
// send frame preamble and sfd 5555555d=4*8 |
repeat (3) |
begin |
@(posedge gmii_rxclk_offset); |
gmii_rxctrl = 1'b1; |
gmii_rxdata = 8'h55; |
end |
@(posedge gmii_rxclk_offset) |
gmii_rxctrl = 1'b1; |
gmii_rxdata = 8'h5d; |
// send frame content |
for (index_rx=0; index_rx<packet_leng_rx; index_rx=index_rx+1) |
begin |
r_rx = $fread(packet_byte_rx, feeder_file_rx); |
@(posedge gmii_rxclk_offset); |
gmii_rxctrl = 1'b1; |
gmii_rxdata = packet_byte_rx; |
// check whether end of file |
if (r_rx == 0) |
begin |
eof_rx = 1; |
@(posedge gmii_rxclk_offset); |
gmii_rxctrl = 1'b0; |
gmii_rxdata = 8'h00; |
disable fileread_loop; |
end |
end |
end_addr_rx = $ftell(feeder_file_rx); |
num_rx = num_rx + 1; |
end |
$fclose(feeder_file_rx); |
gmii_rxctrl = 1'b0; |
gmii_rxdata = 8'h00; |
end |
end |
|
|
endmodule |
/nic_drv_bfm/gmii_tx_bfm.v
0,0 → 1,110
`timescale 1ns/1ns |
|
module gmii_tx_bfm |
( |
output gmii_txclk, |
output reg gmii_txctrl, |
output reg [7:0] gmii_txdata |
); |
|
reg gmii_txclk_offset; |
initial begin |
gmii_txclk_offset = 1'b0; |
forever #4 gmii_txclk_offset = !gmii_txclk_offset; |
end |
assign #2 gmii_txclk = gmii_txclk_offset; |
|
integer feeder_file_tx, r_tx; |
integer start_addr_tx, end_addr_tx; |
integer index_tx, num_tx; |
reg eof_tx; |
reg pcap_endian_tx; |
reg [31:0] pcap_4bytes_tx; |
reg [31:0] packet_leng_tx; |
reg [ 7:0] packet_byte_tx; |
initial |
begin : feeder_tx |
gmii_txctrl = 1'b0; |
gmii_txdata = 4'd0; |
#100; |
feeder_file_tx = $fopen("nic_drv_bfm/ptpdv2_tx.pcap","rb"); |
if (feeder_file_tx == 0) |
begin |
$display("Failed to open ptpdv2_tx.pcap!"); |
disable feeder_tx; |
end |
else |
begin |
// 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); |
// skip pcap file header 24*8 |
$fseek(feeder_file_tx, 24, 1); |
// read packet content |
eof_tx = 0; |
num_tx = 0; |
while (!eof_tx & !$feof(feeder_file_tx)) |
begin : fileread_loop |
// skip frame header (8+4)*8 |
start_addr_tx = $ftell(feeder_file_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? |
{packet_leng_tx[31:24], packet_leng_tx[23:16], packet_leng_tx[15: 8], packet_leng_tx[ 7: 0]}: |
{packet_leng_tx[ 7: 0], packet_leng_tx[15: 8], packet_leng_tx[23:16], packet_leng_tx[31:24]}; |
// check whether end of file |
if (r_tx == 0) |
begin |
eof_tx = 1; |
@(posedge gmii_txclk_offset); |
gmii_txctrl = 1'b0; |
gmii_txdata = 8'h00; |
disable fileread_loop; |
end |
// send ifg 96bit=12*8 |
repeat (12) |
begin |
@(posedge gmii_txclk_offset) |
gmii_txctrl = 1'b0; |
gmii_txdata = 8'h00; |
end |
// send frame preamble and sfd 5555555d=4*8 |
repeat (3) |
begin |
@(posedge gmii_txclk_offset); |
gmii_txctrl = 1'b1; |
gmii_txdata = 8'h55; |
end |
@(posedge gmii_txclk_offset) |
gmii_txctrl = 1'b1; |
gmii_txdata = 8'h5d; |
// send frame content |
for (index_tx=0; index_tx<packet_leng_tx; index_tx=index_tx+1) |
begin |
r_tx = $fread(packet_byte_tx, feeder_file_tx); |
@(posedge gmii_txclk_offset); |
gmii_txctrl = 1'b1; |
gmii_txdata = packet_byte_tx; |
// check whether end of file |
if (r_tx == 0) |
begin |
eof_tx = 1; |
@(posedge gmii_txclk_offset); |
gmii_txctrl = 1'b0; |
gmii_txdata = 8'h00; |
disable fileread_loop; |
end |
end |
end_addr_tx = $ftell(feeder_file_tx); |
num_tx = num_tx + 1; |
end |
$fclose(feeder_file_tx); |
gmii_txctrl = 1'b0; |
gmii_txdata = 8'h00; |
end |
end |
|
|
endmodule |
/nic_drv_bfm/ptpdv2_rx.pcap
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
nic_drv_bfm/ptpdv2_rx.pcap
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: nic_drv_bfm/ptpdv2_tx.pcap
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: nic_drv_bfm/ptpdv2_tx.pcap
===================================================================
--- nic_drv_bfm/ptpdv2_tx.pcap (nonexistent)
+++ nic_drv_bfm/ptpdv2_tx.pcap (revision 24)
nic_drv_bfm/ptpdv2_tx.pcap
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: sim.do
===================================================================
--- sim.do (revision 23)
+++ sim.do (revision 24)
@@ -1,8 +1,15 @@
quit -sim
+
+vlib altera
+vdel -lib altera -all
vlib work
vdel -lib work -all
+
+vlib altera
+# compile vendor dependent files
+vlog -work altera altera_mf.v
+
vlib work
-
# compile vendor independent files
vlog -work work ../../rtl/top/ha1588.v +initreg+0
vlog -work work ../../rtl/reg/reg.v +initreg+0
@@ -11,13 +18,14 @@
vlog -work work ../../rtl/tsu/ptp_queue.v +initreg+0
vlog -work work ../../rtl/tsu/ptp_parser.v +initreg+0
-# compile vendor dependent files
-vlog -work work altera_mf.v
-
# compile testbench files
vlog -work work -sv ha1588_tb.v
-# compile driver bfm files
+# compile nic driver bfm files
+vlog -work work -sv nic_drv_bfm/gmii_rx_bfm.v
+vlog -work work -sv nic_drv_bfm/gmii_tx_bfm.v
+
+# compile ptp driver bfm files
vlog -work work -sv ptp_drv_bfm/ptp_drv_bfm.v
# compile driver bfm files
@@ -33,6 +41,7 @@
ptp_drv_bfm_sv.obj -L $::env(MODEL_TECH) -lmtipli
vsim -novopt \
+ -L altera \
-sv_lib ptp_drv_bfm_c \
-t ps \
ha1588_tb
@@ -41,4 +50,4 @@
radix -hexadecimal
do wave.do
-run 10000ns
+run 50000ns