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

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

?? wb_bus_mon.v

?? Verilog HDl代碼
?? V
字號:


`include "timescale.v"
`include "wb_model_defines.v"
// WISHBONE bus monitor module - it connects to WISHBONE master signals and
// monitors for any illegal combinations appearing on the bus.
module WB_BUS_MON(
                    CLK_I,
                    RST_I,
	            ACK_I,
                    ADDR_O,
                    CYC_O,
                    DAT_I,
                    DAT_O,
                    ERR_I,
                    RTY_I,
                    SEL_O,
                    STB_O,
                    WE_O,
                    TAG_I,
                    TAG_O,
                    CAB_O,
                    log_file_desc
                  ) ;

input                           CLK_I  ;
input                           RST_I  ;
input                           ACK_I  ;
input   [(`WB_ADDR_WIDTH-1):0]  ADDR_O ;
input                           CYC_O  ;
input   [(`WB_DATA_WIDTH-1):0]  DAT_I  ;
input   [(`WB_DATA_WIDTH-1):0]  DAT_O  ;
input                           ERR_I  ;
input                           RTY_I  ;
input   [(`WB_SEL_WIDTH-1):0]   SEL_O  ;
input                           STB_O  ;
input                           WE_O   ;
input   [(`WB_TAG_WIDTH-1):0] TAG_I  ;
input   [(`WB_TAG_WIDTH-1):0] TAG_O  ;
input                           CAB_O  ;
input [31:0] log_file_desc ;

always@(posedge CLK_I or posedge RST_I)
begin
    if (RST_I)
    begin
        // when reset is applied, all control signals must be low
        if (CYC_O)
        begin
            $display("*E (%0t) CYC_O active under reset", $time) ;
            $fdisplay(log_file_desc, "*E (%0t)(%m)CYC_O active under reset", $time) ;
        end
        if (STB_O)
        begin
            $display("*E (%0t) STB_O active under reset", $time) ;
            $fdisplay(log_file_desc, "*E (%0t)(%m)STB_O active under reset", $time) ;
        end
        /*if (ACK_I)
            $display("ACK_I active under reset") ;*/
        if (ERR_I)
        begin
            $display("*E (%0t) ERR_I active under reset", $time) ;
            $fdisplay(log_file_desc, "*E (%0t)(%m)ERR_I active under reset", $time) ;
        end
        if (RTY_I)
        begin
            $display("*E (%0t) RTY_I active under reset", $time) ;
            $fdisplay(log_file_desc, "*E (%0t)(%m)RTY_I active under reset", $time) ;
        end
        if (CAB_O)
        begin
            $display("*E (%0t) CAB_O active under reset", $time) ;
            $fdisplay(log_file_desc, "*E (%0t)(%m)CAB_O active under reset", $time) ;
        end
    end // reset
    else
    if (~CYC_O)
    begin
        // when cycle indicator is low, all control signals must be low
        if (STB_O)
        begin
            $display("*E (%0t) STB_O active without CYC_O being active", $time) ;
            $fdisplay(log_file_desc, "*E (%0t)(%m)STB_O active without CYC_O being active", $time) ;
        end
        if (ACK_I)
        begin
            $display("*E (%0t) ACK_I active without CYC_O being active", $time) ;
            $fdisplay(log_file_desc, "*E (%0t)(%m)ACK_I active without CYC_O being active", $time) ;
        end
        if (ERR_I)
        begin
            $display("*E (%0t) ERR_I active without CYC_O being active", $time) ;
            $fdisplay(log_file_desc, "*E (%0t)(%m)ERR_I active without CYC_O being active", $time) ;
        end
        if (RTY_I)
        begin
            $display("*E (%0t) RTY_I active without CYC_O being active", $time) ;
            $fdisplay(log_file_desc, "*E (%0t)(%m)RTY_I active without CYC_O being active", $time) ;
        end
        if (CAB_O)
        begin
            $display("*E (%0t) CAB_O active without CYC_O being active", $time) ;
            $fdisplay(log_file_desc, "*E (%0t)(%m)CAB_O active without CYC_O being active", $time) ;
        end
    end // ~CYC_O
end

reg [`WB_DATA_WIDTH-1:0] previous_data ;
reg [`WB_ADDR_WIDTH-1:0] previous_address ;
reg [`WB_SEL_WIDTH-1:0] previous_sel ;
reg                     previous_stb ;
reg                     previous_ack ;
reg                     previous_err ;
reg                     previous_rty ;
reg                     previous_cyc ;
reg can_change ;

always@(posedge CLK_I or posedge RST_I)
begin
    if (RST_I)
    begin
        previous_stb <= 1'b0 ;
        previous_ack <= 1'b0 ;
        previous_err <= 1'b0 ;
        previous_rty <= 1'b0 ;
        previous_cyc <= 1'b0 ;
    end
    else
    begin
        previous_stb <= STB_O ;
        previous_ack <= ACK_I ;
        previous_err <= ERR_I ;
        previous_rty <= RTY_I ;
        previous_cyc <= CYC_O ;
    end
end

// cycle monitor
always@(posedge CLK_I)
begin
    if (CYC_O && ~RST_I) // cycle in progress
    begin
        if (STB_O)
        begin
            // check for two control signals active at same edge
            if ( ACK_I && RTY_I )
            begin
                $display("*E (%0t) ACK_I and RTY_I asserted at the same time during cycle", $time) ;
                $fdisplay(log_file_desc, "*E (%0t)(%m)ACK_I and RTY_I asserted at the same time during cycle", $time) ;
            end
            if ( ACK_I && ERR_I )
            begin
                $display("*E (%0t) ACK_I and ERR_I asserted at the same time during cycle", $time) ;
                $fdisplay(log_file_desc, "*E (%0t)(%m)ACK_I and ERR_I asserted at the same time during cycle", $time) ;
            end
            if ( RTY_I && ERR_I )
            begin
                $display("*E (%0t) RTY_I and ERR_I asserted at the same time during cycle", $time) ;
                $fdisplay(log_file_desc, "*E (%0t)(%m)RTY_I and ERR_I asserted at the same time during cycle", $time) ;
            end

            if ( can_change !== 1 )
            begin
                if ( ADDR_O !== previous_address )
                begin
                    $display("*E (%0t) WB bus monitor detected address change in the middle of the cycle!", $time) ;
                    $fdisplay(log_file_desc, "*E (%0t)(%m)WB bus monitor detected address change in the middle of the cycle!", $time) ;
                end

                if ( SEL_O !== previous_sel )
                begin
                    $display("*E (%0t) WB bus monitor detected select lines changed in the middle of the cycle!", $time) ;
                    $fdisplay(log_file_desc, "*E (%0t)(%m)WB bus monitor detected select lines changed in the middle of the cycle!", $time) ;
                end

                if ( (WE_O !== 0) && ( DAT_O !== previous_data ) )
                begin
                    $display("*E (%0t) WB bus monitor detected data lines changed in the middle of the cycle!", $time) ;
                    $fdisplay(log_file_desc, "*E (%0t)(%m)WB bus monitor detected data lines changed in the middle of the cycle!", $time) ;
                end
            end

            if ( ACK_I || RTY_I || ERR_I )
                can_change       = 1 ;
            else
            begin
                previous_data    = DAT_O ;
                previous_address = ADDR_O ;
                previous_sel     = SEL_O ;
                can_change = 0 ;
            end

        end // STB_O
        else
        begin //~STB_O
            // while STB_O is inactive, only ACK_I is allowed to be active
            if ( ERR_I )
            begin
                $display("*E (%0t) ERR_I asserted during cycle without STB_O", $time) ;
                $fdisplay(log_file_desc, "*E (%0t)(%m)ERR_I asserted during cycle without STB_O", $time) ;
            end
            if ( RTY_I )
            begin
                $display("*E (%0t) RTY_I asserted during cycle without STB_O", $time) ;
                $fdisplay(log_file_desc, "*E (%0t)(%m)RTY_I asserted during cycle without STB_O", $time) ;
            end

            if ((previous_ack !== 1) && (previous_err !== 1) && (previous_rty !== 1) && (previous_stb !== 0))
            begin
                $display("STB_O de-asserted without reception of slave response") ;
                $fdisplay(log_file_desc, "STB_O de-asserted without reception of slave response") ;
            end

            can_change = 1 ;
        end   // ~STB_O
    end // cycle in progress
    else if (!RST_I)
    begin
        // cycle not in progress anymore
        can_change = 1 ;
        if ((previous_ack !== 1) && (previous_err !== 1) && (previous_rty !== 1) && (previous_stb !== 0))
        begin
            $display("STB_O de-asserted without reception of slave response") ;
            $fdisplay(log_file_desc, "STB_O de-asserted without reception of slave response") ;
        end
    end
end // cycle monitor

// CAB_O monitor - CAB_O musn't change during one cycle
reg [1:0] first_cab_val ;
always@(posedge CLK_I or RST_I)
begin
    if ((CYC_O === 0) || RST_I)
        first_cab_val <= 2'b00 ;
    else
    begin
        // cycle in progress - is this first clock edge in a cycle ?
        if (first_cab_val[1] === 1'b0)
            first_cab_val <= {1'b1, CAB_O} ;
        else if ( first_cab_val[0] !== CAB_O )
        begin
            $display("*E (%0t) CAB_O value changed during cycle", $time) ;
            $fdisplay(log_file_desc, "*E (%0t)(%m)CAB_O value changed during cycle", $time) ;
        end
    end
end // CAB_O monitor

// WE_O monitor for consecutive address bursts
reg [1:0] first_we_val ;
always@(posedge CLK_I or posedge RST_I)
begin
    if (~CYC_O || ~CAB_O || RST_I)
        first_we_val <= 2'b00 ;
    else
    if (STB_O)
    begin
        // cycle in progress - is this first clock edge in a cycle ?
        if (first_we_val[1] == 1'b0)
            first_we_val <= {1'b1, WE_O} ;
        else if ( first_we_val[0] != WE_O )
        begin
            $display("*E (%0t) WE_O value changed during CAB cycle", $time) ;
            $fdisplay(log_file_desc, "*E (%0t)(%m)WE_O value changed during CAB cycle", $time) ;
        end
    end
end // CAB_O monitor

// address monitor for consecutive address bursts
reg [`WB_ADDR_WIDTH:0] address ;
always@(posedge CLK_I or posedge RST_I)
begin
    if (~CYC_O || ~CAB_O || RST_I)
        address <= {(`WB_ADDR_WIDTH + 1){1'b0}} ;
    else
    begin
        if (STB_O && ACK_I)
        begin
            if (address[`WB_ADDR_WIDTH] == 1'b0)
                address <= {1'b1, (ADDR_O + `WB_SEL_WIDTH)} ;
            else
            begin
                if ( address[(`WB_ADDR_WIDTH-1):0] != ADDR_O)
                begin
                    $display("*E (%0t) Consecutive address burst address incrementing incorrect", $time) ;
                    $fdisplay(log_file_desc, "*E (%0t)(%m)Consecutive address burst address incrementing incorrect", $time) ;
                end
                else
                    address <= {1'b1, (ADDR_O + `WB_SEL_WIDTH)} ;
            end
        end
    end
end // address monitor

// data monitor
always@(posedge CLK_I or posedge RST_I)
begin
    if (CYC_O && STB_O && ~RST_I)
    begin
        if ( ((^ADDR_O) !== 1'b1) && ((^ADDR_O) !== 1'b0) )
        begin
            $display("*E (%0t) Master provided invalid address and qualified it with STB_O", $time) ;
            $fdisplay(log_file_desc, "*E (%0t)(%m)Master provided invalid address and qualified it with STB_O", $time) ;
        end
        if ( WE_O )
        begin
            if (
                (SEL_O[0] && (((^DAT_O[7:0])   !== 1'b0) && ((^DAT_O[7:0])   !== 1'b1))) ||
                (SEL_O[1] && (((^DAT_O[15:8])  !== 1'b0) && ((^DAT_O[15:8])  !== 1'b1))) ||
                (SEL_O[2] && (((^DAT_O[23:16]) !== 1'b0) && ((^DAT_O[23:16]) !== 1'b1))) ||
                (SEL_O[3] && (((^DAT_O[31:24]) !== 1'b0) && ((^DAT_O[31:24]) !== 1'b1)))
               )
            begin
                $display("*E (%0t) Master provided invalid data during write and qualified it with STB_O", $time) ;
                $fdisplay(log_file_desc, "*E (%0t)(%m)Master provided invalid data during write and qualified it with STB_O", $time) ;
                $display("*E (%0t) Byte select value: SEL_O = %b, Data bus value: DAT_O =  %h ", $time, SEL_O, DAT_O) ;
                $fdisplay(log_file_desc, "*E (%0t)(%m)Byte select value: SEL_O = %b, Data bus value: DAT_O =  %h ", $time, SEL_O, DAT_O) ;
            end

        end
        else
        if (~WE_O && ACK_I)
        begin
            if (
                (SEL_O[0] && (((^DAT_I[7:0])   !== 1'b0) && ((^DAT_I[7:0])   !== 1'b1))) ||
                (SEL_O[1] && (((^DAT_I[15:8])  !== 1'b0) && ((^DAT_I[15:8])  !== 1'b1))) ||
                (SEL_O[2] && (((^DAT_I[23:16]) !== 1'b0) && ((^DAT_I[23:16]) !== 1'b1))) ||
                (SEL_O[3] && (((^DAT_I[31:24]) !== 1'b0) && ((^DAT_I[31:24]) !== 1'b1)))
               )
            begin
                $display("*E (%0t) Slave provided invalid data during read and qualified it with ACK_I", $time) ;
                $fdisplay(log_file_desc, "*E (%0t)(%m)Slave provided invalid data during read and qualified it with ACK_I", $time) ;
                $display("*E (%0t) Byte select value: SEL_O = %b, Data bus value: DAT_I =  %h ", $time, SEL_O, DAT_I) ;
                $fdisplay(log_file_desc, "*E (%0t)(%m)Byte select value: SEL_O = %b, Data bus value: DAT_I =  %h ", $time, SEL_O, DAT_I) ;
            end
        end
    end
end

initial
begin
    previous_data = 0 ;
    previous_address = 0 ;
    can_change = 1 ;
end
endmodule // BUS_MON

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕的久久| 国精产品一区一区三区mba桃花| 一区二区三区精品视频| 美国毛片一区二区三区| 99久久精品久久久久久清纯| 884aa四虎影成人精品一区| 国产精品私人自拍| 日本vs亚洲vs韩国一区三区二区| 日韩情涩欧美日韩视频| 中文字幕乱码久久午夜不卡| 免费国产亚洲视频| 在线中文字幕一区| 一区二区中文视频| 国产一区二区剧情av在线| 欧美日韩黄色一区二区| 日韩毛片在线免费观看| 国产精品1区2区3区在线观看| 欧美肥妇free| 亚洲国产精品久久久久婷婷884| av男人天堂一区| 久久午夜电影网| 久久99精品国产91久久来源| 91精品国产综合久久久久久漫画| 亚洲欧美另类久久久精品2019| 国产aⅴ精品一区二区三区色成熟| 日韩视频一区二区三区| 日韩福利视频网| 欧美疯狂做受xxxx富婆| 亚洲国产视频一区| 欧美在线免费观看亚洲| 亚洲人123区| 91色九色蝌蚪| 亚洲乱码日产精品bd| av亚洲精华国产精华| 中文字幕亚洲电影| 99re免费视频精品全部| 亚洲色图都市小说| 色综合中文字幕| 亚洲视频在线观看三级| 色综合久久久久综合99| 一区二区三区在线免费| 91精彩视频在线观看| 久久精品av麻豆的观看方式| 欧美一级在线视频| 久久成人18免费观看| 日韩精品一区二区三区视频播放 | 国产日产欧美一区| 国产精品一区二区久久不卡| 久久精品无码一区二区三区 | 亚洲主播在线观看| 欧美日韩精品高清| 日韩高清一级片| 欧美xxxxxxxx| 成人免费av资源| 一区二区高清视频在线观看| 欧美伊人精品成人久久综合97| 午夜精品国产更新| 精品伦理精品一区| 成人av片在线观看| 亚洲大型综合色站| 久久青草国产手机看片福利盒子| 成人免费福利片| 亚洲aⅴ怡春院| 精品国产乱码久久久久久影片| 国产jizzjizz一区二区| 亚洲综合清纯丝袜自拍| 日韩午夜精品视频| 成人免费视频caoporn| 亚洲综合视频在线| 久久综合国产精品| 色综合久久综合网97色综合| 蜜桃视频免费观看一区| 国产精品久久久一区麻豆最新章节| 色噜噜久久综合| 国产一区二区电影| 亚洲一区二区偷拍精品| 久久久久高清精品| 欧美色图天堂网| 国产jizzjizz一区二区| 亚洲成人动漫在线免费观看| 国产婷婷色一区二区三区四区| 一本大道久久a久久综合婷婷| 人人狠狠综合久久亚洲| 亚洲欧洲另类国产综合| 日韩免费视频一区二区| 在线视频欧美区| 国产黑丝在线一区二区三区| 亚洲第一在线综合网站| 欧美激情一区二区三区四区| 制服丝袜一区二区三区| 91片在线免费观看| 国产精品一区二区x88av| 亚洲成av人片在线观看| 亚洲人精品午夜| 国产色产综合产在线视频| 9191精品国产综合久久久久久 | 琪琪一区二区三区| 日韩理论片网站| 国产三级精品三级在线专区| 欧美一区二区三区四区高清| 91福利在线看| av电影一区二区| 国产精品69毛片高清亚洲| 日韩电影在线一区二区三区| 一区二区不卡在线视频 午夜欧美不卡在| 欧美精品一区二区三区四区| 欧美高清精品3d| 精品1区2区3区| 色88888久久久久久影院按摩| 国产成人啪午夜精品网站男同| 美女一区二区视频| 日韩不卡一二三区| 日韩电影一区二区三区| 亚洲sss视频在线视频| 亚洲一区二区三区国产| 一区二区三区日本| 亚洲国产美女搞黄色| 亚洲精品国产精华液| 亚洲精品日产精品乱码不卡| 一区二区三区在线免费播放| 亚洲靠逼com| 亚洲国产中文字幕在线视频综合| 亚洲自拍另类综合| 亚洲aaa精品| 蜜桃av一区二区在线观看| 看电视剧不卡顿的网站| 久久精品噜噜噜成人88aⅴ| 精品在线一区二区三区| 激情国产一区二区| 丁香婷婷综合网| 91网站黄www| 欧美日韩国产高清一区二区三区| 69p69国产精品| 精品国产免费久久| 欧美国产日韩亚洲一区| 日韩美女精品在线| 亚洲va欧美va天堂v国产综合| 日韩精品电影在线观看| 经典一区二区三区| 成人一区二区在线观看| 欧美一级在线观看| 久久精品一区二区三区四区| 亚洲欧美在线视频观看| 亚洲线精品一区二区三区八戒| 视频一区二区国产| 国产一区二区三区观看| 97精品国产97久久久久久久久久久久 | 国产日韩精品一区二区浪潮av| 国产精品毛片久久久久久久| 夜夜夜精品看看| 国精产品一区一区三区mba桃花 | 欧美一区日韩一区| 国产午夜一区二区三区| 一区二区三区日韩精品| 韩国成人精品a∨在线观看| 成人av网站免费| 欧美日韩国产成人在线91| 久久亚洲精华国产精华液| 亚洲黄色免费网站| 国产一区二区日韩精品| 日本韩国欧美一区二区三区| 日韩精品一区二区三区老鸭窝| 中文字幕免费在线观看视频一区| 亚洲高清不卡在线观看| 国产精品一区二区在线看| 色婷婷国产精品综合在线观看| 欧美一二三区在线观看| 亚洲天堂精品在线观看| 日韩成人dvd| 日本韩国一区二区三区视频| 精品国产欧美一区二区| 一区二区三区四区亚洲| 国产成人精品午夜视频免费| 久久久电影一区二区三区| 亚洲乱码中文字幕| 国产精品18久久久久久久久| 欧美三片在线视频观看| 国产精品网曝门| 国模一区二区三区白浆| 7777精品久久久大香线蕉| 亚洲男同性视频| 国产成人免费视频网站高清观看视频 | 91在线一区二区| 久久九九久精品国产免费直播| 天天射综合影视| 欧美性三三影院| 亚洲素人一区二区| www.欧美日韩国产在线| 中文av一区特黄| 国产成人av网站| 久久久久久久久免费| 精品综合免费视频观看| 91精品免费在线观看| 五月天一区二区三区| 欧美性高清videossexo| 亚洲一区在线观看视频| 91精品91久久久中77777| 亚洲乱码一区二区三区在线观看| 99久久免费视频.com| 国产精品电影一区二区|