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

Subversion Repositories pci

[/] [pci/] [tags/] [rel_9/] [bench/] [verilog/] [system.v] - Diff between revs 64 and 69

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

Rev 64 Rev 69
Line 37... Line 37...
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//
//
// CVS Revision History
// CVS Revision History
//
//
// $Log: not supported by cvs2svn $
// $Log: not supported by cvs2svn $
 
// Revision 1.11  2002/10/11 12:03:12  mihad
 
// The testcase I just added in previous revision repaired
 
//
// Revision 1.10  2002/10/11 10:08:57  mihad
// Revision 1.10  2002/10/11 10:08:57  mihad
// Added additional testcase and changed rst name in BIST to trst
// Added additional testcase and changed rst name in BIST to trst
//
//
// Revision 1.9  2002/10/08 17:17:02  mihad
// Revision 1.9  2002/10/08 17:17:02  mihad
// Added BIST signals for RAMs.
// Added BIST signals for RAMs.
Line 143... Line 146...
wire        TAR2_IDSEL = AD[`TAR2_IDSEL_INDEX] ;
wire        TAR2_IDSEL = AD[`TAR2_IDSEL_INDEX] ;
 
 
wire        reset_wb ; // reset to Wb devices
wire        reset_wb ; // reset to Wb devices
 
 
`ifdef PCI_BIST
`ifdef PCI_BIST
wire SO ;
wire scanb_so ;
reg  SI ;
reg  scanb_si ;
wire trst = reset_wb ;
reg  scanb_rst ;
reg  shift_DR ;
reg  scanb_en ;
reg  capture_DR ;
reg  scanb_clk ;
reg  extest ;
 
reg  tck ;
 
`endif
`endif
 
 
`ifdef GUEST
`ifdef GUEST
    wire    RST = ~reset ;
    wire    RST = ~reset ;
    assign  reset_wb = RST_O ;
    assign  reset_wb = RST_O ;
Line 215... Line 216...
    .RTY_I  ( RTY_I ),
    .RTY_I  ( RTY_I ),
    .ERR_I  ( ERR_I )
    .ERR_I  ( ERR_I )
 
 
`ifdef PCI_BIST
`ifdef PCI_BIST
    ,
    ,
    .trst       (trst),
    // bist chain signals
    .SO         (SO),
    .scanb_rst  (scanb_rst),
    .SI         (SI),
    .scanb_clk  (scanb_clk),
    .shift_DR   (shift_DR),
    .scanb_si   (scanb_si),
    .capture_DR (capture_DR),
    .scanb_so   (scanb_so),
    .extest     (extest),
    .scanb_en   (scanb_en)
    .tck        (tck)
 
`endif
`endif
) ;
) ;
 
 
WB_MASTER_BEHAVIORAL wishbone_master
WB_MASTER_BEHAVIORAL wishbone_master
(
(
Line 649... Line 649...
 
 
initial
initial
begin
begin
 
 
`ifdef PCI_BIST
`ifdef PCI_BIST
    SI          = 0 ;
    scanb_si    = 0 ;
    shift_DR    = 0 ;
    scanb_en    = 0 ;
    capture_DR  = 0 ;
    scanb_clk   = 0 ;
    extest      = 0 ;
    scanb_rst   = 0 ;
    tck         = 0 ;
 
`endif
`endif
    next_test_name[79:0] <= "Nowhere___";
    next_test_name[79:0] <= "Nowhere___";
    reset = 1'b1 ;
    reset = 1'b1 ;
    pci_clock = 1'b0 ;
    pci_clock = 1'b0 ;
    wb_clock  = 1'b1 ;
    wb_clock  = 1'b1 ;
Line 928... Line 927...
        `ifdef DISABLE_COMPLETION_EXPIRED_TESTS
        `ifdef DISABLE_COMPLETION_EXPIRED_TESTS
        `else
        `else
            master_completion_expiration ;
            master_completion_expiration ;
        `endif
        `endif
 
 
 
        `ifdef PCI_CLOCK_FOLLOWS_WB_CLOCK
 
            master_special_corner_case_test ;
 
        `endif
 
 
            $display(" ") ;
            $display(" ") ;
            $display("WB slave images' tests finished!") ;
            $display("WB slave images' tests finished!") ;
 
 
            $display("########################################################################") ;
            $display("########################################################################") ;
            $display("########################################################################") ;
            $display("########################################################################") ;
Line 1199... Line 1202...
    test_name = "WB IMAGE CONFIGURATION" ;
    test_name = "WB IMAGE CONFIGURATION" ;
    // enable master & target operation
    // enable master & target operation
    config_write( pci_ctrl_offset, 32'h0000_0007, 4'h1, ok) ;
    config_write( pci_ctrl_offset, 32'h0000_0007, 4'h1, ok) ;
    if ( ok !== 1 )
    if ( ok !== 1 )
    begin
    begin
        $display("Image testing failed! Failed to write PCI Device Control register! Time %t ", image_num, $time) ;
        $display("Image testing failed! Failed to write PCI Device Control register! Time %t ", $time) ;
        test_fail("write to PCI Device Control register didn't succeede");
        test_fail("write to PCI Device Control register didn't succeede");
        disable main ;
        disable main ;
    end
    end
 
 
    config_write( err_cs_offset, 32'h0000_0000, 4'h1, ok) ;
    config_write( err_cs_offset, 32'h0000_0000, 4'h1, ok) ;
    if ( ok !== 1 )
    if ( ok !== 1 )
    begin
    begin
        $display("Image testing failed! Failed to write WB Error Control and Status register! Time %t ", image_num, $time) ;
        $display("Image testing failed! Failed to write WB Error Control and Status register! Time %t ", $time) ;
        test_fail("write to WB Error Control and Status register didn't succeede");
        test_fail("write to WB Error Control and Status register didn't succeede");
        disable main ;
        disable main ;
    end
    end
 
 
    // prepare image control register
    // prepare image control register
Line 19112... Line 19115...
    `else
    `else
        parameter bist_chain_length = 6 ;
        parameter bist_chain_length = 6 ;
    `endif
    `endif
`else
`else
    `ifdef PCI_RAM_DONT_SHARE
    `ifdef PCI_RAM_DONT_SHARE
        bist_chain_length = 6 ;
        parameter bist_chain_length = 6 ;
    `else
    `else
        bist_chain_length = 4 ;
        parameter bist_chain_length = 4 ;
    `endif
    `endif
`endif
`endif
 
 
task run_bist_test ;
task run_bist_test ;
    reg [(bist_chain_length - 1):0] bist_result_vector ;
    reg [(bist_chain_length - 1):0] bist_result_vector ;
Line 19126... Line 19129...
    integer deadlock_count ;
    integer deadlock_count ;
begin
begin
 
 
    test_name = "BIST FOR RAMS RUN" ;
    test_name = "BIST FOR RAMS RUN" ;
 
 
    SI          = 0 ;
    scanb_en  = 0 ;
    shift_DR    = 0 ;
    scanb_si  = 0 ;
    capture_DR  = 0 ;
    scanb_rst = 0 ;
    extest      = 0 ;
    scanb_clk = 0 ;
    tck         = 0 ;
 
 
 
    fork
    fork
    begin
    begin
        repeat(2)
        repeat(2)
            @(posedge wb_clock) ;
            @(posedge wb_clock) ;
Line 19143... Line 19145...
        repeat(2)
        repeat(2)
            @(posedge pci_clock) ;
            @(posedge pci_clock) ;
    end
    end
    join
    join
 
 
    // test is run with forcing extest high
    // test is run by reseting the test logic
    extest <= 1'b1 ;
    scanb_rst <= 1'b1 ;
 
 
 
    // toggle scan clock for a few times
 
    repeat (20)
 
        #50 scanb_clk = !scanb_clk ;
 
 
 
    // release bist reset
 
    scanb_rst <= 1'b0 ;
 
 
    bist_result_vector = 0 ;
    bist_result_vector = 0 ;
 
 
    // result vector must be all 1s, because in RTL there cannot be a reason for BIST to fail
    // result vector must be all 1s, because in RTL there cannot be a reason for BIST to fail
    fork
    fork
    begin:scan
    begin:scan
        while (bist_result_vector !== {bist_chain_length{1'b1}})
        while (bist_result_vector !== {bist_chain_length{1'b1}})
        begin
        begin
            @(negedge tck) ;
            #1 ;
            capture_DR <= #1 1'b1 ;
            @(posedge scanb_clk) ;
            @(negedge tck) ;
            scanb_en <= #1 1'b1 ;
            capture_DR <= #1 1'b0 ;
 
            shift_DR   <= #1 1'b1 ;
 
            for (count = 0 ; count < bist_chain_length ; count = count + 1'b1)
            for (count = 0 ; count < bist_chain_length ; count = count + 1'b1)
            begin
            begin
                @(negedge tck) ;
                @(posedge scanb_clk) ;
                bist_result_vector[count] = SO ;
                bist_result_vector[count] = scanb_so ;
            end
            end
 
 
            shift_DR <= #1 1'b0 ;
            scanb_en <= #1 1'b0 ;
        end
        end
        #1 disable deadlock ;
        #1 disable deadlock ;
        @(negedge tck) ;
        @(negedge scanb_clk) ;
        extest <= #1 1'b0 ;
        #1 disable scanb_clk_gen ;
        #1 ;
 
        disable tck_gen ;
 
        test_ok ;
        test_ok ;
    end
    end
    begin:deadlock
    begin:deadlock
        for (deadlock_count = 0; deadlock_count <= 100000; deadlock_count = deadlock_count + 1'b1)
        for (deadlock_count = 0; deadlock_count <= 100000; deadlock_count = deadlock_count + 1'b1)
        begin
        begin
            @(posedge pci_clock) ;
            @(posedge pci_clock) ;
            @(posedge wb_clock) ;
            @(posedge wb_clock) ;
        end
        end
 
 
        test_fail("BIST Test didn't finish as expected") ;
        test_fail("BIST Test didn't finish as expected") ;
        extest <= #1 1'b0 ;
        scanb_en <= #1 1'b0 ;
        disable scan ;
        disable scan ;
        @(negedge tck) ;
        @(negedge scanb_clk) ;
        #1 ;
        #1 ;
        disable tck_gen ;
        disable scanb_clk_gen ;
    end
    end
    begin:tck_gen
    begin:scanb_clk_gen
        forever
        forever
            #50 tck = !tck ;
            #50 scanb_clk = !scanb_clk ;
    end
    end
    join
    join
end
end
endtask // run_bist_test
endtask // run_bist_test
`endif
`endif
Line 19245... Line 19250...
 
 
    // Set Base Address of IMAGE
    // Set Base Address of IMAGE
    config_write( ba_offset, Target_Base_Addr_R[1], 4'hF, ok_wb ) ;
    config_write( ba_offset, Target_Base_Addr_R[1], 4'hF, ok_wb ) ;
    if ( ok_wb !== 1 )
    if ( ok_wb !== 1 )
    begin
    begin
        $display("Image testing failed! Failed to write P_BA1 register! Time %t ", $time);
        $display("Special Testcase didn't pass! Failed to write P_BA1 register! Time %t ", $time);
        test_fail("PCI Base Address register 1 could not be written") ;
        test_fail("PCI Base Address register 1 could not be written") ;
        #1 ;
        #1 ;
        disable main ;
        disable main ;
    end
    end
 
 
    // Set Address Mask of IMAGE
    // Set Address Mask of IMAGE
    config_write( am_offset, Target_Addr_Mask_R[1], 4'hF, ok_wb ) ;
    config_write( am_offset, Target_Addr_Mask_R[1], 4'hF, ok_wb ) ;
    if ( ok_wb !== 1 )
    if ( ok_wb !== 1 )
    begin
    begin
        $display("Image testing failed! Failed to write P_AM1 register! Time %t ", $time);
        $display("Special Testcase didn't pass! Failed to write P_AM1 register! Time %t ", $time);
        test_fail("PCI Address Mask register 1 could not be written") ;
        test_fail("PCI Address Mask register 1 could not be written") ;
        #1 ;
        #1 ;
        disable main ;
        disable main ;
    end
    end
 
 
    // Disable all the features of the PCI Image 1
    // Disable all the features of the PCI Image 1
    config_write( ctrl_offset, 0, 4'hF, ok_wb ) ;
    config_write( ctrl_offset, 0, 4'hF, ok_wb ) ;
    if ( ok_wb !== 1 )
    if ( ok_wb !== 1 )
    begin
    begin
        $display("Image testing failed! Failed to write P_CTRL1 register! Time %t ", $time);
        $display("Special Testcase didn't pass! Failed to write P_CTRL1 register! Time %t ", $time);
        test_fail("PCI Image Control register 1 could not be written") ;
        test_fail("PCI Image Control register 1 could not be written") ;
        #1 ;
        #1 ;
        disable main ;
        disable main ;
    end
    end
 
 
Line 19642... Line 19647...
    if ( ok_pci !== 1'b1)
    if ( ok_pci !== 1'b1)
    begin
    begin
        test_fail("PCI Behavioral Master or Monitor signaled an error during read from PCI Bridge Target") ;
        test_fail("PCI Behavioral Master or Monitor signaled an error during read from PCI Bridge Target") ;
    end
    end
 
 
 
    // Disable used image
 
    config_write( ba_offset, 32'h0000_0000, 4'hF, ok_wb ) ;
 
    if ( ok_wb !== 1 )
 
    begin
 
        $display("Special Testcase didn't pass! Failed to write P_BA1 register! Time %t ", $time);
 
        test_fail("PCI Base Address register 1 could not be written") ;
 
        #1 ;
 
        disable main ;
 
    end
 
 
    master1_check_received_data = master_check_data_previous ;
    master1_check_received_data = master_check_data_previous ;
end
end
endtask // target_special_corner_case_test
endtask // target_special_corner_case_test
`endif
`endif
 
 
 
`ifdef PCI_CLOCK_FOLLOWS_WB_CLOCK
 
task master_special_corner_case_test ;
 
    reg   [11:0] ctrl_offset ;
 
    reg   [11:0] ba_offset ;
 
    reg   [11:0] am_offset ;
 
    reg `WRITE_STIM_TYPE write_data ;
 
    reg `READ_STIM_TYPE  read_data ;
 
    reg `READ_RETURN_TYPE read_status ;
 
 
 
    reg `WRITE_RETURN_TYPE write_status ;
 
    reg `WB_TRANSFER_FLAGS flags ;
 
    reg ok_pci   ;
 
    reg ok_wb ;
 
 
 
    reg [31:0] target_address ;
 
 
 
    reg [11:0] pci_ctrl_offset ;
 
 
 
    reg [31:0] image_base ;
 
begin:main
 
    test_name = "WISHBONE SLAVE UNIT SPECIAL CORNER CASE" ;
 
    pci_ctrl_offset = 12'h4 ;
 
    ctrl_offset = {4'h1, `W_IMG_CTRL1_ADDR, 2'b00} ;
 
    ba_offset   = {4'h1, `W_BA1_ADDR, 2'b00} ;
 
    am_offset   = {4'h1, `W_AM1_ADDR, 2'b00} ;
 
 
 
    target_address  = `BEH_TAR1_MEM_START ;
 
    image_base      = 0 ;
 
    image_base[`PCI_BASE_ADDR0_MATCH_RANGE] = target_address[`PCI_BASE_ADDR0_MATCH_RANGE] ;
 
 
 
    target_address[31:(32 - `WB_NUM_OF_DEC_ADDR_LINES)] = image_base[31:(32 - `WB_NUM_OF_DEC_ADDR_LINES)] ;
 
    target_address[(31 - `WB_NUM_OF_DEC_ADDR_LINES):0]  = image_base[(31 - `WB_NUM_OF_DEC_ADDR_LINES):0] ;
 
 
 
    flags                      = 0 ;
 
    flags`INIT_WAITS           = 0 ;
 
    flags`SUBSEQ_WAITS         = 0 ;
 
    flags`WB_TRANSFER_AUTO_RTY = 0 ;
 
 
 
    test_target_response[`TARGET_ENCODED_DEVSEL_SPEED] = `Test_Devsel_Fast ;
 
    test_target_response[`TARGET_ENCODED_INIT_WAITSTATES] = 0 ;
 
    test_target_response[`TARGET_ENCODED_SUBS_WAITSTATES] = 0 ;
 
 
 
    // enable master & target operation
 
    config_write( pci_ctrl_offset, 32'h0000_0007, 4'h1, ok_wb) ;
 
    if ( ok_wb !== 1 )
 
    begin
 
        $display("WISHBONE Slave Unit special corner case test didn't pass! Failed to write PCI Device Control register! Time %t ", $time) ;
 
        test_fail("write to PCI Device Control register didn't succeede");
 
        disable main ;
 
    end
 
 
 
    // prepare image control register
 
    config_write( ctrl_offset, 32'h0000_0000, 4'hF, ok_wb) ;
 
    if ( ok_wb !== 1 )
 
    begin
 
        $display("WISHBONE Slave Unit special corner case test didn't pass! Failed to write W_IMG_CTRL1 register! Time %t ", $time) ;
 
        test_fail("write to WB Image Control register didn't succeede");
 
        disable main ;
 
    end
 
 
 
    // prepare base address register
 
    config_write( ba_offset, image_base, 4'hF, ok_wb ) ;
 
    if ( ok_wb !== 1 )
 
    begin
 
        $display("WISHBONE Slave Unit special corner case test didn't pass! Failed to write W_BA1 register! Time %t ", $time) ;
 
        test_fail("write to WB Base Address register didn't succeede");
 
        disable main ;
 
    end
 
 
 
    // write address mask register
 
    config_write( am_offset, 32'hFFFF_FFFF, 4'hF, ok_wb ) ;
 
    if ( ok_wb !== 1 )
 
    begin
 
        $display("WISHBONE Slave Unit special corner case test didn't pass! Failed to write W_AM1 register! Time %t ", $time) ;
 
        test_fail("write to WB Address Mask register didn't succeede");
 
        disable main ;
 
    end
 
 
 
    fork
 
    begin
 
 
 
        // do one dummy read, to receive bus gnt
 
        read_data`READ_ADDRESS  = target_address ;
 
        read_data`READ_SEL      = 4'hF ;
 
        read_data`READ_TAG_STIM = 0 ;
 
 
 
        // handle retries
 
        flags`WB_TRANSFER_AUTO_RTY = 1 ;
 
 
 
        wishbone_master.wb_single_read( read_data, flags, read_status ) ;
 
        if (read_status`CYC_ACTUAL_TRANSFER !== 1)
 
        begin
 
            $display("WISHBONE Slave Unit special corner case test didn't pass! Bridge failed to process single memory read! Time %t ", $time) ;
 
            test_fail("PCI bridge didn't process the delayed read as expected");
 
            disable main ;
 
        end
 
 
 
        write_data`WRITE_ADDRESS = target_address + 64;
 
        write_data`WRITE_DATA    = 32'hABCD_EF12 ;
 
        write_data`WRITE_SEL     = 4'hF ;
 
 
 
        wishbone_master.blk_write_data[0] = write_data ;
 
 
 
        write_data`WRITE_ADDRESS = target_address + 128 ;
 
        write_data`WRITE_DATA    = ~write_data`WRITE_DATA ;
 
        write_data`WRITE_SEL     = 4'hF ;
 
 
 
        wishbone_master.blk_write_data[1] = write_data ;
 
 
 
        // no retries should happen
 
        flags`WB_TRANSFER_AUTO_RTY = 0 ;
 
 
 
        flags`WB_TRANSFER_SIZE = 2 ;
 
 
 
        wishbone_master.wb_block_write( flags, write_status ) ;
 
        if ( write_status`CYC_ACTUAL_TRANSFER !== 2 )
 
        begin
 
            $display("WISHBONE Slave Unit special corner case test didn't pass! Bridge failed to process block memory write! Time %t ", $time) ;
 
            test_fail("WB Slave state machine failed to post block memory write");
 
            disable main ;
 
        end
 
 
 
        // read data back
 
        read_data`READ_ADDRESS  = target_address + 64 ;
 
        read_data`READ_SEL      = 4'hF ;
 
        read_data`READ_TAG_STIM = 0 ;
 
 
 
        // handle retries
 
        flags`WB_TRANSFER_AUTO_RTY = 1 ;
 
 
 
        wishbone_master.wb_single_read( read_data, flags, read_status ) ;
 
        if (read_status`CYC_ACTUAL_TRANSFER !== 1)
 
        begin
 
            $display("WISHBONE Slave Unit special corner case test didn't pass! Bridge failed to process single memory read! Time %t ", $time) ;
 
            test_fail("PCI bridge didn't process the delayed read as expected");
 
            disable main ;
 
        end
 
 
 
        if (read_status`READ_DATA !== 32'hABCD_EF12)
 
        begin
 
            display_warning(target_address + 64, 32'hABCD_EF12, read_status`READ_DATA) ;
 
            test_fail("PCI bridge returned unexpected Read Data");
 
            ok_wb = 0 ;
 
        end
 
 
 
        // read second data back
 
        read_data`READ_ADDRESS  = target_address + 128 ;
 
        read_data`READ_SEL      = 4'hF ;
 
        read_data`READ_TAG_STIM = 0 ;
 
 
 
        // handle retries
 
        flags`WB_TRANSFER_AUTO_RTY = 1 ;
 
 
 
        wishbone_master.wb_single_read( read_data, flags, read_status ) ;
 
        if (read_status`CYC_ACTUAL_TRANSFER !== 1)
 
        begin
 
            $display("WISHBONE Slave Unit special corner case test didn't pass! Bridge failed to process single memory read! Time %t ", $time) ;
 
            test_fail("PCI bridge didn't process the delayed read as expected");
 
            disable main ;
 
        end
 
 
 
        if (read_status`READ_DATA !== write_data`WRITE_DATA)
 
        begin
 
            display_warning(target_address + 128, write_data`WRITE_DATA, read_status`READ_DATA) ;
 
            test_fail("PCI bridge returned unexpected Read Data");
 
            ok_wb = 0 ;
 
        end
 
    end
 
    begin
 
 
 
        pci_transaction_progress_monitor( target_address, `BC_MEM_READ, 1, 0, 1, 0, 0, ok_pci ) ;
 
        if ( ok_pci !== 1 )
 
        begin
 
            test_fail("because single memory read from WB to PCI didn't engage expected transaction on PCI bus") ;
 
        end
 
 
 
        if(ok_pci)
 
        begin
 
            pci_transaction_progress_monitor( target_address + 64, `BC_MEM_WRITE, 1, 0, 1, 0, 0, ok_pci ) ;
 
            if ( ok_pci !== 1 )
 
            begin
 
                test_fail("because single memory write from WB to PCI didn't engage expected transaction on PCI bus") ;
 
            end
 
        end
 
 
 
        if (ok_pci)
 
        begin
 
            pci_transaction_progress_monitor( target_address + 128, `BC_MEM_WRITE, 1, 0, 1, 0, 0, ok_pci ) ;
 
            if ( ok_pci !== 1 )
 
            begin
 
                test_fail("because single memory write from WB to PCI didn't engage expected transaction on PCI bus") ;
 
            end
 
        end
 
 
 
        if (ok_pci)
 
        begin
 
            pci_transaction_progress_monitor( target_address + 64, `BC_MEM_READ, 1, 0, 1, 0, 0, ok_pci ) ;
 
            if ( ok_pci !== 1 )
 
            begin
 
                test_fail("because single memory read from WB to PCI didn't engage expected transaction on PCI bus") ;
 
            end
 
        end
 
 
 
        if (ok_pci)
 
        begin
 
            pci_transaction_progress_monitor( target_address + 128, `BC_MEM_READ, 1, 0, 1, 0, 0, ok_pci ) ;
 
            if ( ok_pci !== 1 )
 
            begin
 
                test_fail("because single memory read from WB to PCI didn't engage expected transaction on PCI bus") ;
 
            end
 
        end
 
    end
 
    join
 
 
 
    if (ok_wb && ok_pci)
 
        test_ok ;
 
 
 
    // disable the image
 
    config_write( ba_offset, 32'h0000_0000, 4'hF, ok_wb ) ;
 
    if ( ok_wb !== 1 )
 
    begin
 
        $display("WISHBONE Slave Unit special corner case test didn't pass! Failed to write W_BA1 register! Time %t ", $time) ;
 
        test_fail("write to WB Base Address register didn't succeede");
 
        disable main ;
 
    end
 
end
 
endtask // master_special_corner_case_test
 
`endif
 
 
task test_fail ;
task test_fail ;
    input [7999:0] failure_reason ;
    input [7999:0] failure_reason ;
    reg   [8007:0] display_failure ;
    reg   [8007:0] display_failure ;
    reg   [799:0] display_test ;
    reg   [799:0] display_test ;
begin
begin

powered by: WebSVN 2.1.0

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