Verilog模型到門級的映射,要注意這些編碼原則

2021-01-19 單眼皮老王

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的質量了。

相關焦點

  • 基於verilog實現哈夫曼編碼的新方法
    配置字符池的同時逐步生成哈夫曼編碼,可以提高硬體利用率,並且無需額外操作來提取哈夫曼編碼。引言  哈夫曼(Huffman)編碼對出現頻率較高的字符採用較短的編碼,對出現頻率較低的字符採用較長的編碼,它可以保證平均碼長最短,具有較高的編碼效率。因而哈夫曼編碼被廣泛應用於數據壓縮領域。
  • 計算機基礎—什麼是編碼?常見編碼有哪些?如何進行轉換?
    現代編碼模型為了能夠更精確的描述在編碼過程中各個產物的歸屬以便正確的描述產物所發揮的功能,於是多事之人將現代的編碼整理為一套可以說明的模型而且分為五層之多。現代編碼模型之分層:1.編碼字符集(CCS:Coded Character Set):是將字符集中每個字符映射到1個坐標(整數值對:x, y)或者表示為1個非負整數。字符集及碼位映射稱為編碼字符集。例如,在一個給定的字符表中,表示大寫拉丁字母「A」的字符被賦予整數65、字符「B」是66,如此繼續下去。簡單來說這就是一個映射關係表,將一串碼值映射到抽象字符表裡的特定字符。
  • 計算機基礎——什麼是編碼?
    這看似簡單的語言轉換過程隨著計算機的普及與網際網路化對語言字符的編碼衝擊也越來越大,編碼規範的調整也伴隨著整個計算機發展歷史。現代編碼模型為了能夠更精確的描述在編碼過程中各個產物的歸屬以便正確的描述產物所發揮的功能,於是多事之人將現代的編碼整理為一套可以說明的模型而且分為五層之多。
  • 刨根問底之——什麼是編碼?
    於是多事之人將現代的編碼整理為一套可以說明的模型而且分為五層之多。現代編碼模型之分層:抽象字符表(ACR:Abstract character repert-oire)是一個系統支持的所有抽象字符的集合。
  • 【E課堂】verilog之可綜合與不可綜合
    本文引用地址:http://www.eepw.com.cn/article/201605/290588.htm  建立可綜合模型時,需注意以下幾點:  不使用initial  不使用#10之類的延時語句  不使用循環次數不確定的循環語句,如forever,while等  不使用用戶自定義原語(UDP元件)  儘量使用同步方式設計電路
  • 軟體安全開發非常實用的編碼原則
    在做好安全軟體開發的準備之後,開發團隊還應當清楚一些安全編碼的基本原則,這是開發任何健壯、安全軟體的重要基礎。針對軟體安全編碼,國際國內很多組織、機構、公司和信息安全專家各自提出了一些編碼原則,以保證得到安全的代碼。常見的安全編碼原則包括以下內容。
  • 商品條碼三大編碼原則,您知道嗎?
    物品編碼與自動識別技術已廣泛應用於零售、製造、物流、電子商務、移動商務、電子政務、醫療衛生、產品質量追溯、圖書音像等國民經濟和社會發展的諸多領域。當產品準備上市銷售前,企業會對其產品進行編碼,此時務必要了解商品條碼的三大編碼原則,即唯一性、穩定性和無含義性原則。它們分別具有什麼特點呢?
  • 敲代碼也要講「基本法」:程式設計師應該遵守的編碼原則
    這就要求大家去遵守一些原則,讓每個成員都編寫乾淨且易於維護的代碼。畢竟,敲代碼也得講「基本法」呀~單一職責編碼一段時間之後,你的代碼很可能會將變得笨拙,也許具有執行多種功能的類/模塊,最終你將得到成百上千行代碼的類。
  • Verilog的兩個原則,把複雜的邏輯表達式寫簡單
    但是一個設計團隊之間,進行RTL模塊的交叉review、相互調用是非常頻繁的事情,所以為了增強RTL代碼的可移植性,以及review的效率,我們通常在一個項目開始的時候,會統一整理一個RTL編碼規則,裡面的內容包括,命名的規則、單詞的縮略原則,一些標準電路的常用寫法等等。今天的文章,就來聊一聊一般常見的規則。
  • Yann LeCun新作:473種模型大對比,中日韓文本分類到底要用哪種編碼?
    例如最近有人使用字符級編碼的神經網絡(ConvNets)來處理語言中的單詞分割問題,但是很不幸的是,用字符來處理CJK語言並不很好,因為這時候字符的數量會變得非常巨大。所以能否找到一種在處理所有這些自然語言上都表現優良的模型呢?作者的方法就是,列出一系列模型(473個), 然後比較它們的表現。一、數據集(data sets)這篇文章考慮了4種語言,分別為漢語、英語、日語和韓語。
  • 我從高級開發者身上學到的19條編碼原則
    在這篇文章中,一位全棧首席開發者總結了高級開發人員的 19 個編碼原則,可以幫助新手少踩些坑。進行軟體開發,整天敲代碼、好不容易調試成功,但是代碼的質量堪憂,可讀性不是很高,反過頭來還得對代碼進行完善。也許這不是你的編碼能力問題,很有可能在你進行代碼編寫時,一些看似不重要的編碼注意事項沒有遵守。
  • 最新最全GPT-3模型網絡結構詳細解析
    看了這些文章並不足以詳細了解GPT-3模型,仍然需要認真研究相關論文和博客。因此,本文主要目標:幫助其他人對GPT-3體系結構有一個儘可能詳細的了解。還要注意,由於矩陣乘法計算法則限制,所以將embedding函數(又稱embedding權重矩陣)分別應用於每個單詞編碼(即序列編碼矩陣中的行)。換句話說,結果與將每個單詞編碼向量分別傳遞給embedding函數並在最後將所有結果串聯在一起是相同的。這意味著什麼:此過程最終,沒有信息流過整個序列,也沒有關於Token的絕對或相對位置的信息。
  • 神經機器翻譯的編碼-解碼架構有了新進展, 具體要怎麼配置?
    嵌入:512維RNN小區: 門控循環單元或GRU編碼器:雙向編碼深度: 2層 (每個方向一層)解碼深度:2層注意: Bahdanau風格優化器:Adam信息丟失:20%的投入每個實驗都從基準模型開始,並且改變了一個要素,試圖隔離設計決策對模型技能的影響,在這種情況下,
  • 具有注意力機制的seq2seq模型
    與新聞文章相比,你在準備考試時會相當注意閱讀。在準備測試的時候,你會更加關注關鍵詞來幫助你記住一個簡單或複雜的概念。這也意味著我們要專注於某一特定領域的任何深度學習任務。序列到序列(Seq2Seq)模型使用編碼器-解碼器架構。
  • 移動人群感知中多模態數據融合的兩階段空間映射方法
    這些差異使得多模態數據的學習更加困難。對於目前多模態數據的表示,也有一些相關的研究。這些研究主要針對一些常見的模態數據,分析這些數據之間的關係和差異,如圖像和文本、視頻和音頻。某些模態的方法並不適用於其他模態數據。因此,我們提出了一種多模態數據融合的兩階段方法。首先,通過規範的編碼結構對不同模態數據進行編碼。
  • 從編碼到輸出,手繪圖逐層拆解 GPT-3 結構
    還要注意的是,由於矩陣乘法的工作原理,嵌入函數(即嵌入權重矩陣)分別應用於每個單詞編碼(即序列編碼矩陣中的行)。也就是說,這一結果和將每個單詞編碼向量分別傳遞給嵌入函數並在最後將所有結果拼接在一起,是一樣的。這意味著:在此過程中,沒有信息流過整個序列,也沒有關於 Token 的絕對或相對位置信息。
  • SOLID設計原則解釋 - 單一責任原則
    SOLID是面向對象軟體開發中最流行的設計原則之一。它是以下五個設計原則的助記符縮寫:單一責任原則開放/封閉原則利斯科夫替代原則接口隔離原理依賴倒置單一責任原則的好處在我們深入探討這個設計原則之前,讓我們先解決最重要的問題:為什麼要使用它?如果忽略它會發生什麼?
  • DeepMind提出空間語言集成模型SLIM,有效編碼自然語言的空間關係
    我們認為,朝人類水平的理解場景描述能力發展的重要一步是建立能夠捕捉這些不變性的表徵。在本文中,我們介紹了一個能學習此類表徵的多模態架構。為了訓練和驗證該模型,我們創建了一個 3D 場景的大型數據集,包括場景和不同角度的語言描述。我們對學到的表徵進行評估,通過從訓練數據中未看到的角度生成圖像並檢查它們是否符合這種新角度下對場景的自然語言描述,來確保它們確實能夠泛化。
  • 比較Verilog中Wire和Reg的不同之處
    比較Verilog中Wire和Reg的不同之處 MangoWen 發表於 2020-03-08 17:18:00 wire 和reg是Verilog程序裡的常見的兩種變量類型,他們都是構成verilog