IC前后端:高扇出的危害
1、什么是高扇出?
高扇出指的是一個邏輯單元驅動的邏輯單元過多。常見于寄存器驅動過多的組合邏輯單元。至于驅動多少邏輯單元算過多,需要根據(jù)工藝,后端實現(xiàn)情況以及芯片本身類型來決定。
一般來說如果驅動邏輯大于10K以上,算是比較多的了。
2、高扇出有哪些危害?
危害1:驅動能力下降,時序緊張
扇出過高也就是也就意味了負載電容過大,電路原理基礎告訴咱們,負載電容越大,充放電速度越慢,電平跳變所需要的時間增加,即驅動能力下降,時序更加緊張。面對高扇出的情況,后端工具通常會通過插入buffer增加驅動能力,然后插入buff又會增加延時,造成時序緊張。
危害2:不利于布局布線,會增加走線延時
高扇出的情況通常意味著負載end_point分布在block的各個位置。而驅動的start_point需要放置在相對應的中心位置,這就意味到start_point到end_points的走線延時較大,一旦時序緊張,后端工具需要花費很多時間去優(yōu)化,玩玩結果還不理想。
如下圖所示:黑色點為end_point
A圖所示,扇出高并且end_point很分散,在高扇出情況中很常見,后端工具實現(xiàn)花費時間長,并且很難優(yōu)化,走線延時比較大,時序比較緊張。
B圖所示:扇出不高但是end_point很分散,后端工具實現(xiàn)花費時間教長,優(yōu)化有難度,走線延時比較大,時序比較緊張。
C圖所示, 扇出不高并且end_point集中,是理想情況,后端工具實現(xiàn)簡單,走線延時比較小。
1、RAM讀寫沖突返回值
在使用底層RAM IP的時候,以1R1W的ram為例,我們需要考慮 某個地址同時發(fā)生讀寫操作的時候(俗稱讀寫沖突),RAM IP輸出的data_out是什么值,不同的廠家IP會不一樣,同一個廠家的不同ram也有可能不一樣。例如:發(fā)生讀寫沖突時,有些ram會輸出老值,有些ram會輸出新值,有些ram輸出不確定的值
2、從設計角度考慮RAM讀寫沖突返回值
從嚴謹?shù)脑O計角度看,應該從方案設計角度避免此問題。在verilog實現(xiàn)中,ram就不允許發(fā)生同時讀寫同一個地址的情況,采用外部邏輯進行讀寫沖突保護。原因如下:
不同ram IP在讀寫沖突時,讀寫沖突返回值不一樣,容易出錯。
不同項目使用的工藝不一樣,從而導致ram ip讀寫沖突返回值不一致,不利于代碼復用。
IC設計RAM相關:ECC校驗原理基礎
1、ECC校驗基礎
Ram的ECC校驗通?;诤C鞔a編碼原理實現(xiàn),使用海明碼編碼需要額外的bit位存儲校驗位,ECC校驗僅能糾正1bit的,無法糾正2bit以及以上數(shù)據(jù)錯誤,能發(fā)現(xiàn)部分多bit位錯誤的情況。
2、RAM ECC校驗實現(xiàn)原理
如圖所示為1r1w的ram為例,cfg_32x119_ram_wrapper為verilog代碼直接調用層次的ram_wrapper,表示了一個深度為32,數(shù)據(jù)位寬為119bit的ram。ram_asic.v為真實的ram IP。其中119bit的數(shù)據(jù)位寬緊張ECC計算需要7bit的校驗位,因此物理IP最少需要126bit的ram IP。通常memory產生工具會更具時鐘頻率,深度位寬等因素對ram進行切分,因此本例中,使用了2個32x64的ram ip。
在data_in寫入ram_asic模塊之前,會經(jīng)過ecc_gen模塊,產生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告警。
編輯:黃飛
?
評論