【原創】如何經過-y和-v使用庫文件

在進行仿真時,常常遇到設計代碼中須要調用一些標準的庫文件,可是在設計的編譯列表filelist中卻沒有相應的庫文件,這時爲了完成仿真,須要設計人員提供對應的庫文件或者庫文件所在的路徑,而後仿真時將這些庫文件或者路徑添加到編譯命令中,以實現仿真編譯的正常進行。這個過程在實際中是經過-y」和」-v將對應的這些庫文件或者庫路徑告訴仿真器,這樣在編譯時仿真器就會在對應的庫文件或者庫路徑下尋找對應的module代碼。本文將示例-y」和」-v」具體如何使用。微信

1 使用庫文件spa

若是模塊中存在對於某個庫文件中的某個module的實例化,那麼能夠經過在編譯命令中使用-v」的方式指定要搜索的庫文件。其格式以下:命令行

compile_order -v library_file.v設計

其中compile_order爲仿真器的編譯命令,library_file.v爲庫文件,其中能夠包含多個模塊,編譯時只編譯用到的模塊。blog

2 使用庫路徑內存

若是在編譯的時候,不知道文件夾中到底哪一個庫文件包含須要的模塊,那麼這是可使用」-y」的方式,指定要搜索的文件夾,可是這是須要注意,使用」-y」的同時須要配合使用」+libext+」用於指定要在搜索文件夾中哪些後綴類型的文件中進行搜索。其格式以下:編譯器

compile_order -y ./path_name +libext+.vio

其中compile_order爲仿真器的編譯命令,./path_name用於指定要搜索的文件夾的路徑(路徑名包含要搜索的文件夾名), +libext+.v用於指定要在被搜索文件夾中搜索的文件的後綴,若是要搜索多個後綴能夠繼續追加+libext+.v+後綴名」,若是沒有後綴可使用兩個」++」連續寫便可。編譯

【示例】class

示例文件的結構以下圖,top_tb中例化了兩個模塊,分別是t2andt1xort2andt2.v中,t2.v中還存在另外一個模塊t2x2and,而且與top_tb.v位於同一個文件夾中。t1xor位於文件夾path中,該path文件夾下還有另外兩個文件:t0xor.vt2xor.v,而且在t1xor例化了t0xor。總體結構以下圖所示:

 

【源代碼】

 

【仿真命令】

 

注:其中的file.f中僅包含top_tb.v一個文件。

【仿真結果】

 

  

經過編譯後仿真器分析的電路層次結構咱們能夠能夠看到,只有在top_tb中被調用的模塊出如今了設計層次中,沒有被調用的並無出現,即只有被調用的模塊被編譯到了設計中。同時咱們注意到,由於t1xor中例化了t0xor,編譯時會自動識別庫中自己的層次調用關係,將相關的庫文件自動搜索編譯,可是須要注意的是這時t1xort0xor必須都位於相同的文件夾中。

經過示例咱們能夠知道,使用-v-y選項指定庫時,編譯器將只編譯那些設計中用到的模塊,這些用到的模塊無需再添加到filelist中,這樣能夠大大壓縮編譯時間及內存空間,避免了在衆多文件或者路徑下找模塊的問題,將人力工做交由電腦來完成。

【總結】

  • 使用庫文件

       在命令行中使用選項:-v file_name

  • 使用庫目錄

       在命令行中使用選項 -y directory_name

       在命令行中使用選項 +libext+file_extension

  • -y」和」-vVerilogSystemVerilogLRM中並無出現,可是他們不是某家EDA大廠所特有的,全部的EDA大廠生產的仿真器都支持;
  • -y」和」-v僅適用於VerilogSystemVerilog的代碼;
  • 使用」-y」和」-v」指定庫文件和庫路徑時,只編譯那些設計中用到的模塊。若是沒有使用」-v」,那麼庫文件中全部的模塊都將會被編譯;

 

更多技術內容,可關注下圖我的技術微信公衆號,歡迎朋友們關注溝通!

相關文章
相關標籤/搜索