官术网_书友最值得收藏!

1.11 關于本書描述方法的約定

在進入本書的正題之前,先要與讀者建立一些描述上的約定,或者說是對平時工作中混用的一些概念進行詳細界定,以保證書中的內容不被誤解。

本書對寄存器和觸發器的概念并不做嚴格區分。一般而言,用寄存器一詞重點指它的功能,即具有寄存數據功能的元器件,至于它內部如何實現則并不關心。寄存器一般用reg表示,即register的縮寫。寄存數據的物理實體很多,例如觸發器(Flip-Flop,FF)和鎖存器(Latch)等。在數字設計中,主要提倡用觸發器。寄存器是受控于時鐘沿的元器件,Foundry會在標準單元庫中提供多種寄存器,例如圖1-5中展示的3種。觸發器是由邊沿信號而非電平導致數據存儲的,在圖中,畫三角號的CP就是觸發源,一般CP接的是時鐘信號。雖然觸發器有多種,但工程師在設計時,頭腦中閃現的只有圖1-5(a)的結構,因為這是最基本結構,其他結構,如(b)和(c),都由此衍生而來,最后由綜合器根據RTL描述的情況,自行決定選用哪種結構。對于觸發器,數字工具鏈的內部有嚴格的時鐘時序控制機制及保證它正常運行的流程方法,能夠確保流片前的仿真與流片后的芯片在效果上一致。

圖1-5 觸發器的3種類型舉例

鎖存器較少使用,它一般以非時鐘信號作為存儲控制,如圖1-6所示,D是數據輸入端,Q是數據輸出端,SDN和EN是控制信號,只有當SDN為1且EN為0時,Q端會存儲D輸入的數據,當SDN為1且EN為1時,Q忽略D的輸入,保持不變,當SDN為0時,忽略其他輸入信息,Q值被復位為1。與觸發器的邊沿控制不同,EN是一個電平信號,一般它不連接時鐘,而是連一根普通的信號線。這種鎖存器很難被納入時序計算中,因為它既不屬于組合邏輯,又無法像觸發器一樣作為時序路徑的起終點,所以時序上無法通過工具保證,只能由工程師自己來保證。

圖1-6 一種鎖存器的原理圖

綜上,本書中說的寄存器,基本也可以替換為觸發器。在數字芯片EDA工具鏈中,兩個概念也是混用的,一個reg既可以指寄存器,又可以指觸發器。另外,所謂時序邏輯門電路,也基本等同于觸發器。

另外一個重要的概念是設計的邊界。綜合的對象是設計(Design),而不是芯片。因本書只講解數字電路,所講的設計指的是數字電路設計。芯片中的模擬電路部分會特別稱為模擬電路。芯片是由數字和模擬兩部分構成的,所以設計不能指代芯片本身,甚至設計都不能指代全部的數字電路,因為有些綜合是分塊的,例如將數字電路分為兩塊,分別綜合并布局布線后,以硬IP方式被模擬版圖工程師拼裝到整體版圖上。本書所描述的對象,除特別說明外,均指一個綜合對象,在書中稱其為本設計或直接稱為設計。

是設計就有輸入/輸出線。在數字設計中,需要嚴格區分不同類型的輸入/輸出線,特別是在綜合時,直接與所用的命令相關。具體的稱謂如圖1-7所示。圖中包含兩塊數字設計,分別進行綜合與PR,因此它們在本書中界定為兩個獨立的設計。設計有總的輸入/輸出線,稱為端口(Port),在綜合時選取Port用命令get_ports。在本書中,Port和端口是混用的,輸入的Port稱為輸入端,輸出的Port稱為輸出端。

圖1-7 數字設計邊界和輸入/輸出線的稱謂

設計之間、設計與模擬電路間都使用Port相連。也有一些Port是直接伸向芯片外界的,這些Port習慣上稱為引腳、管腳、Pad、I/O。本書使用引腳和Pad的稱呼。

在設計內部,有例化的元器件,也有很多子模塊,它們也都有輸入/輸出線,稱為Pin,在本書中稱為Pin腳,在綜合時選取Pin腳用命令get_pins,需要注意它與Port的區別。另外,Pin一詞也容易與通信中的Ping相混淆,后者是發送測試報文證明網絡暢通的意思。

端口、引腳等稱謂偏向于物理概念,在設計階段和驗證階段,不需要特別區分,在本書中,它們被統稱為接口。只有特別強調其物理屬性時,才用不同的名稱加以區分。

SPI、I2C、UART、USB、SerDes等通用接口的稱呼,本書仍稱其為接口。對于AHB、APB等總線上的信號,也統稱為總線接口。

另外,本書在討論中還涉及設計內部和設計外部的描述,稱為設計之內和設計之外。雖然這樣用詞準確,但用多了就難免啰唆,所以本書中也常用片內/片外的稱謂來代替。雖然片內實際指芯片之內,片外指芯片之外,但對于以設計為中心的本書來講,設計以外其實都可以看作片外。

設計內部用RTL表示的抽象邏輯,除時鐘外,均稱為信號或數據。本書用時鐘或時鐘信號稱謂來指代時鐘,單獨出現的信號一詞表示非時鐘的其他信號。

本書所講的元器件,指的是芯片中的組合邏輯門電路及時序邏輯門電路,而標準單元庫或工藝庫指的是囊括了這些可選元器件的集合。數字設計只能在已有的選項中挑選元器件,不能創造元器件,類似自助餐而非開小灶點菜,Foundry提供什么,數字設計就用什么,因此,這些備選的元器件也稱為標準單元(Standard Cell)。

圖1-3已經說明了I/O與Pad(引腳)之間的區別。I/O是一種標準單元,但它比較特殊,與其他的標準單元可能不放在同一個標準單元庫中,驅動電平也可能不同。為了簡化表述,本書將包含I/O的標準單元庫稱為引腳單元庫,不再稱其為標準單元庫,以示區別。以元器件庫作為兩個庫的統稱。標準單元庫中的元器件,本書稱為標準單元。引腳單元庫中的元器件,本書稱為I/O或I/O器件。兩者統稱為元器件。

若不涉及I/O內部結構的討論,則I/O一般用引腳一詞來代替。

在綜合時,有一個中間步驟是將RTL抽象邏輯先映射為通用單元(Generic Boolean),然后映射到標準單元。通用單元與工藝無關,也不包含物理特性,只有功能屬性,與RTL描述類似,而標準單元既有功能屬性,又有延遲、電壓等工藝屬性,與工藝和Foundry有關,因此,讀者需要區分通用單元和標準單元。通用單元的集合稱為通用單元庫,它與標準單元庫是不同的。

芯片設計還需要Foundry提供的lef文件和lib文件,它們都描述了特定流片工藝下元器件的特性,其中,lef文件描述了元器件的物理屬性,lib文件描述了元器件的功能屬性。lib文件經常被編譯為二進制的db文件才能在某些EDA工具中使用。在本書中,將lef和lib文件統稱為技術庫。設計文件除了RTL外,也可以帶有物理信息,保存為def文件,它的基礎內容是設計的形狀和尺寸,擴展內容包括端口的分布位置、RAM和ROM等硬核的放置位置、內部元器件的放置和布線位置等。本書將RTL和def統稱為設計。由于本書主要關注抽象的RTL設計方法,技術庫的概念并不常用,而且,在使用設計一詞時,默認指其中的RTL部分。

在設計者看來,不論是元器件還是自己寫的模塊,都是可供調用的零部件,它們可以拼湊成一顆芯片,但有時也需要區分自己寫的模塊和元器件。本書將自己寫的模塊稱為設備(Device)或模塊(Module),以示區別。用設備一詞主要強調它具備相對獨立的功能,在介紹SoC架構等上層邏輯時較為常用,設備也經常被替換為單元(Unit)一詞,它指的是人為設計的單元,而非標準單元。用模塊一詞主要強調它在設計文件結構上的獨立性,在介紹通用設計和底層邏輯時較為常用。需要注意,本書的設備不是指普通意義上的成套設備,而是比設計低一級的概念,一個設計中可以包含許多設備。當然,設備也可以在設計之外,例如仿真時,為了驗證DUT的功能,需要在TB上編寫一些虛擬設備與DUT相連,并和DUT協同工作。

在需要區分數字和模擬但不需要區分元器件和設備的語境下,本書使用數字器件和模擬器件的稱呼。其他包含器件的名詞還有時序邏輯器件、組合邏輯器件、存儲器件、時鐘門控器件、邏輯器件、延遲器件、I/O器件等。元器件也稱為邏輯門,其中,時序邏輯器件也可稱為時序邏輯門,組合邏輯器件可稱為組合邏輯門。

在談及時序分析時,本書將使用滿足、收斂等詞來表示符合時序要求,用不滿足、不收斂或違例等詞匯來表示不符合時序要求。

讀者應認真熟悉上述規定,以便更加清晰地理解本書內容。

主站蜘蛛池模板: 武定县| 海门市| 明光市| 安平县| 邛崃市| 渭源县| 沂水县| 四会市| 白水县| 报价| 永新县| 华蓥市| 宿松县| 临桂县| 金昌市| 天峻县| 讷河市| 德兴市| 张家界市| 宁强县| 墨竹工卡县| 福州市| 揭东县| 额济纳旗| 睢宁县| 白山市| 甘谷县| 黔西| 永顺县| 普陀区| 甘肃省| 桑植县| 河北区| 石首市| 临城县| 广宁县| 湟中县| 平和县| 贺州市| 鹤山市| 江孜县|