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

Subversion Repositories pci

[/] [pci/] [tags/] [rel_7/] [bench/] [verilog/] [wb_master_behavioral.v] - Diff between revs 92 and 106

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 92 Rev 106
Line 36... Line 36...
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//
//
// CVS Revision History
// CVS Revision History
//
//
// $Log: not supported by cvs2svn $
// $Log: not supported by cvs2svn $
 
// Revision 1.2  2003/06/12 02:30:39  mihad
 
// Update!
 
//
// Revision 1.1  2002/02/01 13:39:43  mihad
// Revision 1.1  2002/02/01 13:39:43  mihad
// Initial testbench import. Still under development
// Initial testbench import. Still under development
//
//
 
 
`include "pci_testbench_defines.v"
`include "pci_testbench_defines.v"
Line 115... Line 118...
    reg cab ;
    reg cab ;
    reg ok ;
    reg ok ;
    integer cyc_count ;
    integer cyc_count ;
    integer rty_count ;
    integer rty_count ;
    reg retry ;
    reg retry ;
 
    reg [2:0] use_cti ;
 
    reg [1:0] use_bte ;
begin:main
begin:main
 
 
    return`TB_ERROR_BIT = 1'b0 ;
    return`TB_ERROR_BIT = 1'b0 ;
    cab = 0 ;
    cab = 0 ;
    return`CYC_ACTUAL_TRANSFER = 0 ;
    return`CYC_ACTUAL_TRANSFER = 0 ;
Line 134... Line 139...
 
 
    in_use = 1 ;
    in_use = 1 ;
 
 
    retry = 1 ;
    retry = 1 ;
 
 
 
    use_cti = {$random} % 8 ;
 
    if (use_cti === 3'b010)
 
        use_cti = 3'b111 ;
 
    else if (use_cti === 3'b001)
 
        use_cti = 3'b000 ;
 
 
 
    use_bte = {$random} % 4 ;
 
 
 
    write_data`WRITE_TAG_STIM = {use_cti, use_bte} ;
 
 
    while (retry === 1)
    while (retry === 1)
    begin
    begin
        // synchronize operation to clock
        // synchronize operation to clock
        if (write_flags`WB_FAST_B2B !== 1'b1)
        if (write_flags`WB_FAST_B2B !== 1'b1)
            @(posedge CLK_I) ;
            @(posedge CLK_I) ;
Line 207... Line 222...
    reg cab ;
    reg cab ;
    reg ok ;
    reg ok ;
    integer cyc_count ;
    integer cyc_count ;
    integer rty_count ;
    integer rty_count ;
    reg retry ;
    reg retry ;
 
    reg [2:0] use_cti ;
 
    reg [1:0] use_bte ;
begin:main
begin:main
 
 
    return`TB_ERROR_BIT = 1'b0 ;
    return`TB_ERROR_BIT = 1'b0 ;
    cab = 0 ;
    cab = 0 ;
    rty_count = 0 ;
    rty_count = 0 ;
Line 226... Line 243...
 
 
    in_use = 1 ;
    in_use = 1 ;
 
 
    retry = 1 ;
    retry = 1 ;
 
 
 
    use_cti = {$random} % 8 ;
 
    if (use_cti === 3'b010)
 
        use_cti = 3'b111 ;
 
    else if (use_cti === 3'b001)
 
        use_cti = 3'b000 ;
 
 
 
    use_bte = {$random} % 4 ;
 
 
 
    read_data`READ_TAG_STIM = {use_cti, use_bte} ;
 
 
    while (retry === 1)
    while (retry === 1)
    begin
    begin
        // synchronize operation to clock
        // synchronize operation to clock
        if (read_flags`WB_FAST_B2B !== 1'b1)
        if (read_flags`WB_FAST_B2B !== 1'b1)
            @(posedge CLK_I) ;
            @(posedge CLK_I) ;
Line 301... Line 328...
    reg cab ;
    reg cab ;
    reg ok ;
    reg ok ;
    integer cyc_count ;
    integer cyc_count ;
    integer rty_count ;
    integer rty_count ;
    reg retry ;
    reg retry ;
 
    reg [2:0] use_cti ;
 
    reg [1:0] use_bte ;
begin:main
begin:main
 
 
    return`TB_ERROR_BIT = 1'b0 ;
    return`TB_ERROR_BIT = 1'b0 ;
    cab = 0 ;
    cab = 0 ;
    rty_count = 0 ;
    rty_count = 0 ;
Line 320... Line 349...
 
 
    in_use = 1 ;
    in_use = 1 ;
 
 
    retry = 1 ;
    retry = 1 ;
 
 
 
    use_cti = {$random} % 8 ;
 
    if (use_cti === 3'b010)
 
        use_cti = 3'b111 ;
 
    else if (use_cti === 3'b001)
 
        use_cti = 3'b000 ;
 
 
 
    use_bte = {$random} % 4 ;
 
 
 
    read_data`READ_TAG_STIM = {use_cti, use_bte} ;
 
 
    while (retry === 1)
    while (retry === 1)
    begin
    begin
        // synchronize operation to clock
        // synchronize operation to clock
        if (read_flags`WB_FAST_B2B !== 1'b1)
        if (read_flags`WB_FAST_B2B !== 1'b1)
            @(posedge CLK_I) ;
            @(posedge CLK_I) ;
Line 398... Line 437...
    reg cab ;
    reg cab ;
    reg ok ;
    reg ok ;
    integer cyc_count ;
    integer cyc_count ;
    integer rty_count ;
    integer rty_count ;
    reg retry ;
    reg retry ;
 
    reg [2:0] use_cti ;
 
    reg [1:0] use_bte ;
begin:main
begin:main
 
 
    return`TB_ERROR_BIT = 1'b0 ;
    return`TB_ERROR_BIT = 1'b0 ;
    cab = 0 ;
    cab = 0 ;
    return`CYC_ACTUAL_TRANSFER = 0 ;
    return`CYC_ACTUAL_TRANSFER = 0 ;
Line 417... Line 458...
 
 
    in_use = 1 ;
    in_use = 1 ;
 
 
    retry = 1 ;
    retry = 1 ;
 
 
 
    use_cti = {$random} % 8 ;
 
    if (use_cti === 3'b010)
 
        use_cti = 3'b111 ;
 
    else if (use_cti === 3'b001)
 
        use_cti = 3'b000 ;
 
 
 
    use_bte = {$random} % 4 ;
 
 
 
    write_data`WRITE_TAG_STIM = {use_cti, use_bte} ;
 
 
    while (retry === 1)
    while (retry === 1)
    begin
    begin
        // synchronize operation to clock
        // synchronize operation to clock
        if (write_flags`WB_FAST_B2B !== 1'b1)
        if (write_flags`WB_FAST_B2B !== 1'b1)
            @(posedge CLK_I) ;
            @(posedge CLK_I) ;
Line 494... Line 545...
    reg cab ;
    reg cab ;
    reg ok ;
    reg ok ;
    integer cyc_count ;
    integer cyc_count ;
    integer rty_count ;
    integer rty_count ;
    reg end_blk ;
    reg end_blk ;
 
    reg [2:0] use_cti    ;
 
    reg [1:0] use_bte    ;
begin:main
begin:main
 
 
    return`CYC_ACTUAL_TRANSFER = 0 ;
    return`CYC_ACTUAL_TRANSFER = 0 ;
    rty_count = 0 ;
    rty_count = 0 ;
 
 
Line 519... Line 572...
    in_use = 1 ;
    in_use = 1 ;
    if (write_flags`WB_FAST_B2B !== 1'b1)
    if (write_flags`WB_FAST_B2B !== 1'b1)
        @(posedge CLK_I) ;
        @(posedge CLK_I) ;
 
 
    cab = write_flags`WB_TRANSFER_CAB ;
    cab = write_flags`WB_TRANSFER_CAB ;
 
 
 
    current_write = blk_write_data[0] ;
 
 
 
    if (cab)
 
    begin:select_burst_type_blk
 
        reg [31:0] burst_start_adr ;
 
 
 
        use_cti = 3'b010 ;
 
 
 
        burst_start_adr = current_write`WRITE_ADDRESS ;
 
        if (burst_start_adr[5:2] === 4'b0000)
 
            use_bte = {$random} % 4 ;
 
        else if (burst_start_adr[4:2] === 3'b000)
 
            use_bte = {$random} % 3 ;
 
        else if (burst_start_adr[3:2] === 2'b00)
 
            use_bte = {$random} % 2 ;
 
        else
 
            use_bte = 2'b00 ;
 
    end
 
    else
 
    begin
 
        if ( (current_write`WRITE_TAG_STIM === 0) | (current_write`WRITE_TAG_STIM === {`WB_TAG_WIDTH{1'bx}}) )
 
        begin
 
            use_cti = {$random} % 8 ;
 
            if (use_cti === 3'b010)
 
                use_cti = 3'b111 ;
 
            else if (use_cti === 3'b001)
 
                use_cti = 3'b000 ;
 
 
 
            use_bte = {$random} % 4 ;
 
        end
 
        else
 
        begin
 
            {use_cti, use_bte} = current_write`WRITE_TAG_STIM ;
 
        end
 
    end
 
 
    wbm_low_level.start_cycle(cab, 1'b1, write_flags`WB_FAST_B2B, ok) ;
    wbm_low_level.start_cycle(cab, 1'b1, write_flags`WB_FAST_B2B, ok) ;
    if ( ok !== 1 )
    if ( ok !== 1 )
    begin
    begin
        $display("*E, Failed to initialize cycle! Routine wb_block_write, Time %t ", $time) ;
        $display("*E, Failed to initialize cycle! Routine wb_block_write, Time %t ", $time) ;
        return`TB_ERROR_BIT = 1'b1 ;
        return`TB_ERROR_BIT = 1'b1 ;
Line 538... Line 628...
    end
    end
 
 
    end_blk = 0 ;
    end_blk = 0 ;
    while (end_blk === 0)
    while (end_blk === 0)
    begin
    begin
 
 
        // collect data for current data beat
        // collect data for current data beat
        current_write = blk_write_data[return`CYC_ACTUAL_TRANSFER] ;
        current_write = blk_write_data[return`CYC_ACTUAL_TRANSFER] ;
 
 
 
        if (cab)
 
        begin
 
            if ((return`CYC_ACTUAL_TRANSFER + 1'b1) >= write_flags`WB_TRANSFER_SIZE)
 
                use_cti = 3'b111 ;
 
        end
 
 
 
        current_write`WRITE_TAG_STIM = {use_cti, use_bte} ;
 
 
        wbm_low_level.wbm_write(current_write, return) ;
        wbm_low_level.wbm_write(current_write, return) ;
 
 
        // check result of write operation
        // check result of write operation
        // check for severe test error
        // check for severe test error
        if (return`TB_ERROR_BIT !== 0)
        if (return`TB_ERROR_BIT !== 0)
Line 578... Line 678...
                 $display("*E, maximum number of retries received - access will not be repeated anymore! Routine wb_block_write, Time %t ", $time) ;
                 $display("*E, maximum number of retries received - access will not be repeated anymore! Routine wb_block_write, Time %t ", $time) ;
                 end_blk = 1 ;
                 end_blk = 1 ;
            end
            end
            else
            else
            begin
            begin
 
                if (cab)
 
                begin
 
                    use_bte = 2'b00 ;
 
                end
 
 
                rty_count = rty_count + 1 ;
                rty_count = rty_count + 1 ;
            end
            end
        end
        end
        else
        else
            rty_count = 0 ;
            rty_count = 0 ;
Line 637... Line 742...
    reg ok ;
    reg ok ;
    integer cyc_count ;
    integer cyc_count ;
    integer rty_count ;
    integer rty_count ;
    reg end_blk ;
    reg end_blk ;
    integer transfered ;
    integer transfered ;
 
    reg [2:0] use_cti ;
 
    reg [1:0] use_bte ;
begin:main
begin:main
 
 
    return`CYC_ACTUAL_TRANSFER = 0 ;
    return`CYC_ACTUAL_TRANSFER = 0 ;
    transfered = 0 ;
    transfered = 0 ;
    rty_count = 0 ;
    rty_count = 0 ;
Line 662... Line 769...
 
 
    in_use = 1 ;
    in_use = 1 ;
    @(posedge CLK_I) ;
    @(posedge CLK_I) ;
    cab = read_flags`WB_TRANSFER_CAB ;
    cab = read_flags`WB_TRANSFER_CAB ;
 
 
 
    if (cab)
 
    begin:select_burst_type_blk
 
        reg [31:0] burst_start_adr ;
 
 
 
        use_cti = 3'b010 ;
 
 
 
        current_read = blk_read_data_in[0] ;
 
        burst_start_adr = current_read`READ_ADDRESS ;
 
        if (burst_start_adr[5:2] === 4'b0000)
 
            use_bte = {$random} % 4 ;
 
        else if (burst_start_adr[4:2] === 3'b000)
 
            use_bte = {$random} % 3 ;
 
        else if (burst_start_adr[3:2] === 2'b00)
 
            use_bte = {$random} % 2 ;
 
        else
 
            use_bte = 2'b00 ;
 
    end
 
 
    wbm_low_level.start_cycle(cab, 1'b0, read_flags`WB_FAST_B2B, ok) ;
    wbm_low_level.start_cycle(cab, 1'b0, read_flags`WB_FAST_B2B, ok) ;
 
 
    if ( ok !== 1 )
    if ( ok !== 1 )
    begin
    begin
        $display("*E, Failed to initialize cycle! Routine wb_block_read, Time %t ", $time) ;
        $display("*E, Failed to initialize cycle! Routine wb_block_read, Time %t ", $time) ;
Line 685... Line 810...
    while (end_blk === 0)
    while (end_blk === 0)
    begin
    begin
        // collect data for current data beat
        // collect data for current data beat
        current_read = blk_read_data_in[return`CYC_ACTUAL_TRANSFER] ;
        current_read = blk_read_data_in[return`CYC_ACTUAL_TRANSFER] ;
 
 
 
        if (cab)
 
        begin
 
            if ((return`CYC_ACTUAL_TRANSFER + 1'b1) >= read_flags`WB_TRANSFER_SIZE)
 
                use_cti = 3'b111 ;
 
        end
 
 
 
        current_read`READ_TAG_STIM = {use_cti, use_bte} ;
 
 
        wbm_low_level.wbm_read(current_read, return) ;
        wbm_low_level.wbm_read(current_read, return) ;
 
 
        if ( transfered !== return`CYC_ACTUAL_TRANSFER )
        if ( transfered !== return`CYC_ACTUAL_TRANSFER )
        begin
        begin
            blk_read_data_out[transfered] = return ;
            blk_read_data_out[transfered] = return ;
Line 729... Line 862...
                 $display("*E, maximum number of retries received - access will not be repeated anymore! Routine wb_block_read, Time %t ", $time) ;
                 $display("*E, maximum number of retries received - access will not be repeated anymore! Routine wb_block_read, Time %t ", $time) ;
                 end_blk = 1 ;
                 end_blk = 1 ;
            end
            end
            else
            else
            begin
            begin
 
                if (cab)
 
                begin
 
                    use_bte = 2'b00 ;
 
                end
 
 
                rty_count = rty_count + 1 ;
                rty_count = rty_count + 1 ;
            end
            end
        end
        end
        else
        else
            rty_count = 0 ;
            rty_count = 0 ;

powered by: WebSVN 2.1.0

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