modelsim仿真學(xué)習筆記

發(fā)布時(shí)間:2016-2-17 08:40    發(fā)布者:designapp
關(guān)鍵詞: Modelsim , 仿真
  1、 仿真的目的:
  在軟件環(huán)境下,驗證電路的行為和設想中的是否一致。
  2、 仿真的分類(lèi):
  a) 功能仿真:在RTL層進(jìn)行的仿真,其特點(diǎn)是不考慮構成電路的邏輯和門(mén)的時(shí)間延遲,著(zhù)重考慮電路在理想環(huán)境下的行為和設計構想的一致性;
  b) 時(shí)序仿真:又稱(chēng)為后仿真,是在電路已經(jīng)映射到特定的工藝環(huán)境后,將電路的路徑延遲和門(mén)延遲考慮進(jìn)對電路行為的影響后,來(lái)比較電路的行為是否還能夠在一定條件下滿(mǎn)足設計構想。
  3、 功能仿真的目的:
  a) 設計出能工作的電路:因此功能仿真不是一個(gè)孤立的過(guò)程,其和綜合、時(shí)序分析等形成一個(gè)反饋工作過(guò)程,只有這個(gè)過(guò)程收斂,各個(gè)環(huán)節才有意義。而孤立的功能仿真通過(guò)是沒(méi)有意義的,如果在時(shí)序分析過(guò)程中發(fā)現時(shí)序不滿(mǎn)足需要更改代碼,則功能仿真必須從新進(jìn)行。因此正確的工作流程是:
  


  b)代碼排錯:功能仿真是代碼排錯的最重要的手段之一。
  4、 modelsim的高級功能:Code Coverage
  a) 代碼覆蓋率是驗證激勵是否完備,檢驗代碼質(zhì)量的一個(gè)重要手段。測試激勵的代碼覆蓋率至少要達到95%以上,才能基本認為代碼在邏輯上是通過(guò)質(zhì)量控制的,才能進(jìn)入綜合步驟;
  b) 代碼覆蓋率是保證高質(zhì)量代碼的必要條件,但卻不是充分條件。即便代碼行覆蓋和分支覆蓋都能夠達到100%,也不能肯定的說(shuō)代碼已經(jīng)得到100%的驗證。除非所有的分支覆蓋都能夠進(jìn)行組合遍歷。
  c) 在大的設計中,如果想通過(guò)一個(gè)激勵就驗證完一個(gè)設計或者模塊是不現實(shí)的。一方面是從邏輯功能上很難做到;另外一方面是因為如果在一個(gè)激勵中包括了各種情況,整個(gè)仿真過(guò)程的速度會(huì )隨著(zhù)計算機內存的消耗而成線(xiàn)性下降,效率低下。
  d) 通常的做法是每一個(gè)激勵只驗證電路功能的某個(gè)方面。整個(gè)電路的功能驗證由數個(gè)激勵共同完成。在這種驗證方法中代碼覆蓋率更顯重要,因為可以通過(guò)代碼覆蓋率來(lái)控制激勵對功能的覆蓋程度。
  e) modelsim的Code coverage不但能記錄各個(gè)激勵對代碼的“行覆蓋”和“分支覆蓋”,而且能夠將各個(gè)激勵的覆蓋記錄進(jìn)行合并,做到對覆蓋率的全面監測。
  f) 演示。。。。。。。。。。。。。。。。。。。。。。。。
  5、 Debussy:仿真輔助調試工具:
  a) 看仿真波形無(wú)疑是代碼排錯的主要手段,在 Modelsim中的波形窗口在大的仿真中有如下缺陷:a、只能顯示出在仿真前設置好的信號波形,如果在仿真完成后想觀(guān)察其他的信號,唯一的辦法就是添加需要觀(guān)察的信號從新開(kāi)始仿真。b、波形只是簡(jiǎn)單顯示,和代碼沒(méi)有對應和關(guān)聯(lián)關(guān)系,不能借助波形直觀(guān)的調試代碼;c、如果觀(guān)察的信號太多,由于其是實(shí)時(shí)全信號顯示,在仿真時(shí)間較長(cháng)后,仿真速度明顯減慢,屏幕的刷新速度也明顯減慢。
  b) 這些缺點(diǎn)不單Modelsim有,其他的優(yōu)秀仿真工具也有,而且歷史由來(lái)以久,因此很早人們就提出了“先轉儲后觀(guān)察調試”方法,在verilog語(yǔ)言中以$dumpXXX開(kāi)頭的系統函數就是做波形轉儲用的。就是先將波形先存在文件中,等仿真結束后在調出來(lái)顯示觀(guān)察和調試。
  c) 這種觀(guān)察功能很多EDA工具都有,并不足為奇;但Debussy的獨特之處在于,它不但能顯示波形,而且還能非常智能化的將波形中的任何一個(gè)變化和引起這個(gè)變化的RTL代碼聯(lián)系起來(lái),使代碼排錯的效率大幅度提高。在原來(lái)IC所的一個(gè)大型項目中,由于引進(jìn)了Debussy,使調試效率至少提高了3倍。
  d) 先介紹verilog語(yǔ)言中的轉儲系統函數。其實(shí)轉儲函數就是一種典型的文件操作函數,最為常用的為一下幾種:
  i. $dumpfile(“filename.vcd”):打開(kāi)一個(gè)文件準備轉儲波形數據;
  ii. $dumpall:轉儲所有信號的波形數據;
  iii. $dumpvars:轉儲層次信號;
  iv. $dumpon:開(kāi)始轉儲;
  v. $dumooff:停止轉儲;
  e) 演示Modelsim轉儲功能
  f) 演示Debussy工具中的輔助調試功能;
  6、 SDF反標注
  a) SDF是一種標準延時(shí)格式文件,用于記錄綜合布線(xiàn)后電路的線(xiàn)延遲和門(mén)延遲信息。如果在仿真輸出的波形上疊加上這些信息,將使波形更接近實(shí)際。
  b) 演示。。。。。。。。。。。。。。。。。。。。。。。。。。
  c) 但是由于電路已經(jīng)被綜合布線(xiàn)過(guò),原來(lái)的RTL代碼的邏輯層次和代碼命名都已經(jīng)發(fā)生變化,即便看到波形也很難直接對應到RTL代碼上,因此后仿真來(lái)確定電路是否符合要求的方法已經(jīng)逐漸被新的方法所代替。另外還有后仿真速度緩慢也是一個(gè)主要原因。新的方法是:時(shí)序分析、靜態(tài)時(shí)序分析、形式驗證。
  7、 一個(gè)重要的觀(guān)念:電路的性能取決于電路構思和Coding Style:
  a) 經(jīng)常有人說(shuō)“不要用寫(xiě)軟件的方法去寫(xiě)硬件”,或者說(shuō)“要用樸實(shí)無(wú)華的語(yǔ)言風(fēng)格來(lái)寫(xiě)代碼”,這些說(shuō)法只是描述了事務(wù)的表明現象,并沒(méi)有真正指出問(wèn)題的真正癥結所在;
  b) RTL描述語(yǔ)言,雖然是一種語(yǔ)言,但它是描述RTL的語(yǔ)言,所以其著(zhù)眼點(diǎn)是電路實(shí)現而非邏輯推理;RTL就是電路在寄存器層的一種表現,雖然已經(jīng)不像門(mén)級那樣具體,但也沒(méi)有抽象到邏輯層。
  c) 因此寫(xiě)代碼的真正正確的方法是:在大腦中構思出電路的結構,然后用代碼把它點(diǎn)滴不漏的表現出來(lái),而不是先寫(xiě)一些只是邏輯上行得通的代碼等待工具幫你綜合成能實(shí)現的電路。工具永遠只能做繁重而低級的工作,至少要比人的工作低級,這是未來(lái)幾百年內不會(huì )改變的公理。因此如果你的電路性能不好,說(shuō)明你對如何實(shí)現電路還沒(méi)有清晰的思路。
  d) 不要只使像通過(guò)提高器件的速度等級來(lái)使你的電路達到要求,恰恰相反,正確的方法是:如果你的電路在第一次綜合后已經(jīng)有80%的路徑滿(mǎn)足時(shí)間要求了,那么就不要想著(zhù)用更快的器件,而應該考慮改變你的電路拓撲結構和設計構架,來(lái)使另外的20%逐漸達到要求。
                               
                                                               
                               
               
本文地址:http://selenalain.com/thread-160793-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页