在ASIC設(shè)計中,我們使用FIFO或者RAM的時候經(jīng)常會用到校驗位,例如奇偶校驗或者ECC(海明碼)校驗,當(dāng)然,也有可能不使用任何校驗位。那么我們需要一個深度為32,數(shù)據(jù)位寬為119bit的ram(cfg_32x119_ram_wrapper),那么實際底層的ram尺寸到底是多少呢?就是32x119 嗎?大概率不是。
1.一個ram wrapper可能是拼接而成的
RAM的位寬和深度不是任意的,是根據(jù)設(shè)計人員的需求,然后由工具產(chǎn)生相應(yīng)的ram。我們需要的是32x119的ram,實際分配給設(shè)計人員的可能是兩個32x64的ram,深度和寬度都可能存在冗余。Ram的產(chǎn)生通常有兩種方式,由設(shè)計人員或者中端人員提供ram信息列表。至少包含如下信息:Memory生成工具會根據(jù)實際需要的位寬,深度,讀寫時鐘頻率才進(jìn)行決策,產(chǎn)生相應(yīng)的Memory。
| RAM_NAME | RAM_TYPE | DEPTH | WIDTH | ECC/PARITY | Wclk_freq | Rdclk_req |
| afifo_16x72_wrapper | 1r1w | 16 | 72 | 1 | 1200 | 1000 |
一顆大的ram可能是有多個小的ram拼接起來的。在布局布線時,多個小的方形的ram大概率會比長條形狀的ram更容易擺放(不絕對)。

2.ram/fifo 校驗位需要額外的數(shù)據(jù)位寬

如圖所示為1r1w的ram為例,cfg_32x119_ram_wrapper為verilog代碼直接調(diào)用層次的ram_wrapper,表示了一個深度為32,數(shù)據(jù)位寬為119bit的ram。ram_asic.v為真實的ram IP。其中119bit的數(shù)據(jù)位寬緊張ECC計算需要7bit的校驗位,因此物理IP最少需要126bit的ram IP。通常memory產(chǎn)生工具會更具時鐘頻率,深度位寬等因素對ram進(jìn)行切分,因此本例中,使用了2個32x64的ram ip。
在data_in寫入ram_asic模塊之前,會經(jīng)過ecc_gen模塊,產(chǎn)生7bit的ecc校驗位,隨著數(shù)據(jù)一同寫入ram_asic,其中data_in[63:0]寫入第一個ram_asic,{2’b0,ecc_in[6:0],data_in[118:64]}寫入第二個ram_asic。從ram_asic讀出的數(shù)據(jù)會經(jīng)過ecc_out模塊經(jīng)過ecc校驗,輸出校驗后的data_out[118:0]和2bit的ecc_err_out告警。
審核編輯:劉清
-
RAM
+關(guān)注
關(guān)注
8文章
1398瀏覽量
119830 -
ASIC設(shè)計
+關(guān)注
關(guān)注
0文章
33瀏覽量
11034 -
ECC
+關(guān)注
關(guān)注
0文章
100瀏覽量
21559 -
FIFO存儲
+關(guān)注
關(guān)注
0文章
103瀏覽量
6288
原文標(biāo)題:RAM:位寬與深度是這樣確定的
文章出處:【微信號:IP與SoC設(shè)計,微信公眾號:IP與SoC設(shè)計】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄

實際底層的RAM尺寸到底是多少呢?就是32x119嗎?
評論