国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      使用一個(gè)或多個(gè)自動(dòng)機(jī)的系統(tǒng)驗(yàn)證的制作方法

      文檔序號:6580036閱讀:263來源:國知局
      專利名稱:使用一個(gè)或多個(gè)自動(dòng)機(jī)的系統(tǒng)驗(yàn)證的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及系統(tǒng)驗(yàn)證的領(lǐng)域。特別,本發(fā)明涉及在待測試系統(tǒng)和設(shè)備的動(dòng)態(tài)驗(yàn)證 中使用基于自動(dòng)機(jī)的方法。
      背景技術(shù)
      若干定義"相符性評估(compliance assessment)"(見下文定義)。"相符性評估協(xié)議(compliance assessment protocol)"(見下文定義)。"相符性驗(yàn)證(compliance verification):系統(tǒng)說明書中所表達(dá)的規(guī)格與DUT性
      能之間符合程度的確定。"確定說明的系統(tǒng)(deterministically specified system)"(定義見下文)。
      "命令(directive)":請求或指揮的傳達(dá),以及為了使期望的結(jié)果出現(xiàn)而進(jìn)行的任 何其他傳達(dá)。本領(lǐng)域的技術(shù)人員熟悉各種實(shí)現(xiàn)命令的方法,如函數(shù)調(diào)用。
      "DUT,或待測試設(shè)備"待測試系統(tǒng)的實(shí)現(xiàn)。"DUT計(jì)算"動(dòng)態(tài)系統(tǒng)驗(yàn)證期間的DUT行為計(jì)算(如DUT模型的仿真)。"動(dòng)態(tài)驗(yàn)證行程(dynamic verification run)":測試的一次會(huì)話,即,對DUT施加
      相符性評估協(xié)議一次會(huì)話。"動(dòng)態(tài)驗(yàn)證套(dynamic verification suite)":用在相符性驗(yàn)證中的動(dòng)態(tài)驗(yàn)證行 程的集合。"接口 (interface)":系統(tǒng)說明書所規(guī)定的可訪問行為。這可以包括僅在驗(yàn)證期 間可用的特殊行為。系統(tǒng)所表現(xiàn)行為的整體就是它的接口 ,但是,為了便于說明,有時(shí)候是 說系統(tǒng)接口的不同子集或不同子部件,好像它們是分開的。"薩,,,或"非確定自動(dòng)器(non_deterministic automaton),,(下文中定義)。
      "非確定說明的系統(tǒng)(non_deterministically specified system),,(下文中定 義)。"序列(sequence)":—系列驗(yàn)證操作及其相關(guān)聯(lián)的定時(shí)信息。定時(shí)信息可按照合
      適的量子化周期間隔,或等價(jià)地,按照依據(jù)所考慮驗(yàn)證操作的任意間隔。"系統(tǒng)(system)":期望完成特定一組功能的設(shè)備或設(shè)備組。系統(tǒng)可以被實(shí)現(xiàn)成軟
      件、硬件或軟件與硬件的某種結(jié)合。就其本質(zhì)而言,系統(tǒng)可以是按某些建模環(huán)境中的模型的
      形式存在,或是按某些部分的實(shí)體與另外部分的模型相結(jié)合的形式存在。系統(tǒng)具有定義的
      接口 ,系統(tǒng)通過該接口與外部世界交互,并且外部世界通過該接口與系統(tǒng)交互。"測試計(jì)算(test computation)":在動(dòng)態(tài)系統(tǒng)驗(yàn)證期間所執(zhí)行的不同于DUT計(jì)算
      的計(jì)算。
      "遍歷(traverse)"(在下文中定義)。"用戶(user)":系統(tǒng)的相符性驗(yàn)證中涉及的個(gè)人或多個(gè)個(gè)人。"驗(yàn)證環(huán)境(verification environment)":在執(zhí)行動(dòng)態(tài)驗(yàn)證行程時(shí)所處的環(huán)境
      (如溫度、濕度、清潔房間、噪聲、NC-Verilog硬件描述語言仿真器、ModelSim 硬件描述語
      言仿真器)。連同系統(tǒng)的接口 ,這建立了可以施加到該驗(yàn)證環(huán)境中的DUT以及非DUT組件的
      驗(yàn)證操作的集合。"驗(yàn)證操作(verification operation)":在一個(gè)時(shí)刻的驗(yàn)證動(dòng)作。包括讀操作和 寫操作的可能驗(yàn)證操作的集合依賴于系統(tǒng)的接口和驗(yàn)證環(huán)境。
      "驗(yàn)證協(xié)議(verification protocol)"(下文中定義)。
      概述 系統(tǒng)的建立通常從系統(tǒng)說明書(其整體或部分可以是寫出來的,也可以是未寫出 來的)的建立開始,系統(tǒng)說明書用于定義系統(tǒng)功能的規(guī)格。這些規(guī)格說明不僅涉及所期望 的系統(tǒng)功能,而且涉及其他的屬性,如電能消耗、運(yùn)行速度等。 由于許多原因,驗(yàn)證復(fù)雜系統(tǒng)操作與系統(tǒng)說明書中的給出的規(guī)格說明相符是困難 的。特別是由于以下原因 1.在任何時(shí)候?qū)ο到y(tǒng)提供的輸入的大小都可能是很大的。即使系統(tǒng)具有較少的輸 入端口數(shù)量,輸入值的可能組合數(shù)量依然可以是很大的。例如,只有30條二進(jìn)制輸入線依 然代表超過10億的可能輸入組合,而具有幾倍于此的輸入的系統(tǒng)也是常見的。
      2.系統(tǒng)可以保持內(nèi)部狀態(tài)。這樣,在特定時(shí)刻,系統(tǒng)的功能不僅依賴提供給系統(tǒng)的 輸入,而且依賴一直到該時(shí)刻對系統(tǒng)提供的所有輸入。 3.上述兩點(diǎn)的組合會(huì)導(dǎo)致在給定系統(tǒng)中可能出現(xiàn)的不同情況的難以想象的巨大 數(shù)量。例如,上述30位輸入中僅取12個(gè)的序列就表示2"x"種可能的不同情況,即大約10, 種可能的不同情況。即使宇宙中每個(gè)粒子都是能在每個(gè)毫微秒執(zhí)行驗(yàn)證測試的驗(yàn)證系統(tǒng), 從宇宙起源就開始也沒有足夠的時(shí)間測試完這個(gè)簡單例子中的所有可能的不同情況。
      4.即使有限的輸入序列也產(chǎn)生大量的不同情況,因此在有限的時(shí)間內(nèi)使用今天的 有限可用資源是不可能進(jìn)行窮盡測試的。僅僅是這些不同情況的一小部分可實(shí)際用于驗(yàn)證 的目的。因此,相符性驗(yàn)證處理的質(zhì)量嚴(yán)重依賴于作為整個(gè)可能測試空間中樣本的測試究 竟有多"好"。("好"的測試被定義成這樣的測試,它能夠檢測出DUT和其說明書之間的可 能差異。"好"的測試集是這樣的測試集,它包含的測試并不根據(jù)他們所檢測的差異而顯著 重疊,即他們表現(xiàn)出很小的冗余,或沒有冗余)。 當(dāng)搜索"好"測試或測試類,很自然地要想辦法通過把整個(gè)系統(tǒng)接口劃分成可管理 的部分并構(gòu)造獨(dú)立用于這些部分的測試來控制任務(wù)的復(fù)雜性。這種"分而治之"的方法在 其他許多領(lǐng)域有效,但卻不適合復(fù)雜系統(tǒng)的相符性驗(yàn)證。特別是要面臨以下困難。
      1.復(fù)雜系統(tǒng)通常包括若干子部件,這些子部件可能在內(nèi)部進(jìn)行交互,或者是直接 交互(例如,通過在完成某些任務(wù)時(shí)的活動(dòng)協(xié)作)或者是間接交互(如,通過相繼使用同樣 的共享資源)。這些子部件可以通過系統(tǒng)接口來展示行為,并且這些行為可同時(shí)處于活動(dòng)的 使用中。 2.這些子部件中某一個(gè)的活動(dòng)與另一個(gè)子部件的活動(dòng)的交互又增加了復(fù)雜性的 另一個(gè)層面。特別,子部件的行為不僅依賴其輸入流的整個(gè)歷史,還依賴于其活動(dòng)與系統(tǒng)的另外子部件活動(dòng)的相對定時(shí),這些另外子部件本身也依賴它們自己的整個(gè)輸入流的歷史。
      3.這樣,通常不可能把一部分系統(tǒng)接口與其他部分分開來做驗(yàn)證,即使當(dāng)從用戶 的觀點(diǎn)來看,這些部件相互之間沒有任何關(guān)系。作為一個(gè)特別的例子,在不同的時(shí)候?qū)ο到y(tǒng) 的一個(gè)部件提供相同的輸入可根據(jù)這時(shí)候在系統(tǒng)其他地方剛發(fā)生的其他事情而導(dǎo)致不同 的響應(yīng)。 4.不僅要在有關(guān)部件上施加適當(dāng)?shù)募?lì),而且還要利用施加到該接口的其他部件 上的完整激勵(lì)歷史來調(diào)整該激勵(lì),在這種情況下,才會(huì)弄清楚缺陷。為了處理這類情形,要 建立更復(fù)雜和精細(xì)的測試。 對用戶而言,系統(tǒng)的行為看起來或者是確定的或者是非確定的。如果對所述用戶 提供的說明書具有足夠的信息使得對系統(tǒng)說明書中包含的任何激勵(lì)序列可做精確的系統(tǒng) 響應(yīng)模式的計(jì)算,則對系統(tǒng)的用戶看來,行為就是確定的。我們把這種使系統(tǒng)看起來是確定 的說明書稱作"確定說明書"。如果對所述用戶提供的說明書不具有足夠的信息能使得對系 統(tǒng)說明書中包含的激勵(lì)序列做精確的系統(tǒng)響應(yīng)模式的計(jì)算,則對系統(tǒng)的該用戶看來,行為 就是非確定的。我們把這種使系統(tǒng)看起來是非確定的說明書稱作"非確定說明書"。
      起初看來,好像更期望確定說明書,但由于以下原因,系統(tǒng)可能具有非確定說明 書。
      參系統(tǒng)實(shí)現(xiàn)的方式本身就是非確定的(如依賴量子衰減事件)。
      參系統(tǒng)可能具有確定性,但實(shí)現(xiàn)很復(fù)雜,用戶很難理解和操作。非確定說明書可以
      更簡明,更容易理解和使用。 參系統(tǒng)可能具有確定,但實(shí)現(xiàn)是專有的,系統(tǒng)提供商不愿意公開系統(tǒng)的實(shí)現(xiàn)。
      參系統(tǒng)是說明書的確定實(shí)現(xiàn),但說明書有意寫成非確定說明書,以使得可有更寬 的實(shí)現(xiàn)范圍。由于這種原因,工業(yè)標(biāo)準(zhǔn)說明書常常寫成非確定說明書。 我們把具有非確定說明書的系統(tǒng)稱作"非確定說明的系統(tǒng)",或"NDS系統(tǒng)"。我們 把具有確定說明書的系統(tǒng)稱作"確定說明的系統(tǒng)",或"DS系統(tǒng)"。 很大一部分現(xiàn)代系統(tǒng)是NDS系統(tǒng);例如,微處理器、多線程軟件系統(tǒng)(如Windows、 Linux)、汽車控制系統(tǒng)、航空控制系統(tǒng)等。NDS系統(tǒng)可以暴露作為DS系統(tǒng)的子系統(tǒng),例如特 殊的應(yīng)用。 從可能測試的空間中由人工選擇"好"測試或"好"測試類是很困難的,原因有很 多。特別是由于以下原因。 1.如上所述,可能測試的空間是巨大的,從來只能選擇一小部分測試。如統(tǒng)計(jì)學(xué) 家所熟知的,在這種情況下選擇合適的樣本是很困難的。當(dāng)用在相符性驗(yàn)證時(shí),也很難定義 "統(tǒng)計(jì)合適"的意思。這樣,就不能使用那些為其他領(lǐng)域建立起來的現(xiàn)有數(shù)學(xué)的分析方法。
      2.由于所述的可能測試空間在許多方面可以變化,人類很難對可能測試的整體內(nèi) 容形成概念。但沒有這樣的概念化,就很難建立有效和持續(xù)的測試策略。
      3.因此,已經(jīng)使用特別的和直覺的方法。這些方法在獲得有限程度的相符性評估 方面可以說是取得一定成功,但通常這些方法不能提供在整個(gè)可能性空間上的合適覆蓋。 在這種策略下產(chǎn)生的測試根據(jù)預(yù)先的想法傾向于集中在"似乎需要"測試的區(qū)域。而其他 的區(qū)域可能完全沒有被覆蓋。 4.這種概念化的困難還延伸到需要擴(kuò)展設(shè) (setup)的情況。為了建立用于特定缺陷的條件,使得能在可觀察的方式下顯現(xiàn)條件本身,即使這種條件以頻繁的間隔出現(xiàn)在 系統(tǒng)正常功能的范圍內(nèi),所需要的復(fù)雜性質(zhì)和序列的長度也超出了用戶的觀察能力。
      5.概念化困難還延伸到要求交互的復(fù)雜性的情況。通過重用內(nèi)部資源并且并行執(zhí) 行功能,系統(tǒng)可能獲得性能提高。這樣的技術(shù)導(dǎo)致復(fù)雜的內(nèi)部交互,即使知道該實(shí)現(xiàn)的所有 細(xì)節(jié),對用戶來說也不是明白易懂的。這種內(nèi)部交互的復(fù)雜性還可能超出用戶觀察的能力, 尤其是當(dāng)與前述的擴(kuò)展設(shè)置困難相結(jié)合的時(shí)候。 —旦檢測出問題,就有必要追溯原始的根原因(root cause)。在測試的執(zhí)行期間, 根原因的發(fā)生可能比首先發(fā)現(xiàn)了異常的那一點(diǎn)早許多,并且是在離存在該缺陷的地方很遠(yuǎn) 的系統(tǒng)部分觀察到該缺陷的。做這種分析的一種方法是重新運(yùn)行暴露該缺陷的相同序列, 但有額外的檢查,使得可觀察DUT以前被忽視的方面。這種方法的困難是可能需要大量的 重新運(yùn)行。另一個(gè)困難是,為了使DUT進(jìn)入可能發(fā)生根原因的狀態(tài)所要求的設(shè)置在執(zhí)行起 來可能是非常耗時(shí)的。這兩種因素可能相互結(jié)合。 在另一種方法中,對于所觀察缺陷的原因,完全讓用戶設(shè)計(jì)假設(shè),然后構(gòu)造僅在該
      環(huán)境下執(zhí)行的"小"測試程序。這種測試程序的構(gòu)造也是相當(dāng)復(fù)雜的,除了其他原因之外,
      這是由于不是總能夠容易的指定為了使DUT進(jìn)入根原因檢測所要求狀態(tài)而需要的設(shè)置最
      小量。使測試方法支持表現(xiàn)特定屬性的序列或序列集的快速開發(fā)是非常重要的。 系統(tǒng)與其說明書的相符性驗(yàn)證可以在系統(tǒng)開發(fā)的各個(gè)階段執(zhí)行,或者通過使用在
      某些抽象級的該系統(tǒng)的模型,或者通過使用該系統(tǒng)的制造例子。在系統(tǒng)實(shí)際制造之前利用
      模型執(zhí)行相符性驗(yàn)證很有益處,可以大量節(jié)省時(shí)間、金錢以及可得到的資源。 僅為了說明的目的,下述的討論將集中于通過使用系統(tǒng)模型的相符性驗(yàn)證,系統(tǒng)
      模型是與實(shí)際系統(tǒng)實(shí)現(xiàn)相對的。 在使用系統(tǒng)模型做相符性驗(yàn)證的場合,驗(yàn)證環(huán)境可以更精確地定義成除其他各項(xiàng) 之外還包括系統(tǒng)模型的表示(也即所知的目標(biāo)或DUT,待測試設(shè)備)和處理該系統(tǒng)模型的機(jī) 制(通常是仿真器或模型接口,在某些情況下可建立到系統(tǒng)模型本身)。在這個(gè)環(huán)境之內(nèi), 在任何時(shí)刻可能在該DUT上執(zhí)行的各個(gè)驗(yàn)證操作(合適的或不合適的)的可能數(shù)量可以非 常大??梢栽谠揇UT上執(zhí)行的驗(yàn)證操作的不同序列的數(shù)量作為系統(tǒng)和序列長度的復(fù)雜性的 指數(shù)函數(shù)增長。每當(dāng)我們談到從DUT讀取或向其寫入,我們也是指從該驗(yàn)證環(huán)境的任何部 分讀取或向其寫入,包括所述的用于處理系統(tǒng)模型的機(jī)制以及任何其他對象。
      用戶從所有可能序列的范圍來定義子集,對該子集,說明書定義當(dāng)把序列施加到 該DUT時(shí)所發(fā)生的行為。我們把這樣的序列稱作是"有意義"的。有意義的序列可以包括 那些在DUT正常操作期間預(yù)期的序列,也包括指出錯(cuò)誤的序列。包括兩類序列是有用的,因 用戶希望能夠不僅知道當(dāng)提供正常輸入時(shí)按照說明書的DUT操作,還希望知道當(dāng)提供錯(cuò)誤 輸入時(shí)的DUT操作。 這種子集的定義本身通常非常困難,除了其他因素,還由于不確定說明的DUT行 為,其限制了什么是有意義的,什么是無意義的,以及需要保證只包含有意義的序列。
      這種序列的子集就是所知的驗(yàn)證協(xié)議。 通常,僅僅把驗(yàn)證協(xié)議施加到DUT的DUT測試不足以得到有效的相符性驗(yàn)證。通 常在測試期間要做附加的相符性驗(yàn)證,通常檢查滿足規(guī)格的DUT行為。 一般來說,不失一般 性,可以把相符性評估描述成步驟的序列,其每個(gè)發(fā)生在驗(yàn)證協(xié)議的有關(guān)步驟之間。每個(gè)相
      7符性評估步驟把相符性評估的當(dāng)前狀態(tài)和DUT的當(dāng)前觀察狀態(tài)作為其輸入,并計(jì)算相符性 評估的新狀態(tài),或把信息報(bào)告給用戶,或者是這些的某種結(jié)合。在下文中驗(yàn)證協(xié)議和相符性 評估的結(jié)合將稱作相符性評估協(xié)議。通過把相符性評估協(xié)議施加到所述DUT來測試DUT的 處理被稱作動(dòng)態(tài)驗(yàn)證。 為了滿足特定的相符性驗(yàn)證目標(biāo),用戶從相符性評估協(xié)議中指定哪些序列將用于 任何一個(gè)動(dòng)態(tài)驗(yàn)證行程。這樣的目標(biāo)可以包括檢驗(yàn)DUT的特定部分或多個(gè)部分、檢驗(yàn)系統(tǒng) 說明書的特定子集或多個(gè)子集、在時(shí)間界限內(nèi)動(dòng)態(tài)驗(yàn)證套的完成、使用特別的資源集來執(zhí) 行動(dòng)態(tài)驗(yàn)證套的能力等。用戶可決定重復(fù)執(zhí)行給定的動(dòng)態(tài)驗(yàn)證行程以檢查某種問題。由于 某些序列的長度可以是無限的,用戶可決定只使用該序列的一部分。用戶還可以決定重復(fù) 使用序列。 在序列選擇中,用戶還決定何時(shí)已進(jìn)行了足夠量的驗(yàn)證以便可宣布該DUT與其說 明書相符合,以及可宣布DUT與其說明書不相符合的條件。 作為上述的驗(yàn)證環(huán)境的一部分,還包含相符性評估協(xié)議的表示和用于對系統(tǒng)模型 施加相符性評估協(xié)議以及解釋結(jié)果的機(jī)制。 除了所述的這些重大困難,當(dāng)系統(tǒng)說明書不完整、不完善的時(shí)候,用戶要建立相符 性評估協(xié)議還有另外的困難。 在系統(tǒng)驗(yàn)證期間的任何時(shí)候都可以做說明書的改變,并且這樣的改變必須通過相 符性評估協(xié)議中的適當(dāng)改變來反應(yīng)。 另外的重要問題是從這樣的實(shí)事引起的,許多需要驗(yàn)證的"新"系統(tǒng)設(shè)計(jì)不是完全 新的,而是已經(jīng)過驗(yàn)證的已有系統(tǒng)設(shè)計(jì)的改進(jìn)版本。由于對復(fù)雜系統(tǒng)建立相符性評估協(xié)議 既困難又成本高昂,而且耗時(shí),所以,從成本的觀點(diǎn)和時(shí)間對市場(time-to-market)的觀 點(diǎn)來看,按照使得其盡可能在未來的系統(tǒng)和類似的系統(tǒng)中可以重用的方式來建立用于系統(tǒng) 的相符性評估協(xié)議。 在現(xiàn)有技術(shù)中,已經(jīng)使用各種方法來表示相符性評估協(xié)議、指定用于特定動(dòng)態(tài)驗(yàn) 證行程的序列(多個(gè)序列)和序列(多個(gè)序列)的部分(多個(gè)部分)、維持和更新相符性評 估協(xié)議的說明書、以及提供至少某種驗(yàn)證工作重用的措施。 —般來說,現(xiàn)有技術(shù)的方法可以分成本質(zhì)上是純程序性的方法和使用自動(dòng)機(jī)的方 法。自動(dòng)機(jī)方法通常也包括某些程序性技術(shù)以執(zhí)行命令式功能(imperative function)。 下面要考慮這些方法中的每一種。 早期的用于驗(yàn)證的程序性方法中最常見的是公知的"命令式測試(directed testing)"。通常,命令式測試程序?qū)崿F(xiàn)并測試來自相符性評估協(xié)議的單個(gè)序列。用戶使用 該驗(yàn)證環(huán)境所支持的某些命令式編程語言來手工編碼。該測試程序產(chǎn)生某些要施加到DUT 的激勵(lì),觀察該DUT的響應(yīng)或反應(yīng),然后重復(fù)該處理。 通過用戶手工選擇激勵(lì)的特定模式來選取由特定命令式測試程序?qū)崿F(xiàn)的來自相 符性評估協(xié)議的序列,從生成要施加到DUT的激勵(lì)。由用戶負(fù)責(zé)保證DUT處于適當(dāng)?shù)臓顟B(tài), 以接收激勵(lì)(如果有),觀察DUT的響應(yīng)或反應(yīng)(如果有),并且檢查所述的響應(yīng)或反應(yīng)適 合于所施加的激勵(lì)。所有這些動(dòng)作都必須由用戶來手工編碼。 對于測試通常的現(xiàn)代設(shè)計(jì)所需要的大量序列中的每個(gè)都建立命令式測試,其成本 之高令人望而生畏。幸而在所期望測試的各種子集中存在若干相似性,因此在某些命令式測試之間可以共享一些程序代碼。從這種觀察自然會(huì)發(fā)展到建立參數(shù)化或可配置的測試程
      序,這種測試程序覆蓋多個(gè)命令式測試。這種可配置測試程序可以決定執(zhí)行哪個(gè)范圍的測
      試、如何改變影響測試的內(nèi)部參數(shù)等等。這種測試程序在任何特定動(dòng)態(tài)驗(yàn)證行程執(zhí)行期間
      從用戶接收有關(guān)要執(zhí)行測試范圍的哪一方面的指示、各種參數(shù)可接收值的集合等以及其他 作為其輸入的部分。 把命令式測試結(jié)合到可配置測試程序中是完全通過手工來做的。用戶必須設(shè)想可 能測試的集合,從這些測試中選擇子集,通過使冗余最小化而有效利用可用驗(yàn)證資源,確定 這樣的維度(dimension),可沿這些維度分解所選擇的測試,執(zhí)行分解,并把片斷融合到可 配置測試程序中。這種工作較之建立個(gè)別的命令式測試程序要求更高的技能和技巧,用戶 不僅必須能夠理解各命令式測試程序在編寫時(shí)的樣子(因此可確定用于分解的合適片斷) 以及設(shè)想如何順序調(diào)用這些片斷以使得DUT經(jīng)過合適的狀態(tài)序列,而且要能夠構(gòu)造這樣做 的合適機(jī)制。 可配置測試程序不僅包含它所要替換的各命令式測試程序的所有功能的聯(lián)合,而 且要包含額外的代碼以實(shí)現(xiàn)可配置性本身。這種額外代碼加入了與在個(gè)別命令式測試程序 中包含的不同種類的知識。不是面向激勵(lì)的產(chǎn)生、響應(yīng)或反應(yīng)信息的獲取或其檢查來進(jìn)行 指導(dǎo),而且所增加的材料與檢驗(yàn)DUT的更高級模式有關(guān)。已經(jīng)有關(guān)于應(yīng)該驗(yàn)證什么(如應(yīng) 該施加那些可能的測試)和如何驗(yàn)證(激勵(lì)的施加、響應(yīng)的檢查)的知識的混合。這種混 合產(chǎn)生更復(fù)雜的測試程序并相應(yīng)提高了為建立測試程序并保證其正確性的時(shí)間和勞動(dòng)方 面的成本。 復(fù)雜性和編程技巧要求都增加了,在付出這樣代價(jià)的情況下,較之使用個(gè)別命令 式測試所建立的測試序列,可配置測試程序可提供更獨(dú)特的測試序列。但是,由于設(shè)計(jì)的 復(fù)雜性增加,為了擴(kuò)展測試的數(shù)量,需要更強(qiáng)的技術(shù)。最近的流行技術(shù)是約束偽隨機(jī)測試 (CPRT)。在這種方法中,把若干偽隨機(jī)選項(xiàng)結(jié)合到可配置測試程序,擴(kuò)展了程序可建立的可 能序列的范圍。 一般來說,這些序列中的一些是在相符性評估協(xié)議中,而另一些不是。因 此,CPRT程序通常還包含在偽隨機(jī)選項(xiàng)上的若干約束,在操作上限制這些選項(xiàng),以使得所產(chǎn) 生的序列都在相符性評估協(xié)議中。 CPRT方法確實(shí)擴(kuò)展了可配置測試程序能夠建立的測試數(shù)量,但付出了仿真效率方 面的重大代價(jià)。為了完全覆蓋給定的序列集,通常CPRT程序要用更多的仿真周期。所花費(fèi) 的仿真時(shí)間量隨著目標(biāo)序列集的大小的增加而快速增長,通常是以,ln(N)-N的速率,其 中N是目標(biāo)序列集合的大小。即使對如兩三千這樣相對較小的N,為了用CPRT覆蓋序列集, 要花費(fèi)IO倍的時(shí)間。為了測試復(fù)雜的現(xiàn)代設(shè)計(jì),通常需要更大的序列集,其時(shí)間開銷會(huì)無 法承受。 在現(xiàn)有技術(shù)中,系統(tǒng)驗(yàn)證的程序性方法的替換方法是使用基于自動(dòng)機(jī)的方法。
      非確定自動(dòng)機(jī)可以按不同方式來描述。例如,某些現(xiàn)有技術(shù)的教導(dǎo)使用狀態(tài) (state)和轉(zhuǎn)換(transition)來描述非確定自動(dòng)機(jī),某些現(xiàn)有技術(shù)的教導(dǎo)使用文法或終結(jié) 符串的集合來描述非確定自動(dòng)機(jī),以及某些現(xiàn)有技術(shù)的教導(dǎo)利用圖、即節(jié)點(diǎn)和連接來描述 非確定自動(dòng)機(jī)。所有這些現(xiàn)有技術(shù)的非確定自動(dòng)機(jī)描述在數(shù)學(xué)上都是等價(jià)的,并且可利用 本領(lǐng)域公知的技術(shù)進(jìn)行相互之間的轉(zhuǎn)換。 現(xiàn)有技術(shù)的教導(dǎo)表明了如何使用非確定自動(dòng)機(jī)來定義在動(dòng)態(tài)驗(yàn)證行程期間可依次執(zhí)行的測試程序片(也稱作"動(dòng)作例程")的序列,并因此把非確定自動(dòng)機(jī)應(yīng)用到系統(tǒng)驗(yàn) 證的問題。例如,某些現(xiàn)有技術(shù)的教導(dǎo)使用按照關(guān)于來自狀態(tài)、來自轉(zhuǎn)換或來自二者結(jié)合的 測試程序片斷的狀態(tài)與轉(zhuǎn)換的組合描述的非確定自動(dòng)機(jī)。例如,某些現(xiàn)有技術(shù)的教導(dǎo)使用 按照關(guān)于來自終結(jié)符、來自非終結(jié)符(如果在該文法中定義)或來自二者結(jié)合的測試程序 片斷的文法或終結(jié)符串集合的組合描述的非確定自動(dòng)機(jī)。例如,某些現(xiàn)有技術(shù)的教導(dǎo)使用 按照關(guān)于來自節(jié)點(diǎn)、來自連接或來自二者結(jié)合的測試程序片斷的圖(即節(jié)點(diǎn)和連接)的組 合描述的非確定自動(dòng)機(jī)?,F(xiàn)有技術(shù)按各種方式實(shí)現(xiàn)對程序片斷的參照,如指針、查找表項(xiàng) 等。所有這些現(xiàn)有技術(shù)的組合描述(在所述的組合描述中包括對測試程序片斷的參照和所 指的測試程序片斷本身)在數(shù)學(xué)上是等價(jià)的,可利用本領(lǐng)域公知的技術(shù)進(jìn)行相互之間的轉(zhuǎn) 換。某些現(xiàn)有技術(shù)把通過這樣的組合描述所說明的實(shí)體稱作"擴(kuò)展的非確定自動(dòng)機(jī)",并把 測試程序片斷看作是"自動(dòng)機(jī)擴(kuò)展"。另外的現(xiàn)有技術(shù)教導(dǎo)把通過組合描述說明的實(shí)體簡單 稱作"非確定自動(dòng)機(jī)",把測試程序片斷看作是該自動(dòng)機(jī)的一部分。為了清楚和簡潔,我們采 用后一種方式,并使用術(shù)語"非確定自動(dòng)機(jī)"來指通過所述組合描述說明的實(shí)體。"非確定 自動(dòng)器(non-deterministic automaton)"是"非確定自動(dòng)機(jī)"的單個(gè)形式。為了簡明,我 們有時(shí)候使用縮寫"NDA"來指非確定自動(dòng)器。在數(shù)學(xué)上,不帶有測試程序片斷的非確定自 動(dòng)機(jī)的集合是帶有非負(fù)數(shù)量的測試程序片斷的非確定自動(dòng)機(jī)的集合的子集,因該數(shù)量可以 是零。 由于非確定自動(dòng)機(jī)可以按數(shù)學(xué)上等價(jià)的幾種形式來描述,為了簡明,每當(dāng)我們就
      這些不同形式談及某個(gè)方面,我們將選擇其中任何一種,本領(lǐng)域的技術(shù)人員應(yīng)該理解利用
      其他方式描述的非確定自動(dòng)機(jī)在這方面的應(yīng)用。而且,現(xiàn)有技術(shù)還教導(dǎo)確定自動(dòng)機(jī)是非確
      定自動(dòng)機(jī)集合的適當(dāng)子集,因此,無論何時(shí)談及非確定自動(dòng)機(jī)時(shí)也包括確定自動(dòng)機(jī)。 現(xiàn)有技術(shù)中那些驗(yàn)證DS系統(tǒng)和NDS系統(tǒng)的確定子集的技術(shù)中發(fā)展了用于測試的
      自動(dòng)器方法。主要是單線程軟件應(yīng)用的領(lǐng)域。通常,在這種現(xiàn)有技術(shù)中,使用自動(dòng)器來幫助
      跟蹤待測試軟件應(yīng)用程序的狀態(tài)。 在許多現(xiàn)有技術(shù)的自動(dòng)機(jī)應(yīng)用中,要構(gòu)造表示NDA文法的圖("NDA圖"),這常常 通過程序來自動(dòng)建立NDA圖,該程序以擴(kuò)展BNF型描述作為輸入。遍歷該圖以產(chǎn)生終結(jié)符 序列。使用該終結(jié)符序列有效地把對應(yīng)于這些終結(jié)符的測試程序片斷按順序連綴在一起, 以組成用于動(dòng)態(tài)驗(yàn)證行程的相符性評估協(xié)議的特定應(yīng)用程序。 在現(xiàn)有技術(shù)中,可以按各種方式來進(jìn)行遍歷。"遍歷"包括任何處理NDA的方法,這 些方法按照在NDA的說明中定義的順序來處理NDA的多個(gè)組成部分。 通過使用自動(dòng)器方法,可以使用適中數(shù)量的執(zhí)行特定基本操作的測試程序片斷來 構(gòu)造測試程序整個(gè)范圍的說明。從該特定范圍可以通過一般的測試生成程序來執(zhí)行任何個(gè) 別測試的生成,該程序以表示相符性評估協(xié)議的非確定自動(dòng)機(jī)作為其輸入,并根據(jù)特定的 遍歷策略執(zhí)行相應(yīng)NDA圖的遍歷。所生成測試的施加可以由一般的測試施加程序來執(zhí)行, 該程序按照所述遍歷確定的次序來執(zhí)行相應(yīng)的的測試程序片斷。通常,改變該測試程序范 圍的說明,不要求改變所述的測試生成程序和測試施加程序(在某些情況下可組合成單個(gè) 的程序)。 通常,現(xiàn)有技術(shù)的自動(dòng)器方法較之嚴(yán)格的程序性方法有幾個(gè)優(yōu)點(diǎn)。這些優(yōu)點(diǎn)可與 在編譯程序開發(fā)中得到的優(yōu)點(diǎn)相類比,在編譯程序開發(fā)中,例如,把遞歸下降的句法分析器
      10的手工編制轉(zhuǎn)移到通過自動(dòng)的句法分析器生成器(例如,yacc或Bison)根據(jù)基于文法的 語言說明來生成。 現(xiàn)有技術(shù)的自動(dòng)器方法的一個(gè)優(yōu)點(diǎn)是把相符性評估協(xié)議(通過非確定自動(dòng)器來 表示)從用于給定動(dòng)態(tài)驗(yàn)證行程的特定各序列的選擇(由該非確定自動(dòng)器是如何處理或遍 歷來表示)中分離出來。這樣,不同的人員可工作在問題的不同部分,改進(jìn)了測試程序生成 處理的開發(fā)、交流、評論和管理等各個(gè)方面。另外,在沒有了包含在測試程序片斷中的雜亂 的細(xì)節(jié)的情況下,可以容易地查看相符性評估協(xié)議的范圍。另外的重要優(yōu)點(diǎn)是自動(dòng)器文法 本身可直接與系統(tǒng)說明相關(guān),而不必分離出遍歷代碼。這提供了特定動(dòng)態(tài)驗(yàn)證行程獲得覆 蓋的更有意義度量的基礎(chǔ)。 相對照地,程序性方法在操作上限定相符性評估協(xié)議,即通過構(gòu)成測試程序的特 定代碼來定義相符性評估協(xié)議。 一般來說,在這樣的測試程序中,在(a)產(chǎn)生并施加激勵(lì)、 獲取DUT的響應(yīng)或反應(yīng)并檢查適合性結(jié)果的代碼和(b)實(shí)現(xiàn)所施加激勵(lì)的實(shí)際選擇的代碼 之間沒有區(qū)別。這兩者混在一起,要獨(dú)立地處理兩類知識,即使不是不可能,也是很困難的。 對于遍歷策略困難尤其大,因在程序性方法中該策略通常隱含在測試程序是如何編碼的過 程中。用戶的意圖很難理解,也不能容易地理解和自動(dòng)修改策略,以獲得與最初編寫的意圖 不同的目標(biāo),例如,另外的覆蓋目標(biāo)。可測量的覆蓋不大有用,因?yàn)樗性跍y試程序代碼 的線路或路徑上,而不是系統(tǒng)說明書中給定的規(guī)格上。另外,序列選擇是人工的,又遇到了 (上述的)人工選擇"好"測試的情況中有關(guān)的困難。 基于自動(dòng)機(jī)方法的另外優(yōu)點(diǎn)是,對給定的說明書覆蓋水平,能夠產(chǎn)生更簡明的相 符性評估協(xié)議的說明。這樣,通常建立它們所需要的時(shí)間就短,并且容易修改、維護(hù)、更新、 擴(kuò)充和重用。由于這些因素,它們中的錯(cuò)誤(bug)也應(yīng)該更少。在程序性方法中用戶必須 手工建立的代碼總量(以及復(fù)雜度)對于在給定時(shí)間量中用戶可獲得的覆蓋量造成了嚴(yán)重 的限制。 基于自動(dòng)器方法相對于程序性方法的優(yōu)點(diǎn)隨著用自動(dòng)器文法代替測試程序片斷 來表示驗(yàn)證協(xié)議的范圍的擴(kuò)大程度而變化。對于給定的相符性評估協(xié)議,用文法表示的驗(yàn) 證協(xié)議的范圍越大,基于自動(dòng)機(jī)方法可實(shí)現(xiàn)的優(yōu)點(diǎn)就越多。相對照地,用測試程序片斷表示 的驗(yàn)證協(xié)議的范圍越大,就越接近具有所有上述缺點(diǎn)的程序性方法。 現(xiàn)有技術(shù)的自動(dòng)器方法已經(jīng)應(yīng)用于測試系統(tǒng),如單線程軟件程序,其中非確定說 明的行為或者不存在或者高度局部化。在這樣的驗(yàn)證應(yīng)用中,驗(yàn)證協(xié)議范圍的大部分都 可以用自動(dòng)器文法來表示,而不需要?jiǎng)討B(tài)驗(yàn)證行程期間的動(dòng)態(tài)約束終結(jié)符生成序列的能力 (等價(jià)于NDA圖遍歷的動(dòng)態(tài)約束)。但是,當(dāng)現(xiàn)有技術(shù)的方法應(yīng)用到更復(fù)雜的系統(tǒng),例如,基 于多線程微處理器的計(jì)算機(jī)芯片,其中非確定說明的行為不是高度局部化的,用戶被迫把 驗(yàn)證協(xié)議范圍表示的大部分從自動(dòng)器文法改變到測試程序片斷。這樣,測試程序片斷變得 更大更復(fù)雜,用基于自動(dòng)器的方法代替程序性方法的好處就喪失了 。 我們可以看到,現(xiàn)有技術(shù)的自動(dòng)器方法相對程序性方法有幾個(gè)優(yōu)點(diǎn),但在可用自 動(dòng)器文法表示驗(yàn)證協(xié)議范圍的程度上有嚴(yán)重局限。這種局限使得用于驗(yàn)證的自動(dòng)器方法不 能用于許多復(fù)雜系統(tǒng)的相符性驗(yàn)證。 對于程序性方法,在測試的概念化、開發(fā)、更新和維護(hù)方面需要大量的時(shí)間和費(fèi) 用。這些開銷常常比建立系統(tǒng)本身的設(shè)計(jì)所需要的開銷還要大許多。使用程序性方法,由
      11于前述的測試選擇問題,測試概念化尤其困難。利用這種方法開發(fā)的測試程序是大型的軟件。因此必然面臨在開發(fā)、更新和維護(hù)大型復(fù)雜軟件應(yīng)用程序中所公知的各種困難。
      對于程序性方法,要減少根原因的觀察到的異?;蛉毕?,在時(shí)間和資源上的開銷非常大。為了減少為再現(xiàn)出現(xiàn)異常的情形所需要時(shí)間量,用戶通常要試圖使設(shè)置(set-up)序列最小化。但是,由于前述的在處理大型復(fù)雜軟件方法的困難,在程序性方法之下,要確定如何適當(dāng)?shù)赝瓿蛇@些,尤其是要正確地編輯測試程序以達(dá)到這樣的目的是需要很大的成本的。 對于程序性方法,在產(chǎn)品開發(fā)過程的早期建立測試會(huì)在時(shí)間和資源上有很高的成本。由于大的測試程序通常需要驗(yàn)證,盡可能早地開始測試程序的構(gòu)造是有益的。但是,在產(chǎn)品開發(fā)的早期,經(jīng)常改變系統(tǒng)說明書是很常見的。由于上述的處理大型軟件所面臨的困難,正確識別和修正受這種改變影響的測試程序具有很高的成本。 對于程序性方法,由于上述的處理大型復(fù)雜軟件所面臨的困難,要求測試的開發(fā)者具有相當(dāng)高的軟件開發(fā)技能。 對于程序性方法,當(dāng)測試程序被用于驗(yàn)證目標(biāo)系統(tǒng)的同時(shí),在測試程序中通常也會(huì)發(fā)現(xiàn)大量的缺陷。在現(xiàn)有技術(shù)中已經(jīng)觀察到在測試軟件中缺陷的數(shù)量通常至少與在目標(biāo)系統(tǒng)本身發(fā)現(xiàn)的缺陷數(shù)量一樣多。查找和修改這些缺陷要耗費(fèi)大量的時(shí)間和資源。這是程序性方法要求建立大量復(fù)雜軟件以實(shí)現(xiàn)測試所帶來的自然結(jié)果。如本領(lǐng)域普通技術(shù)人員所公知的,復(fù)雜軟件中缺陷的發(fā)生率與所編寫代碼的行數(shù)密切相關(guān)。 當(dāng)要把新的測試序列添加到已有測試序列的集合時(shí),對該新測試序列的第一級價(jià)值度量是看其是否與該集合中已有的任何序列相同,即看其是否要檢驗(yàn)任何有所不同的內(nèi)容。 一個(gè)測試序列如果在至少某些方面沒有什么不同之處,則不值得添加到該集合中。次一級價(jià)值度量是該新的測試序列究竟有何不同,即究竟覆蓋了系統(tǒng)說明書的多少不同方面。從這一概念出發(fā),我們可以認(rèn)為給定測試序列集合的覆蓋寬度就是其跨度(span)。假定通常不可能對系統(tǒng)行為的每一個(gè)可能的方面都做檢驗(yàn),這樣,通過建立具有盡可能大跨度的特別測試序列使驗(yàn)證成果盡可能多地覆蓋系統(tǒng)說明書的空間就是有價(jià)值的。但是,由于前述的測試選擇問題,在使用程序性方法時(shí),這是很困難的。 同其他的大型軟件項(xiàng)目一樣,程序性方法測試的建立者在編寫測試程序時(shí)具有特定的目標(biāo)完成程序,避免缺陷,使快速執(zhí)行,等等。當(dāng)用戶必須同各種的驗(yàn)證過程的財(cái)產(chǎn)保管人(客戶、設(shè)計(jì)者、同事、管理者等)交流時(shí),這時(shí)候的目標(biāo)就與上述的目標(biāo)不同。在這些時(shí)候,對用戶而言,重要的是進(jìn)行溝通,使得可理解由該測試所表示的工作的復(fù)雜體。在這些情況下,需要做分層、抽象、細(xì)節(jié)的漸進(jìn)式公開等等。對于大型復(fù)雜軟件項(xiàng)目,這兩組目標(biāo)通常不兼容。在程序性方法中,面臨同樣的困難。 現(xiàn)有技術(shù)的基于自動(dòng)器的方法不能動(dòng)態(tài)改變自動(dòng)器的遍歷或自動(dòng)器本身,以便能處理在驗(yàn)證期間DUT所表現(xiàn)的各種非確定說明的行為。對許多復(fù)雜系統(tǒng),該問題嚴(yán)重限制了驗(yàn)證協(xié)議范圍可以用自動(dòng)器文法表示的寬廣程度。這使得現(xiàn)有技術(shù)的用于驗(yàn)證的自動(dòng)器方法不能用于許多復(fù)雜系統(tǒng)的相符性驗(yàn)證。


      圖l示出了概述。
      圖2示出了相符性驗(yàn)證的階段。 圖3示出了包括DVR線程集的動(dòng)態(tài)驗(yàn)證行程中的線程。 圖4示出了動(dòng)態(tài)驗(yàn)證行程中線程的第一例子。 圖5示出了動(dòng)態(tài)驗(yàn)證行程中線程的第二例子。 圖6示出了動(dòng)態(tài)驗(yàn)證行程啟動(dòng)的步驟。 圖7示出NDA遍歷機(jī)制復(fù)位事件的處理步驟。 圖8示出調(diào)用$Resume_NDA任務(wù)的處理步驟。 圖9示出了調(diào)用WAIT_FOR(Wakeup Handle)的處理步驟。 圖10示出NDA遍歷的步驟。 圖11示出偽隨機(jī)遍歷策略中的步驟。 圖12示出通過偽隨機(jī)遍歷策略的重復(fù)控制對象的處理步驟。 圖13示出了強(qiáng)制遍歷策略中的步驟。 圖14示出了通過強(qiáng)制遍歷策略的終結(jié)符對象的處理步驟。 圖15示出了通過強(qiáng)制遍歷策略的替換集合對象的處理步驟。 圖16示出通過強(qiáng)制遍歷策略的重復(fù)控制對象的處理步驟。 圖17示出了跳轉(zhuǎn)遍歷策略中的步驟。 圖18示出了通過跳轉(zhuǎn)遍歷策略的終結(jié)符對象的處理步驟。 圖19示出了通過跳轉(zhuǎn)遍歷策略的替換集對象的處理步驟。 圖20示出了通過跳轉(zhuǎn)遍歷策略的重復(fù)控制對象的處理步驟。 圖21示出在遍歷期間的自動(dòng)機(jī)操縱和遍歷操縱。 圖22示出在動(dòng)態(tài)驗(yàn)證行程期間的資源管理。 圖23示出在動(dòng)態(tài)驗(yàn)證行程期間的自動(dòng)器同步。 圖24示出圖構(gòu)造例程的例子。 圖25示出圖24所示的圖構(gòu)造例程所產(chǎn)生的圖。 圖26示出了圖24所示的圖構(gòu)造例程所產(chǎn)生的圖以及簡化的變換。 圖27示出了適于用作實(shí)施主題實(shí)施例的計(jì)算裝置的計(jì)算機(jī)系統(tǒng)。
      具體實(shí)施例方式
      在下面的說明中,將描述本發(fā)明一個(gè)和多個(gè)實(shí)施例的各個(gè)方面。但是,很明顯,利用所描述各方面的僅僅一些或全部也可以實(shí)施本發(fā)明的另外實(shí)施例。為了便于說明,以使得能夠?qū)Ρ景l(fā)明提供全面的理解,這里陳述了特定的數(shù)字、材料和配置。但是,很顯然,沒有這些特定的細(xì)節(jié),也可以實(shí)施本發(fā)明的其他實(shí)施例。在另外的實(shí)例中,略去或簡化了公知的特性,以使得本發(fā)明的敘述更清楚。 部分的說明是通過數(shù)字系統(tǒng)所執(zhí)行的操作來體現(xiàn)的,使用諸如數(shù)據(jù)、表、提示、確定等術(shù)語,這與本領(lǐng)域的技術(shù)人員向同行轉(zhuǎn)達(dá)其工作要點(diǎn)時(shí)所采用的方式是一致的。如本領(lǐng)域技術(shù)人員所熟知的,這些數(shù)值可采用電、磁或光信號的形式,可通過數(shù)字系統(tǒng)的機(jī)械、電和光部件來存儲、傳遞、組合以及做其他的操作。數(shù)字系統(tǒng)這一術(shù)語包括單獨(dú)的、附帶的或嵌入的通用以及專用的數(shù)據(jù)處理機(jī)器、系統(tǒng)等。 按照理解本發(fā)明最有益的方式把各種操作依次描述成多離散操作,但是,描述的
      13次序應(yīng)該理解成隱含這些操作是具有必要次序依賴的。特別,這些操作不需要按所表述的 次序來執(zhí)行,這些操作中選擇出的一些可以并行執(zhí)行。 某些DUT,如用C程序設(shè)計(jì)語言編寫的可執(zhí)行行為模型,可以直接用于動(dòng)態(tài)驗(yàn)證行 程。其他的DUT,如用Verilog語言編寫的硬件模型,通過計(jì)算其行為的仿真器而用于動(dòng)態(tài) 驗(yàn)證行程。又其他的DUT,如物理設(shè)備,通過軟件接口用于動(dòng)態(tài)驗(yàn)證行程。如本領(lǐng)域中說明 書所通用的,在下面的說明中,在需要時(shí),仿真器或DUT軟件接口的使用是隱含的,而不是 明確陳述的。例如,短語"向DUT發(fā)送激勵(lì)",在可執(zhí)行行為模型的情況下是指直接向該DUT 發(fā)送激勵(lì),但在Verilog DUT的情況下是指向計(jì)算該DUT的所述行為的仿真器發(fā)送激勵(lì),而 在物理設(shè)備DUT的情況下是指向DUT軟件接口發(fā)送激勵(lì)。 另外,本說明中反復(fù)使用短語"主題實(shí)施例(subject embodiment):每次使用該 短語時(shí),是表示在包含Tesla 1.2.4的某個(gè)實(shí)施例集合中各實(shí)施例的任何一個(gè)。后來再使 用該短語"主題實(shí)施例",可能涉及也可能不涉及相同的實(shí)施例集合,但每個(gè)這樣的集合都 包含Tesla 1. 2. 4。
      概述 在圖1中示出了主題實(shí)施例的概述。 主題實(shí)施例包括方法和裝置,使得用戶可通過指定由一個(gè)非確定自動(dòng)器(圖21中 的2104)或多個(gè)非確定自動(dòng)機(jī)組成的非確定自動(dòng)機(jī)的集合("NDA集合")114,來指定相符 性評估協(xié)議106(如在相符性評估協(xié)議設(shè)計(jì)階段102)。每個(gè)NDA 2104可以包含對一個(gè)或多 個(gè)動(dòng)作例程(圖21中的2110)的說明,動(dòng)作例程例如是測試程序片斷,其與NDA文法中的終 結(jié)符相關(guān)聯(lián)。在主題實(shí)施例中,動(dòng)作例程可以規(guī)定任何期望的一系列動(dòng)作,例如對用于動(dòng)態(tài) 驗(yàn)證112的驗(yàn)證環(huán)境中的DUT118和/或繼承對象(legacy object) 116 (外部存儲器模型) 的輸入、DUT和/或繼承對象的可觀察狀態(tài)的檢查、產(chǎn)生相符性結(jié)果120的相符性評估計(jì)算 等。為了便于主題實(shí)施例中的NDA 2104的說明,用戶可使用非終結(jié)符(在某些實(shí)施例中稱 作"符號")來表達(dá)所述NDA中指定的終結(jié)符和非終結(jié)符序列,因此使得用戶可分層指定所 述NDA。為了進(jìn)一步便于主題實(shí)施例中NDA的說明,用戶還可在任何序列中使用"替換表達(dá) 式"以指定終結(jié)符和非終結(jié)符的替換序列,這將引起主題實(shí)施例的NDA遍歷機(jī)制(圖21中 的2114)在每當(dāng)?shù)竭_(dá)其替換實(shí)施例時(shí)選擇并遍歷(在動(dòng)態(tài)驗(yàn)證112期間)集合的一個(gè)替換 成員序列。用戶可以對替換表達(dá)式中的任何替換賦予權(quán)值,并且當(dāng)在NDA遍歷期間(圖IO 中1002)到達(dá)它們的替換表達(dá)式的時(shí)候,這些權(quán)值會(huì)影響選擇這些替換的可能性。特別,零 權(quán)值會(huì)使選擇可能性為零,這為了相關(guān)遍歷的目的會(huì)從所述NDA中刪除該替換。
      主題實(shí)施例包括NDA遍歷機(jī)制2114,用于在動(dòng)態(tài)驗(yàn)證階段110中的動(dòng)態(tài)驗(yàn)證行程 (圖21中2100)期間(即動(dòng)態(tài)驗(yàn)證112的會(huì)話期間)遍歷每個(gè)NDA 2104,因此選擇其終結(jié) 符序列中的一個(gè)來使用。通常,在NDA遍歷期間每當(dāng)?shù)竭_(dá)終結(jié)符,則執(zhí)行相應(yīng)動(dòng)作例程中的 動(dòng)作。隨著遍歷NDA集合,動(dòng)作例程執(zhí)行的序列實(shí)現(xiàn)相符性評估協(xié)議106的一個(gè)測試。
      主題實(shí)施例還包括機(jī)制,用于在測試計(jì)算2102內(nèi)操縱NDA 2104及其遍歷期間的 NDA遍歷1002,如圖21所示。 參主題實(shí)施例包括機(jī)制,用于在所述NDA的NDA遍歷1002期間(即在其開始之后 和其結(jié)束之前)從動(dòng)作例程2110修改NDA 2104。所述機(jī)制的一個(gè)使得動(dòng)作例程可發(fā)出NDA 圖修改命令2116來改變替換表達(dá)式中替換的權(quán)值。按這種方式,對相關(guān)的遍歷,可通過把CN
      它們的權(quán)值從正值改變成零而把各替換從NDA中刪除,或通過把它們的權(quán)值從零改變成正值而把替換添加到NDA。所述機(jī)制的另外一個(gè)使動(dòng)作例程發(fā)出NDA圖修改命令2116,以改變終結(jié)符對象指向哪一個(gè)動(dòng)作例程2110??梢愿鶕?jù)所期望的計(jì)算發(fā)出NDA圖修改命令2116。所述計(jì)算可包括基于可觀察的DUT 118狀態(tài)歷史的任何方面的計(jì)算,因此使得用戶可以在響應(yīng)DUT行為的動(dòng)態(tài)驗(yàn)證行程2100期間指定NDA修改其本身,不論所述行為是不是非確定指定的。 參主題實(shí)施例包括機(jī)制,用于在所述NDA的NDA遍歷1002期間(即在其開始之后和其結(jié)束之前)通過由動(dòng)作例程2110修改相應(yīng)的NDA遍歷機(jī)制2114來修改NDA 2104的NDA遍歷1002。所述機(jī)制使得動(dòng)作例程可發(fā)出NDA遍歷機(jī)制修改命令2118來改變NDA遍歷機(jī)制當(dāng)前使用的遍歷策略(見下面有關(guān)遍歷策略的討論)。例如,遍歷策略可以從偽隨機(jī)遍歷策略改變到跳轉(zhuǎn)遍歷策略??梢愿鶕?jù)所期望的計(jì)算發(fā)出NDA圖修改命令2116。所述計(jì)算可包括基于可觀察的DUT 118狀態(tài)歷史的任何方面的計(jì)算,因此使得用戶可以在響應(yīng)DUT行為的動(dòng)態(tài)驗(yàn)證行程2100期間指定修改NDA遍歷機(jī)制2114,不論所述行為是不是非確定指定的。 參主題實(shí)施例包括機(jī)制,用于在所述遍歷期間(即在其開始之后和其結(jié)束之前)對NDA 2104的NDA遍歷1002修改NDA遍歷機(jī)制2114上的遍歷約束的集合。所述機(jī)制使得動(dòng)作例程可發(fā)出"遍歷集合約束"修改命令2120。例如,動(dòng)作例程可以發(fā)出命令,通過添加要求NDA遍歷機(jī)制2114在經(jīng)過任何其他終結(jié)符之前要經(jīng)過特定終結(jié)符的約束來改變遍歷約束的集合。這樣,通過把在NDA圖2108中定義的終結(jié)符序列的遍歷限制到此時(shí)與該相符性評估協(xié)議相一致的那些,從而可以對DUT的動(dòng)態(tài)行為做出反應(yīng)??梢愿鶕?jù)所期望的計(jì)算發(fā)出"遍歷約束集合"修改命令2120。所述計(jì)算可包括基于可觀察的DUT 118狀態(tài)歷史的任何方面的計(jì)算,因此使得用戶可以在響應(yīng)DUT的行為的動(dòng)態(tài)驗(yàn)證行程2100期間指定修改遍歷約束的集合2112,不論所述行為是不是非確定指定的。 主題實(shí)施例包括資源管理機(jī)制,使得NDA 2104對任何需要獨(dú)占使用資源的計(jì)算可保證任何資源的獨(dú)占使用,從而可以正確遵循相符性評估協(xié)議。資源可表示任何東西,但通常用于指那些在動(dòng)態(tài)驗(yàn)證行程2100期間有限供應(yīng)的東西,如計(jì)算機(jī)存儲器、帶寬等。在某些應(yīng)用中,資源是純概念性的;這樣的資源可用于在由自動(dòng)機(jī)集合的各成員所執(zhí)行的各計(jì)算之間強(qiáng)制串行要求或并行限制。通常每個(gè)資源具有一組特性。特性可以是資源的任何屬性,如它的地址范圍,它讀數(shù)據(jù)的能力等。如同資源,特性也可以是純概念性的。
      在圖22中示出了說明主題實(shí)施例中資源管理的例子。第一非確定自動(dòng)器2228向資源管理器發(fā)出第一資源請求2220,指定第一資源需求集合2222 (如"讀/寫存儲器"類型的資源,具有至少1Mb的空間),以滿足所述自動(dòng)器準(zhǔn)備執(zhí)行的計(jì)算(在該例中是第一計(jì)算)的需求。當(dāng)接收到該第一資源請求2220 (操作2218),資源管理器2202使用哈希表查找和本領(lǐng)域公知的其他機(jī)制來搜索資源集合中滿足第一資源需求集合2222的資源。由于特性1 (2208)、特性2 (2210)以及資源2206的其他特性滿足所述的需求,資源管理器2202在第一資源2206上設(shè)置"使用中"特性,因此保留它用于第一非確定自動(dòng)器2228的獨(dú)占使用。資源管理器然后向第一非確定自動(dòng)器2228返回指向第一資源2206的指針,以此響應(yīng)第一資源請求2220(操作2224)。在接收該響應(yīng)之后,第一非確定自動(dòng)器2228開始執(zhí)行所述的第一計(jì)算。隨后,第二非確定自動(dòng)器2240向資源管理器2202發(fā)出第二資源請求2236,指定第二資源需求集合2238,以滿足所述自動(dòng)器準(zhǔn)備執(zhí)行的計(jì)算(在該例中是第二計(jì)算) 的需求。當(dāng)接收了該第二資源請求2236 (操作2230),資源管理器2202發(fā)現(xiàn)第一資源2206 除了它已經(jīng)處于獨(dú)占使用狀態(tài)之外可滿足第二資源需求集合2238,所以不允許第二非確定 自動(dòng)器2240使用該資源。而是繼續(xù)搜索并查找滿足第二資源需求集合2238的第二資源 2212。由于特性1 (2214)、特性2(2216)以及第二資源2212的其他特性滿足所述需求,資 源管理器2202在第二資源2212上設(shè)置"使用中"特性,因此保留它用于第二非確定自動(dòng)器 2240的獨(dú)占使用。該資源管理器然后向第二非確定自動(dòng)器2240返回指向第二資源2212 的指針,以此響應(yīng)第二資源請求2236 (操作2234)。在接收到該響應(yīng)之后,第二非確定自動(dòng) 器2240開始執(zhí)行所述第二計(jì)算。隨后,第一非確定自動(dòng)器2228完成所述第一計(jì)算的執(zhí)行。 第一非確定自動(dòng)器2228通知資源管理器2202不再請求第一資源2206的獨(dú)占使用,因此釋 放它(操作2226)。資源管理器2202清除第一資源2206上的"使用中"特性,因此使它可 用于其他的使用。隨后,第二非確定自動(dòng)器2240完成第二計(jì)算的執(zhí)行。第二非確定自動(dòng)器 2240通知資源管理器2202不再請求第二資源2212的獨(dú)占使用,因此釋放它(操作2232)。 資源管理器2202清除第二資源2212上的"使用中"特性,因此使它可用于其他使用。各種 其他的資源請求和響應(yīng)方式也是可以的。例如,這常常發(fā)生資源太少,不能滿足要被遍歷的 自動(dòng)機(jī)集合所做的資源請求。在這種情況下,資源管理器2202將利用"當(dāng)前沒有可用的匹 配資源"來響應(yīng)自動(dòng)器的請求。收到對資源請求的這種響應(yīng)的自動(dòng)器有幾種選擇。所述自 動(dòng)器可等待適合的資源變?yōu)榭捎?,或者所述自?dòng)器可執(zhí)行替換的計(jì)算,該計(jì)算不要求稀缺 資源的獨(dú)占使用(直到這樣的資源變得可用)。 利用資源管理機(jī)制,可以在各種驗(yàn)證應(yīng)用中重用自動(dòng)機(jī),從而具有很好的成本效 益。在現(xiàn)有技術(shù)中,當(dāng)一起成批重用各測試程序來用于各種系統(tǒng)的驗(yàn)證時(shí),資源沖突是很嚴(yán) 重的問題,但是通過主題實(shí)施例使用自動(dòng)機(jī)就可以防止這種資源沖突。利用該實(shí)施例,對具 有很大差異資源的不同系統(tǒng)的驗(yàn)證,可以不加修改地一起成批重用以前編寫的各自動(dòng)機(jī)。 在各動(dòng)態(tài)驗(yàn)證行程2100的開始,可以很容易地向資源管理器2202指定各系統(tǒng)的獨(dú)特資源 限制,因此建立針對特定系統(tǒng)的資源集合2204,由此可保證資源,并且可如上述那樣釋放資 源。 操作流 在主題實(shí)施例中,相符性驗(yàn)證是通過包含如下步驟的過程來完成的,如圖2所示,
      這些步驟中的任何一個(gè)可以執(zhí)行一次或多次,作為迭代求精過程的一部分。 1、相符性評估協(xié)議設(shè)計(jì)階段102 2、編譯階段108 3、動(dòng)態(tài)驗(yàn)證階段110 相符性評估協(xié)議設(shè)計(jì)階段 在主題實(shí)施例中,相符性評估協(xié)議設(shè)計(jì)階段102包括下述操作,其中任何操作可 執(zhí)行一次或多次,如作為整個(gè)系統(tǒng)驗(yàn)證過程(其本身可以是迭代求精過程)中的嵌套的迭 代求精過程的一部分。 1、用戶分析待測試系統(tǒng)的說明書(系統(tǒng)說明書104)以及相符性驗(yàn)證的目標(biāo)。
      2、用戶建立一組驗(yàn)證測試臺(testbench)。每個(gè)驗(yàn)證測試臺包括待測試系統(tǒng)的 實(shí)例(即DUT 118),由主題實(shí)施例生成的任何期望的驗(yàn)證接口模塊的實(shí)例(下面說明),以
      16及任何其他期望驗(yàn)證實(shí)體的實(shí)例,如繼承對象116(使用現(xiàn)有技術(shù)方法準(zhǔn)備的時(shí)鐘生成器、激勵(lì)生成器或結(jié)果檢查器等)。 3、用戶建立一個(gè)或多個(gè)NDA以及驗(yàn)證接口說明(VID,這在下面說明),以規(guī)定相符性評估協(xié)議的各部分。 4、用戶建立資源說明函數(shù),以規(guī)定要記錄在資源集合2204中的資源集合及其特性。在主題實(shí)施例中,NDA圖(圖21中的2108)可包括幾種類型的對象。 1、終結(jié)符對象,其每個(gè)具有名字,并且可指向(即包含對其的參照)NDA遍歷1002
      期間每當(dāng)?shù)竭_(dá)該終結(jié)符對象時(shí)要調(diào)用的動(dòng)作例程2110。終結(jié)符對象不指向圖中任何其他對象。 2、非終結(jié)符對象,其每個(gè)具有名字,并且指向NDA遍歷1002期間每當(dāng)?shù)竭_(dá)該非終結(jié)符時(shí)實(shí)現(xiàn)待遍歷子圖的表達(dá)式對象 3 、表達(dá)式對象是終結(jié)符對象、非終結(jié)符對象或任何下面類型的對象。 a)序列對象,其每個(gè)包含一列指針,指向NDA遍歷1002期間每當(dāng)?shù)竭_(dá)該序列對象
      時(shí)要按次序順序遍歷的表達(dá)式對象。 b)替換集合對象(alternative set object),其每個(gè)包含一列指針,指向各替換對象,在NDA遍歷1002期間每當(dāng)?shù)竭_(dá)該替換集合對象時(shí),替換對象的一個(gè)被選擇并被遍歷。每個(gè)替換對象包含權(quán)值以及指針,該指針指向NDA遍歷1002期間每當(dāng)?shù)竭_(dá)該替換對象時(shí)要遍歷的表達(dá)式對象。 c)重復(fù)對象,其每個(gè)包含指針,指向NDA遍歷1002期間每當(dāng)?shù)竭_(dá)該重復(fù)對象時(shí)要
      被相繼遍歷零次或多次的表達(dá)式對象。每個(gè)重復(fù)對象還包含該表達(dá)式對象要被遍歷的最小
      次數(shù)。每個(gè)重復(fù)對象還包含該表達(dá)式對象要被遍歷的最大次數(shù)。所述最大可以是"無限",
      即表示對該表達(dá)式對象的遍歷次數(shù)沒有上限的特殊值。 在NDA 2104中,指定非終結(jié)符對象中的一個(gè)作為起始非終結(jié)符。 在主題實(shí)施例的相符性評估協(xié)議設(shè)計(jì)階段,用戶編寫NDA圖定義程序模塊(用
      。++),其構(gòu)成包含其連接的組件對象,由此來規(guī)定用于每個(gè)NDA 2104的NDA圖2108,并選
      定起始非終結(jié)符。按這種方式提供圖說明的技術(shù)可包括向用戶提供類定義頭文件以及重載
      C++算符。 說明用戶如何在主題實(shí)施例中建立NDA圖2108的例子在圖24中的ConstructGr即h()函數(shù)2402中給出。所產(chǎn)生的圖2502的視圖出現(xiàn)在圖25中。非終結(jié)符(圖24中的符號)"S1"2502包含指向序列2504的指針,該序列由指向終結(jié)符(圖24中的動(dòng)作)"a" 2518的指針、所跟隨的指向重復(fù)2520的指針組成。重復(fù)2520包含指向序列2522的指針。序列2522包含指向終結(jié)符"b"2524的指針、所跟隨的指向替換集合2526的指針、所跟隨的指向終結(jié)符"g"2528的指針。替換集合2526包含指向替換2514的指針和指向替換2516的指針。替換2514包含指向非終結(jié)符"S2" 2506的指針。替換2516包含指向非終結(jié)符"S3"2510的指針。非終結(jié)符"S2"2506包含指向序列2508的指針。序列2508包含指向終結(jié)符"c"2530的指針、所跟隨的指向終結(jié)符"e" 2532的指針。非終結(jié)符"S3" 2510包含指向重復(fù)2512的指針。重復(fù)2512包含指向序列2534的指針。序列2534包含指向終結(jié)符"d"2536的指針、所跟隨的指向終結(jié)符"f"2538的指針。使用本領(lǐng)域公知的技術(shù),實(shí)施例可以把圖2502轉(zhuǎn)換成其他的圖,例如,為了說明和交流的目的,可轉(zhuǎn)換成圖 26中的圖2602。 在主題實(shí)施例的相符性評估協(xié)議設(shè)計(jì)階段,用戶通過編寫函數(shù)(如用C+》來指定 動(dòng)作例程2110。這些函數(shù)可包括任何軟件代碼,并且特別可包括為了得到下述內(nèi)容的函數(shù) 調(diào)用。 1、從DUT 118或驗(yàn)證環(huán)境的另外部分讀取。所獲得的信息可用于任何期望的目 的。這些信息的一種典型使用是用于執(zhí)行DUT行為正確性檢查。這些信息的另一種典型使 用是用于確定應(yīng)該執(zhí)行動(dòng)作例程代碼的哪一部分(即分支)。
      2、向DUT 118或驗(yàn)證環(huán)境的其他部分寫入。 3、使NDA 2104與DUT 118或驗(yàn)證環(huán)境的其他部分同步,使得例如當(dāng)DUT處于適當(dāng)
      狀態(tài)時(shí)從該DUT讀取或向該DUT寫入。同步機(jī)制包括下述類型的同步命令(圖23的2308): a)WAIT_FOR(event handle),其使得其上運(yùn)行該動(dòng)作例程的線程被掛起,直到對
      應(yīng)于event handle的事件發(fā)生。所述事件是同步條件的例子(圖23中2320)。 b)WAIT_FOR(duration),其使得在其上運(yùn)行該動(dòng)作例程的線程被掛起由duration
      指定的仿真時(shí)間量。指定時(shí)段的仿真時(shí)間的完結(jié)是同步條件2320的例子。 c) WAIT_FOR(wakeup handle),其使得檢查當(dāng)前NDA實(shí)例的待決喚醒計(jì)數(shù)器。下述
      的計(jì)數(shù)器檢查和可能的遞減必須作為原子動(dòng)作來完成,以避免可能由同時(shí)發(fā)生的動(dòng)作而引
      入的錯(cuò)誤。如果所述待決喚醒計(jì)數(shù)器大于零,所述待決喚醒計(jì)數(shù)器減l,并且該動(dòng)作例程繼
      續(xù)。否則,在其上運(yùn)行該動(dòng)作例程的線程被掛起,直到該待決喚醒計(jì)數(shù)器超過零,在這一點(diǎn)
      執(zhí)行下述動(dòng)作該待決喚醒計(jì)數(shù)器減1 ,掛起該DUT線程306,以及恢復(fù)在其上運(yùn)行該動(dòng)作例
      程的線程。 d) Target-NDA-Instance- > WAKEUP (),其使得目標(biāo)NDA實(shí)例的待決喚醒計(jì)數(shù)器加 1。 4、如上所述利用NDA圖修改命令2116來修改NDA。 5、如上所述利用NDA遍歷機(jī)制修改命令2118來修改NDA遍歷機(jī)制2114。例 如,當(dāng)NDA遍歷機(jī)制2114使用偽隨機(jī)遍歷策略,調(diào)用Skip (target-terminal)函數(shù)會(huì) 引起NDA遍歷機(jī)制2114臨時(shí)改變而去使用跳轉(zhuǎn)遍歷策略,以便到達(dá)特定的目標(biāo)終結(jié)符 (target-terminal)對象,而不調(diào)用在到達(dá)該特定終結(jié)符對象之前到達(dá)的任何其他終結(jié)符 對象的動(dòng)作例程2110。 6、如上所述利用"遍歷約束集合"修改命令2120來約束NDA 2104后續(xù)的NDA遍 歷1002。例如,調(diào)用Force (target-terminal)函數(shù)將要求NDA遍歷機(jī)制2114在遍歷任何 其他終結(jié)符對象之前遍歷特定的目標(biāo)終結(jié)符對象。還有一個(gè)例子,對AdjustLoopLimit函 數(shù)的調(diào)用將要求NDA遍歷機(jī)制2114在當(dāng)其所包含的表達(dá)式對象的特定數(shù)量的附加遍歷完 成后從其所包含表達(dá)式對象的重復(fù)遍歷停止重復(fù)對象。 7、如上所述,通過向資源管理器2202指定一組資源需求,請求資源的獨(dú)占使用。
      8、如上所述,通過通知資源管理器不再要求特定資源的獨(dú)占使用來釋放資源的獨(dú) 占使用。 9、讀取或?qū)懭霐?shù)據(jù)對象。每個(gè)NDA實(shí)例具有用戶指定的數(shù)據(jù)對象。數(shù)據(jù)的通常使 用是在NDA實(shí)例的各動(dòng)作例程2110之間傳遞信息,以使得一系列動(dòng)作例程能夠合作執(zhí)行計(jì)
      18算。數(shù)據(jù)對象的另外使用是在那些需要以某種方式合作的單獨(dú)NDA實(shí)例的動(dòng)作例程之間傳 遞信息。 10、利用NDA的名字和驗(yàn)證接口模塊的實(shí)例名來查找特定的NDA實(shí)例。使用該查 找函數(shù)的一個(gè)理由是為了調(diào)用Specif ied-NDA-Instance- > WAKEUP()。使用該查找函數(shù) 的另一個(gè)理由是為了能夠讀取和寫入特定的NDA實(shí)例數(shù)據(jù)對象。使用該查找函數(shù)的又另一 個(gè)理由是為了使一個(gè)NDA 2104的動(dòng)作例程2110可向第二 NDA 2104發(fā)出NDA圖修改命令 2116。使用該查找函數(shù)的又另一個(gè)理由是為了使一個(gè)NDA2104的動(dòng)作例程2110可向遍歷 第二NDA 2104的NDA遍歷機(jī)制2114發(fā)出NDA遍歷機(jī)制修改命令。使用該查找函數(shù)的又另 一個(gè)理由是為了使一個(gè)NDA 2104的動(dòng)作例程2110發(fā)出"遍歷約束集合"修改命令2120,以 修改用于第二 NDA 2104的NDA遍歷1002的NDA遍歷機(jī)制上的遍歷約束集合2112。
      11、結(jié)束當(dāng)前的動(dòng)態(tài)驗(yàn)證行程2100。如果DUT 118正在由具有結(jié)束功能的仿真器 執(zhí)行,主題實(shí)施例將調(diào)用它。 12、中斷當(dāng)前動(dòng)態(tài)驗(yàn)證行程2100并使得用戶可交互地輸入指揮命令。如果DUT
      118正在由具有交互用戶界面的仿真器執(zhí)行,則主題實(shí)施例使它變成活動(dòng)的。 在主題實(shí)施例的相符性評估協(xié)議設(shè)計(jì)階段,用戶對每個(gè)NDA 2104指定NDA用戶初
      始化函數(shù)。該函數(shù)可以包含任何軟件代碼(如用〔++編寫的)。通常,NDA用戶初始化函數(shù)
      根據(jù)相符性評估協(xié)議調(diào)用主題實(shí)施例函數(shù)把每個(gè)終結(jié)符對象的動(dòng)作例程指針設(shè)置到指向
      合適的動(dòng)作例程。 在主題實(shí)施例的相符性評估協(xié)議的設(shè)計(jì)階段,用戶建立一個(gè)或多個(gè)驗(yàn)證接口說明 (VID)。每個(gè)VID指定用于一個(gè)或多個(gè)NDA的驗(yàn)證接口 ,并且可包括下述信息。
      1、輸入和輸出引腳(pin)定義。 2、實(shí)例參數(shù)定義,這可用于定制如啟動(dòng)時(shí)和保持時(shí)的行為。
      3、該VID所包含各NDA的標(biāo)識,即VID對這些NDA提供接口 。 4、對該VID中的每個(gè)NDA 2104,包含編譯的動(dòng)作例程和編譯的用于NDA的初始化 函數(shù)的共享庫的標(biāo)識。 5、內(nèi)部信號句柄定義,其用法的一個(gè)例子是使得動(dòng)作例程2110讀取或驅(qū)動(dòng)任何 期望的DUT 118內(nèi)部線路或寄存器。 6、事件定義,其把事件句柄與事件結(jié)合,其中所述事件利用驗(yàn)證環(huán)境所支持
      語言的事件表達(dá)式來指定。事件定義還可以包含所述語言中的級別表達(dá)式(level
      e鄧ression),在這種情況下,認(rèn)為該事件僅當(dāng)事件表達(dá)式被觸發(fā)并且該級別表達(dá)式為真時(shí)
      才發(fā)生??梢允褂檬录浔囊环N方式是當(dāng)與DUT 118或驗(yàn)證環(huán)境的另外部分同步時(shí)在動(dòng)
      作例程2110的WAIT_FOR函數(shù)調(diào)用中(即同步命令2308)。 7、對該VID中的每個(gè)NDA 2104, NDA遍歷機(jī)制復(fù)位事件的標(biāo)識。 8、局部變量定義,其導(dǎo)致在對應(yīng)于該VID的驗(yàn)證接口模塊中的局部變量的說明。 9、時(shí)鐘定義,包括高周期(high period)長度、低周期(low period)長度、選擇開
      始事件和選擇結(jié)束事件。 10、時(shí)段定義,其把時(shí)段句柄與表示仿真時(shí)間量的表達(dá)式的值結(jié)合。 11、喚醒定義,指定用于動(dòng)作例程2110的喚醒句柄??墒褂脝拘丫浔囊环N方式
      是當(dāng)同步多個(gè)NDA時(shí)WAIT_FOR函數(shù)調(diào)用動(dòng)作例程中同步命令2308。
      在主題實(shí)施例的相符性評估協(xié)議設(shè)計(jì)階段,用戶可建立資源說明函數(shù)。該函數(shù)可 包括任何軟件代碼(如用0++編寫的)。通常如果請求任何資源,資源說明函數(shù)調(diào)用主題實(shí) 施例函數(shù)來構(gòu)造資源對象,并指定所述資源對象的特性。主題實(shí)施例自動(dòng)把所述資源對象 標(biāo)記成"可用"并把它們添加到資源集合2204中。 在主題實(shí)施例中,資源對象可利用預(yù)定特性來構(gòu)造,該預(yù)定特性適合許多應(yīng)用,包 括下述 參主/從特性。 參整數(shù)設(shè)備類型(integer device-type)特性,可用于指定用戶定義的類似設(shè)備
      中的成員關(guān)系, 參地址范圍特性, 參"可讀"特性, 參"可寫"特性, 參"可直接加載"特性,可用于指定可通過直接數(shù)據(jù)加載機(jī)制把數(shù)據(jù)寫入設(shè)備中,
      參未初始化特性
      參"是存儲器"特性, 參"是FIFO"特性,這可用于指定該資源是不可尋址的, 參"是便箋本"特性,這可用于指定該資源僅可由CPU存取, 參"具有外部地址"特性,這可用于指定該資源可由外部主機(jī)尋址,以及 參忙/閑特性,由主題實(shí)施例使用以標(biāo)記該資源是已經(jīng)保留用于獨(dú)占使用,還是
      當(dāng)前可用。 資源對象還可以有用戶指定的附加特性。
      編譯階段 在主題實(shí)施例中,編譯階段包括下述操作,其中任何操作可執(zhí)行一次或多次,如作 為迭代求精過程的部分。 1、主題實(shí)施例讀取每個(gè)VID并生成相應(yīng)的驗(yàn)證接口模塊(在動(dòng)態(tài)驗(yàn)證階段110期 間),其提供該VID所包含的各NDA與該該DUT 118之間的接口 ,如果必要,提供該VID中的 各NDA與驗(yàn)證環(huán)境的其他部分的接口。該驗(yàn)證接口模塊還可以包括局部變量聲明和時(shí)鐘生 成。該驗(yàn)證接口模塊還包含WAIT_F0R同步命令函數(shù)支持代碼。 2、主題實(shí)施例對每個(gè)NDA 2104編譯各動(dòng)作例程2110和NDA初始化函數(shù),并把所 產(chǎn)生的對象模塊存儲在包含該NDA的VID中指定的共享庫中。 3、主題實(shí)施例對每個(gè)NDA 2104編譯NDA圖定義程序模塊,把所產(chǎn)生的對象模塊與 來自實(shí)施例的共享庫鏈接,然后執(zhí)行所產(chǎn)生的程序,以生成二進(jìn)制NDA圖文件。該二進(jìn)制 NDA圖文件包含NDA圖2108的二進(jìn)制表示,可快速加載到動(dòng)態(tài)驗(yàn)證行程2100中。
      4、主題實(shí)施例編譯資源說明函數(shù),并把它添加到由VID列出的共享庫中,其對應(yīng) 的的驗(yàn)證接口模塊在該驗(yàn)證測試臺中被實(shí)例化。
      動(dòng)態(tài)驗(yàn)證階段 在主題實(shí)施例中,動(dòng)態(tài)驗(yàn)證階段110包括一個(gè)或多個(gè)動(dòng)態(tài)驗(yàn)證行程。為了說明的 目的,描述通過NC-Verilog 使用的主題實(shí)施例的動(dòng)態(tài)驗(yàn)證階段,NC-Verilog 是Cadence Desigh System公司的產(chǎn)品。利用其他仿真器工作的另外實(shí)施例也是可以的,并由這里的教
      20導(dǎo)很容易構(gòu)造。 動(dòng)態(tài)驗(yàn)證行程中的線程 在主題實(shí)施例中,在動(dòng)態(tài)驗(yàn)證行程2100期間使用多個(gè)線程,如圖3中所示的例子 所說明的。通常,DUT 118用一個(gè)線程306來運(yùn)行,下面稱之為DUT線程。如果在動(dòng)態(tài)驗(yàn)證行 程2100中對DUT需要仿真器,該仿真器用DUT線程306運(yùn)行(否則,DUT接口或DUT本身用 DUT線程306運(yùn)行)。對驗(yàn)證接口模塊的每個(gè)實(shí)例化,對相應(yīng)VID所包含的每個(gè)NDA 2104, 動(dòng)態(tài)生成NDA實(shí)例線程308/314 ;該線程用于處理相應(yīng)的包括NDA遍歷1002和動(dòng)作例程執(zhí) 行的NDA實(shí)例310/312。由DUT線程306和NDA實(shí)例線程308/314組成的線程集合在下文 中被稱作DVR線程集合302??刂凭€程的執(zhí)行,使得在任何時(shí)刻只有該DVR線程集合中的一 個(gè)成員在執(zhí)行驗(yàn)證任務(wù),并且掛起其他的成員。要執(zhí)行的DVR線程的第一成員是DUT線程 306。 DUT線程的執(zhí)行偶爾被掛起,并允許一個(gè)NDA實(shí)例線程308/314執(zhí)行。所述NDA實(shí)例 線程后來被掛起并恢復(fù)DUT線程306的執(zhí)行。在圖4和圖5中的垂直時(shí)間線(timeline)上 示出了線程交互的各種例子(在這些圖中,執(zhí)行的線程用實(shí)線示出,掛起的線程用虛線示 出)。對這些實(shí)施例,由于在任何時(shí)刻只有DVR線程集合302中的一個(gè)成員可以是活動(dòng)的, 在每個(gè)NDA 2104中的動(dòng)作例程不需要是線程安全的(thread safe),并且任何其他的設(shè)計(jì) 成單線程驗(yàn)證環(huán)境的驗(yàn)證軟件(如許多可執(zhí)行DUT和DUT仿真器那樣)都不需要是線程安 全的(例如,不需要使用互斥鎖來保證兩個(gè)NDA之間共享的數(shù)據(jù)存取,或NDA與DUT或DUT 仿真器之間的數(shù)據(jù)存取)。 在主題實(shí)施例中,如圖23中所示,在第一計(jì)算機(jī)任務(wù)2302中被處理的NDA 2104 (如第一 NDA實(shí)例線程308)可與DUT 118和/或第二計(jì)算機(jī)任務(wù)2324 (這可以是處理 不同NDA的第二 NDA實(shí)例線程314)同步。利用同步命令2308的執(zhí)行1312來開始同步,由 此指定2318同步條件2320 (如DUT "就緒"信號從邏輯高改變到邏輯低)。隨之第一計(jì)算 機(jī)任務(wù)2302被掛起2314。隨后,DUT 118的活動(dòng)、第二計(jì)算機(jī)任務(wù)2324的活動(dòng)、或者二者 結(jié)合導(dǎo)致同步條件的發(fā)生2322(如"就緒"信號上的邏輯低)。然后,在同步命令2308之后 緊接著的時(shí)間點(diǎn)做第一計(jì)算機(jī)任務(wù)2302的恢復(fù)2316。按這種方式,NDA 2104可與DUT和 /或該驗(yàn)證環(huán)境中的任何其他對象或?qū)ο蠹贤?。注意同步命?308可以出現(xiàn)在動(dòng)作例 程2304中的任何地方。特別,它可以出現(xiàn)在該動(dòng)作例程中的非同步測試計(jì)算語句(如果有 的話)之前,在該動(dòng)作例程中的非同步測試計(jì)算語句(如果有的話)之后,或者在該動(dòng)作例 程中的任何兩個(gè)非同步測試計(jì)算語句(如果有的話)之間,例如在可選的第一非同步測試 計(jì)算語句2306之后并在可選第二非同步測試計(jì)算語句2310之前(非同步測試計(jì)算語句是 與同步命令不同的任何測試計(jì)算語句)。
      動(dòng)態(tài)驗(yàn)證行程 在使用NC-Verilog 的主題實(shí)施例中,每個(gè)動(dòng)態(tài)驗(yàn)證行程2100包括下述操作,如 圖6所示。 1、用戶選擇驗(yàn)證測試臺(testbench)和用于偽隨機(jī)遍歷策略的種子(操作604)。 用戶建立動(dòng)態(tài)驗(yàn)證行程初始化文件,該文件指定所述種子,并且還列出每個(gè)VID文件名和 由它生成的驗(yàn)證接口模塊的名字(操作606)。 2、用戶在驗(yàn)證測試臺上調(diào)用NC-Verilog 仿真器(操作608),利用動(dòng)態(tài)驗(yàn)證行程 初始化文件名和主題實(shí)施例的動(dòng)態(tài)驗(yàn)證階段用于NC-Verilog 的共享對象實(shí)現(xiàn)的名字來
      21傳遞。 3、用DUT線程306執(zhí)行的NC-Verilog ,加載動(dòng)態(tài)驗(yàn)證階段用于NC-Verilog 的共享對象實(shí)現(xiàn)(操作610),并調(diào)用其初始化函數(shù)(操作612)。該函數(shù)注冊用在驗(yàn)證接口模塊中的Verilog任務(wù),包括$Resume_NDA任務(wù)。該函數(shù)還讀取動(dòng)態(tài)驗(yàn)證行程初始化文件,利用偽隨機(jī)策略種子來初始化偽隨機(jī)數(shù)生成器,并使用VID文件/驗(yàn)證接口模塊名對應(yīng)的信息在存儲器中生成VID文件查找數(shù)據(jù)結(jié)構(gòu)。該函數(shù)還調(diào)用資源說明函數(shù)。
      4、對每個(gè)驗(yàn)證接口模塊的實(shí)例,NC-VerilogTM調(diào)用用于模塊定義中的$ReSume_NDA任務(wù)的檢查函數(shù)(操作614、616和618)。該檢查函數(shù)從該仿真器獲取該實(shí)例的名字和該模塊的名字,并使用該信息從VID文件查找數(shù)據(jù)結(jié)構(gòu)獲取相應(yīng)的VID文件名。該檢查函數(shù)然后讀取VID以獲得其包含的NDA列表。對每個(gè)NDA 2104,該檢查函數(shù)調(diào)用用于NDA的NDA用戶初始化函數(shù)。 5、 NC-Verilog 開始仿真(操作620)。 6、當(dāng)發(fā)生NDA遍歷機(jī)制復(fù)位事件,如果相應(yīng)的NDA實(shí)例當(dāng)前正在被遍歷,則調(diào)用NDA遍歷機(jī)制結(jié)束函數(shù),其停止遍歷。在每種情況下,都調(diào)用豸Resume—NDA任務(wù)。這通過圖7中的操作704、706和708來說明。 7、當(dāng)調(diào)用$Resume_NDA任務(wù),如果相應(yīng)的NDA實(shí)例沒有在被遍歷,則調(diào)用NDA遍歷機(jī)制初始化函數(shù),其啟動(dòng)新的NDA實(shí)例線程并掛起DUT線程306。如果相應(yīng)的NDA實(shí)例在被遍歷,則恢復(fù)相應(yīng)的NDA實(shí)例線程并掛起DUT線程。在每種情況下,通常NDA遍歷1002繼續(xù),直到遇到WAIT—F0R同步命令23408。這通過圖8中的操作804、806、808、810和812說明。 8、每當(dāng)任何動(dòng)作例程2110執(zhí)行WAI乙F0R(event handle)同步命令函數(shù)調(diào)用,則掛起其中運(yùn)行該動(dòng)作例程的NDA實(shí)例線程,恢復(fù)DUT線程306,執(zhí)行從$Resume_NDA任務(wù)的返回,并且NC-Verilog 恢復(fù)。然后在相應(yīng)的Verilog接口模塊中生成的Verilog代碼等待,直到在該仿真中發(fā)生對應(yīng)于該事件句柄的事件,在這一點(diǎn)再次調(diào)用$Resume_NDA。
      9、每當(dāng)任何動(dòng)作例程2110執(zhí)行WAIT_F0R(duration)同步命令函數(shù)調(diào)用,則掛起其中運(yùn)行該動(dòng)作例程的NDA實(shí)例線程,恢復(fù)DUT線程306,執(zhí)行從$Resume_NDA任務(wù)的返回,并且NC-Verilog 恢復(fù)。然后,在相應(yīng)的Verilog接口模塊中生成的Verilog代碼等待,直到仿真時(shí)間經(jīng)過了 duration的量,在這一點(diǎn)調(diào)用$Resume_NDA。 10、每當(dāng)任何動(dòng)作例程2110執(zhí)行WAI乙F0R(wakeup handle)同步命令函數(shù)調(diào)用,則檢查當(dāng)前NDA實(shí)例的待決喚醒計(jì)數(shù)器(操作904)。如果所述的待決喚醒計(jì)數(shù)器大于零,所述待決喚醒計(jì)數(shù)器減1(操作918)并且該動(dòng)作例程繼續(xù)。否則,恢復(fù)DUT線程306(操作906),并掛起其上運(yùn)行該動(dòng)作例程的線程(操作908)直到所述待決喚醒計(jì)數(shù)器超過零910,在這一點(diǎn)執(zhí)行下述操作所述待決喚醒計(jì)數(shù)器減1 (操作912),掛起DUT線程306 (操作914),并恢復(fù)其上運(yùn)行該動(dòng)作例程的線程(操作916)。這在圖9中說明。
      在主題實(shí)施例的動(dòng)態(tài)驗(yàn)證階段110,下述三個(gè)函數(shù)是可用的。 1、函數(shù)TerminalCanBeReached(終結(jié)符對象指針,NDA圖對象指針)響應(yīng)下述問題返回布爾值(即,對是(yes)返回真,對否(no)返回假)"是否存在從由該NDA圖對象指針?biāo)赶虻腘DA圖對象開始的NDA子圖的遍歷,以使得到達(dá)該終結(jié)符對象指針?biāo)赶虻慕K結(jié)符對象?"
      2、函數(shù)TerminalCanBeFirst(終結(jié)符對象指針,NDA圖對象指針)響應(yīng)下述問題返
      回布爾值"是否存在從由該NDA圖對象指針?biāo)赶虻腘DA圖對象開始的NDA子圖的遍歷,
      以使得該終結(jié)符對象指針?biāo)赶虻慕K結(jié)符對象是所到達(dá)的第一個(gè)終結(jié)符對象?" 3、函數(shù)TerminalsCanBeAvoided(NDA圖對象指針)響應(yīng)下述問題返回布爾值"是
      否存在從由該NDA圖對象指針?biāo)赶虻腘DA圖對象開始的NDA子圖的遍歷,以使得沒有到
      達(dá)終結(jié)符對象?" NDA遍歷機(jī)制 在主題實(shí)施例的動(dòng)態(tài)驗(yàn)證階段110, NDA遍歷機(jī)制2114按如下所述操作。當(dāng)調(diào)用NDA遍歷機(jī)制初始化函數(shù),則NDA遍歷1002開始。在初始化期間掛起DUT線程306并建立新的NDA實(shí)例線程用以處理該NDA 2104,包括遍歷的執(zhí)行和動(dòng)作例程2110的執(zhí)行。NDA遍歷機(jī)制2114使用遍歷策略來執(zhí)行大多數(shù)遍歷工作。本發(fā)明允許任意數(shù)量的遍歷策略,但主題實(shí)施例提供三種(見下面說明)(a)偽隨機(jī)遍歷策略,(b)強(qiáng)制遍歷策略,其用于主題實(shí)施例以實(shí)現(xiàn)強(qiáng)制遍歷約束,以及(c)跳轉(zhuǎn)遍歷策略。NDA遍歷機(jī)制2114具有下壓棧(策略PDS),用于保存指向遍歷策略的指針。在初始化期間,NDA遍歷機(jī)制2114把指向偽隨機(jī)遍歷策略的指針壓入該策略PDS,使得它可成為默認(rèn)遍歷策略。NDA遍歷機(jī)制2114還具有下壓棧(對象PDS),用于保存指向各NDA圖對象和控制對象的指針。在初始化期間,NDA遍歷機(jī)制2114把指向NDA的起始非終結(jié)符的指針壓入對象PDS,以使得該遍歷從此處開始。在初始化之后,每當(dāng)執(zhí)行所述NDA實(shí)例線程,則NDA遍歷機(jī)制重復(fù)執(zhí)行下述兩個(gè)操作過程,直到對象PDS為空(1006)、相關(guān)的復(fù)位事件發(fā)生(1004)或者動(dòng)態(tài)驗(yàn)證行程停止(1008)。這在圖10中說明。 1、 NDA遍歷機(jī)制2114從對象PDS彈出對象指針(當(dāng)前對象指針)(操作1010)。
      2、 NDA遍歷機(jī)制2114把當(dāng)前對象指針的處理交給當(dāng)前遍歷策略(即,由策略PDS頂部的遍歷策略指針?biāo)赶虻谋闅v策略)(操作1012)。 在遍歷1002期間,如果對象PDS變?yōu)榭?,或發(fā)生相關(guān)的復(fù)位事件,則調(diào)用NDA遍歷機(jī)制結(jié)束函數(shù)(操作1014)。在結(jié)束期間,調(diào)用NDA的結(jié)束函數(shù)(如果用戶指定),因此提供機(jī)制來清除因執(zhí)行動(dòng)作例程2110而建立的任何數(shù)據(jù)結(jié)構(gòu)。還是在結(jié)束期間,清除對象PDS和遍歷PDS。還在結(jié)束期間,撤消NDA實(shí)例線程。
      偽隨機(jī)遍歷策略 在主題實(shí)施例的動(dòng)態(tài)驗(yàn)證階段IIO,偽隨機(jī)遍歷策略(PRTS)按如所述下方式處理當(dāng)前對象指針。這在圖ll中說明。PRTS的目的是按偽隨機(jī)方式遍歷該NDA 2104,以使得產(chǎn)生多種多樣的測試。 1、獲取當(dāng)前對象指針(操作1104)。 2、如果該當(dāng)前對象指針指向終結(jié)符對象,則PRTS使用存儲在該終結(jié)符對象中的動(dòng)作例程指針(如果有)來調(diào)用相應(yīng)的動(dòng)作例程,然后等待所述動(dòng)作例程返回(操作1106、1120和1122)。 3、如果該當(dāng)前對象指針指向非終結(jié)符對象,則PRTS把指向存儲在該非終結(jié)符對象中的表達(dá)式對象的指針壓入對象PDS(操作1108和1124)。 4、如果該當(dāng)前對象指針指向序列對象,則PRTS把該序列對象的表達(dá)式對象指針列表中的每個(gè)表達(dá)式對象指針按逆序壓入對象PDS(即,在該序列尾部的表達(dá)式對象指針被首先壓入到對象PDS,并且在該序列起始處的表達(dá)式對象指針被最后壓入對象PDS)(操作1110和1126)。 5、如果該當(dāng)前對象指針指向替換集合對象,則PRTS在其替換對象指針列表中做加權(quán)偽隨機(jī)選擇,以選定一個(gè)替換對象指針,并且把所選擇的替換對象指針壓入到對象PDS。用于加權(quán)偽隨機(jī)選擇處理的權(quán)值取自通過該替換集合對象的替換對象指針列表中的指針?biāo)赶虻奶鎿Q對象。這種PRTS的加權(quán)偽隨機(jī)選擇方法不考慮任何帶有零權(quán)值的替換對象的選擇(操作1H2、1128和1130)。 6、如果該當(dāng)前對象指針指向替換對象,則PRTS把指向存儲在該替換對象中的表達(dá)式對象的指針壓入對象PDS(操作1114和1132)。 7、如果該當(dāng)前對象指針指向重復(fù)對象,則PRTS建立包含下述數(shù)據(jù)成員的重復(fù)控制對象(操作1H6、1134和1136)。
      a)指向該重復(fù)對象的指針。
      b)重復(fù)計(jì)數(shù)器,其初始化成零。 c)重復(fù)目標(biāo),其可以是有限的數(shù)或是無限的(即大于重復(fù)計(jì)算器任何可能值的數(shù)
      值)。按下述方式初始化該重復(fù)目標(biāo)。如果該重復(fù)對象的最大值是有限的值,PTRS把重復(fù)
      目標(biāo)設(shè)置成該重復(fù)對象的最小值和該重復(fù)對象的最大值之間(含該最大值)的偽隨機(jī)整
      數(shù)。如果該重復(fù)對象的最大值是無限的,把該重復(fù)目標(biāo)初始化成無限。 在建立重復(fù)控制對象之后,PRTS把指向該對象的指針壓入對象PDS 。 8、如果該當(dāng)前對象指針指向重復(fù)控制對象,則處理該重復(fù)控制對象(操作1118和
      1138)。在主題實(shí)施例中,PRTS執(zhí)行下述過程,如圖12所示。 a)PRTS把該重復(fù)控制對象的重復(fù)計(jì)數(shù)器與該重復(fù)控制對象的重復(fù)目標(biāo)做比較。如果因該重復(fù)控制對象的重復(fù)計(jì)數(shù)器已經(jīng)達(dá)到該重復(fù)控制對象的重復(fù)目標(biāo)而認(rèn)為該重復(fù)完成(操作1204中的檢查),則PRTS刪除該重復(fù)控制對象(操作1214)并跳過下面的操作7(b)-7(d)。 b)如果該重復(fù)控制對象的重復(fù)計(jì)數(shù)器還沒有達(dá)到該重復(fù)控制對象的重復(fù)目標(biāo)(操作1204中的檢查),則PRTS通過對該重復(fù)控制對象的重復(fù)計(jì)數(shù)器加1來更新該重復(fù)控制對象(操作1206)。 c)進(jìn)一步,PRTS把指向該重復(fù)控制對象的指針壓入對象PDS (操作1208)。
      d)再進(jìn)一步,PRTS把包含在由重復(fù)控制對象所指向的重復(fù)對象中的表達(dá)式指針壓入對象PDS(操作1210)。
      強(qiáng)制遍歷策略 在主題實(shí)施例的動(dòng)態(tài)驗(yàn)證階段110中,強(qiáng)制遍歷策略(FTS)按如下所述方式來處
      理當(dāng)前對象指針,如圖13所示。FTS對象具有指向終結(jié)符對象的指針,已知為強(qiáng)制目標(biāo)終結(jié)
      符指針。FTS的目的是下一個(gè)要遍歷的終結(jié)符對象是由強(qiáng)制目標(biāo)終結(jié)符指針?biāo)赶虻哪且粋€(gè)。 1、獲取當(dāng)前對象指針(操作1304)。 2、如果該當(dāng)前對象指針指向終結(jié)符對象,則處理該終結(jié)符對象(操作1306和1320)。 FTS把該終結(jié)符對象指針與該強(qiáng)制目標(biāo)終結(jié)符指針做比較(操作1404)。如果這兩個(gè)指針不同,則通知用戶做了非法的強(qiáng)制(操作1416)。否則,F(xiàn)TS從策略PDS中彈出指向
      24其FTS對象的指針(操作1406),然后刪除該FTS對象(操作1408),然后使用存儲在該終結(jié)符對象中的動(dòng)作例程指針(如果有)來調(diào)用相應(yīng)的動(dòng)作例程(操作1410),并且然后等待所述動(dòng)作例程返回(操作1412)。這在圖14中說明。 3、如果該當(dāng)前對象指針指向非終結(jié)符對象,F(xiàn)TS把指向存儲在該非終結(jié)符對象中的表達(dá)式對象的指針壓入對象PDS(操作1308和1322)。 4、如果該當(dāng)前對象指針指向序列對象,F(xiàn)TS把該序列對象的表達(dá)式對象指針列表中的每個(gè)表達(dá)式對象指針按逆序壓入對象PDS(即,在該序列尾部的表達(dá)式對象指針被首先壓入到對象PDS,并且在該序列起始處的表達(dá)式對象指針被最后壓入對象PDS)(操作1310和1324)。 5、如果該當(dāng)前對象指針指向替換集合對象,則處理該替換集合對象(操作1312和1326)。 FTS按下述來處理該當(dāng)前對象指針。這通過圖15中的操作1504、1506、1508、1510、1512、 1514、 1516、 1518、 1522和1524來說明。FTS調(diào)用TerminalCanBeFirst (強(qiáng)制目標(biāo)終結(jié)符指針,當(dāng)前對象指針)。為了說明的目的,該函數(shù)返回值在這里被記為FRV1。
      如果該FRV1為真,F(xiàn)TS執(zhí)行下述三個(gè)操作。 a)對該替換集合的替換對象指針列表中的每個(gè)替換對象指針,F(xiàn)TS調(diào)用TerminalCanBeFirst (強(qiáng)制目標(biāo)終結(jié)符指針,替換對象指針),利用該結(jié)果形成TerminalCanBeFirst函數(shù)對其返回真值的替換對象指針的集合。 b)FTS形成在操作4(a)中所形成集合的兩個(gè)子集subsetj是指向具有非零權(quán)值的替換對象的替換對象指針的子集;subSet_2是指向具有零權(quán)值的替換對象的替換對象指針的子集。 c)如果subsetj非空,F(xiàn)TS在subsetj中做加權(quán)偽隨機(jī)選擇,選定一個(gè)替換
      對象指針,并把該替換對象指針壓入對象PDS(在加權(quán)偽隨機(jī)選擇處理中使用的權(quán)值取自
      subset—I中指針?biāo)赶虻奶鎿Q對象)。如果subset—I為空,F(xiàn)TS在subset—2中做非加權(quán)
      偽隨機(jī)選擇,選定一個(gè)替換對象指針,并把該替換對象指針壓入對象PDS。 如果FRV1為假,F(xiàn)TS調(diào)用TerminalsCanBeAvoided (當(dāng)前對象指針)。如果該函數(shù)
      的返回值為假,通知用戶做了非法強(qiáng)制。 6、如果該當(dāng)前對象指針指向替換對象,則處理該替換對象(操作1314和1328)。
      FTS把指向存儲在該替換對象中的表達(dá)式對象的指針壓入對象PDS中。 7、如果該當(dāng)前對象指針指向重復(fù)對象,則處理該重復(fù)對象(操作1316、1330和
      1332)。 FTS建立包含下述數(shù)據(jù)成員的重復(fù)控制對象。 a)指向該重復(fù)對象的指針。 b)重復(fù)計(jì)數(shù)器,其初始化成零。 c)重復(fù)目標(biāo),其可以是有限的數(shù)或是無限的(即大于重復(fù)計(jì)算器任何可能值的數(shù)
      值)。按下述方式初始化該重復(fù)目標(biāo)。如果該重復(fù)對象的最大值是有限的值,F(xiàn)TS把重復(fù)目
      標(biāo)設(shè)置成該重復(fù)對象的最小值和該重復(fù)對象的最大值之間(含該最大值)的偽隨機(jī)整數(shù)。
      如果該重復(fù)對象的最大值是無限的,把該重復(fù)目標(biāo)初始化成無限。 d)在建立重復(fù)控制對象之后,F(xiàn)TS把指向該對象的指針壓入對象PDS 。 8、如果該當(dāng)前對象指針指向重復(fù)控制對象,則處理該重復(fù)控制對象(操作1318和
      1334)。 FTS按下述來處理該當(dāng)前對象指針,如圖16中操作1604、 1606、 1608、 1610、 1612、
      251616、1618、1620和1622所示。 a)FTS把該重復(fù)控制對象的重復(fù)計(jì)數(shù)器與該重復(fù)控制對象所指向的重復(fù)對象中所包含的最大值做比較。如果因該重復(fù)控制對象的重復(fù)計(jì)數(shù)器已經(jīng)達(dá)到由該重復(fù)控制對象所指向的重復(fù)對象中包含的最大值而認(rèn)為該重復(fù)完成,則FTS刪除該重復(fù)控制對象并跳過下面的操作7(b)-7(d)。 b)FTS調(diào)用TerminalCanBeFirst (強(qiáng)制目標(biāo)終結(jié)符指針,當(dāng)前對象指針)。如果該函數(shù)的返回值為真,F(xiàn)TS通過把該重復(fù)控制對象的重復(fù)計(jì)數(shù)器加1來更新該重復(fù)控制對象,然后把指向該重復(fù)控制對象的指針壓入對象PDS,然后把該重復(fù)控制對象的表達(dá)式指針壓入對象PDS,并且然后跳過下面的操作7 (c) -7 (d)。 c)FTS調(diào)用TerminalsCanBeAvoided(當(dāng)前對象指針)。如果該函數(shù)的返回值為真,F(xiàn)TS刪除該重復(fù)控制對象并跳過下面的操作7 (d)。 d)FTS把該重復(fù)控制對象的重復(fù)計(jì)數(shù)器與該重復(fù)控制對象所指向的重復(fù)對象中所包含的最小值做比較。如果該重復(fù)控制對象的重復(fù)計(jì)數(shù)器已經(jīng)達(dá)到該重復(fù)控制對象所指向的重復(fù)對象中所包含的最小值,則FTS刪除該重復(fù)控制對象。否則,把做了非法強(qiáng)制通知給用戶。 跳轉(zhuǎn)遍歷策略 在主題實(shí)施例的動(dòng)態(tài)驗(yàn)證階段110中,跳轉(zhuǎn)遍歷策略(STS)按下述方式來處理當(dāng)前對象指針。這在圖17中說明。STS對象具有指向終結(jié)符對象的指針,已知為跳轉(zhuǎn)目標(biāo)終結(jié)符指針。STS的目的是到達(dá)所述跳轉(zhuǎn)目標(biāo)終結(jié)符指針?biāo)赶虻慕K結(jié)符對象,同時(shí)避免調(diào)用在達(dá)到該跳轉(zhuǎn)目標(biāo)終結(jié)符指針?biāo)赶虻脑摻K結(jié)符之前所遍歷的任何其他終結(jié)符對象的動(dòng)作例程。 1、獲取當(dāng)前對象指針(操作1704)。 2、如果該當(dāng)前對象指針指向終結(jié)符對象,則處理該終結(jié)符對象(操作1706和1720)。 STS把該終結(jié)符對象指針與所述跳轉(zhuǎn)目標(biāo)終結(jié)符指針做比較。如果這兩個(gè)指針相同,STS從策略PDS中彈出指向其STS對象的指針,然后刪除該STS對象,然后使用存儲在該終結(jié)符對象中的動(dòng)作例程指針(如果有)來調(diào)用相應(yīng)的動(dòng)作例程,并且然后等待所述動(dòng)作例程完成。這通過圖18中的操作1804、 1806、 1808、 1810和1812來說明。
      3、如果該當(dāng)前對象指針指向非終結(jié)符對象,STS把指向存儲在該非終結(jié)符對象中的表達(dá)式對象的指針壓入對象PDS(操作1708和1722)。 4、如果該當(dāng)前對象指針指向序列對象,STS把該序列對象的表達(dá)式對象指針列表中的每個(gè)表達(dá)式對象指針按逆序壓入對象PDS(即,在該序列尾部的表達(dá)式對象指針被首先壓入到對象PDS,并且在該序列起始處的表達(dá)式對象指針被最后壓入對象PDS)(操作1710和1724)。 5、如果該當(dāng)前對象指針指向替換集合對象,則處理該替換集合對象(操作1712和1726)。 STS按下述來處理該當(dāng)前對象指針。這通過圖19中的操作1904、1906、1908、1910、1912、1914、1916和1918來說明。STS調(diào)用TerminalCanBeReached( 6 兆轉(zhuǎn)目標(biāo)終結(jié)符指針,當(dāng)前對象指針)。如果該函數(shù)返回真,STS執(zhí)行下述三個(gè)操作。 a)對該替換集合的替換對象指針列表中的每個(gè)替換對象指針,STS調(diào)用TerminalCanBeReached (跳轉(zhuǎn)目標(biāo)終結(jié)符指針,替換對象指針),利用該結(jié)果形成TerminalCanBeReached函數(shù)對其返回真值的替換對象指針的集合。 b)STS形成在操作4(a)中所形成集合的兩個(gè)子集subsetj是指向具有非零權(quán)值的替換對象的替換對象指針的子集;subSet_2是指向具有零權(quán)值的替換對象的替換對象指針的子集。 c)如果subsetj非空,STS在subsetj中做加權(quán)偽隨機(jī)選擇,選定一個(gè)替換對象指針,并把該替換對象指針壓入對象PDS(在加權(quán)偽隨機(jī)選擇處理中使用的權(quán)值取自subset—I中指針?biāo)赶虻奶鎿Q對象)。如果subset—I為空,STS在subset—2中做非加權(quán)偽隨機(jī)選擇,選定一個(gè)替換對象指針,并把該替換對象指針壓入對象PDS。
      6、如果該當(dāng)前對象指針指向替換對象,則STS把指向存儲在該替換對象中的表達(dá)式對象的指針壓入對象PDS中(操作1714和1728)。 7、如果該當(dāng)前對象指針指向重復(fù)對象,則STS建立包含下述數(shù)據(jù)成員的重復(fù)控制對象(操作1716、 1730和1732)。
      a)指向該重復(fù)對象的指針。
      b)重復(fù)計(jì)數(shù)器,其初始化成零。 c)重復(fù)目標(biāo),其可以是有限的數(shù)或是無限的(即大于重復(fù)計(jì)算器任何可能值的數(shù)
      值)。按下述方式初始化該重復(fù)目標(biāo)。如果該重復(fù)對象的最大值是有限的值,STS把重復(fù)目
      標(biāo)設(shè)置成該重復(fù)對象的最小值和該重復(fù)對象的最大值之間(含該最大值)的偽隨機(jī)整數(shù)。
      如果該重復(fù)對象的最大值是無限的,把該重復(fù)目標(biāo)初始化成無限。 在建立重復(fù)控制對象之后,STS把指向該對象的指針壓入對象PDS 。 8、如果該當(dāng)前對象指針指向重復(fù)控制對象,則處理該重復(fù)控制對象(操作1718和
      1734)。 STS按下述來處理該當(dāng)前對象指針,如圖20中操作2004、2006、2008、2010、2012和
      1616所示。 a)STS把該重復(fù)控制對象的重復(fù)計(jì)數(shù)器與該重復(fù)控制對象所指向的重復(fù)對象中所包含的最大值做比較。如果因該重復(fù)控制對象的重復(fù)計(jì)數(shù)器已經(jīng)達(dá)到由該重復(fù)控制對象所指向的重復(fù)對象中包含的最大值而認(rèn)為該重復(fù)完成,則STS刪除該重復(fù)控制對象并跳過下面的操作7(b)。 b) STS調(diào)用TerminalCanBeReached(跳轉(zhuǎn)目標(biāo)終結(jié)符指針,當(dāng)前對象指針)。如果該函數(shù)的返回值為假,STS刪除該重復(fù)控制對象。否則,STS通過把該重復(fù)控制對象的重復(fù)計(jì)數(shù)器加1來更新該重復(fù)控制對象,然后把指向該重復(fù)控制對象的指針壓入對象PDS,然后把該重復(fù)控制對象的表達(dá)式指針壓入對象PDS。
      NDA遍歷機(jī)制控制 主題實(shí)施例包括下述三個(gè)函數(shù),可由動(dòng)作例程2110來調(diào)用,以控制NDA遍歷機(jī)制2114。 1、當(dāng)調(diào)用函數(shù)Force(強(qiáng)制目標(biāo)終結(jié)符名),則建立新的強(qiáng)制遍歷策略(FTS)對象,其包含指向該強(qiáng)制目標(biāo)終結(jié)符的強(qiáng)制目標(biāo)終結(jié)符指針。把指向新的FTS對象的指針壓入策略PDS中。 2、當(dāng)調(diào)用函數(shù)Skip(跳轉(zhuǎn)目標(biāo)終結(jié)符名),則建立新的跳轉(zhuǎn)遍歷策略(STS)對象,其包含指向該跳轉(zhuǎn)目標(biāo)終結(jié)符的跳轉(zhuǎn)目標(biāo)終結(jié)符指針。把指向新的STS對象的指針壓入策略PDS中。
      3、當(dāng)調(diào)用函數(shù)AdjustLoopLimit (循環(huán)計(jì)數(shù),循環(huán)深度),從頂部開始按順序搜索對象PDS。只要一到達(dá)對應(yīng)于該循環(huán)深度所表示深度的重復(fù)控制對象指針(其中O表示在搜索中所到達(dá)的第一個(gè)重復(fù)控制對象指針),則該搜索停止。如果在對象PDS中的重復(fù)控制對象指針不是至少與該循環(huán)深度值所要求的一樣多,則產(chǎn)生報(bào)錯(cuò)。通過將其重復(fù)目標(biāo)改變成與其重復(fù)計(jì)數(shù)器加上所給定的該循環(huán)計(jì)數(shù)相同的值,來修改該重復(fù)控制對象指針?biāo)赶虻闹貜?fù)控制對象。
      設(shè)備 圖27示出了適合用作實(shí)施本發(fā)明主題實(shí)施例的計(jì)算裝置的例子計(jì)算機(jī)系統(tǒng)。該
      計(jì)算系統(tǒng)可以按單個(gè)、按一對或按多個(gè)構(gòu)成的組來使用。在第一種情況,可采用該計(jì)算系統(tǒng)
      利用所有編程命令來實(shí)施本發(fā)明,而在后者的情況下,每個(gè)系統(tǒng)可被賦予選定部分的編程
      命令來實(shí)施本發(fā)明的一個(gè)或多個(gè)選擇的方面。當(dāng)使用多個(gè)系統(tǒng),這些系統(tǒng)可通過局域網(wǎng)和
      /或廣域網(wǎng)直接相互耦合,所述網(wǎng)絡(luò)可包括一個(gè)或多個(gè)公共網(wǎng)絡(luò),包括因特網(wǎng)。 如圖所示,計(jì)算機(jī)系統(tǒng)2700包括一個(gè)或多個(gè)處理器2702和系統(tǒng)存儲器2704。另
      外,計(jì)算機(jī)系統(tǒng)2700包括海量存儲裝置2706 (如磁盤、硬盤、CDR0M等)、輸入/輸出裝置
      2708 (如鍵盤、鼠標(biāo)控件等)以及通信接口 2710 (如到待測試系統(tǒng)的接口 、網(wǎng)絡(luò)接口卡、調(diào)制
      解調(diào)器等)。這些元件通過系統(tǒng)總線2712相互耦合,系統(tǒng)總線2712代表一個(gè)多或多個(gè)總
      線。在多總線的情況下,它們可通過一個(gè)或多個(gè)總線橋接器(未示出)來橋接。 這些元件中的每個(gè)執(zhí)行本領(lǐng)域公知的傳統(tǒng)功能。特別,系統(tǒng)存儲器2704和海量存
      儲器2706用于全部或部分地存儲實(shí)現(xiàn)本發(fā)明的系統(tǒng)驗(yàn)證系統(tǒng)2714的編程命令的工作副本
      和持久副本。編程命令的持久副本可以通過發(fā)布介質(zhì)(未示出)或通過通信接口 2710(從
      發(fā)布服務(wù)器(未示出))加載到工廠內(nèi)或現(xiàn)場內(nèi)的海量存儲器2706。這些元件2702至2712
      的構(gòu)成是公知的,因而不再進(jìn)一步說明。 結(jié)言 上述詳細(xì)的說明書已經(jīng)公開了利用處理NDA系統(tǒng)行為復(fù)雜性的新穎NDA技術(shù)來實(shí)
      現(xiàn)系統(tǒng)驗(yàn)證的實(shí)施例。我們公開的信息足以能夠?qū)嵤┖褪褂帽景l(fā)明,而不需要進(jìn)一步的創(chuàng)
      造和過多的實(shí)驗(yàn)。很顯然,利用這里公開的原理,還可有本發(fā)明的其他實(shí)現(xiàn)方式,并且,本發(fā)
      明不僅可用于系統(tǒng)驗(yàn)證,還可用于需要處理NDA系統(tǒng)復(fù)雜性的任何環(huán)境。 盡管上述的詳細(xì)說明包含有許多細(xì)節(jié),但不應(yīng)該認(rèn)為這是對本發(fā)明范圍的限制,
      而只是本發(fā)明的示例性實(shí)施例。許多其他的改型是可以的。 例如,相符性評估協(xié)議設(shè)計(jì)階段可以通過用于獲取驗(yàn)證信息的替換方法來代替、
      刪節(jié)或補(bǔ)充,如從數(shù)據(jù)庫加載驗(yàn)證模塊,或從系統(tǒng)說明書提取驗(yàn)證信息。 例如,編譯階段可以通過由動(dòng)作例程2110表示的提供功能性的替換方法來代替、
      刪節(jié)或補(bǔ)充,例如解釋指令而不是編譯它們,或由替換數(shù)據(jù)庫的表示功能性的模板參考。 例如,用VID表示的信息可以按某種替換方式或多個(gè)方式來表示,如圖形信息獲
      取系統(tǒng)、用戶寫入模塊或由系統(tǒng)說明書的生成。 例如,按動(dòng)態(tài)驗(yàn)證行程初始化文件表示的信息可以按某種替換方式或多種方式來表示,如驗(yàn)證測試臺中的自動(dòng)器,或調(diào)用硬件仿真器時(shí)指定的選項(xiàng)。 例如,待驗(yàn)證的系統(tǒng)可以表示成物理設(shè)備,如微處理器、自動(dòng)控制系統(tǒng)或航空控制系統(tǒng)。
      28
      例如,DUT 118可以包括諸如數(shù)據(jù)庫管理和/或存取系統(tǒng)的多線程軟件系統(tǒng),諸如工業(yè)過程控制操作程序的實(shí)時(shí)軟件系統(tǒng),或通用軟件操作系統(tǒng)。 例如,如果在動(dòng)態(tài)驗(yàn)證行程2100中通過仿真器使用DUT 118,該仿真器可以是多線程的。 例如,驗(yàn)證環(huán)境可包括用軟件、硬件競爭器或加速器、用于連接到物理設(shè)備的測試接口機(jī)制、嵌入式程序執(zhí)行環(huán)境和/或設(shè)備、或多個(gè)這種機(jī)制的混合或組合所實(shí)現(xiàn)的仿真器。 例如,在DUT 118上執(zhí)行的驗(yàn)證操作不必限于讀寫0和l,而可以包括任意的數(shù)據(jù)表示,包括多狀態(tài)邏輯、整數(shù)、實(shí)數(shù)和浮點(diǎn)數(shù)。 例如,在DUT 118上執(zhí)行的驗(yàn)證操作不必限于軟件操作,而可以包括物理動(dòng)作,如閥的打開和關(guān)閉,諸如用于溫度、壓力、濕度等的傳感器的狀態(tài)和/或值的讀取,或物理動(dòng)作的觸發(fā)。 例如,NDA 2104可以不必用顯式的自動(dòng)器形式來表示,而是可以用某種充分等價(jià)的形式來表示,如一個(gè)或多個(gè)圖、表等。 例如,NDA 2104可以不必是帶有終結(jié)符、非終結(jié)符等的文法型,而是可以用節(jié)點(diǎn)或狀態(tài)、弧或轉(zhuǎn)換等來表示。 例如,NDA 2104可以具有嵌入到其中的、用于擴(kuò)展圖表示的附加信息,如影響循環(huán)展開的控制表達(dá)式。 例如,NDA 2104可以具有嵌入到其中的、可傳遞給動(dòng)作例程2110的附加信息,如NDA遍歷1002當(dāng)前狀態(tài)的表示。 例如,NDA構(gòu)造原語的集合可以由所提供的替換、序列等來擴(kuò)展,以包括另外的原語,如單發(fā)事項(xiàng)(single-occurrence-of-item)或常規(guī)表達(dá)式算符。 例如,可以考慮NDA構(gòu)造原語集合排除所提供原語集合中的項(xiàng),因利用其余的項(xiàng)的重新組合仍然可導(dǎo)出等價(jià)的表達(dá)能力。 例如,動(dòng)作例程2110可以不與終結(jié)符相關(guān)聯(lián),而是與節(jié)點(diǎn)、狀態(tài)、弧、轉(zhuǎn)換等所提到的替換NDA表示相關(guān)聯(lián)。 例如,不僅可以利用所述的機(jī)制來修改NDA 2104,還可以提供機(jī)制來向該NDA添加弧或從其刪除弧、向該NDA添加節(jié)點(diǎn)或狀態(tài)或從其刪除節(jié)點(diǎn)或狀態(tài)、或添加或刪除或改變動(dòng)作例程和/或連接動(dòng)作例程的點(diǎn),由此來修改NDA 2104。 例如,待選擇替換的標(biāo)識可以通過用戶提供的調(diào)用函數(shù)的結(jié)果來表示,而不是使用固定的加權(quán)系數(shù)。該函數(shù)可具有對其可用的任何范圍的信息,用于驅(qū)動(dòng)它的計(jì)算。該函數(shù)可因每個(gè)替換、替換集合或NDA2104的不同而不同。 例如,可以提供偽隨機(jī)、強(qiáng)制和跳轉(zhuǎn)之外的其他遍歷策略,如基于覆蓋的策略或可能在用戶控制下的確定性策略。 例如,替換的選擇不僅可以受單遍歷策略的影響,還可以受組合多遍歷策略結(jié)果的方法的影響??梢杂性S多組合方法,如基于優(yōu)先級的、加權(quán)平均的、或多數(shù)投票的。
      例如,可通過替換的手段輸入NDA 2104或其部分,如表示自動(dòng)器的圖形用戶接口、甚于文本的文法文件、不同于0++的編程語言中的構(gòu)造方法,或從規(guī)范驗(yàn)證說明書和/或語言的翻譯。
      例如,除了所述的WAI乙FOR同步命令,還可以通過如分支與合并(fork and join) 構(gòu)造、旗語方法、中斷信令或投票等方法來同步NDA2104與DUT 118。 例如,NDA遍歷1002不僅可以通過上述的機(jī)制來約束,而且還可以通過請求待遍 歷的后續(xù)終結(jié)符的任意集合或待遍歷的后續(xù)終結(jié)符的序列或序列集合來約束。
      例如,NDA遍歷1002可以根據(jù)用戶函數(shù)提供的"優(yōu)良性"度量結(jié)果來選擇。
      例如,NDA遍歷機(jī)制2114可以具有利用嵌入在NDA 2104中的另外知識來施加的 遍歷約束。 例如,可以不使用TerminalCanBeReached、 TerminalCanBeFirst禾口 TerminalsCanBeAvoided函數(shù),而是例如通過具有回溯或處理NDA2104的投機(jī)選擇以添加 允許的選擇信息來完成從替換集合中的替換選擇。 例如,可以不使用重復(fù)控制對象,而例如通過把循環(huán)體展開成直線實(shí)現(xiàn),或通過利 用嵌套函數(shù)調(diào)用的分解實(shí)現(xiàn)來完成循環(huán)處理。 例如,可以不使用對象PDS,而是例如通過隨遍歷的進(jìn)展向NDA添加歷史信息,或 把NDA轉(zhuǎn)換成隱式或顯式包含NDA圖信息的硬件、軟件或混合機(jī)來完成NDA 2104的NDA遍 歷1002。 例如,可以不使用策略PDS,而是利用優(yōu)先級隊(duì)列或控制的替換流,如策略的嵌套 執(zhí)行來完成遍歷策略的構(gòu)造。 例如,遍歷策略可以不是顯式表達(dá)的,而是例如實(shí)現(xiàn)成NDA遍歷機(jī)制2114的隱含屬性。 例如,可以由函數(shù)調(diào)用、進(jìn)程間通信調(diào)用、跳轉(zhuǎn)、長跳轉(zhuǎn)或任何其他可指定軟件執(zhí) 行控制流的機(jī)制來實(shí)現(xiàn)命令。 例如,不僅可通過線程,而且還可以通過單獨(dú)的進(jìn)程、輕量進(jìn)程或任何其他的提供
      環(huán)境的執(zhí)行機(jī)制或其他的保持計(jì)算狀態(tài)的手段來完成各種計(jì)算任務(wù)的執(zhí)行。 例如,各種計(jì)算任務(wù)的執(zhí)行不僅可發(fā)生在單處理器環(huán)境,而且可跨越多處理器或
      共享存儲器或其他通信信息的處理元件,可跨越按網(wǎng)絡(luò)或其他通信信息配置的多個(gè)單獨(dú)機(jī)器等。 例如,除了全局的資源池(即資源集合2204),還可以有可用的局部或受限存取的 資源池。 例如,資源集合2204可以有在動(dòng)態(tài)驗(yàn)證112期間添加給它的資源或多個(gè)資源。 例如,資源集合2204可以有在動(dòng)態(tài)驗(yàn)證112期間從它刪除的資源或多個(gè)資源。 例如,給定資源種類的數(shù)量可以在動(dòng)態(tài)驗(yàn)證112期間增加或減少。 例如,在動(dòng)態(tài)驗(yàn)證112期間,資源或多個(gè)資源的特性可以改變。 例如,在動(dòng)態(tài)驗(yàn)證112期間,資源或多個(gè)資源可以添加特性或刪除特性。 例如,在一個(gè)時(shí)刻,或者可以按"全部或沒有"的主張,或者可以按子集,來請求資
      源的集合。 例如,如果當(dāng)請求時(shí),資源或多個(gè)資源不可用,請求者可以排隊(duì)等待,直到它們變
      得可用。 例如,資源請求者的排隊(duì)可以按優(yōu)先級來做,或根據(jù)其他的請求排序基礎(chǔ),以及按 先后順序。
      例如,可以強(qiáng)制資源擁有者釋放所述資源,如果其他請求者這樣要求的話。
      例如,可以分層組織資源,其中,可以請求一部分資源,而不是全部資源。
      例如,提到了用C++的編程,但還可以用如C、 Java、 Pascal、 ADA等來編程。
      例如,提到了與硬件描述語言仿真器NC-VerilogTM的交互。也可以使用其他的硬 件描述語言仿真器,如ModelSinT、 VCS 等。 例如,提到了與硬件描述語言仿真器的交互,但與其他種類的仿真器的交互也是 可以的,如行為仿真器、指令集合仿真器、門級仿真器等。 上述所有都是這種情況,在每個(gè)方面所說明的細(xì)節(jié)都是示例性的,而不是限制性 的,這里所公開的本發(fā)明的范圍不是由這些細(xì)節(jié)來確定。
      3權(quán)利要求
      一種方法,包括在一個(gè)或多個(gè)計(jì)算設(shè)備上用第一計(jì)算機(jī)任務(wù)處理非確定自動(dòng)器,作為待測試設(shè)備動(dòng)態(tài)驗(yàn)證的部分;在所述處理期間,執(zhí)行用于規(guī)定同步條件的同步命令;響應(yīng)所述執(zhí)行,掛起所述第一計(jì)算機(jī)任務(wù);以及在出現(xiàn)所述同步條件之后,恢復(fù)所述第一計(jì)算機(jī)任務(wù)和所述非確定自動(dòng)器的所述處理。
      2. 如權(quán)利要求1所述的方法,其中,所述的同步命令的執(zhí)行包括執(zhí)行所述非確定自動(dòng) 器中位于兩個(gè)非同步測試計(jì)算語句之間的同步命令。
      3. 如權(quán)利要求1所述的方法,其中所述非確定自動(dòng)器的所述處理包括處理非線程安全 的測試計(jì)算的說明。
      4. 如權(quán)利要求2所述的方法,其中所述非確定自動(dòng)器的所述處理包括處理非線程安全 的測試計(jì)算的說明。
      5. 如權(quán)利要求3所述的方法,其中所述測試計(jì)算用一個(gè)或多個(gè)測試程序片斷來規(guī)定。
      6. 如權(quán)利要求4所述的方法,其中所述測試計(jì)算用一個(gè)或多個(gè)測試程序片斷來規(guī)定。
      7. 如權(quán)利要求1所述的方法,其中所述同步命令包括用于等待事件的命令。
      8. 如權(quán)利要求2所述的方法,其中所述同步命令包括用于等待事件的命令。
      9. 如權(quán)利要求3所述的方法,其中所述同步命令包括用于等待事件的命令。
      10. 如權(quán)利要求7所述的方法,其中所述事件是從下述事件構(gòu)成的組中選出的經(jīng)過了 一定量的時(shí)間,達(dá)到預(yù)定值的計(jì)數(shù)器的改變,超過預(yù)定值的計(jì)數(shù)器的改變,由所述待測試設(shè) 備展示的預(yù)定行為的出現(xiàn),以及由用于所述動(dòng)態(tài)驗(yàn)證的驗(yàn)證環(huán)境的不同于所述非確定自動(dòng) 器的一個(gè)或多個(gè)組件展示的預(yù)定行為的出現(xiàn)。
      11. 如權(quán)利要求1所述的方法,其中所述待測試設(shè)備是從電子設(shè)備、電子設(shè)備模型和電 子設(shè)備設(shè)計(jì)構(gòu)成的組中選出的設(shè)備。
      12. 如權(quán)利要求2所述的方法,其中所述待測試設(shè)備是從電子設(shè)備、電子設(shè)備模型和電 子設(shè)備設(shè)計(jì)構(gòu)成的組中選出的設(shè)備。
      13. 如權(quán)利要求3所述的方法,其中所述待測試設(shè)備是從電子設(shè)備、電子設(shè)備模型和電 子設(shè)備設(shè)計(jì)構(gòu)成的組中選出的設(shè)備。
      14. 如權(quán)利要求2所述的方法,其中所述同步條件包括該待測試設(shè)備達(dá)到特定狀態(tài)。
      15. 如權(quán)利要求1所述的方法,其中該方法進(jìn)一步包括執(zhí)行第二計(jì)算機(jī)任務(wù),該第二計(jì) 算機(jī)任務(wù)導(dǎo)致所述同步條件的出現(xiàn)。
      16. 如權(quán)利要求2所述的方法,其中該方法進(jìn)一步包括執(zhí)行第二計(jì)算機(jī)任務(wù),該第二計(jì) 算機(jī)任務(wù)導(dǎo)致所述同步條件的出現(xiàn)。
      17. 如權(quán)利要求3所述的方法,其中該方法進(jìn)一步包括執(zhí)行第二計(jì)算機(jī)任務(wù),該第二計(jì) 算機(jī)任務(wù)導(dǎo)致所述同步條件的出現(xiàn)。
      18. —種方法,包括在一個(gè)或多個(gè)計(jì)算設(shè)備上處理第一非確定自動(dòng)器,作為待測試設(shè)備的動(dòng)態(tài)驗(yàn)證的部分;從所述第一非確定自動(dòng)器接收用于規(guī)定一個(gè)或多個(gè)資源需求的第一集合的第一資源請求;通過保留滿足所述的資源需求第一集合的第一資源用于所述第一非確定自動(dòng)器的獨(dú) 占使用來響應(yīng)所述第一資源請求;由所述第一非確定自動(dòng)器開始第一計(jì)算,該第一計(jì)算請求獨(dú)占使用滿足所述資源需求 第一集合的資源;在一個(gè)或多個(gè)計(jì)算設(shè)備上處理第二非確定自動(dòng)器,作為所述待測試設(shè)備的所述動(dòng)態(tài)驗(yàn) 證的部分;從所述第二非確定自動(dòng)器接收用于規(guī)定一個(gè)或多個(gè)資源需求的第二集合的第二資源 請求,其中,除了所述第一資源已經(jīng)被保留用于獨(dú)占使用這樣的事實(shí)外,所述第一資源可滿 足所述的資源需求的第二集合;在不允許所述第二非確定自動(dòng)器使用所述第一資源的情況下響應(yīng)所述第二資源請求;使用所述第一非確定自動(dòng)器完成所述第一計(jì)算;以及 釋放所述第一資源用于其他使用。
      19. 如權(quán)利要求18所述的方法,其中,所述的響應(yīng)所述第二資源請求包括允許所述第 二非確定自動(dòng)器使用滿足所述資源需求第二集合的第二資源。
      20. 如權(quán)利要求19所述的方法,其中,所述第二非確定自動(dòng)器執(zhí)行第二計(jì)算,該第二計(jì) 算請求獨(dú)占使用滿足所述的資源需求第二集合的資源。
      21. 如權(quán)利要求18所述的方法,其中,所述的響應(yīng)所述第二資源請求包括向所述第二 非確定自動(dòng)器告知當(dāng)前沒有可用的滿足所述資源需求第二集合的資源。
      22. 如權(quán)利要求21所述的方法,其中,在請求獨(dú)占使用滿足所述資源需求第二集合的 資源的第二計(jì)算開始之前,所述第二非確定自動(dòng)器等待,直到滿足所述資源需求第二集合 的資源變得可用。
      23. 如權(quán)利要求21所述的方法,其中,所述第二非確定自動(dòng)器執(zhí)行不請求獨(dú)占使用滿 足所述資源需求第二集合的資源的一個(gè)或多個(gè)計(jì)算,直到滿足所述資源需求第二集合的資 源變得可用。
      24. 如權(quán)利要求18所述的方法,其中,所述第一資源是偽資源。
      25. 如權(quán)利要求18所述的方法,其中,所述第一資源是從存儲器塊、通信信道、端口和 組件接口構(gòu)成的組中選出的。
      全文摘要
      使用一個(gè)或多個(gè)自動(dòng)機(jī)的系統(tǒng)驗(yàn)證。這里公開了一種方法和裝置,該方法和裝置用于操縱非確定自動(dòng)器和非確定自動(dòng)器的遍歷,用于待測試設(shè)備的動(dòng)態(tài)驗(yàn)證。
      文檔編號G06F11/00GK101694643SQ20091016834
      公開日2010年4月14日 申請日期2004年9月30日 優(yōu)先權(quán)日2003年9月30日
      發(fā)明者小克利夫頓·阿爾頓·萊昂斯, 素提叻·達(dá)特拉姆·凱德凱迪 申請人:明導(dǎo)公司;
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
      1