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