數字IC設計入門必備——VIM自定義模板調用與VCS基本仿真操作示例


一、前言

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

二、VIM編輯器自定義模板調用

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

  使用VIM編輯器打開VIM配置文件,以下部分是在文件底部自行添加的命令:

 

:ab Shixu always@(posedge clk or negedge rst_n)begin<Enter>if(~rst_n)begin<Enter><Enter>end<Enter>else begin<Enter><Enter>end<Enter>end
:ab Zuhe always@(*)begin<Enter><Enter>end
:ab Counter always@(posedge clk or negedge rst_n)begin<Enter>if(~rst_n)begin<Enter>cnt <= 0;<Enter>end<Enter>else if(add_cnt)begin<Enter>if(end_cnt)<Enter>cnt <= 0;<Enter>else<Enter>cnt <= cnt + 1'b1;<Enter>end<Enter>end<Enter><Enter>assign add_cnt = ;<Enter>assign end_cnt = add_cnt && cnt == - 1;
:ab Width_func function integer clogb2 (input integer bit_depth);<Enter>begin<Enter>for(clogb2=0;bit_depth>0;clogb2=clogb2+1)<Enter>bit_depth = bit_depth >> 1;<Enter>end<Enter>endfunction<Enter>
:ab Clock initial begin<Enter>clk = 0;<Enter>forever begin<Enter>#(CYC/2.0);<Enter>clk=~clk;<Enter>end<Enter>end<Enter>
:ab Reset initial begin<Enter>rst_n = 1;<Enter>#1;<Enter>rst_n = 0;<Enter>#(RST_TIM*CYC) rst_n = 1;<Enter>end<Enter>

  自定義模板的格式為    :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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM