模擬的有效使用為產(chǎn)品開(kāi)發(fā)團(tuán)隊(duì)提供了多種優(yōu)勢(shì)。有效模擬的主要好處是更快的上市時(shí)間,更高的質(zhì)量和更低的風(fēng)險(xiǎn)。通過(guò)提供增強(qiáng)的可控性和可觀察性,精心設(shè)計(jì)的仿真可以測(cè)試在原型調(diào)試環(huán)境中難以生成的情況。完全控制環(huán)境后,您可以輕松檢查邊界條件。最壞情況可能包括同時(shí)發(fā)生在實(shí)際系統(tǒng)中難以實(shí)現(xiàn)的獨(dú)立功能。您可以在可控模擬中設(shè)置這些條件。
模擬還可以對(duì)您的設(shè)計(jì)進(jìn)行更廣泛的觀察。無(wú)論設(shè)備上是否有備用I/O引腳,都可以使用內(nèi)部信號(hào)。您可以在模擬過(guò)程中更輕松地探測(cè)外部信號(hào)。通過(guò)幾次擊鍵或鼠標(biāo)點(diǎn)擊,您可以使用一個(gè)好的邏輯模擬器在幾秒鐘內(nèi)探測(cè)64位數(shù)據(jù)總線;嘗試使用邏輯分析儀。可能需要在實(shí)驗(yàn)室中花費(fèi)大量時(shí)間來(lái)設(shè)置復(fù)雜的監(jiān)控設(shè)計(jì)。
可控性和可觀察性的這些優(yōu)勢(shì)使您可以更快速,更輕松地捕獲模擬錯(cuò)誤而不是硬件調(diào)試。此外,您可以在模擬中比在硬件原型上更快地更改設(shè)計(jì)。此功能縮短了調(diào)試周期并簡(jiǎn)化了集成,尤其是在集成之前模擬不同模塊的情況下。仿真不僅減少了調(diào)試周期,而且還需要更少的原型硬件設(shè)計(jì)更改。對(duì)于那些不得不建造第二塊原型板的人來(lái)說(shuō),這個(gè)功能是個(gè)好消息,因?yàn)樵O(shè)計(jì)需要做出很多改動(dòng)。設(shè)計(jì)一個(gè)新的印刷電路板很容易增加幾個(gè)星期的時(shí)間表。使用更高級(jí)別的技術(shù),您可以使用仿真來(lái)測(cè)試基本設(shè)計(jì)方法的可行性。
常見(jiàn)的模擬錯(cuò)誤
一個(gè)關(guān)鍵問(wèn)題是,“什么能阻止模擬效率?”基本問(wèn)題通常是使用低級(jí)方法,例如波形矢量輸入,用于大型和復(fù)雜的設(shè)計(jì)。反過(guò)來(lái),這種技術(shù)會(huì)導(dǎo)致系統(tǒng)仿真中的許多典型故障,包括故障覆蓋不足和電路響應(yīng)特性不足。在大型設(shè)計(jì)中,很難通過(guò)低級(jí)方法獲得適當(dāng)?shù)墓收细采w,這迫使您手動(dòng)生成每個(gè)向量和測(cè)試用例。當(dāng)矢量生成繁瑣且耗時(shí)時(shí),可能難以指定所有感興趣的測(cè)試場(chǎng)景。即使您指定了測(cè)試用例,也可能難以完成它們。由于大多數(shù)使用簡(jiǎn)單技術(shù)的項(xiàng)目使用視覺(jué)檢查來(lái)鑒定電路響應(yīng),因此您可能會(huì)錯(cuò)過(guò)許多可見(jiàn)電路故障。更強(qiáng)大的仿真技術(shù)實(shí)際上簡(jiǎn)化了設(shè)計(jì)驗(yàn)證的任務(wù)。有些人認(rèn)為處理復(fù)雜性的唯一方法是層次結(jié)構(gòu)和抽象。建模利用層次結(jié)構(gòu)和抽象,使復(fù)雜系統(tǒng)的仿真既可管理又有效。
良好測(cè)試平臺(tái)的目標(biāo)
良好測(cè)試平臺(tái)的關(guān)鍵要求是完整性,易用性,靈活性,可重用性和運(yùn)行時(shí)效率。這些功能是相互關(guān)聯(lián)的:靈活的設(shè)計(jì)更易于使用,更易于完成,并且更易于重復(fù)使用。
高故障覆蓋率對(duì)于有效的仿真項(xiàng)目至關(guān)重要。良好的模擬策略有助于開(kāi)發(fā)涵蓋所有相關(guān)操作方案的測(cè)試平臺(tái)。您可以通過(guò)使用允許模擬設(shè)計(jì)人員在相當(dāng)高的抽象級(jí)別工作的技術(shù)來(lái)最好地實(shí)現(xiàn)此目標(biāo)。如果您可以在宏級(jí)別而不是在原子級(jí)別指定測(cè)試方案,則更容易遵循模擬流程。一個(gè)好的模擬技術(shù)應(yīng)該支持高水平的抽象。 VHDL具有許多支持高級(jí)行為建模的功能,可輕松滿足此要求?;谙到y(tǒng)級(jí)組件建模的仿真方法自然可以在高級(jí)抽象中工作。例如,擁有CPU模型允許您指定總線循環(huán)的類型。圍繞CPU模型構(gòu)建測(cè)試平臺(tái)允許您以類似于編寫(xiě)診斷程序的程序員的方式設(shè)置測(cè)試模式。在高級(jí)別,模擬通過(guò)設(shè)置DMA傳輸,編程I/O和各種總線操作自然流動(dòng)。這種方法允許工程師專注于測(cè)試的功能需求,將位操作留給硬件模型。
雖然模擬方法應(yīng)該易于使用,但這種策略涉及陷阱:方法是易于使用的小型設(shè)計(jì)無(wú)法很好地?cái)U(kuò)展到更復(fù)雜的設(shè)計(jì)。使用預(yù)驗(yàn)證功能模型庫(kù),您可以輕松構(gòu)建具有全面時(shí)序和數(shù)據(jù)檢查的測(cè)試平臺(tái)。一個(gè)好的庫(kù)在模型本身中具有這些功能。編寫(xiě)測(cè)試用例也很容易,因?yàn)闇y(cè)試平臺(tái)的“虛擬系統(tǒng)”模仿了實(shí)際硬件的操作。任何了解硬件系統(tǒng)操作的人都可以理解完成測(cè)試設(shè)計(jì)所需的步驟。
良好的模擬方法必須足夠靈活,以便在測(cè)試系統(tǒng)獲得知識(shí)或測(cè)試要求變化時(shí)允許更改模擬。如果測(cè)試臺(tái)等同于一堆“意大利面條代碼”,則修改測(cè)試臺(tái)很困難。面向?qū)ο蟮能浖夹g(shù)可用于為計(jì)算機(jī)程序員提供這種靈活性。將功能嵌入到功能模型組件中為工程師設(shè)計(jì)復(fù)雜的芯片或系統(tǒng)仿真提供了類似的好處。為了易于修改,硬件設(shè)計(jì)應(yīng)具有強(qiáng)大的內(nèi)聚力和松散耦合。設(shè)計(jì)中的控制路徑應(yīng)該很簡(jiǎn)單。通過(guò)在測(cè)試平臺(tái)中模仿系統(tǒng)設(shè)計(jì)的結(jié)構(gòu),您可以輕松復(fù)制系統(tǒng)的行為。如果系統(tǒng)設(shè)計(jì)發(fā)生更改,您可以直接修改測(cè)試平臺(tái)模型以確保它與系統(tǒng)匹配。建模還有助于其他方面的靈活性。定義與組件模型關(guān)聯(lián)的功能允許您在一個(gè)地方進(jìn)行更改,這些更改可以在您使用組件的任何位置產(chǎn)生效果。將其與簡(jiǎn)單測(cè)試平臺(tái)上常見(jiàn)的全局搜索和替換或剪切和粘貼操作進(jìn)行對(duì)比。正確的建模應(yīng)該產(chǎn)生靈活的仿真架構(gòu)。
設(shè)計(jì)重用正在成為縮小深亞微米VLSI設(shè)計(jì)方法中生產(chǎn)力差距的主要因素。承諾快速上市的高密度FPGA和CPLD需要類似的技術(shù)。因?yàn)樾酒举|(zhì)上是可重復(fù)使用的,所以模擬其行為的仿真模型也是如此。正如設(shè)計(jì)師習(xí)慣性地在許多設(shè)計(jì)中使用許多相同的組件一樣,您也可以重用良好的仿真模型。
一個(gè)好的測(cè)試平臺(tái)必須快速執(zhí)行。與低級(jí)方法相比,建模沒(méi)有固有的優(yōu)勢(shì)。正如一個(gè)好的匯編語(yǔ)言程序通常比用高級(jí)語(yǔ)言編寫(xiě)的程序更快,低級(jí)別的測(cè)試平臺(tái)可能比相應(yīng)的建模仿真更快。對(duì)于復(fù)雜的仿真,建模的優(yōu)勢(shì)遠(yuǎn)遠(yuǎn)超過(guò)仿真速度的降低。典型FPGA的執(zhí)行時(shí)間小于開(kāi)發(fā)仿真套件所花費(fèi)的時(shí)間。此外,當(dāng)您根據(jù)功能實(shí)體或模型正確劃分模擬時(shí),可能更容易隔離模擬的耗時(shí)部分并優(yōu)化這些部分。通常,精心設(shè)計(jì)的建模測(cè)試平臺(tái)不必比低級(jí)測(cè)試平臺(tái)慢得多。此外,盡管低級(jí)建模中的各個(gè)仿真周期可以更快地執(zhí)行,但是使用更高級(jí)別的技術(shù)提供完全仿真設(shè)計(jì)的總體目標(biāo)更快,因?yàn)楣收细采w更有效并且更不容易出錯(cuò)。換句話說(shuō),使用較低級(jí)別的技術(shù)需要更長(zhǎng)的時(shí)間來(lái)獲得更高級(jí)別技術(shù)提供的故障覆蓋率。
圖1a顯示了典型的簡(jiǎn)單測(cè)試平臺(tái)的框圖。在清單1的代碼示例中,代碼結(jié)構(gòu)簡(jiǎn)單而扁平。被測(cè)單元被實(shí)例化為一個(gè)組件,一個(gè)進(jìn)程控制主測(cè)試序列。內(nèi)聯(lián)代碼生成電路激勵(lì),多個(gè)等待語(yǔ)句控制主序列時(shí)序?;蛘?,您可以在傳輸語(yǔ)句中的條件之后使用多個(gè)來(lái)控制時(shí)序。 VHDL仿真的大多數(shù)新手用戶通過(guò)檢查結(jié)果波形來(lái)驗(yàn)證電路響應(yīng)。這樣的測(cè)試平臺(tái)通常很少或沒(méi)有電路性能的限定。
此測(cè)試平臺(tái)缺乏功能劃分使得實(shí)現(xiàn)復(fù)雜控制變得困難。例如,您可能希望改變控制信號(hào)時(shí)序,以驗(yàn)證被測(cè)單元是否能夠容忍其輸入上允許的所有變化。對(duì)testbench代碼的檢查表明,單個(gè)等待語(yǔ)句等待clk_period 會(huì)影響所有后續(xù)信號(hào)分配的時(shí)序。當(dāng)它們的定時(shí)是交互式時(shí),可能難以管理各種刺激信號(hào)的定時(shí)。當(dāng)有人將這些等待語(yǔ)句多次復(fù)制并粘貼到大型進(jìn)程中時(shí),這種情況會(huì)變得更糟。設(shè)計(jì)越復(fù)雜,這些方法就越不合適。靜態(tài)時(shí)序方案通常無(wú)法處理交互式芯片接口。實(shí)現(xiàn)這種握手的需要通常是驅(qū)動(dòng)工程師考慮建模的首要原因。進(jìn)程可以使用條件順序語(yǔ)句, if-then-else 或 case 語(yǔ)句,積極與被測(cè)單位互動(dòng)。雖然您可以在不構(gòu)建模型的情況下執(zhí)行此握手,但您不會(huì)統(tǒng)一結(jié)構(gòu)和功能。模型構(gòu)建的規(guī)則是有用的,因?yàn)樗⒓幢砻鳒y(cè)試平臺(tái)的功能應(yīng)該模仿被測(cè)系統(tǒng)的交互性。
等待與傳輸語(yǔ)句
使用HDL模擬器最具挑戰(zhàn)性的方面之一是時(shí)間概念。在VHDL中,程序員將代碼廣泛地分類為并發(fā)或順序。多個(gè)順序代碼塊同時(shí)執(zhí)行,并使用敏感列表或等待語(yǔ)句來(lái)調(diào)整其執(zhí)行速度。在一個(gè)過(guò)程中,軟件會(huì)調(diào)度事件,但在程序遇到wait語(yǔ)句之前,模擬速度不會(huì)更快。您可以使用多個(gè)等待語(yǔ)句來(lái)控制各種信號(hào)的排序,但這種方法會(huì)導(dǎo)致各個(gè)信號(hào)的時(shí)序相互作用,從而使其控制變得復(fù)雜。類似地,您可以使用傳輸延遲規(guī)范來(lái)計(jì)時(shí)信號(hào)轉(zhuǎn)換,但這些規(guī)范控制單個(gè)信號(hào)上的一系列轉(zhuǎn)換的時(shí)序,與所有其他信號(hào)無(wú)關(guān)。您仍然需要等待語(yǔ)句來(lái)加速模擬,但是由于一個(gè)或多個(gè)等待語(yǔ)句,時(shí)間推進(jìn)時(shí),傳輸語(yǔ)句中的時(shí)序順序會(huì)滾動(dòng)模擬事件輪。這些等待語(yǔ)句可能位于代碼的任何部分。使用傳輸語(yǔ)句單獨(dú)指定信號(hào)轉(zhuǎn)換更容易,但在調(diào)試期間逐步調(diào)試代碼通常更難解開(kāi)時(shí)間。
您可以使用控制信號(hào)排序和定時(shí)的兩種方法試驗(yàn)臺(tái)。當(dāng)一組信號(hào)重復(fù)并同時(shí)改變時(shí),等待語(yǔ)句最容易使用。這種情況通常是在每個(gè)時(shí)鐘周期內(nèi)同時(shí)改變的同步信號(hào)。在建模異步接口時(shí),例如使用Intel風(fēng)格的微處理器,您可能需要單獨(dú)調(diào)整信號(hào)。使用等待語(yǔ)句延遲下游所有信號(hào)的應(yīng)用,這種方法涉及一個(gè)復(fù)雜的問(wèn)題。單獨(dú)的傳輸語(yǔ)句允許您為每個(gè)信號(hào)指定一系列轉(zhuǎn)換延遲,為每個(gè)信號(hào)定義波形。雖然這種技術(shù)可以解耦信號(hào)時(shí)序,但它也使得更加難以可視化各個(gè)時(shí)序的排序。例如,如果關(guān)鍵要求是保證寫(xiě)入選通結(jié)束時(shí)的地址保持時(shí)間,則可能更容易使用等待語(yǔ)句將模擬定時(shí)輪向前移動(dòng)寫(xiě)入選通的無(wú)斷言時(shí)間和地址巴士。您可能希望嘗試找出適合您的偏好和設(shè)計(jì)要求的內(nèi)容。在調(diào)試期間,多個(gè)等待語(yǔ)句比傳輸語(yǔ)句更容易一步,但傳輸語(yǔ)句對(duì)于描述相同的行為更為緊湊。通過(guò)建模的模塊化,可以很容易地使用最適合的每種機(jī)制。
您可以通過(guò)添加檢查被測(cè)單元響應(yīng)的語(yǔ)句來(lái)略微改進(jìn)這個(gè)簡(jiǎn)單模型(圖1b)。在這樣一個(gè)簡(jiǎn)單的方案中,自動(dòng)檢查數(shù)據(jù)是一種喜憂參半的祝福。使用簡(jiǎn)單的測(cè)試平臺(tái),很難有足夠的控制來(lái)完成驗(yàn)證電路響應(yīng)所需的所有檢查。只是在正確的時(shí)間對(duì)數(shù)據(jù)進(jìn)行采樣可能很困難。當(dāng)程序強(qiáng)制模擬的所有代碼駐留在平面模型中的一個(gè)進(jìn)程中時(shí),檢查建立 - 保持時(shí)間和所有其他重要參數(shù)是一項(xiàng)艱巨的任務(wù)。通過(guò)設(shè)置多個(gè)進(jìn)程來(lái)檢查信號(hào),參數(shù)或接口,您可以在某種程度上解決這種情況,但是這個(gè)臨時(shí)進(jìn)程很難控制,管理和維護(hù)。由于混合了結(jié)構(gòu)和功能,因此很難在新應(yīng)用中重復(fù)使用這些設(shè)計(jì)。
關(guān)鍵建模特性
基于建模的測(cè)試平臺(tái)背后的基本思想是創(chuàng)建圍繞被測(cè)單元的所有板級(jí)組件的功能模型(圖2)。頂級(jí)文件通常包含結(jié)構(gòu)化VHDL代碼,它將各種模型連接在一起作為實(shí)例化組件。至少一個(gè)組件是被測(cè)單元。其他組件是板上其他設(shè)備的功能等同物。在此示例中,您需要模擬萊迪思CPLD。該設(shè)計(jì)是33 MHz i960RP微處理器和雙組SRAM之間的接口。它允許系統(tǒng)通過(guò)交替訪問(wèn)兩組SRAM來(lái)以半個(gè)總線速度訪問(wèn)存儲(chǔ)器。 CPLD是被測(cè)單元,但您必須為CPU,時(shí)鐘,收發(fā)器和SRAM建模。 SRAM模型可以在每個(gè)訪問(wèn)周期檢查來(lái)自被測(cè)單元的所有信號(hào)。您可以輕松地將所有必需的設(shè)置,保持和脈沖寬度檢查放入SRAM模型中。將這些檢查放入一個(gè)簡(jiǎn)單的結(jié)構(gòu)中是很困難的,特別是當(dāng)您需要將所有其他檢查包含在測(cè)試中時(shí)。設(shè)計(jì)人員的任務(wù)更容易,功能模型中嵌入了信號(hào)檢查。
功能系統(tǒng)建模的一個(gè)有趣方面涉及定義整體控制機(jī)制。在一個(gè)簡(jiǎn)單的測(cè)試平臺(tái)中,測(cè)試設(shè)計(jì)者最自然地將主要測(cè)試過(guò)程置于層次結(jié)構(gòu)的頂層,通常是在包含一個(gè)文件的測(cè)試平臺(tái)中。在基于模型的測(cè)試平臺(tái)中,設(shè)計(jì)中的數(shù)據(jù)流控制器與實(shí)際系統(tǒng)中的控制器平行。對(duì)于智能卡,該控制器是CPU或微控制器。您可能會(huì)通過(guò)系統(tǒng)總線控制從屬適配器卡。在此示例中,i960處理器是系統(tǒng)控制器,模擬自然地流經(jīng)CPU模型。主要控制過(guò)程甚至不在測(cè)試平臺(tái)的頂層;它嵌入在CPU模型中。對(duì)于那些僅使用簡(jiǎn)單測(cè)試平臺(tái)的人來(lái)說(shuō),這種情況可能看起來(lái)很奇怪,但這是建模的自然結(jié)果。
在這個(gè)例子中,內(nèi)存和SRAM控制器都是從設(shè)備。由于CPU模型驅(qū)動(dòng)模擬,因此設(shè)計(jì)人員只需要使用一種方法來(lái)指定總線周期序列,以便將數(shù)據(jù)路由到設(shè)計(jì)中。 CPU模型生成所有單獨(dú)的總線信號(hào)。通過(guò)在更高級(jí)別處理模擬,設(shè)計(jì)人員可以處理系統(tǒng)級(jí)功能并讓模型處理細(xì)節(jié)。生成模型后,您可以比使用低級(jí)方法更快地開(kāi)發(fā)復(fù)雜的功能模擬。
建模通常將控制路徑功能的驗(yàn)證與數(shù)據(jù)路徑功能的驗(yàn)證分開(kāi)。簡(jiǎn)單方法合并這些功能,再次使模擬控制問(wèn)題復(fù)雜化。該模型通常驗(yàn)證控制路徑功能。使用SRAM模型,您可以輕松確定需要進(jìn)入模型的代碼,以驗(yàn)證控制信號(hào)是否正常運(yùn)行。將時(shí)序檢查放入SRAM模型允許您在模型訪問(wèn)SRAM時(shí)將檢查放在一個(gè)活動(dòng)的位置。您可以在行為模型中實(shí)現(xiàn)其他控制路徑計(jì)時(shí)和功能驗(yàn)證。您有時(shí)可以在模型中內(nèi)部測(cè)試數(shù)據(jù)路徑功能,如CRC生成器/檢查器的情況。通常,在更高的抽象級(jí)別檢查數(shù)據(jù)路徑更合理。在這種情況下,讓CPU模型執(zhí)行寫(xiě)回讀周期以驗(yàn)證存儲(chǔ)器子系統(tǒng)的操作更方便。 CPU模型驗(yàn)證數(shù)據(jù)完整性。您執(zhí)行驗(yàn)證的方式與為微處理器編寫(xiě)自檢代碼的方式大致相同。對(duì)于功能齊全的CPU模型,您可以使用為系統(tǒng)自檢而開(kāi)發(fā)的相同代碼,并進(jìn)行有限的修改以運(yùn)行模擬;反之亦然。
幸運(yùn)的是,您無(wú)需使用神秘的方法來(lái)開(kāi)始設(shè)計(jì)建模測(cè)試平臺(tái)。與面向?qū)ο缶幊滩煌瑴y(cè)試平臺(tái)建模不需要工程師考慮系統(tǒng)設(shè)計(jì)的方式進(jìn)行批發(fā)范式轉(zhuǎn)換。由于測(cè)試臺(tái)模擬的結(jié)構(gòu)是硬件設(shè)計(jì),因此構(gòu)建具有功能模型的測(cè)試平臺(tái)需要工程師通過(guò)多年使用原理圖和實(shí)驗(yàn)室設(shè)備開(kāi)發(fā)的相同分析方法。您只需使用VHDL設(shè)計(jì)中的功能組件替換電路板上的組件,然后找出如何為每個(gè)組件建模。當(dāng)硬件工程師通常編寫(xiě)診斷代碼時(shí),計(jì)劃模擬就像計(jì)劃原型調(diào)試的早期階段一樣。
當(dāng)您在全公司范圍內(nèi)采用建模時(shí),建模是最有利的。您必須設(shè)計(jì),實(shí)施和驗(yàn)證您不購(gòu)買的任何型號(hào)。您必須在低抽象級(jí)別驗(yàn)證模型,明確地查看詳細(xì)的功能和時(shí)序。使用模型測(cè)試設(shè)計(jì)的工程師可以是驗(yàn)證模型的同一工程師。因?yàn)榻I婕昂瘮?shù)的封裝,所以這種情況有助于防止自我實(shí)現(xiàn)的預(yù)言,其中測(cè)試平臺(tái)設(shè)計(jì)者使系統(tǒng)設(shè)計(jì)者做出的假設(shè)假設(shè)持續(xù)存在。您可以組織模型構(gòu)建,將其計(jì)劃到設(shè)計(jì)計(jì)劃中,并將其劃分為設(shè)計(jì)團(tuán)隊(duì)工程師。您應(yīng)該建立標(biāo)準(zhǔn)以確保生成的模型的一致性和質(zhì)量。這種方法確保了預(yù)驗(yàn)證模型庫(kù)的存在,這些模型是提高設(shè)計(jì)團(tuán)隊(duì)的仿真能力和效率的寶貴資源。
如果開(kāi)發(fā)復(fù)雜模型的努力超出了工程組的能力范圍,應(yīng)該考慮從外部來(lái)源獲取模型。標(biāo)準(zhǔn)合規(guī)性通常要求完全驗(yàn)證和合規(guī)的模型。所有標(biāo)準(zhǔn)總線型號(hào),包括PCI,SCSI,VME和ISA,以及知識(shí)產(chǎn)權(quán)(IP)供應(yīng)商經(jīng)常提供的型號(hào)都可用。 Synopsys的邏輯建模部門提供各種總線接口模型,有助于驗(yàn)證標(biāo)準(zhǔn)總線設(shè)計(jì)的合規(guī)性和互操作性。許多其他第三方供應(yīng)商也提供各種核心供應(yīng)。您可以在Web上找到令人印象深刻的非商業(yè)模型源列表(參考文獻(xiàn)1,2和3)。
建模和抽象
VHDL的發(fā)明者將該語(yǔ)言設(shè)想為純粹的建模語(yǔ)言。用于邏輯綜合的VHDL的早期采用者存在問(wèn)題,因?yàn)樵S多有用的建模構(gòu)造不適合于合成。其次,VHDL規(guī)定您實(shí)現(xiàn)Verilog的許多必要功能,例如類型轉(zhuǎn)換,作為庫(kù)函數(shù)。相比之下,您可以使用全范圍的VHDL建模功能來(lái)生成行為仿真模型。您可以指定復(fù)雜行為,而不遵守綜合支持的RTL約定。您甚至可以使用VHDL的數(shù)學(xué)函數(shù)對(duì)模擬和機(jī)械系統(tǒng)進(jìn)行建模。 (VHDL目前正在考慮的模擬擴(kuò)展主要是語(yǔ)言當(dāng)前可用數(shù)學(xué)函數(shù)的擴(kuò)展。)因?yàn)槟恍枰铣煞抡婺P?,所以可以使用許多高級(jí)行為結(jié)構(gòu)來(lái)簡(jiǎn)化函數(shù)模型生成。根據(jù)執(zhí)行它們的組件定義函數(shù)會(huì)產(chǎn)生功能分解,從而鼓勵(lì)更高級(jí)別的抽象。該技術(shù)將功能規(guī)范與低級(jí)操作細(xì)節(jié)分離,并簡(jiǎn)化了編寫(xiě)測(cè)試程序的過(guò)程。表1和表2匯總了VHDL的許多特性和屬性,這些特性和屬性對(duì)于生成建模仿真很有用。
雖然VHDL本身不是VHDL的一個(gè)特性,但大多數(shù)VHDL和Verilog仿真包允許用戶接口可執(zhí)行程序到模擬。這些程序通常用C或C ++編寫(xiě),允許用戶在沒(méi)有使用VHDL模型的速度或空間開(kāi)銷的情況下實(shí)現(xiàn)復(fù)雜的行為。例如,在C中建模大型SRAM模型允許操作系統(tǒng)資源實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)。如果操作系統(tǒng)可以緩存數(shù)據(jù)并在必要時(shí)將其交換到磁盤,則可以建模超過(guò)PC或工作站上可用RAM大小的內(nèi)存。或者,您可以使用C對(duì)系統(tǒng)進(jìn)行建模,并使用模擬器允許C程序訪問(wèn)模擬器中的組件模型。對(duì)于大型模擬,這種方法可能比VHDL更快,但需要包括VHDL和C開(kāi)發(fā)工具的環(huán)境。這種方法可能有助于工程師在分區(qū)之前使用C語(yǔ)言模擬系統(tǒng)并將其交給電路設(shè)計(jì)人員進(jìn)行實(shí)施。
什么是配置?
VHDL定義了一個(gè)配置設(shè)計(jì)單元,它大致類似于印刷電路板組件的部件列表。您需要配置,因?yàn)榻o定實(shí)體可能涉及多個(gè)體系結(jié)構(gòu)。 VHDL關(guān)鍵字配置指定的配置聲明標(biāo)識(shí)體系結(jié)構(gòu)與每個(gè)實(shí)體的配對(duì)或綁定。除非指定多個(gè)體系結(jié)構(gòu),否則不需要顯式配置。配置對(duì)模擬最有用;綜合工具通常不支持它們。
1987 VHDL標(biāo)準(zhǔn)的文件I/O功能有限。 1993版增加了語(yǔ)法增強(qiáng)功能和新功能,以擴(kuò)展語(yǔ)言的文件I/O功能。您可以通過(guò)各種方式使用VHDL文件I/O功能。主要用途是檢索和應(yīng)用刺激向量;存儲(chǔ)響應(yīng)向量和預(yù)期響應(yīng)以進(jìn)行比較;格式化報(bào)告;然后讀取自定義的測(cè)試語(yǔ)言文件,然后程序解析。
您可以使用具有更高抽象級(jí)別的測(cè)試語(yǔ)言文件讀取來(lái)控制模擬。因?yàn)槟诠δ芗?jí)別指定命令,所以根據(jù)其編程響應(yīng)每個(gè)命令的功能模型執(zhí)行詳細(xì)實(shí)現(xiàn)。這種強(qiáng)大的技術(shù)可以在很高的層次上推動(dòng)模擬。您可以最大程度地利用系統(tǒng)級(jí)知識(shí),因?yàn)槟梢栽谧罘奖銠z查系統(tǒng)功能的級(jí)別上進(jìn)行控制。當(dāng)文本文件確定控制流時(shí),自定義測(cè)試語(yǔ)言將變?yōu)樘囟ㄓ谀M。 VHDL模擬解釋代碼。您可以快速生成和檢查新的測(cè)試用例,因?yàn)槟恍枰幾g新代碼,因?yàn)樗皇荲HDL測(cè)試平臺(tái)的一部分。表3顯示了最常見(jiàn)的基本文件I/O命令。表4顯示了標(biāo)準(zhǔn)文本I/O包中添加的常用命令。
使用模型設(shè)計(jì)測(cè)試平臺(tái)
IEEE提供的資源,包括在線筆記,是編寫(xiě)行為模型的優(yōu)秀指南(參考文獻(xiàn)4,5和6)。關(guān)鍵點(diǎn)是在多個(gè)抽象層次上建模系統(tǒng),隱藏系統(tǒng)結(jié)構(gòu),關(guān)注行為和功能,忽略頂層抽象時(shí)序,遵循軟件工程的標(biāo)準(zhǔn)實(shí)踐,簡(jiǎn)化維護(hù)和重用,構(gòu)造設(shè)計(jì),定義每個(gè)組件以具有強(qiáng)大的內(nèi)聚力,定義松散耦合的組件集,使用自上而下的迭代細(xì)化,以及使用抽象數(shù)據(jù)類型來(lái)隱藏和封裝數(shù)據(jù)。
使用VHDL,系統(tǒng)設(shè)計(jì)人員可以在多個(gè)抽象級(jí)別對(duì)電路建模。在VHDL中進(jìn)行建模時(shí),遵循軟件工程的標(biāo)準(zhǔn)實(shí)踐非常重要。否則,即使對(duì)于編寫(xiě)模型的人來(lái)說(shuō),模型也難以維護(hù)。此外,為了幫助重用模型,您應(yīng)該仔細(xì)考慮并重新使用,甚至創(chuàng)建一次性模型。典型的模型設(shè)計(jì)和編碼實(shí)踐包括結(jié)構(gòu)設(shè)計(jì);迭代地將模型的高級(jí)視圖細(xì)化到最終形式;使用抽象數(shù)據(jù)類型來(lái)隱藏和封裝數(shù)據(jù);并組織各個(gè)模型組件,使它們與極少的接口信號(hào)松散耦合,并具有強(qiáng)大的內(nèi)聚力,在同一架構(gòu)體中保持強(qiáng)相關(guān)的功能。
在圖3中,原理圖鏈接了CPLD的設(shè)計(jì)基于SRAM的控制器,用于設(shè)計(jì)中所有其他主要組件的模型。該Ramix Corp CPLD設(shè)計(jì)針對(duì)的是萊迪思M4A5-192/96-7VC器件。 Ramix選擇此部件是因?yàn)閮?nèi)部延遲的速度鎖定使器件能夠以132 MHz的有效內(nèi)部頻率工作。該設(shè)計(jì)需要在66 MHz時(shí)鐘的兩個(gè)邊沿上進(jìn)行狀態(tài)更改。使用最高速度會(huì)將可用頻率推至180 MHz左右。
CPU模型生成總線周期來(lái)控制仿真。表5列出了指定測(cè)試序列的特殊指令。指令很簡(jiǎn)單,并在所需的總線操作之后建模。對(duì)所有匯編語(yǔ)言操作代碼進(jìn)行建模可能過(guò)于復(fù)雜,而且不太有用。該模型僅需要10條指令,這些指令包括設(shè)置給定操作的地址和數(shù)據(jù)。通過(guò)這些指令,您可以檢查所有各種讀取和寫(xiě)入SRAM的模式。測(cè)試平臺(tái)使用簡(jiǎn)單的命令組合來(lái)實(shí)現(xiàn)所有必需的測(cè)試方案。該模型有兩個(gè)實(shí)現(xiàn)。更簡(jiǎn)單的模型將測(cè)試序列嵌入到模型本身中,實(shí)現(xiàn)為每次更改測(cè)試時(shí)必須編譯的VHDL代碼。此過(guò)程違反了將高級(jí)任務(wù)與低級(jí)任務(wù)分離的愿望。在第二個(gè)過(guò)程中,測(cè)試語(yǔ)言解析引擎驅(qū)動(dòng)模擬。文本解析引擎似乎增加了額外的復(fù)雜性,但它在靈活性和易用性方面具有優(yōu)勢(shì)。由于外部文本文件包含測(cè)試序列,因此程序無(wú)需在運(yùn)行之前編譯序列。此功能可讓您快速輕松地添加測(cè)試方案。實(shí)際上,該方法提供了一種獨(dú)立于應(yīng)用程序的仿真語(yǔ)言,您可以在i960 CPU上需要此功能的任何系統(tǒng)中使用該語(yǔ)言。
存在幾種實(shí)現(xiàn)SRAM模型的選項(xiàng)。您可以將模型實(shí)現(xiàn)為數(shù)組,只需根據(jù)位置地址將數(shù)據(jù)存儲(chǔ)在數(shù)組位置即可。另一種選擇是構(gòu)建一個(gè)可以將地址和內(nèi)存數(shù)據(jù)傳輸?shù)酱疟P文件以便以后驗(yàn)證的模型。此示例不要求內(nèi)存通過(guò)設(shè)計(jì)傳遞大量數(shù)據(jù)。工程師使用兩個(gè)16字深的數(shù)組設(shè)計(jì)存儲(chǔ)器來(lái)存儲(chǔ)數(shù)據(jù) - 一個(gè)存儲(chǔ)在模型的較低地址空間,另一個(gè)存儲(chǔ)在頂端。設(shè)計(jì)人員實(shí)現(xiàn)了第二個(gè)陣列,允許RAM訪問(wèn)從一個(gè)頁(yè)面滾動(dòng)到另一個(gè)頁(yè)面。該設(shè)計(jì)使用SRAM地址索引到數(shù)組中。該模型響應(yīng)標(biāo)準(zhǔn)寫(xiě)使能,輸出使能,片選,地址和數(shù)據(jù)RAM控制信號(hào)。該設(shè)計(jì)在執(zhí)行合法寫(xiě)周期時(shí)將數(shù)據(jù)存儲(chǔ)在陣列中,并在執(zhí)行合法讀周期后檢索數(shù)據(jù)。除了存儲(chǔ)和檢索數(shù)據(jù)外,該模型還可以檢查SRAM時(shí)序要求。您可以選擇時(shí)間參數(shù)為none,minimum,typical或maximum。最小訪問(wèn)時(shí)間無(wú)關(guān)緊要,因此設(shè)計(jì)人員將其設(shè)置為零延遲。
芯片選擇解碼模型是一種簡(jiǎn)單的組合解碼器功能,無(wú)需參數(shù)檢查。該模型復(fù)制了電路的功能和傳播延遲時(shí)序。您可以選擇延遲為無(wú),最小,典型或最大。鎖存收發(fā)器模型是一種簡(jiǎn)單的順序模型,具有有限的參數(shù)檢查功能,可用于數(shù)據(jù)設(shè)置和保持。
該電路的簡(jiǎn)單功能需要簡(jiǎn)單的測(cè)試用例。您可以通過(guò)寫(xiě)入SRAM并讀取數(shù)據(jù)來(lái)完成i960型號(hào)的每種總線周期類型。測(cè)試用例包括單次寫(xiě)入然后讀取,存儲(chǔ)區(qū)0或1啟動(dòng),突發(fā)寫(xiě)入然后讀取,存儲(chǔ)區(qū)0或1啟動(dòng),有或沒(méi)有CPU等待狀態(tài),有或沒(méi)有SRAM分頁(yè)符,以及與頁(yè)面中斷重疊CPU等待狀態(tài)。這些相對(duì)簡(jiǎn)單的情況足以測(cè)試存儲(chǔ)器控制CPLD的功能。 CPU模型通過(guò)在回讀時(shí)驗(yàn)證寫(xiě)入的數(shù)據(jù)是否相同來(lái)檢查數(shù)據(jù)路徑。 SRAM模型需要適當(dāng)?shù)目刂菩盘?hào)來(lái)存儲(chǔ)和檢索數(shù)據(jù),檢查控制信號(hào)。這些模型的定時(shí)檢查分布在整個(gè)身上。 CPU,SRAM和鎖存收發(fā)器模型都包含代碼以驗(yàn)證正確的信號(hào)時(shí)序。如果測(cè)試不符合所需的設(shè)置,保持或脈沖時(shí)序,則檢測(cè)到錯(cuò)誤的模型會(huì)報(bào)告每個(gè)錯(cuò)誤。您可以使用CPU模型中的基本指令在模型中構(gòu)建新場(chǎng)景。
您可以從行為模型測(cè)試平臺(tái)輕松檢查列表。最后一行告訴是否存在任何錯(cuò)誤。如果沒(méi)有錯(cuò)誤,您的工作就完成了。如果發(fā)生故障,快速檢查會(huì)顯示位置,以及有關(guān)故障位置和原因的線索。每次運(yùn)行模擬時(shí),測(cè)試平臺(tái)都會(huì)自動(dòng)運(yùn)行所有檢查。
-
模擬
+關(guān)注
關(guān)注
7文章
1420瀏覽量
83878 -
建模
+關(guān)注
關(guān)注
1文章
299瀏覽量
60715 -
PCB打樣
+關(guān)注
關(guān)注
17文章
2968瀏覽量
21630 -
華強(qiáng)PCB
+關(guān)注
關(guān)注
8文章
1831瀏覽量
27701 -
華強(qiáng)pcb線路板打樣
+關(guān)注
關(guān)注
5文章
14629瀏覽量
42951
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論