亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wb_master_behavioral.v

?? 使用方法: 以太網編程,拷貝到硬盤
?? V
?? 第 1 頁 / 共 2 頁
字號:
    // check if task was called before previous call finished
    if ( in_use === 1 )
    begin
        $display("*E, wb_RMW_write routine re-entered! Time %t ", $time) ;
        return`TB_ERROR_BIT = 1'b1 ;
        disable main ;
    end

    in_use = 1 ;

    retry = 1 ;

    while (retry === 1)
    begin
        // synchronize operation to clock
        //@(posedge CLK_I) ;
        ok = 1 ;
        if (rty_count !== 0)
            wbm_low_level.start_cycle(cab, 1'b1, ok) ;

        if ( ok !== 1 )
        begin
            $display("*E, Failed to initialize cycle! Routine wb_single_write, Time %t ", $time) ;
            return`TB_ERROR_BIT = 1'b1 ;
            disable main ;
        end

        // first insert initial wait states
        cyc_count = write_flags`INIT_WAITS ;
        while ( cyc_count > 0 )
        begin
            @(posedge CLK_I) ;
            cyc_count = cyc_count - 1 ;
        end

        wbm_low_level.wbm_write(write_data, return) ;

        if ( return`CYC_ERR === 0 && return`CYC_ACK === 0 && return`CYC_RTY === 1 && write_flags`WB_TRANSFER_AUTO_RTY === 1 && return`TB_ERROR_BIT === 0)
        begin
            if ( rty_count === `WB_TB_MAX_RTY )
            begin
                 $display("*E, maximum number of retries received - access will not be repeated anymore! Routine wb_single_write, Time %t ", $time) ;
                 retry = 0 ;
            end
            else
            begin
                retry     = 1 ;
                rty_count = rty_count + 1 ;
            end
        end
        else
            retry = 0 ;

        // if test bench error bit is set, there is no meaning in introducing subsequent wait states
        if ( return`TB_ERROR_BIT !== 0 )
        begin
            @(posedge CLK_I) ;
            wbm_low_level.end_cycle ;
            disable main ;
        end

        cyc_count = write_flags`SUBSEQ_WAITS ;
        while ( cyc_count > 0 )
        begin
            @(posedge CLK_I) ;
            cyc_count = cyc_count - 1 ;
        end

        wbm_low_level.end_cycle ;
    end

    in_use = 0 ;

end //main
endtask // wb_RMW_write

task wb_block_write ;
    input  `WB_TRANSFER_FLAGS write_flags ;
    inout  `WRITE_RETURN_TYPE return ;

    reg in_use ;
    reg `WRITE_STIM_TYPE  current_write ;
    reg cab ;
    reg ok ;
    integer cyc_count ;
    integer rty_count ;
    reg end_blk ;
begin:main

    return`CYC_ACTUAL_TRANSFER = 0 ;
    rty_count = 0 ;

    // check if task was called before previous call finished
    if ( in_use === 1 )
    begin
        $display("*E, wb_block_write routine re-entered! Time %t ", $time) ;
        return`TB_ERROR_BIT = 1'b1 ;
        disable main ;
    end

    if (write_flags`WB_TRANSFER_SIZE > `MAX_BLK_SIZE)
    begin
        $display("*E, number of transfers passed to wb_block_write routine exceeds defined maximum transaction length! Time %t", $time) ;
        return`TB_ERROR_BIT = 1'b1 ;
        disable main ;
    end

    in_use = 1 ;
    @(posedge CLK_I) ;
    cab = write_flags`WB_TRANSFER_CAB ;
    wbm_low_level.start_cycle(cab, 1'b1, ok) ;
    if ( ok !== 1 )
    begin
        $display("*E, Failed to initialize cycle! Routine wb_block_write, Time %t ", $time) ;
        return`TB_ERROR_BIT = 1'b1 ;
        disable main ;
    end

    // insert initial wait states
    cyc_count = write_flags`INIT_WAITS ;
    while ( cyc_count > 0 )
    begin
        @(posedge CLK_I) ;
        cyc_count = cyc_count - 1 ;
    end

    end_blk = 0 ;
    while (end_blk === 0)
    begin
        // collect data for current data beat
        current_write = blk_write_data[return`CYC_ACTUAL_TRANSFER] ;
        wbm_low_level.wbm_write(current_write, return) ;

        // check result of write operation
        // check for severe test error
        if (return`TB_ERROR_BIT !== 0)
        begin
           @(posedge CLK_I) ;
           wbm_low_level.end_cycle ;
           disable main ;
        end

        // slave returned error or error signal had invalid value
        if (return`CYC_ERR !== 0)
            end_blk = 1 ;

        if (
            (return`CYC_RTY !== 0) && (return`CYC_RTY !== 1) ||
            (return`CYC_ACK !== 0) && (return`CYC_ACK !== 1) ||
            (return`CYC_ERR !== 0) && (return`CYC_ERR !== 1)
           )
        begin
            end_blk = 1 ;
            $display("*E, at least one slave response signal was invalid when cycle finished! Routine wb_block_write, Time %t ", $time) ;
            $display("ACK = %b \t RTY_O = %b \t ERR_O = %b \t", return`CYC_ACK, return`CYC_RTY, return`CYC_ERR) ;
        end

        if ((return`CYC_RTY === 1) && (write_flags`WB_TRANSFER_AUTO_RTY !== 1))
            end_blk = 1 ;

        if ((return`CYC_RTY === 1) && (write_flags`WB_TRANSFER_AUTO_RTY === 1))
        begin
            if ( rty_count === `WB_TB_MAX_RTY )
            begin
                 $display("*E, maximum number of retries received - access will not be repeated anymore! Routine wb_block_write, Time %t ", $time) ;
                 end_blk = 1 ;
            end
            else
            begin
                rty_count = rty_count + 1 ;
            end
        end
        else
            rty_count = 0 ;

        // check if slave responded at all
        if (return`CYC_RESPONSE === 0)
            end_blk = 1 ;

        // check if all intended data was transfered
        if (return`CYC_ACTUAL_TRANSFER === write_flags`WB_TRANSFER_SIZE)
            end_blk = 1 ;

        // insert subsequent wait cycles, if transfer is supposed to continue
        if ( end_blk === 0 )
        begin
            cyc_count = write_flags`SUBSEQ_WAITS ;
            while ( cyc_count > 0 )
            begin
                @(posedge CLK_I) ;
                cyc_count = cyc_count - 1 ;
            end
        end

        if ( (end_blk === 0) && (return`CYC_RTY === 1) )
        begin
            wbm_low_level.end_cycle ;
            @(posedge CLK_I) ;
            wbm_low_level.start_cycle(cab, 1'b1, ok) ;
            if ( ok !== 1 )
            begin
                $display("*E, Failed to initialize cycle! Routine wb_block_write, Time %t ", $time) ;
                return`TB_ERROR_BIT = 1'b1 ;
                end_blk = 1 ;
            end
        end
    end //while

    wbm_low_level.end_cycle ;
    in_use = 0 ;
end //main
endtask //wb_block_write

task wb_block_read ;
    input  `WB_TRANSFER_FLAGS      read_flags ;
    inout `READ_RETURN_TYPE       return ;

    reg in_use ;
    reg `READ_STIM_TYPE  current_read ;
    reg cab ;
    reg ok ;
    integer cyc_count ;
    integer rty_count ;
    reg end_blk ;
    integer transfered ;
begin:main

    return`CYC_ACTUAL_TRANSFER = 0 ;
    transfered = 0 ;
    rty_count = 0 ;

    // check if task was called before previous call finished
    if ( in_use === 1 )
    begin
        $display("*E, wb_block_read routine re-entered! Time %t ", $time) ;
        return`TB_ERROR_BIT = 1'b1 ;
        disable main ;
    end

    if (read_flags`WB_TRANSFER_SIZE > `MAX_BLK_SIZE)
    begin
        $display("*E, number of transfers passed to wb_block_read routine exceeds defined maximum transaction length! Time %t", $time) ;
        return`TB_ERROR_BIT = 1'b1 ;
        disable main ;
    end

    in_use = 1 ;
    @(posedge CLK_I) ;
    cab = read_flags`WB_TRANSFER_CAB ;

    wbm_low_level.start_cycle(cab, 1'b0, ok) ;

    if ( ok !== 1 )
    begin
        $display("*E, Failed to initialize cycle! Routine wb_block_read, Time %t ", $time) ;
        return`TB_ERROR_BIT = 1'b1 ;
        disable main ;
    end

    // insert initial wait states
    cyc_count = read_flags`INIT_WAITS ;
    while ( cyc_count > 0 )
    begin
        @(posedge CLK_I) ;
        cyc_count = cyc_count - 1 ;
    end

    end_blk = 0 ;
    while (end_blk === 0)
    begin
        // collect data for current data beat
        current_read = blk_read_data_in[return`CYC_ACTUAL_TRANSFER] ;

        wbm_low_level.wbm_read(current_read, return) ;

        if ( transfered !== return`CYC_ACTUAL_TRANSFER )
        begin
            blk_read_data_out[transfered] = return ;
            transfered = return`CYC_ACTUAL_TRANSFER ;
        end

        // check result of read operation
        // check for severe test error
        if (return`TB_ERROR_BIT !== 0)
        begin
           @(posedge CLK_I) ;
           wbm_low_level.end_cycle ;
           disable main ;
        end

        // slave returned error or error signal had invalid value
        if (return`CYC_ERR !== 0)
            end_blk = 1 ;

        if (
            (return`CYC_RTY !== 0) && (return`CYC_RTY !== 1) ||
            (return`CYC_ACK !== 0) && (return`CYC_ACK !== 1) ||
            (return`CYC_ERR !== 0) && (return`CYC_ERR !== 1)
           )
        begin
            end_blk = 1 ;
            $display("*E, at least one slave response signal was invalid when cycle finished! Routine wb_block_read, Time %t ", $time) ;
            $display("ACK = %b \t RTY_O = %b \t ERR_O = %b \t", return`CYC_ACK, return`CYC_RTY, return`CYC_ERR) ;
        end

        if ((return`CYC_RTY === 1) && (read_flags`WB_TRANSFER_AUTO_RTY !== 1))
            end_blk = 1 ;

        if ((return`CYC_RTY === 1) && (read_flags`WB_TRANSFER_AUTO_RTY === 1))
        begin
            if ( rty_count === `WB_TB_MAX_RTY )
            begin
                 $display("*E, maximum number of retries received - access will not be repeated anymore! Routine wb_block_read, Time %t ", $time) ;
                 end_blk = 1 ;
            end
            else
            begin
                rty_count = rty_count + 1 ;
            end
        end
        else
            rty_count = 0 ;

        // check if slave responded at all
        if (return`CYC_RESPONSE === 0)
            end_blk = 1 ;

        // check if all intended data was transfered
        if (return`CYC_ACTUAL_TRANSFER === read_flags`WB_TRANSFER_SIZE)
            end_blk = 1 ;

        // insert subsequent wait cycles, if transfer is supposed to continue
        if ( end_blk === 0 )
        begin
            cyc_count = read_flags`SUBSEQ_WAITS ;
            while ( cyc_count > 0 )
            begin
                @(posedge CLK_I) ;
                cyc_count = cyc_count - 1 ;
            end
        end

        if ( (end_blk === 0) && (return`CYC_RTY === 1) )
        begin
            wbm_low_level.end_cycle ;
            @(posedge CLK_I) ;
            wbm_low_level.start_cycle(cab, 1'b0, ok) ;
            if ( ok !== 1 )
            begin
                $display("*E, Failed to initialize cycle! Routine wb_block_read, Time %t ", $time) ;
                return`TB_ERROR_BIT = 1'b1 ;
                end_blk = 1 ;
            end
        end
    end //while

    wbm_low_level.end_cycle ;
    in_use = 0 ;
end //main
endtask //wb_block_read

endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久综合精品| 日韩午夜精品视频| 亚洲欧美日韩国产一区二区三区| 国产69精品久久久久毛片| 中文字幕精品综合| 91在线观看免费视频| 亚洲乱码国产乱码精品精98午夜| 91理论电影在线观看| 亚洲国产另类av| 精品日韩欧美在线| 成人一级黄色片| 亚洲精品精品亚洲| 欧美肥妇毛茸茸| 国产伦精品一区二区三区视频青涩| 欧美国产一区视频在线观看| 91丨国产丨九色丨pron| 亚洲成av人片一区二区梦乃| 精品日韩在线观看| 91免费国产在线| 日韩av电影一区| 中文字幕不卡在线| 欧美日韩成人综合在线一区二区| 男人的天堂亚洲一区| 中文字幕av在线一区二区三区| 91久久精品日日躁夜夜躁欧美| 五月婷婷激情综合| 久久夜色精品国产欧美乱极品| 成人avav在线| 蜜桃精品在线观看| 亚洲男同性恋视频| 日韩精品一区二| 91电影在线观看| 激情五月婷婷综合| 亚洲精品精品亚洲| 久久久久久久网| 欧美网站大全在线观看| 国产福利一区二区三区在线视频| 一片黄亚洲嫩模| 欧美国产日韩一二三区| 4438亚洲最大| 99精品视频在线观看| 久久精品免费看| 亚洲综合免费观看高清完整版在线 | 波多野洁衣一区| 日本欧美在线看| 亚洲欧美电影院| 国产日本欧洲亚洲| 日韩一级大片在线| 91福利视频在线| 成人动漫在线一区| 久久激情综合网| 五月婷婷色综合| 亚洲猫色日本管| 国产亚洲一本大道中文在线| 欧美精品xxxxbbbb| 欧美日韩一区二区三区在线| 99综合电影在线视频| 国产在线播放一区| 色综合天天天天做夜夜夜夜做| 日韩高清欧美激情| 夜夜嗨av一区二区三区| 国产精品成人免费在线| 欧美国产日本韩| 国产亚洲一区字幕| 久久品道一品道久久精品| 在线播放日韩导航| 欧美日韩精品系列| 欧美日韩一区二区在线视频| 91久久一区二区| 色诱视频网站一区| 色吊一区二区三区| 在线一区二区三区| 色婷婷综合久久久中文字幕| 成av人片一区二区| 国产jizzjizz一区二区| 免费观看在线综合色| 国产精品久久福利| 国产日韩综合av| 精品国产123| 欧美一区二区三区小说| 欧美三级电影在线看| 色综合天天综合网国产成人综合天 | 91久久精品一区二区二区| 成人福利电影精品一区二区在线观看| 老司机免费视频一区二区| 日韩在线a电影| 丝袜美腿亚洲一区二区图片| 亚洲成人先锋电影| 亚洲一区二区三区四区五区黄| 亚洲精品中文字幕乱码三区| 久久久久久久久久久电影| 欧美国产激情一区二区三区蜜月| 久久久五月婷婷| 久久―日本道色综合久久| 精品欧美一区二区三区精品久久| 日韩欧美国产一区在线观看| 日韩精品一区二区三区中文精品| 91精品国产高清一区二区三区| 欧美高清视频一二三区 | 国产一区二区在线观看视频| 精品午夜久久福利影院 | 亚洲免费在线视频一区 二区| 国产精品久线观看视频| 中文字幕在线观看一区二区| 中文字幕人成不卡一区| 亚洲欧美一区二区三区孕妇| 亚洲嫩草精品久久| 亚洲国产一区二区a毛片| 亚洲高清在线精品| 五月天国产精品| 日本在线不卡视频一二三区| 麻豆精品久久久| 国产伦理精品不卡| av午夜精品一区二区三区| 91女厕偷拍女厕偷拍高清| 欧洲av一区二区嗯嗯嗯啊| 在线亚洲一区二区| 欧美一级国产精品| 久久嫩草精品久久久精品| 国产欧美一区二区精品仙草咪| 亚洲最大成人网4388xx| 午夜精品一区二区三区电影天堂 | 日韩精品一级二级| 国产成人在线免费| 欧洲在线/亚洲| 精品毛片乱码1区2区3区| 国产欧美1区2区3区| 亚洲摸摸操操av| 美洲天堂一区二卡三卡四卡视频| 国产a精品视频| 欧美午夜电影在线播放| 欧美本精品男人aⅴ天堂| 中文字幕亚洲一区二区va在线| 亚洲成av人片观看| 国产成人精品三级| 91成人免费在线视频| 精品国产91亚洲一区二区三区婷婷| 日本一二三四高清不卡| 午夜不卡av在线| 成人黄色一级视频| 日韩一区二区三区免费看 | 色婷婷精品大在线视频| 日韩欧美卡一卡二| 亚洲欧美另类小说视频| 免费成人在线视频观看| 91社区在线播放| 精品少妇一区二区三区| 爽爽淫人综合网网站| 成人午夜看片网址| 日韩欧美一级在线播放| 国产精品电影一区二区三区| 蜜桃精品视频在线| 欧美丝袜自拍制服另类| 日韩一区二区免费视频| 亚洲18女电影在线观看| 成人h精品动漫一区二区三区| 777亚洲妇女| 亚洲免费观看高清在线观看| 韩国一区二区三区| 69p69国产精品| 成人免费在线播放视频| 成人福利视频在线| 久久久亚洲精品石原莉奈| 美美哒免费高清在线观看视频一区二区 | 亚洲毛片av在线| 成人在线视频一区二区| 日韩视频123| 亚洲高清视频在线| 91麻豆精品视频| 国产欧美日韩综合| 国产精品99久久久| 欧美精品一区二区三区视频| 日韩在线一二三区| 欧美综合久久久| 亚洲人成在线播放网站岛国| 99精品在线观看视频| 国产精品女主播av| 成人精品视频网站| 国产欧美精品一区| 国产91精品久久久久久久网曝门| 日韩免费在线观看| 亚洲成a天堂v人片| 91伊人久久大香线蕉| 中文字幕在线不卡国产视频| 国产成人av自拍| 欧美—级在线免费片| 国产成人av电影| 欧美国产日韩一二三区| 国产福利91精品| 蜜臀av一区二区| 日韩一级片网址| 国内外精品视频| 欧美高清在线精品一区| 久久精品国产精品亚洲精品| 久久久九九九九| 91免费小视频| 午夜精品久久一牛影视| 777亚洲妇女| 国产乱码精品一区二区三区忘忧草| 国产日韩亚洲欧美综合|