「 課堂上我說過,Verilog HDL代碼具有很強的規律性,但目前尚沒有相關的代碼分析工具,Understanding、Sourceinsight等只支持VHDL,所以很有必要做一個Verilog的代碼分析工具,可用來輔大作業的完成。分享兩款我們自己開發的軟體,一個帶界面,一個不帶界面,原始碼我上傳到QQ群裡面,大家可以參考一下,多提意見。」
Verilog HDL代碼規範整理程序使用說明
1、引言
1.1編寫目的編寫本使用說明的目的是充分敘述本軟體所能實現的功能及其運行環境,以便使用者了解本軟體的使用範圍和使用方法,並為軟體的維護和更新提供必要的信息。
1.2術語和縮寫詞RTL代碼:本軟體暫時只支持使用Verilog HDL語言描述的行為級代碼。
2、軟體概述
2.1目標通過本軟體的操作,將RTL代碼進行規範化整理,方便開發人員進行維護。同時該軟體也可用於團隊項目開發,有利於形成統一的代碼規範標準,提高設計的效率,也可以用於教學。
2.2功能該軟體是一款對Verilog HDL描述的行為級代碼進行自動分析整理的軟體,具有代碼分析功能和自動整理功能。代碼分析,可以對代碼的注釋率,所有模塊的調用關係,文件路徑及文件夾的關係,以及所有模塊中的狀態機等進行識別提取,並轉化為可視化的圖形顯示腳本,方便的採用開源軟體Graphviz進行查看;代碼整理,可以將代碼中所有的輸入輸出、內部變量、參數定義、always模塊、assign語句及例化調用等進行識別提取,按照固定格式(統一的縮進)輸出,保留原來的注釋代碼。自動識別FPGA或者後端軟體自動生成的RAM等IP核,對此類文件不進行整理。所有文件的整理結果以文本的形式給出,詳細說明注釋率、狀態機等統計結果以及不滿足設計規範的寫法的位置。整理後文件輸出保持原來文件的相對路徑關係。
2.3性能該系統支持最多2048個RTL文件。分析時間較短,如197個Verilog HDL文件(共計有效代碼行數51129)分析整理的時間約為70.608秒。
3、運行環境
3.1軟硬體要求Windows XP或WIN7作業系統,1G字節以上系統內存,2GHz以上處理器。
3.2支持軟體客戶程序軟體軟體環境:C語言編程軟體Dev-C++,Visual Studio。
4、使用說明
4.1安裝和初始化本軟體所有程序都在guifan文件夾下,如圖1所示。
圖1 程序文件
guifan文件夾下包括:
guifan.c 分析網表文件的核心程序;
include 文件夾下的define.h和struct.h是guifan程序的頭文件;
hdl文件夾 所有待規範化的.v程序文件都必須存儲在該文件夾下;
軟體運行結束後會生成newhdl文件夾,所有經過規範整理的文件保存在該文件夾下,與hdl文件夾對應,所有文件保持相對路徑不變。
4.2輸入輸入的是RTL級代碼程序文件。
4.3 輸出4.3.1輸出結果文件介紹軟體運行產生的輸出文件說明如圖2。
圖2 輸出文件說明
dir_gragh.txt 使用dot語言描述的hdl文件夾下所有.v文件的路徑關係,在dot文件中不支持「.」,所有.v後綴都去掉了點,可使用GVEdit軟體查看所有.v文件的路徑結構;
file_list.txt hdl文件夾下所有.v文件的所在目錄,每個文件的詳細信息包括注釋率等都有詳細說明;
file_noanno.txt,nouse.txt 都是程序運行產生的臨時文件;
fsm_gragh.txt所有文件程序中包含的狀態機,使用dot語言描述,可使用GVEdit查看狀態機的狀態轉移圖。
instance_gragh.txt 包含所有例化的模塊,該文件最後也使用dot語言描述例化的模塊之間的結構。
4.3.2輸出圖形顯示文件說明軟體輸出的是dot格式的文件。dot格式文件可以導入開源工具Graphviz查看圖形化顯示結果。
4.3.3輸出舉例dot文件顯示說明:
軟體運行的部分結果使用dot語言來進行描述的文件。通過GVEdit對dot語言進行處理可得到如圖3所示類型的結構圖,本例詳細描述了各模塊之間的調用關係,圖中多條箭頭表示多次調用。
圖3 Graphviz中顯示舉例
5、操作步驟
本軟體使用Dev-C++ 5.5.3進行操作。
1 建立工程,命名為『guifan』,如圖4。工程保存在guifan目錄下,如圖5。
圖4 建立工程-1
圖5 建立工程-2
2 然後在左側欄右鍵工程名,出現菜單選中Add to Project,然後將程序文件guifan.c添加進來(圖6)。
圖6 添加guifan.c程序
3 編譯&運行compile&run,如圖7。
圖7 編譯&運行程序
4 等待程序運行結束,如圖8。
圖8 運行結束圖
程序運行時顯示每個文件的詳細信息,如圖9.
圖9 程序運行信息
圖中紅框內部分表示,file_name為該文件的位置及名稱,module表示sr_fifo_w模塊共356行,189行注釋,4個parameter,2個assign聲明,該模塊包含1個8行的例化模塊,9個always塊共75行,result_path是該文件將被存儲的目的位置,然後是該模塊共有5個輸入,3個輸出,23個reg型變量和2個wire型變量。
另外,代碼在整理的過程中,能夠自動的識別FPGA或者後端軟體自動生成的RAM等IP核,不對此類文件進行整理,如圖10,識別到此類特殊文件將提示:
This file is an auto generated file by edatools!
對於此類文件,不做任何改動複製到newhdl文件夾下相對路徑下。
圖10 不被整理的文件
接下來查看程序運行的結果,同時藉助GVEdit查看文件結構。
1使用notepad++打開文件file_list.txt,如圖11,前半部分表示hdl文件夾下所有.v文件的存儲路徑。後半部分表示每個代碼文件的詳細信息,如圖12。
圖11 file_list.txt
最後總結,總共197個Verilog文件,同時標明了平均注釋率以及運行時間。
圖12 代碼文件的詳細信息
2打開文件dir_gragh.txt如圖13,將文件內容複製到GVEdit。
圖13 dir_gragh.txt
打開GVEdit軟體,如圖14將dir_gragh.txt的內容粘貼到文件中,然後配置圖片參數,這裡選擇dot型布局,圖片格式為jpg,同時設置輸出圖片到guifan文件夾下。
圖14 在GVEdit創建文件並配置參數
然後點擊OK得到如圖15所示的圖形。
圖15 GVEdit運行結果
打開dir_gragh.jpg如圖16,這裡選取cpt_insert文件夾,結合實際存儲結構,可見結構圖與實際的文件結構相符。
圖16 dir_gragh.jpg
3 打開文件fsm_gragh.txt如圖17,將紅框內容複製到GVEdit中,步驟同上。
圖17 fsm_gragh.txt
得到該狀態機結構如圖18,反映了該狀態機各狀態之間的互相轉換。
圖18 fsm_gragh.jpg
4 打開文件instance_gragh.txt如圖19,將紅框內容複製到GVEdit中。
圖19 instance_gragh.txt
打開GVEdit生成的圖片如圖20,由於hdl下工程頂層文件為himac,因此與圖中顯示相符,頂層模塊himac調用工程其他模塊,其他模塊之間,上層模塊調用下層模塊,結構清晰。
圖20 instance_gragh.jpg
5本軟體對於.v文件中的代碼做了規範化處理,如圖21,將模塊埠定義按輸入輸出進行歸納,刪除空行,統一縮進,標點符號及括號自動對齊。
圖21 整理前後比較-module,input,output
如圖22,所有的reg型和wire型變量分別集中在REGS和WIRES下,所有assign語句放在一起。
圖22 整理前後比較-reg,wire,assign
如圖23,文件中對其他模塊的例化部分也進行了規範整理。
圖23 整理前後比較-instance
經過本軟體的整理,整理後的RTL代碼在結構上更加清晰,格式更加整齊,以上舉例即可說明,不再贅述。
6、結論
本軟體實現對Verilog HDL描述的行為級代碼進行自動分析整理。所有文件的整理結果以文本的形式給出,詳細說明注釋率、狀態機等統計結果以及某些明顯不滿足設計規範的寫法的位置,一些較為複雜的不規範代碼需要手動去修改。整理前後的文件不改變其相對路徑關係。可用於團隊項目開發,有利於形成統一的代碼規範標準,增加可讀性,提高設計的效率。
Verilog HDL代碼分析軟體(添加界面)
1、引言1.1編寫目的編寫本使用說明的目的是充分敘述本軟體所能實現的功能及其運行環境,以便使用者了解本軟體的使用範圍和使用方法,並為軟體的維護和更新提供必要的信息。
1.2術語和縮寫詞注釋檢測閾值:指軟體中對代碼注釋率的最低要求。
狀態機:由狀態寄存器和組合邏輯電路構成,能夠根據控制信號按照預先設定的狀態進行狀態轉移,是協調相關信號動作、完成特定操作的控制中心。簡寫為FSM(Finite State Machine)。
2、軟體概述2.1目標使用戶能夠輕鬆掌握本軟體的安裝和使用。
2.2功能該軟體針對Verilog HDL代碼分析實現了如下幾個功能:
1、表及3D餅狀圖的形式將選中的.v文件分析結果展示出來;
2、現對某個文件夾下所有.v文件的自動分析與整理,並將分析結果在軟體中展示出來;
3、可以對某個.v文件進行狀態機提取,並利用WinGraphviz將提取結果以圖形的方式更加直觀的表現出來;
4、可以分析某個文件加下.v文件的調用關係。
2.3性能軟體內核用C語言實現,效率比較高。可以支持不大於2048個文件同時處理。
3、運行環境3.1 軟硬體要求WindowsXP或WIN7作業系統,1G字節以上系統內存,2GHz以上處理器。
3.2 運行環境要求運行環境:需要安裝.NET4.0或以上運行環境。
4、使用說明4.1 安裝和初始化本軟體利用Inno Setup軟體將程序打包為.exe可安裝程序,所有文件在都在Setup文件夾下,如圖1所示。
圖 1程序文件
程序安裝文件分為兩個,一個是VerilogHDL代碼分析軟體.exe,另一個是WinGraphviz_v1.02.24.msi。其中,Verilog HDL代碼分析軟體.exe是整個軟體的主程序,WinGraphviz_v1.02.24.msi是軟體運行中所必須的一個環境包,由於大部分用戶並沒有這個環境,因此在此提供。軟體安裝過程只需運行Verilog HDL代碼分析軟體.exe即可,環境包會自動安裝。
4.2 輸入輸入的文件需要是Verilog HDL語言編寫的.v文件。
4.3 輸出4.3.1 輸出結果文件介紹軟體運行後會生成3個文件夾,下面就每個文件夾具體內容進行分析。
newrtl:分析及整理之後新生成的.v文件,保存在該文件夾下,同時保持原有的相對路徑的關係。
相關圖片:該文件夾下為程序運行過程中所產生的一些圖片文件,可以在用戶所安裝的圖片管理其中查看,更加方便直觀。
整理文檔信息:
dir_graph.txt:文件夾的相互包含關係,及每個文件夾下的.v文件,生成的dot文件。在dot文件中不支持「.」,所有.v後綴都去掉了點。
file_list.txt:該文件的內容為最終分析結果,每個文件的詳細信息包括注釋率等都有詳細說明。
fsm_graph.txt:在分析過程中,若.v文件中有狀態機,則自動提取並生成dot文件保存在該文件中,可以直接用graphz圖形化顯示。
instance_graph.txt:該文件是所有module的調用關係圖形化顯示腳本,也是dot文件,可以圖形化顯示。
4.3.2 輸出圖形顯示文件說明軟體輸出圖形顯示文件為dot格式,可以導入開源工具graphviz工具查看圖形化顯示結果。
4.3.3 輸出舉例dot文件(fsm_graph.txt)顯示說明
生成的dot文件fsm_graph.txt,是以dot語言來進行描述的。文件中按照所分析代碼的順序,將其中的狀態機保存下來。可以選擇其中一種,拷貝到GVedit中進行顯示。顯示效果如圖2所示。
圖 2狀態機顯示圖
本軟體操作分為兩個階段進行。第一階段是安裝exe文件,第二階段,在可視化界面中運行程序,生成對應的結果。
5.1第一階段首先確認你的安裝包裡面有如下文件:
1、Verilog HDL代碼分析軟體.exe(安裝文件)
2、Graphviz_v1.02.24.msi(安裝所必須的軟體環境)
雙擊打開安裝文件,選擇安裝路徑,默認的路徑如圖3所示。我選擇的路徑是默認路徑。
圖 3選擇安裝路徑
點擊next,選擇是否在桌面創建快捷方式,如圖4所示。我選擇的是在桌面創建快捷方式。
圖 4選擇是否創建桌面快捷方式
點擊next,出現如圖5所示內容,信息確認無誤後,點擊next進行安裝,如圖6.
圖 5確認當前所選信息
圖 6安裝
在程序安裝結束後,會自動啟動WinGraphviz.msi文件的安裝(如圖7),如果已安裝該軟體,則點擊Cancel,反之點擊next。
圖 7安裝WinGraphviz.msi軟體
點擊next,進入路徑選擇,默認路徑如圖8所示,此處我是按照默認路徑進行安裝。
圖 8選擇安裝路徑
一直點擊next,安裝過程如圖9所示。
圖 9安裝WinGraphviz.msi過程
出現如圖10所示界面報時安裝完成。
圖 10安裝結束界面、
1、打開Verilog HDL代碼分析軟體,軟體界面如圖11所示,通過左邊選擇框,可以選擇含有多個.v文件的文件夾,並將該文件夾下所有.v文件的分析信息顯示在中間的文件信息顯示框中。可以通過標題欄選擇單個.v文件,然後運行、分析。右邊的兩個框分別以文字、圖表的方式來顯示當前選中的.v文件的詳細信息。當選擇相應的文件夾或文件之後,根據需求,選擇菜單欄中相應的功能即可運行程序。
圖 11軟體界面
2、點擊菜單欄『設置』,可設置程序運行的各項參數,如圖12所示。
注釋率閾值默認為1,可以輸入自定義的數值;
文本編輯器的設置,可以選擇自己電腦所安裝的文本編輯器,如果不進行更改,則使用系統默認的文本編輯器。
圖 12參數設置
3、通過左邊選擇含有.v文件的文件夾,程序自動對當前文件夾下的所有.v文件進行分析。如圖13所示。
圖 13打開含有.v文件的文件夾
也可以選擇某個.v文件,如圖14所示。
圖 14選擇某個.v文件
4、選擇文件夾後,會出現對該文件夾下所有.v文件的分析,選中列表中的某一個.v文件,對應該文件的文本、圖表分析會在右邊顯示,如圖15所示。同時,可以將對該.v文件的文本分析結果輸出,如圖16。輸出的文本如圖17所示。
圖 15某個.v文件的圖表及文本分析結果
圖 16文本分析結果輸出
圖 17輸出文本的內容
此外,雙擊選中的文件,可以以設置的文本編輯器打開該文件,如圖18。
圖 18雙擊選中文件,打開該文件
同時,右擊選中文件,可執行菜單出相應的動作。如圖19。
圖 19右擊選中文件出現的菜單
5、選中文件夾後,可以按照菜單欄上的內容,對文件進行分析。點擊「整理並分析」按鈕,軟體將會調用內置C語言程序,對文件夾下的文件進行分析,如圖20所示,最後分析結果會在「詳細信息」中顯示,同時當前文件夾調用關係的圖片顯示,如圖21。
圖 20整理並分析過程
圖 21分析結果及文件夾相互關係
從上圖會發現一個問題,當要顯示的圖片關係比較複雜時,在程序中查看圖片會出現圖片模糊的問題。因此程序中每張出現的圖片,軟體會自動將其保存在當前分析的文件夾下的「相關圖片」文件夾下,方便查看,如圖22所示。
圖 22圖片保存位置
因為狀態機的提取是針對某個.v文件進行提取,因此再使用菜單欄中「狀態機提取」功能時,需要選擇列表中的某一個.v文件,如果文件中有狀態機,則將該狀態機的圖片顯示並保存;如果該文件中沒有狀態機,則會提示用戶。如圖23所示。
a)當前選中文件不含有狀態機
b)當前選中文件含有狀態機
圖 23狀態機提取
「文件調用分析」,該功能實現了對當前文件夾下的所有.v文件調用關係的分析,將其調用關係以圖片的形式展現,如圖24所示。
圖 24文件調用關係分析結果
6 總結該軟體是一款自動對Veriloghdl描述的行為級代碼進行自動分析整理的軟體,具有代碼分析功能和自動整理功能。代碼分析功能,可以對代碼的注釋率,所有模塊的調用關係,文件路徑及文件夾的關係,以及所有模塊中的狀態機等進行識別提取,並轉化為可視化的圖形顯示腳本,可以方便的採用開源軟體Graphviz進行查看,也可直接在該軟體中查看圖片;代碼整理功能,可以將代碼中所有的輸入輸出、內部變量、參數定義、always模塊、assign語句及例化調用等進行識別提取,並按照固定個格式(統一的縮進)進行輸出,輸出後的文件格式整齊有條理,同時還保留原來的注釋代碼。另外,代碼在整理的過程中,能夠自動的識別FPGA或者後端軟體自動生成的RAM等IP核,不對此類文件進行整理,同時用戶也可以指定某些文件不被整理。整理後文件輸出保持原來文件的相對路徑關係。所有文件的整理結果以文本的形式給出,詳細說明注釋率、狀態機等統計結果以及某些明顯不滿足設計規範的寫法的位置,一些較為複雜的不規範代碼需要手動去修改。該軟體可以用於團隊項目開發,有利於形成統一的代碼規範標準,提高設計的效率,也可以用於教學。
歡迎關注通院專用集成電路課程學習公眾號!