Design Compiler(DC)作為Synopsys公司開發的一款用於電路綜合的EDA工具,在全球數字電路市場去得了巨大的成功,它的設計初衷是將用Verilog HDL語言描述的RTL(寄存器傳輸級)電路,映射成基於某個特定工藝庫的門級網標。
那麼數字前端設計工程師編寫的RTL,對綜合的結果到底有沒有影響呢?什麼樣的RTL,會有利於工具的綜合?這就是今天這篇文章的主題。
Verilog HDL編碼效率
Design Compiler的輸入是用Verilog HDL編寫的RTL和時序、面積等約束條件,那麼在同樣的約束條件之下,不同的RTL,得出的綜合結果(包括時序和面積)會相差非常多。這就是因為不同的編碼效率所致。
大量的事實證明,Verilog編碼效率決定Design Compiler綜合得到的電路性能的高低。DC工具的優化只能是雪中送炭,而不能錦上添花。所以如果是一段非常低效的RTL代碼,DC也不能綜合出來一個高效的電路。
後面將對Verilog HDL中的幾種主要結構(always、case等等),進行分析,希望能夠讓大家對Verilog HDL和DC綜合的電路之間,有一個初步的映射。
可綜合Verilog HDL的編寫原則
我們在工作中,總結出了一些Verilog的編碼原則,它們如下所示:
從電路到RTL代碼。在編碼之前,需要先大概想出,電路的基本模型,verilog只是將這個模型描述出來。且不可只是寫代碼,根本不知道所寫的RTL,究竟是否能夠通過DC,映射成電路,或者說,能夠映射成什麼樣的電路。RTL的代碼層次要清楚。功能越是複雜,越要注意RTL的邏輯層次結構。這是保證數據流和所設計模塊清晰的基本條件。參數的使用。在實際工作過程,因為前端需求變動,規格更改的情況時有發生,所以參數的應用,絕對是減少自己工作量的重要手段。保證RTL的可綜合性。Verilog HDL中有許多語句,是不能使用DC合成的,在編寫RTL時,一定要避免使用(在驗證過程中可以使用)。信號命名要有實際意義。有意義的信號命名,不經可以使我們再編碼過程中,思路清楚,更重要的是,在驗證過程中,能夠提升我們Debug效率。避免latch的產生。在if-else\case語句結構中,必須保證分支的完整性,避免latch的產生。
小結
今天文章討論了編碼質量的重要性,以及一些實際的編碼原則,來保證代碼質量。只要嚴格按照編碼標準和規範,才能從根本上保證RTL的質量了。