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

Subversion Repositories pci

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 150 to Rev 151
    Reverse comparison

Rev 150 → Rev 151

/trunk/bench/verilog/system.v
39,6 → 39,10
// CVS Revision History
//
// $Log: not supported by cvs2svn $
// Revision 1.27 2004/08/19 15:27:31 mihad
// Changed minimum pci image size to 256 bytes because
// of some PC system problems with size of IO images.
//
// Revision 1.26 2004/07/07 12:45:02 mihad
// Added SubsystemVendorID, SubsystemID, MAXLatency, MinGnt defines.
// Enabled value loading from serial EEPROM for all of the above + VendorID and DeviceID registers.
1618,6 → 1622,54
end
end
join
 
test_name = "MULTIPLE NORMAL SINGLE MEMORY READS, SAME ADDRESS, CHANGE DATA" ;
 
i = 32'hFFFF_FFFF ;
 
// read written data back
read_data`READ_ADDRESS = target_address + ({$random} % 4) + 72 ;
read_data`READ_SEL = 4'hF ;
write_flags`WB_TRANSFER_AUTO_RTY = 1'b1 ;
 
fork
begin
 
repeat(5)
begin
pci_behaviorial_device1.pci_behaviorial_target.Test_Device_Mem[72 >> 2] = $random ;
wishbone_master.wb_single_read( read_data, write_flags, read_status ) ;
if (read_status`CYC_ACTUAL_TRANSFER !== 1)
begin
$display("Image testing failed! Bridge failed to process single memory read! Time %t ", $time) ;
test_fail("PCI bridge didn't process the read as expected");
i[0] = 1'b0 ;
end
 
if (read_status`READ_DATA !== pci_behaviorial_device1.pci_behaviorial_target.Test_Device_Mem[72 >> 2])
begin
display_warning(read_data`READ_ADDRESS, pci_behaviorial_device1.pci_behaviorial_target.Test_Device_Mem[72 >> 2], read_status`READ_DATA) ;
test_fail("PCI bridge returned unexpected Read Data");
i[0] = 1'b0 ;
end
write_flags`WB_FAST_B2B = 1'b1 ;
end
 
if (i === 32'hFFFF_FFFF)
test_ok ;
end
begin
repeat(5)
begin
pci_transaction_progress_monitor( read_data`READ_ADDRESS & 32'hffff_fffc, `BC_MEM_READ, 1, 0, 1, 0, 0, ok ) ;
if ( ok !== 1 )
begin
i[1] = 1'b0 ;
test_fail("because single memory read from WB to PCI didn't engage expected transaction on PCI bus") ;
end
end
end
join
test_name = "MULTIPLE NON-CONSECUTIVE SINGLE MEMORY WRITES THROUGH WISHBONE SLAVE UNIT" ;
begin:non_consecutive_single_writes_test_blk
1630,6 → 1682,7
write_data`WRITE_SEL = 4'hF ;
write_flags`WB_TRANSFER_AUTO_RTY = 1'b1 ;
write_flags`WB_TRANSFER_CAB = 1'b0 ;
write_flags`WB_FAST_B2B = 1'b0 ;
rnd_seed = 32'h12fe_dc34 ;
16098,7 → 16151,7
 
config_read( {4'h1, `P_BA1_ADDR, 2'b00}, 4'hF, read_data ) ;
 
if (read_data !== 32'h0000_0000)
if (read_data !== {31'h0000_0000, `PCI_BA1_MEM_IO})
begin
$display("Time %t", $time) ;
$display("Invalid value read from P_BA1 register") ;
21101,6 → 21154,58
begin
expect_length_wr = Set_size ;
end
 
test_name = "MULTIPLE SINGLE MEMORY READS THROUGH PCI TARGET UNIT, SAME ADDRESS, CHANGE DATA" ;
 
master2_check_received_data = 1 ;
master1_check_received_data = 1 ;
 
fork
begin
repeat(5)
begin
wishbone_slave.wb_memory[expect_address[21:2]] = $random ;
PCIU_READ (Master_ID[2:0], Address,
`BC_MEM_READ, wishbone_slave.wb_memory[expect_address[21:2]], `Test_All_Bytes,
1, `Test_One_Zero_Master_WS, `Test_One_Zero_Target_WS,
`Test_Devsel_Medium, `Test_Target_Start_Delayed_Read);
 
do_pause(1) ;
 
wb_transaction_stop( Set_prefetch_enable ? Cache_lsize : 1 ) ;
@(posedge wb_clock) ;
do_pause( 2 ) ;
 
PCIU_READ (Master_ID[2:0], Address,
`BC_MEM_READ, wishbone_slave.wb_memory[expect_address[21:2]], `Test_All_Bytes,
1, `Test_One_Zero_Master_WS, `Test_One_Zero_Target_WS,
`Test_Devsel_Medium, `Test_Target_Normal_Completion);
do_pause(0) ;
end
 
@(posedge pci_clock) ;
 
while ( FRAME === 0 )
@(posedge pci_clock) ;
 
while ( IRDY === 0 )
@(posedge pci_clock) ;
 
do_pause(2) ;
# 1 ;
if (!error_monitor_done)
disable monitor_err_event_on_multiple_same_adr_reads_blk ;
end
begin:monitor_err_event_on_multiple_same_adr_reads_blk
error_monitor_done = 0 ;
@(error_event_int) ;
test_fail("either PCI Monitor or PCI Master detected an error while reading through PCI Target Unit") ;
ok = 0 ;
error_monitor_done = 1 ;
end
join
 
// write through the PCI bridge to WB slave
test_name = "NORMAL POSTED WRITE THROUGH PCI TARGET UNIT" ;
$display("Memory write (%d words) through PCI bridge to WB slave!", expect_length_wr);
/trunk/bench/verilog/top.v
42,6 → 42,9
// CVS Revision History
//
// $Log: not supported by cvs2svn $
// Revision 1.2 2004/01/24 11:54:16 mihad
// Update! SPOCI Implemented!
//
// Revision 1.1 2003/12/15 12:21:29 mihad
// Moved top.v to bench directory. Removed unneeded meta_flop,
// modified files list files accordingly.
170,6 → 173,14
`endif
);
 
`ifdef ACTIVE_LOW_OE
parameter oe_act = 1'b0 ;
`endif
 
`ifdef ACTIVE_HIGH_OE
parameter oe_act = 1'b1 ;
`endif
 
input CLK ;
inout [31:0] AD ;
inout [3:0] CBE ;
264,12 → 275,47
wire [31:0] AD_out ;
wire [31:0] AD_en ;
 
wire [31:0] AD_in ;
assign AD_in[0 ] = (AD_en[0 ] == oe_act) ? 1'bx : AD[0 ] ;
assign AD_in[1 ] = (AD_en[1 ] == oe_act) ? 1'bx : AD[1 ] ;
assign AD_in[2 ] = (AD_en[2 ] == oe_act) ? 1'bx : AD[2 ] ;
assign AD_in[3 ] = (AD_en[3 ] == oe_act) ? 1'bx : AD[3 ] ;
assign AD_in[4 ] = (AD_en[4 ] == oe_act) ? 1'bx : AD[4 ] ;
assign AD_in[5 ] = (AD_en[5 ] == oe_act) ? 1'bx : AD[5 ] ;
assign AD_in[6 ] = (AD_en[6 ] == oe_act) ? 1'bx : AD[6 ] ;
assign AD_in[7 ] = (AD_en[7 ] == oe_act) ? 1'bx : AD[7 ] ;
assign AD_in[8 ] = (AD_en[8 ] == oe_act) ? 1'bx : AD[8 ] ;
assign AD_in[9 ] = (AD_en[9 ] == oe_act) ? 1'bx : AD[9 ] ;
assign AD_in[10] = (AD_en[10] == oe_act) ? 1'bx : AD[10] ;
assign AD_in[11] = (AD_en[11] == oe_act) ? 1'bx : AD[11] ;
assign AD_in[12] = (AD_en[12] == oe_act) ? 1'bx : AD[12] ;
assign AD_in[13] = (AD_en[13] == oe_act) ? 1'bx : AD[13] ;
assign AD_in[14] = (AD_en[14] == oe_act) ? 1'bx : AD[14] ;
assign AD_in[15] = (AD_en[15] == oe_act) ? 1'bx : AD[15] ;
assign AD_in[16] = (AD_en[16] == oe_act) ? 1'bx : AD[16] ;
assign AD_in[17] = (AD_en[17] == oe_act) ? 1'bx : AD[17] ;
assign AD_in[18] = (AD_en[18] == oe_act) ? 1'bx : AD[18] ;
assign AD_in[19] = (AD_en[19] == oe_act) ? 1'bx : AD[19] ;
assign AD_in[20] = (AD_en[20] == oe_act) ? 1'bx : AD[20] ;
assign AD_in[21] = (AD_en[21] == oe_act) ? 1'bx : AD[21] ;
assign AD_in[22] = (AD_en[22] == oe_act) ? 1'bx : AD[22] ;
assign AD_in[23] = (AD_en[23] == oe_act) ? 1'bx : AD[23] ;
assign AD_in[24] = (AD_en[24] == oe_act) ? 1'bx : AD[24] ;
assign AD_in[25] = (AD_en[25] == oe_act) ? 1'bx : AD[25] ;
assign AD_in[26] = (AD_en[26] == oe_act) ? 1'bx : AD[26] ;
assign AD_in[27] = (AD_en[27] == oe_act) ? 1'bx : AD[27] ;
assign AD_in[28] = (AD_en[28] == oe_act) ? 1'bx : AD[28] ;
assign AD_in[29] = (AD_en[29] == oe_act) ? 1'bx : AD[29] ;
assign AD_in[30] = (AD_en[30] == oe_act) ? 1'bx : AD[30] ;
assign AD_in[31] = (AD_en[31] == oe_act) ? 1'bx : AD[31] ;
 
wire [31:0] AD_in = AD ;
 
wire [3:0] CBE_in = CBE ;
wire [3:0] CBE_out ;
wire [3:0] CBE_en ;
wire [3:0] CBE_in ;
assign CBE_in[3] = (CBE_en[3] == oe_act) ? 1'bx : CBE[3] ;
assign CBE_in[2] = (CBE_en[2] == oe_act) ? 1'bx : CBE[2] ;
assign CBE_in[1] = (CBE_en[1] == oe_act) ? 1'bx : CBE[1] ;
assign CBE_in[0] = (CBE_en[0] == oe_act) ? 1'bx : CBE[0] ;
 
`ifdef HOST
wire RST_in = 1'bx;
279,40 → 325,40
wire RST_out ;
wire RST_en ;
 
wire INTA_in = INTA ;
wire INTA_en ;
wire INTA_out ;
wire INTA_in = (INTA_en == oe_act) ? 1'bx : INTA ;
 
wire REQ_en ;
wire REQ_out ;
 
wire FRAME_in = FRAME ;
wire FRAME_out ;
wire FRAME_en ;
wire FRAME_in = (FRAME_en == oe_act) ? 1'bx : FRAME ;
 
wire IRDY_in = IRDY ;
wire IRDY_out ;
wire IRDY_en ;
wire IRDY_in = (IRDY_en == oe_act) ? 1'bx : IRDY ;
 
wire DEVSEL_in = DEVSEL ;
wire DEVSEL_out ;
wire DEVSEL_en ;
wire DEVSEL_in = (DEVSEL_en == oe_act) ? 1'bx : DEVSEL ;
 
wire TRDY_in = TRDY ;
wire TRDY_out ;
wire TRDY_en ;
wire TRDY_in = (TRDY_en == oe_act) ? 1'bx : TRDY ;
 
wire STOP_in = STOP ;
wire STOP_out ;
wire STOP_en ;
wire STOP_in = (STOP_en == oe_act) ? 1'bx : STOP ;
 
wire PAR_in = PAR ;
wire PAR_out ;
wire PAR_en ;
wire PAR_in = (PAR_en == oe_act) ? 1'bx : PAR ;
 
wire PERR_in = PERR ;
wire PERR_out ;
wire PERR_en ;
wire PERR_in = (PERR_en == oe_act) ? 1'bx : PERR ;
 
wire SERR_out ;
wire SERR_en ;

powered by: WebSVN 2.1.0

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