Memory是大家Floorplan中經常使用到一個器件,而且需要花費不少時間去擺放它。Memory的種類很多,各種類型還分別具有不同的參數。那大家有沒有想過,對一個設計來說,我們是如何去選擇合適的memory類型?不同的類型有什么區別?
在后端設計實現中,我們把這一過程稱為memory compiler。下面,我們來介紹下memory compiler的具體內容。
Memory種類
Memory用來存儲和讀寫的大量的二進制數據。按功能上分類,基本可以分為兩大類:只讀存儲器(ROM)和隨機存取存儲器(RAM)。ROM只能讀,不能寫;RAM既能讀又能寫。RAM具有易失性。斷電以后,RAM中保存的數據將全部丟失;而ROM中的數據則可以長久保存。
RAM可以分為常用的SRAM和DRAM。SRAM是靜態的存儲器,存儲單元是一個觸發器,有0,1兩個穩態;DRAM是動態的存儲器,比SRAM要復雜一些,因為它會利用電容器存儲電荷來保存0或1,需要在存儲數據的過程中需要對于存儲的信息不停的刷新。 這邊還需要提到另一種常用的存儲器,我們稱為Register File。 它是由多個寄存器堆組成的陣列,內部結構功能上和SRAM完全類似。只是Register File去除了bist電路,容量較小,速度也比較快。
Memory結構
其實,存儲器內部結構基本都差不多。一般由存儲陣列,地址譯碼器和輸出控制電路組成。我們把存儲陣列以外的電路都稱為外圍電路(Periphery)。存儲陣列是memory的核心區域,它有許多存儲單元組成,每個存儲單元存放一位二值數據。每次讀出一組數據,稱為一組字。一個字中所含的位數稱為字長(Bit)。為了區別各個不同的字,給每個字賦予一個編號,稱為地址,由譯碼器將地址代碼轉譯。地址單元個數就是字數(Depth),用N表示,數值為2n,n為地址碼的位數。
實際運用中,我們經常以字數(Depth)和字長(Bit)的乘積來表示存儲器的容量。如下圖中的ROM容量為28 X 1,有256個字,字長為1位,總共256個存儲單元。容量越大,意味著能存儲的數據越多。
Memory配置
一般foundry提供的memory databook上,會有以下參數指標,然后我們根據上面這個memory來對照一下這些指標。
WL: Physical Word Lines 字線 16條
BL:Physical Bit Lines 位線 16條
WD: Word Depth (WL * MUX)字數 16*16 =256
BIT: I/O Data Width (BL/MUX)字長 16/16 =1
Granularity:步長,WD或者BIT間隔的大小,只能按步長整數倍增加
BANK:分塊,在Memory中,如果Bit line很長,會造成它的充放電速度很慢,導致memory的頻率很低,這時,我們會將存儲陣列分成N個bank來降低Bit line的長度
SEG: 分段,在Memory中,如果Word line很長,會影響它的性能,所以按Word line方向,把存儲陣列分成N個segment.
BANK和SEG圖示如下:
C64,C128,C256: Cell per bit line。每條bit line上掛的存儲單元個數,經常有64,128,256等不同數字,該數值越大,表示配置的memory速度越慢,但是面積會越小;數值越小,表示配置的memory速度越快,但是面積會越大。
通常,大家還會看到類型HD,HC,HP等縮寫,這些都是表征不同類型Bitcell和外圍電路(Periphery)組成的。
HD:High Density Bitcell ,面積較小
HC:High Current Bitcell 高工作電流,access time較小
HP:High PerformancePeriphery ,速度快
LP:Low-Power Periphery ,功耗較小
ULP:Ultra-Low Power Periphery,超低功耗
ULL:Ultra-Low Leakage Periphery,超低漏電流
Memory端口
Memory端口類型也有很大的區別,通常分為單口和雙口。
Register file速度快,面積小,容量小。小容量下,我們應該優先選擇Register file,它可以分為以下三種:
Single port(1RW): 一個端口,只能執行讀或者寫操作
Two port(1R/1W):2個端口,一個端口讀,另一個端口寫,可以獨立不同的時鐘頻率
Pseudo two port(1R/1W):2個端口,一個端口讀,另一個端口寫,只有一個時鐘。
三個種類的示意圖如下:
SRAM包含更多的模塊,容量可以做得更大,可以擁有更多的bank,速度較慢,面積更大。大容量需求時,可以優先考慮SRAM。
SRAM按端口類型也可以分為以下三種:
Single port(1RW): 一個端口,只能執行讀或者寫操作
Dual port(2RW):2個端口,兩個端口可以同時讀寫,可以獨立不同的時鐘頻率
Pseudo two port(1R/1RW):2個端口,一個端口讀,另一個端口可以讀可以寫,只有一個時鐘。
示意圖如下:
Memory compiler方法
說了這么多,最后,如何運行memory compiler呢?
如果你理解了上文中的各個參數含義,那么運行memory compiler是非常簡單的。一般來說,vendor會提供給我們memory compiler,當然每家提供的都不一樣。下載到linux后,填入需要的各個參數(WD,BIT,MUX,Granularity等),然后它就會幫我們生成我們所需要的memory的物理和時序庫。
-
ROM
+關注
關注
4文章
575瀏覽量
85834 -
RAM
+關注
關注
8文章
1369瀏覽量
114774
原文標題:記憶深處有塵埃——Memory Compiler
文章出處:【微信號:IC_Physical_Design,微信公眾號:數字后端IC芯片設計】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論