前兩期,我們分別對(duì)OTP和MTP,RAM和ROM進(jìn)行了比較。這一次,我們來(lái)談?wù)凪emory Compiler,以及通過(guò)它生成的Register file和SRAM。
什么是Memory Compiler ?
Memory Compiler,內(nèi)存編譯器。顧名思義,是用來(lái)生成不同容量memory的工具,輸入?yún)?shù),我們就可以得到生成的文件。生成的文件包括:前端設(shè)計(jì)verilog模型、邏輯綜合的時(shí)序庫(kù)、后端需要的電路網(wǎng)表和LEF/GDS版圖文件、其他DFT驗(yàn)證相關(guān)的、datasheet手冊(cè)等等。
Memory Compiler由供應(yīng)商提供,往往是不通用的,界面也不盡相同。同一個(gè)廠商的不同工藝下,Memory Compiler不同。相同工藝,不同廠商,Memory Compiler也不同。內(nèi)存編譯器通常是供應(yīng)商的知識(shí)產(chǎn)權(quán),其功能是根據(jù)客戶(hù)的需求生成各種類(lèi)型的memory。
一般的Memory Compiler提供五個(gè)ram腳本(rf_sp,sram_sp,rf_tp,sram_dp,rom)。這意味著可以生成1 Port Register file、Single Port SRAM、2 Port Register file、Dual Port SRAM以及ROM。不同的廠商或許還擁有特殊工藝。
一般來(lái)說(shuō),MC只生成常用的memory,特殊的往往需要定制或者組合。
考慮到面積和性能,又可以劃分為High Speed和High Density等等。

圖源知乎:SMIC 的Memory Compiler,由Artisan公司提供
Memory Compiler使用介紹
在使用Memory Compiler時(shí),請(qǐng)務(wù)必確保你的RAM從頭到位的規(guī)格與設(shè)定都相同,否則會(huì)造成一些不可避免的錯(cuò)誤。
首先在RTL代碼階段,要用到RAM就要用到verilog代碼,此時(shí)不需要著急產(chǎn)生其他后階段的必要數(shù)據(jù),因?yàn)镽TL代碼階段只需要行為級(jí)模型即可。
當(dāng)進(jìn)入門(mén)級(jí)代碼后,RAM compiler就要產(chǎn)生其他的相關(guān)數(shù)據(jù)了,同時(shí)要考慮RAM版圖的位置與方向。由于重大的設(shè)計(jì)不會(huì)一蹴而就,所以有兩個(gè)重點(diǎn),第一個(gè)是每次使用RAM compiler時(shí)都一定要讓它產(chǎn)生特性設(shè)置文檔,避免忘記自己做過(guò)的設(shè)定。第二件事是對(duì)應(yīng)的文件名要定義好,否則RAM的方向不同但是又用到了相同的文件名,就會(huì)把原始數(shù)據(jù)覆蓋掉。
RTL階段
在RTL階段主要只是產(chǎn)生verilog行為級(jí)和設(shè)置文件。因?yàn)樵赗TL階段不需要考慮RAM的位置信息。Memory Compiler提供多種選擇,在這個(gè)階段,選擇生成RF或是SRAM,以及確定端口數(shù)量。如果容量比較大的話(huà),相同設(shè)置下,單端口比雙端口面積要小,速度也要快,功耗要低。
綜合與布局布線(xiàn)階段
為了避免重新啟用Memory Compiler與以前設(shè)置有出入,所以最好一次性將Memory Compiler能夠產(chǎn)生的相關(guān)數(shù)據(jù)一并輸出。在這里,Memory Compiler還需要產(chǎn)生3種數(shù)據(jù)。
.LIB 該數(shù)據(jù)是RAM的時(shí)序信息文件
.VCLEF 布局布線(xiàn)工具需要使用的物理信息文件
.SPEC RAM的注釋文件
在布局布線(xiàn)前,需要考慮RAM的長(zhǎng)與寬,估計(jì)它的位置與方向,盡量讓功能想關(guān)的模塊靠近一些。
將產(chǎn)生的.LIB文件轉(zhuǎn)換成.DB文件,就可以把Memory Compiler生成的RAM加入到代碼中進(jìn)行綜合了。在綜合工具的腳本中的serch_path下加入RAM的DB文件地址即可。
以上為Memory Compiler大致的使用流程,不同的工具在細(xì)節(jié)上或許有所區(qū)別,但大體流程如此。

蘇州騰芯微電子的Memory Compiler界面
接下來(lái),我們來(lái)聊一聊,生成的memory——Register file和SRAM。
Register file與SRAM的比較
首先,厘清一下概念上的問(wèn)題,Register file和很多的registers不是同一個(gè)概念。我們?cè)?a href="http://www.brongaenegriffin.com/v/tag/1055/" target="_blank">IC設(shè)計(jì)里談到register時(shí),常常是指D觸發(fā)器,而Register file是一種memory。
那么,同為Memory Compiler生成,RF和SRAM有什么區(qū)別呢?在比較中,不同規(guī)格相比較顯然不夠客觀,也不能讓我們更清晰地認(rèn)識(shí)到它們的差異。
在比較前,我們需要先把端口的概念搞清楚:
1 port,single port:?jiǎn)味丝?,讀寫(xiě)同端口,需要WE控制輸入輸出
2 port:雙端口,讀寫(xiě)分開(kāi),輸入輸出端口固定,可以不用WE控制
dual port:同樣是雙端口,但讀寫(xiě)端口不固定,且都可讀可寫(xiě)

RF 的端口示意圖

SRAM 的端口示意圖
所以我們應(yīng)當(dāng)把1P RF和SP SRAM,2P RF和DP SRAM比較,才有意義。
1 Port Register file 和 Single Port SRAM
同為單端口,從外部端口看,難以區(qū)分1P RF和SP SRAM的區(qū)別,但是我們可以從以下幾個(gè)方面,來(lái)進(jìn)行區(qū)分。
首先我們以Memory Size:512*32的1P RF和SP SRAM為例。

此為1P RF

此為SP SRAM
從datasheet直觀上來(lái)看,SRAM比Register file多了OEN(輸出使能)。
除此之外,Register file和SRAM兩者相比,SRAM的最大容量比RF要大。相同配置下,RF的面積更大,功耗更低。
在mem比較小的情況下用RF劃算,并且同樣的mem,RF的長(zhǎng)寬比會(huì)更小,方便后端floorplan。大容量的時(shí)候,SRAM的速度是有優(yōu)勢(shì)的。并且SRAM速度快,面積小。同樣大小的RF,面積就很大了,速度也慢下來(lái)了。
所以簡(jiǎn)單來(lái)說(shuō),小容量選RF,大容量選SRAM。

2P Register file 和 Dual Port SRAM
比起1P RF與SP SRAM的比較,2P RF與DP SRAM的差異較為直觀。
2P RF有一個(gè)輸入數(shù)據(jù)總線(xiàn),一個(gè)輸出的數(shù)據(jù)總線(xiàn)。DP SRAM有兩個(gè)數(shù)據(jù)輸入總線(xiàn),兩個(gè)數(shù)據(jù)輸出總線(xiàn)。
換句話(huà)說(shuō),2P RF是一組信號(hào),讀寫(xiě)端口固定;而DP SRAM則有兩組信號(hào),讀寫(xiě)不分開(kāi)。
且兩組信號(hào),每組都有自己的地址,輸入數(shù)據(jù)總線(xiàn),輸出數(shù)據(jù)總線(xiàn),時(shí)鐘,讀/寫(xiě)控制。這兩組可以分別往存儲(chǔ)單元寫(xiě),或從存儲(chǔ)單元讀出。讀可以一直讀,寫(xiě)時(shí)數(shù)據(jù)可能存儲(chǔ)單元數(shù)據(jù)更新,數(shù)據(jù)也可能輸出端口。
DP SRAM就好像2個(gè)SP SRAM共用存儲(chǔ)單元。
具體的應(yīng)用,需要結(jié)合設(shè)計(jì)人員和項(xiàng)目自身的需求來(lái)選用。小容量,地址少的用RF。有兩個(gè)外設(shè)要同時(shí)讀寫(xiě)SRAM的,就要用DP SRAM。涉及到具體的選取,則需要由設(shè)計(jì)人員自己做判斷了。
以下為讀寫(xiě)時(shí)序圖:

圖源:數(shù)字IC自修室
審核編輯 :李倩
-
ROM
+關(guān)注
關(guān)注
4文章
579瀏覽量
88711 -
sram
+關(guān)注
關(guān)注
6文章
814瀏覽量
117336 -
編譯器
+關(guān)注
關(guān)注
1文章
1672瀏覽量
51234
原文標(biāo)題:科普:Register file和SRAM
文章出處:【微信號(hào):IP與SoC設(shè)計(jì),微信公眾號(hào):IP與SoC設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
什么是Register Renaming(寄存器重命名)/R
什么是Register Pressure(寄存器不足) /
什么是Remark/Register Contention/
什么是File
SRAM,SRAM原理是什么?
C語(yǔ)言register變量和extern及static等知識(shí)總結(jié)
Linux命令file的案例說(shuō)明
ADAU7118 Automated Register Window Builder XML File
進(jìn)行design partition時(shí),為什么推薦使用register out的方式
Gowin RAM Based Shift Register用戶(hù)指南
Gowin RAM Based Shift Register參考設(shè)計(jì)
科普Register file和SRAM
電源關(guān)斷模塊中的retention register低功耗設(shè)計(jì)
科普:Register file和SRAM
評(píng)論