?? hdl編碼風格與編碼指南.txt
字號:
HDL編碼風格與編碼指南
HDL編碼風格與編碼指南
作者:徐欣 博士 孫廣富 博士
原文出自e元素科技網站
Rev. 0.1
June 30,2002
第一部分:說明
1.準則的重要程度分三個層次:
好的經驗 -- 表明這條規則是一般情況下比較好的經驗,在大多數的情況下
要遵循,在特殊情況下可以突破這一規則。
推薦 -- 推薦這一規則,在遵循這一規則的條件下,一般不會出現問題;
強烈推薦 -- 表示嚴格規定,除非出現特別特殊的情況,否則要嚴格遵守。
2.斜體部分一般表明不按照規則執行,會出現的問題和現象,或一些相關注釋。
3.版本及修訂工作
姓名 徐欣,孫廣富
修訂 規范的最初發布
日期 2002-6-30
聯系方式 Dr.xuxin@163.net
第二部分:HDL編碼風格
1. 文件頭和修訂列表
作為好的源代碼,其中必須包含所有需要的信息。因此源代碼中要
包含文件頭和修訂列表(以獲得修改情況)。
1.1 文件頭包含以下內容:
·模塊名
·文件名
·需要的庫
·模塊描述
·使用的仿真器--其運行平臺和版本
·使用的綜合工具,其運行平臺和版本
·作者名字和e-mail
1.2 修訂列表包含以下內容:
·修訂版本號
·改動的數據
·修訂者名字和e-mail
·改動的詳細描述
下面是一個例子:
Example Header
-------------------------------------------------------------------------------------------
-- Module : MAC (Multiply Accumulate Unit)
-- File : mac.vhd
-- Library : ieee,.......
-- Description : It is a general Purpose Multiply Accumulate Unit capable of
-- Simulator : Modelsim 5.2 / Windows 95
-- Synthesizer : Synplify / Windows95
-- Author / Designer : Harish Y S (harish@opencores.org)
-------------------------------------------------------------------------------------------
Example Revision List
-------------------------------------------------------------------------------------------
-- Revision Number : 1
-- Date of Change : 20th March 2000
-- Modifier : Harish Y S (harish@opencores.org)
-- Description : Initial Design
-------------------------------------------------------------------------------------------
-- Revision Number : 2
-- Date of Change : dd mm yyyy
-- Modifier : XYZ (email)
-- Description : Modified the ????.to improve ????..
-------------------------------------------------------------------------------------------
文件頭的標準模式:
-------------------------------------------------------------------------------
-- Title :
-- Project :
-------------------------------------------------------------------------------
-- File :
-- Author : name <email>
-- Organization:
-- Created :
-- Last update :
-- Platform :
-- Simulators :
-- Synthesizers:
-- Targets :
-- Dependency :
-------------------------------------------------------------------------------
-- Description:
-------------------------------------------------------------------------------
-- Copyright (c) notice
-------------------------------------------------------------------------------
-- Revisions :
-- Revision Number :
-- Version :
-- Date :
-- Modifier : name <email>
-- Desccription :
------------------------------------------------------------------------------
2.聯機注釋
每一個重要的操作和定義后都要加上注釋,描述操作和聲明的使用。
3.命名規則
3.1 實體和結構
規則:
·實體名要確切描述其功能;
·實體名只能用小寫字母,不超過10個字符;
推薦:每個實體最好有一個3-4個字母的縮略名,可以將其應用在其內部的
構造模塊(component)和信號名中。
3.2 端口
規則:
·端口名應和信號相對應,以大寫字母開頭;
·若端口是標準設備,可包含標準名,不超過15個字符;
·端口聲明后要有詳細注釋。
3.3 結構體
結構體定義系統行為,可從不同方面對其進行描述,結構體和實體是
一致的,其名字要表明系統描述的方法。
規則:
·構造體名可用“behavioural”表示行為描述,“structural”表示
結構描述,“RTL”表示寄存器描述等;
·由綜合出來的結構體要有“_syn”后綴,并且在開始和結束出
要注明采用的技術;
·在“ARCHITECTURE”語句前要有一行注釋,說明其功能,
并說明是否可綜合,或僅可仿真。
推薦:當一個設計中包含多個文件時,通過加“_arch”后綴來加以區分。
3.4 元件 component
元件 component在VHDL設計的層次結構中使用。
規則:其名稱以包或實體的縮略名作開頭;
可取有實際意義的單詞,大小寫可混用,最好不要超過8個字符。
3.5 配置
配置是用來說明邏輯模塊和其構造體間的關系。
規則:配置名中要包含頂層設計名;以大寫字母開頭,不超過15個字符。
推薦:加“_cfg”后綴區分多個文件。
3.6包、函數和過程
3.6.1 包
規則:
·包中要包含系統所需定義的所有常量,數據類型,模塊,過程和函數;
·包名以大寫字母開頭,不超過15個字符。
推薦:加“_pkg”后綴區分多個文件,為包定義一個3-4個字符的縮略名,
加在其中的常量,過程和函數名中,用以區分不同包中的內容。
3.6.2 函數和過程
規則:
·以大寫字母開頭,不超過10個字母;
·要體現其功能,用前綴“l_”表示局部變量;
·局部信號應有其特征域。
推薦:加入包的縮略名于其中。
3.7 常量和類屬說明
規則:用大寫字母,要明確描述常量的用法。
推薦:加入包的縮略名于其中。
3.8 枚舉(enumeration),數據類型,記錄和數組
規則:用大寫字母,新數據類型要加后綴“_typ”。
3.9 信號和變量
3.9.1 信號
規則:
·第一個符號必須是字母,信號名要描述其功能,不超過15個字符;
·頭三個字母要顯示說明驅動模塊的類型,要把其驅動實體,模塊或進程
縮略名加在前面:如控制單元--“ctl”,算術邏輯運算單元--“alu”,
乘法器--“mac”,數據地址發生器--“dag”;
·如果信號只是在僅有時鐘的進程中獲得其值的,則加“_q”,若是總線則
加“_reg” 信號定義語句后要有一行注釋描述其功能;
·信號名要表明信號的極性:高電平有效/正邏輯(P),低電平有效/負邏輯(N)
·全局信號“G”,局部信號“L”;若是三態信號,加Z;
·后續字符要說明信號的內容。
例如:“alu{GBaugend”--其驅動的模塊為算術邏輯運算單元,高電平有效
全局信號,是算術邏輯運算單元的其中一個操作數的總線信號。
“macNGWoverflow”--其驅動的模塊是乘法器,低電平有效全局單線信號,
其功能是在乘法器溢出時修改狀態寄存器的溢出標志位。
3.9.2 變量
規則:
·變量名要簡單并能描述其功能;
·變量名可包含各種格式的字母、數字和下劃線;
·變量名要確切的表示其行為。
3.10進程和塊
進程、塊和配置可取有實際意義的單詞,大小寫可混用,最好不超過8個字符。
3.10.1 進程
規則:
·所有進程必須有進程名,用以描述其功能;
·注釋要包含以下內容:組合、時序進程,組合進程要定義所有
敏感信號,時序進程要定義時鐘和其邊沿(上升沿或下降沿), 時序進程還要定義復位信號--如果有的話,其有效與否與時鐘有關。
3.10.2 塊
3.11 測試工作臺 test bench
由于測試工作臺在設計流程種的重要地位,因此,對其有一些特殊的要求。
規則:
·其名稱要與實體名一致,且加后綴“_TB”;
·結構體、進程、變量和信號同樣遵循上述規則;
·內存組織和仿真生成由過程和函數來實現;
·出錯報告要提供下述信息:實體或模塊名,信號或變量名,
過程或函數名,當前時間點,錯誤號或錯誤名,可能的出錯原因,
出錯位置(RTL, structural 或 behavioral代碼);
3.12 文件和目錄結構
現在在目前的集成開發環境中自動管理
3.13 其它
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -