国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

<kbd id="pzudj"><sup id="pzudj"><dl id="pzudj"></dl></sup></kbd>
  • <dl id="pzudj"><optgroup id="pzudj"></optgroup></dl>
      <dd id="pzudj"><div id="pzudj"><i id="pzudj"></i></div></dd>
      <thead id="pzudj"></thead>
      <thead id="pzudj"><sup id="pzudj"></sup></thead>
      <nobr id="pzudj"><small id="pzudj"><label id="pzudj"></label></small></nobr>
    • 0
      • 聊天消息
      • 系統(tǒng)消息
      • 評論與回復
      登錄后你可以
      • 下載海量資料
      • 學習在線課程
      • 觀看技術(shù)視頻
      • 寫文章/發(fā)帖/加入社區(qū)
      會員中心
      創(chuàng)作中心

      完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

      3天內(nèi)不再提示

      UVM環(huán)境的看門狗怎么沒看住超時了?

      冬至配餃子 ? 來源:芯時代青年 ? 作者:尼德蘭的喵 ? 2023-12-04 11:42 ? 次閱讀
      加入交流群
      微信小助手二維碼

      掃碼添加小助手

      加入工程師交流群

      uvm驗證環(huán)境里一般通過objection機制來控制仿真的結(jié)束,不過在機制之外,有時還需要通過看門狗來watchdog避免仿真環(huán)境掛死,watchdog配合objection一起來控制仿真的進行與結(jié)束。

      我一直自詡為對環(huán)境watchdog這件事爛熟于心了,不過沒想到這天還是被傷害到了。

      事故背景

      一個中規(guī)中矩的watchdog是怎么組織的呢?要明確一下watchdog發(fā)揮的作用,就是在objection的基礎(chǔ)上進行補充,在環(huán)境長時間沒有動靜的情況下能夠使環(huán)境報錯推出并打印此時阻止仿真結(jié)束的罪魁禍首。

      基于這個認識,watchdog應(yīng)該是base_test的run_phase()中進行調(diào)用,這樣既從時間全程參與又從空間上統(tǒng)攬全局。當然了,因為環(huán)境的主要行為集中在main_phase()中,所以把watchdog放在main_phase()中我覺得也是可以的。

      task base_test::run_phase(uvm_phase phase):
      super.run_phase(phase);
      phase.raise_objection(this);

      this.watchdog(phase);

      phase.drop_objection(this);
      endtask: run_phase

      watchdog上下的objection還是很有必要的,畢竟你要保證watchdog無論在哪里調(diào)用都可以執(zhí)行起來,別這個phase沒有objection就直接略過了。

      watchdog內(nèi)部邏輯就是幾個并行的線程,簡單來說可以這樣寫:

      task base_test::watchdog(uvm_phase phase):
      #1000;
      if(this.cfg.watchdog_en == 0) return;
      while(1)begin
      bit vr_reached;
      fork: timeout
      begin //normal finish
      phase.phase_done.wait_for_total_count(null, 1);
      vr_reached = 1;
      end
      begin //timeout
      #this.cfg.watchdog_th;
      `uvm_fatal("watchdog", $psprintf("watchdog timeout(%s_phase)::n %s", phase.get_name(), phase.phase_done.convert2string()))
      end
      #100 @prj_scoreboard::feed_watchdog;
      #100 @harness.dut.hand_en;
      #100 wait(this.env.num != 0);
      join_any
      disable timeout;

      #10;
      if(vr_reached && phase.phase_done.get_objection_tatal == 1)begin
      `uvm_info("watchdog", $psprintf("watchdog timeout(%s_phase) normal reached", phase.get_name()), UVM_LOW)
      break;
      end
      end
      `uvm_note("watchdog", "watchdog Finished!", UVM_LOW)
      endtask

      代碼的主體就是一個大的while(1)循環(huán),循環(huán)內(nèi)以fork - join_any的形式起多個喂狗線程,根據(jù)fork - join_any的機制,只要任何一個線程完成了都會觸發(fā)喂狗機制。

      *線程1:正常結(jié)束的線程,因為本身watchdog占著一個raise_objection,所以只要等待wait_for_total_count(null, 1)就可以了,為1說明其他的objection都已經(jīng)drop了,那么就可以正常結(jié)束程序,和uvm本身的objection機制完全一樣;

      *線程2:超時線程,如果很長的時間里都沒有喂狗,那么報fatal推出仿真。注意這里必須是fatal使方正立即結(jié)束,報error的話環(huán)境還是會掛死狀態(tài);

      *線程3:所有的scoreboard都可以喂狗,因為scb里比對的一方是可以信任的環(huán)境預期,如果比對還在進行那么就說明仿真不應(yīng)該結(jié)束;

      *線程N:可以喂狗的其他線程,使用rtl線程需要萬分謹慎,很有可能rtl里做錯了一致重復出數(shù)據(jù)導致仿真無法結(jié)束;

      當喂狗一次后,就可以殺掉timeout這個線程了,然后根據(jù)情況看看是否重新回到看門狗循環(huán)中。

      事故現(xiàn)場

      看門狗的核心起始就是,確定仿真在“動”,能動就是還活著不能結(jié)束仿真,所以在fork-join_any里除了超時線程以外,其他的都是證明系統(tǒng)還活著的“喂狗”線程。這些線程里如果使用rtl的信號作為系統(tǒng)還活著的參照,一定要萬分的小心,萬分的小心,萬分的小心。

      第一點小心是該停止但是停不下來,取材自上個月的bug。場景很簡單,#100 @harness.dut.hand_en這個線程里hand_en做錯了,進入了無限發(fā)包無限握手的死循環(huán),帶著環(huán)境也一直停不下來看門狗直接失效了。

      第二點小心是該仿真但是挺下來了,這個事我以前就沒想過能出現(xiàn)。事故現(xiàn)場是這樣的還是#100 @harness.dut.hand_en這個線程(就是這么頭鐵,出過錯了還繼續(xù)用),這次確實是RTL正常的發(fā)包握手,但是,性能模式下外部沒有反壓拍拍握手成功,hand_en起來之后就沒見到下降沿!這就導致了什么問題呢,導致@harness.dut.hand_en線程根本就觸發(fā)不了!這就涉及到@和wait的區(qū)別了,@捕捉的是event trigger是信號的跳變,harness.dut.hand_en恒1不跳導致看門狗直接超時了。

      簡直目瞪口呆,只要每天比別人多碰到3個bug,兩年能積累別人五年經(jīng)驗。

      事故解決

      我把@harness.dut.hand_en改成wait harness.dut.hand_en了

      聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
      • 看門狗
        +關(guān)注

        關(guān)注

        10

        文章

        610

        瀏覽量

        72932
      • RTL
        RTL
        +關(guān)注

        關(guān)注

        1

        文章

        394

        瀏覽量

        62645
      • UVM
        UVM
        +關(guān)注

        關(guān)注

        0

        文章

        183

        瀏覽量

        20012
      • Watchdog
        +關(guān)注

        關(guān)注

        0

        文章

        12

        瀏覽量

        9731
      收藏 人收藏
      加入交流群
      微信小助手二維碼

      掃碼添加小助手

      加入工程師交流群

        評論

        相關(guān)推薦
        熱點推薦

        獨立看門狗(IWDG)的基礎(chǔ)知識

          STM32F10xxx系列內(nèi)置兩個看門狗(獨立看門狗和窗口看門狗),提供更高的安全性、時間的精確性和使用的靈活性。兩個看門狗設(shè)備(獨立
        發(fā)表于 10-19 17:10 ?5169次閱讀
        獨立<b class='flag-5'>看門狗</b>(IWDG)的基礎(chǔ)知識

        STM32中的獨立看門狗和窗口看門狗是什么

        在早期的MCU中是沒有看門狗這種東西的,所以產(chǎn)品就很容易出現(xiàn)死機,跑飛的情況。為了避免這種情況的出現(xiàn),后期的MCU都集成了看門狗的功能。但是目前看門狗發(fā)展到今天基本上分為兩大類:獨立看門狗
        的頭像 發(fā)表于 02-20 17:47 ?4364次閱讀
        STM32中的獨立<b class='flag-5'>看門狗</b>和窗口<b class='flag-5'>看門狗</b>是什么

        啥叫看門狗?如何合理的使用看門狗

        啥叫看門狗看門狗的工作原理是什么?看門狗看住哪些錯誤呢?看門狗叫后該咋整?具體咋喂看門狗呢?
        發(fā)表于 07-07 07:01

        stm32看門狗時間計算 獨立看門狗和窗口看門狗的特性是什么

        本文為您講解STM看門狗時間計算(時限)與頻率計算,獨立看門狗和窗口看門狗的特性、區(qū)別與聯(lián)系。
        發(fā)表于 10-10 10:41 ?9382次閱讀

        看門狗定時器的作用

        看門狗復位,重新開始倒計數(shù)。如果看門狗減到0就認為程序沒有正常工作,強制整個系統(tǒng)復位。 看門狗定時器的操作過程 使用時,WDT將遞增,直到溢出,或稱超時。除非處于休眠或空閑模式,WD
        發(fā)表于 10-20 14:41 ?7275次閱讀

        什么是stm32看門狗?獨立看門狗和窗口看門狗工作原理解析

        stm32有兩個看門狗,獨立看門狗和窗口看門狗,其實兩者的功能是類似的,只是喂狗的限制時間不同。 獨立看門狗
        的頭像 發(fā)表于 11-06 11:48 ?2.8w次閱讀
        什么是stm32<b class='flag-5'>看門狗</b>?獨立<b class='flag-5'>看門狗</b>和窗口<b class='flag-5'>看門狗</b>工作原理解析

        STM32看門狗配置(獨立看門狗IWDG和窗口看門狗WWDG)

        stm32自帶兩個看門狗模塊,獨立看門狗IWDG和窗口看門狗WWDG。看門狗主要作用是可用來檢測和解決由軟件錯誤引起的故障;當計數(shù)器達到給定的超時
        發(fā)表于 11-09 17:17 ?8839次閱讀
        STM32<b class='flag-5'>看門狗</b>配置(獨立<b class='flag-5'>看門狗</b>IWDG和窗口<b class='flag-5'>看門狗</b>WWDG)

        stm32看門狗復位技巧編輯

        本文主要介紹stm32看門狗復位技巧,包括三個方面:判斷是否需要使用、保證看門狗工作正常、保證看門狗復位時不會引起系統(tǒng)異常。stm32自帶兩個看門
        發(fā)表于 01-14 15:51 ?2.1w次閱讀
        stm32<b class='flag-5'>看門狗</b>復位技巧編輯

        MCU獨立看門狗與窗口看門狗的區(qū)別

        早期的MCU沒有看門狗,就容易引起有些產(chǎn)品死機不能重啟工作。為了避免這個問題,后期的MCU在內(nèi)部集成了看門狗的功能。為了滿足更多使用場景,現(xiàn)在很多MCU都集成了兩個看門狗:獨立
        發(fā)表于 10-28 20:06 ?8次下載
        MCU獨立<b class='flag-5'>看門狗</b>與窗口<b class='flag-5'>看門狗</b>的區(qū)別

        STM32:獨立看門狗、窗口看門狗的配置

        STM32單片機的看門狗有獨立看門狗和窗口看門狗之分,這兩者的工作原理卻完全不同。
        發(fā)表于 02-08 16:15 ?18次下載
        STM32:獨立<b class='flag-5'>看門狗</b>、窗口<b class='flag-5'>看門狗</b>的配置

        STM32中的獨立看門狗和窗口看門狗

        一、前言 在早期的MCU中是沒有看門狗這種東西的,所以產(chǎn)品就很容易出現(xiàn)死機,跑飛的情況。為了避免這種情況的出現(xiàn),后期的MCU都集成了看門狗的功能。但是目前看門狗發(fā)展到今天基本上分為兩大類:獨立
        的頭像 發(fā)表于 12-22 16:58 ?3185次閱讀

        STM32中的獨立看門狗和窗口看門狗

        在早期的MCU中是沒有看門狗這種東西的,所以產(chǎn)品就很容易出現(xiàn)死機,跑飛的情況。為了避免這種情況的出現(xiàn),后期的MCU都集成了看門狗的功能。但是目前看門狗發(fā)展到今天基本上分為兩大類:獨立看門狗
        的頭像 發(fā)表于 01-30 14:38 ?2557次閱讀
        STM32中的獨立<b class='flag-5'>看門狗</b>和窗口<b class='flag-5'>看門狗</b>

        窗口看門狗增強了μP監(jiān)控器

        看門狗定時器提高了基于微處理器的系統(tǒng)的可靠性。引腳可選的看門狗定時器允許看門狗超時周期可調(diào),從而提供更大的靈活性,以滿足不同的處理器時序要求。窗口
        的頭像 發(fā)表于 05-08 11:23 ?2124次閱讀
        窗口<b class='flag-5'>看門狗</b>增強了μP監(jiān)控器

        UVM環(huán)境看門狗沒看住超時是怎么回事?

        一個中規(guī)中矩的watchdog是怎么組織的呢?要明確一下watchdog發(fā)揮的作用,就是在objection的基礎(chǔ)上進行補充,在環(huán)境長時間沒有動靜的情況下能夠使環(huán)境報錯推出并打印此時阻止仿真結(jié)束的罪魁禍首。
        的頭像 發(fā)表于 12-05 10:15 ?1474次閱讀

        TPS3435 納米靜態(tài)電流精密超時看門狗定時器數(shù)據(jù)手冊

        TPS3435 是一款超低功耗 (典型值為 250nA) 器件,提供可編程超時看門狗定時器。 TPS3435 提供高精度超時看門狗定時器,具有適用于各種應(yīng)用的一系列功能。
        的頭像 發(fā)表于 04-09 15:49 ?915次閱讀
        TPS3435 納米靜態(tài)電流精密<b class='flag-5'>超時</b><b class='flag-5'>看門狗</b>定時器數(shù)據(jù)手冊