前兩期,我們分別對OTP和MTP,RAM和ROM進行了比較。這一次,我們來談談Memory Compiler,以及通過它生成的Register file和SRAM。
什么是Memory Compiler ?
Memory Compiler,內存編譯器。顧名思義,是用來生成不同容量memory的工具,輸入參數,我們就可以得到生成的文件。生成的文件包括:前端設計verilog模型、邏輯綜合的時序庫、后端需要的電路網表和LEF/GDS版圖文件、其他DFT驗證相關的、datasheet手冊等等。
Memory Compiler由供應商提供,往往是不通用的,界面也不盡相同。同一個廠商的不同工藝下,Memory Compiler不同。相同工藝,不同廠商,Memory Compiler也不同。內存編譯器通常是供應商的知識產權,其功能是根據客戶的需求生成各種類型的memory。
一般的Memory Compiler提供五個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。不同的廠商或許還擁有特殊工藝。
一般來說,MC只生成常用的memory,特殊的往往需要定制或者組合。
考慮到面積和性能,又可以劃分為High Speed和High Density等等。
圖源知乎:SMIC 的Memory Compiler,由Artisan公司提供
Memory Compiler使用介紹
在使用Memory Compiler時,請務必確保你的RAM從頭到位的規格與設定都相同,否則會造成一些不可避免的錯誤。
首先在RTL代碼階段,要用到RAM就要用到verilog代碼,此時不需要著急產生其他后階段的必要數據,因為RTL代碼階段只需要行為級模型即可。
當進入門級代碼后,RAM compiler就要產生其他的相關數據了,同時要考慮RAM版圖的位置與方向。由于重大的設計不會一蹴而就,所以有兩個重點,第一個是每次使用RAM compiler時都一定要讓它產生特性設置文檔,避免忘記自己做過的設定。第二件事是對應的文件名要定義好,否則RAM的方向不同但是又用到了相同的文件名,就會把原始數據覆蓋掉。
RTL階段
在RTL階段主要只是產生verilog行為級和設置文件。因為在RTL階段不需要考慮RAM的位置信息。Memory Compiler提供多種選擇,在這個階段,選擇生成RF或是SRAM,以及確定端口數量。如果容量比較大的話,相同設置下,單端口比雙端口面積要小,速度也要快,功耗要低。
綜合與布局布線階段
為了避免重新啟用Memory Compiler與以前設置有出入,所以最好一次性將Memory Compiler能夠產生的相關數據一并輸出。在這里,Memory Compiler還需要產生3種數據。
.LIB 該數據是RAM的時序信息文件
.VCLEF 布局布線工具需要使用的物理信息文件
.SPEC RAM的注釋文件
在布局布線前,需要考慮RAM的長與寬,估計它的位置與方向,盡量讓功能想關的模塊靠近一些。
將產生的.LIB文件轉換成.DB文件,就可以把Memory Compiler生成的RAM加入到代碼中進行綜合了。在綜合工具的腳本中的serch_path下加入RAM的DB文件地址即可。
以上為Memory Compiler大致的使用流程,不同的工具在細節上或許有所區別,但大體流程如此。
蘇州騰芯微電子的Memory Compiler界面
接下來,我們來聊一聊,生成的memory——Register file和SRAM。
Register file與SRAM的比較
首先,厘清一下概念上的問題,Register file和很多的registers不是同一個概念。我們在IC設計里談到register時,常常是指D觸發器,而Register file是一種memory。
那么,同為Memory Compiler生成,RF和SRAM有什么區別呢?在比較中,不同規格相比較顯然不夠客觀,也不能讓我們更清晰地認識到它們的差異。
在比較前,我們需要先把端口的概念搞清楚:
1 port,single port:單端口,讀寫同端口,需要WE控制輸入輸出
2 port:雙端口,讀寫分開,輸入輸出端口固定,可以不用WE控制
dual port:同樣是雙端口,但讀寫端口不固定,且都可讀可寫
RF 的端口示意圖
SRAM 的端口示意圖
所以我們應當把1P RF和SP SRAM,2P RF和DP SRAM比較,才有意義。
1 Port Register file 和 Single Port SRAM
同為單端口,從外部端口看,難以區分1P RF和SP SRAM的區別,但是我們可以從以下幾個方面,來進行區分。
首先我們以Memory Size:512*32的1P RF和SP SRAM為例。
此為1P RF
此為SP SRAM
從datasheet直觀上來看,SRAM比Register file多了OEN(輸出使能)。
除此之外,Register file和SRAM兩者相比,SRAM的最大容量比RF要大。相同配置下,RF的面積更大,功耗更低。
在mem比較小的情況下用RF劃算,并且同樣的mem,RF的長寬比會更小,方便后端floorplan。大容量的時候,SRAM的速度是有優勢的。并且SRAM速度快,面積小。同樣大小的RF,面積就很大了,速度也慢下來了。
所以簡單來說,小容量選RF,大容量選SRAM。
2P Register file 和 Dual Port SRAM
比起1P RF與SP SRAM的比較,2P RF與DP SRAM的差異較為直觀。
2P RF有一個輸入數據總線,一個輸出的數據總線。DP SRAM有兩個數據輸入總線,兩個數據輸出總線。
換句話說,2P RF是一組信號,讀寫端口固定;而DP SRAM則有兩組信號,讀寫不分開。
且兩組信號,每組都有自己的地址,輸入數據總線,輸出數據總線,時鐘,讀/寫控制。這兩組可以分別往存儲單元寫,或從存儲單元讀出。讀可以一直讀,寫時數據可能存儲單元數據更新,數據也可能輸出端口。
DP SRAM就好像2個SP SRAM共用存儲單元。
具體的應用,需要結合設計人員和項目自身的需求來選用。小容量,地址少的用RF。有兩個外設要同時讀寫SRAM的,就要用DP SRAM。涉及到具體的選取,則需要由設計人員自己做判斷了。
以下為讀寫時序圖:
圖源:數字IC自修室
審核編輯:湯梓紅
-
sram
+關注
關注
6文章
768瀏覽量
114808 -
內存
+關注
關注
8文章
3045瀏覽量
74205 -
Memory
+關注
關注
1文章
77瀏覽量
29063 -
Register
+關注
關注
0文章
36瀏覽量
13946 -
編譯器
+關注
關注
1文章
1640瀏覽量
49223
原文標題:科普:Register file和SRAM
文章出處:【微信號:IC學習,微信公眾號:IC學習】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論