1. 程式人生 > >數字IC設計入門必備——VIM自定義模板呼叫與VCS基本模擬操作示例

數字IC設計入門必備——VIM自定義模板呼叫與VCS基本模擬操作示例

一、前言

  畢業論文答辯結束,閒下來寫篇文章。晶片研發人員都在Linux系統下藉助各種EDA工具和程式碼語言完成工作,因此提高程式碼開發效率,熟練運用開發工具是十分必要的。本文講述VIM編輯神器的verilogHDL自定義模板呼叫以及VCS模擬軟體的基本使用方式。

二、VIM編輯器自定義模板呼叫

  在之前的博文中談到過GVIM編輯器中可以通過呼叫模板來生成重複性程式碼,但沒有介紹自定義模板的方式。關於VIM的安裝與配置詳細內容,見參考文獻1。這裡主要用到VIM的使用者配置檔案:.vimrc(若沒有新建該檔案並編輯),我們在使用者目錄下使用ls -al命令可以看到該檔案:

  使用VIM編輯器開啟VIM配置檔案,以下部分是在檔案底部自行新增的命令:

  自定義模板的格式為    :ab <com> <code>   

  其中com是呼叫指令,code是當前指令生成的程式碼。我們新建一個.v檔案測試下就能看出模板呼叫的妙處了。

編輯(插入)模式下,輸入Shixu後按下回車生成:

輸入Zuhe後按下回車生成:

輸入Counter後按下回車生成:

  這三個是最常用到的程式碼,三者相互組合可以完成很多功能了。但若狀態或工作模式較多,一般採用狀態機完成。輸入FSM後按下回車生成:

  在設計時,經常要根據數值範圍設定變數的位寬。此時經常用到一個位寬計算到函式。輸入Width_func後按下回車生成:

  在設計檔案裡常用的重複性程式碼基本就這些了,可以根據自己的coding style靈活調整。接下來說說testbench部分。輸入Test後按下回車生成:

  裡邊包括了testbench中的時鐘和復位相關的引數與訊號定義。實際上時鐘和復位訊號的產生也是可以複用的。輸入Clock_rst後按下回車生成:

  通過使用上班自定義模板還沒有靈活到可以自動生成例化模板,這一部分功能得藉助其他指令碼語言完成了,筆者還沒有嘗試過。

三、VCS軟體模擬

  光說這個軟體沒什麼意思,我們來舉個栗子~設計一個計數器,輸出位寬固定32位。當使能訊號拉高則開始從0計數直到最大值後再次從0開始遞增。設計程式碼counter.v:

  測試程式碼 counter_tb.v:

  VCS模擬大體分為三步:編譯、模擬以及除錯。編譯命令:vcs *.v -debug_all 命令列介面會顯示些資訊:

  之後資料夾內會生成simv檔案,執行該檔案進行模擬。./simv -gui   這裡使用-gui選項開啟DVE圖形介面。

  接下來的操作和常用的Modelsim差不多了。把要觀測的訊號新增到波形視窗:

  點選左上角按鈕執行模擬:

  按下紅色箭頭所指位置觀察全域性波形:

  按住滑鼠左鍵拖動來區域性放大資料波形,計數器與輸出從0到19週期性遞增,功能正確。

  複雜的操作後續用到再學。

參考文獻

1 vim 的安裝及配置 - QIYUEXIN - 部落格園 https://www.cnblogs.com/qiyuexin/p/6398606.html

VCS使用學習 - IC_SOC_ARM - CSDN部落格 https://blog.csdn.net/ic_soc_arm_robin/article/details/44262063

VCS-DVE - 百度文庫 https://wenku.baidu.com/view/f5f7ce8f69eae009591becc1.html

數字晶片實驗室的個人空間 - 嗶哩嗶哩 ( ゜- ゜)つロ 乾杯~ Bilibili https://space.bilibili.com/87907395/channel/detail?cid=64692<