ram沖突是幾乎每顆芯片都需要關(guān)注的問題,部分場景下,ram訪問沖突不容易驗證到,容易造成芯片bug。ram訪問沖突的類型通常有訪問接口沖突和訪問地址沖突。
術(shù)語解釋:1r1w ram表示ram存在一個寫口和一個讀口,一共2個端口。1rw ram表示ram只有一個端口,此端口能寫能讀,同一個周期不能同時讀寫。1r1rw ram表示存在2個端口,其中一個端口只支持讀操作,另外一個端口支持寫操作和讀操作(不能同時讀寫)。下文中的Logic訪問指的由硬件邏輯發(fā)起的訪問。csr表示可配置模塊, 其對應(yīng)的soft_access通常是由軟件發(fā)起的對ram的訪問,可能是讀操作,也可能是寫操作。
1、訪問接口沖突
接口沖突,即多個訪問請求同時訪問一個ram的端口,例下圖所示,logic 訪問和soft訪問同時競爭同一個端口。Case1所示為1rw ram(只有一個端口,能讀能寫),邏輯讀和邏輯寫同時競爭一個端口。Case2所示ram(可以是多個端口的ram),邏輯訪問(讀or寫)和軟件(寫or讀)訪問同時競爭一個端口。
危害:接口沖突類型中,如果某一個訪問存在高優(yōu)先級,那么低優(yōu)先級訪問可能一直無法響應(yīng)。輕則導(dǎo)致訪問失敗,重則模塊掛死。
解決方案:高優(yōu)先級訪問接口需要控制連續(xù)訪問次數(shù),必須在一定時間內(nèi)插入空拍。
2、訪問地址沖突
我們以1r1w的ram和1R1RW的ram為例進(jìn)行講解。如圖所示:訪問地址沖突,指的是讀操作和寫操作同時訪問且地址相同。注意:此處的同時并不一定是同一個周期,同時指的是從ram讀接口收到讀操作直到返回讀數(shù)據(jù)的若干個周期內(nèi)(一般是1~3周期)。例如T0 clk,ram收到對addr(0x10)的讀操作,T1 clk,讀數(shù)據(jù)還未返回,此時ram收到對addr(0x10)的寫操作,這種也算讀寫地址沖突。
危害:發(fā)送讀寫地址沖突時,讀返回的數(shù)據(jù)可能不符合期望,讀返回的可能是不確定值,可能是新值(寫操作寫入的值),也可能是舊值(不同廠家不同類型的ram響應(yīng)因為不一樣),部分廠家支持ram定制返回新值或者舊值,部分廠家ram返回的就是不確定值。讀到不確定值明顯會影響模塊功能。
解決方案:在ram訪問接口添加保護(hù)模塊。
如果讀返回需要新值,則在發(fā)送地址沖突時,將寫操作的寫數(shù)據(jù)轉(zhuǎn)移給讀返回。
如果讀返回需要舊值,(比較少見)
定制讀返回舊值的ram
添加沖突保護(hù)模塊,發(fā)生地址沖突時,對寫操作進(jìn)行反壓,此方案需要應(yīng)用場景允許
審核編輯:湯梓紅
-
芯片
+關(guān)注
關(guān)注
456文章
51243瀏覽量
427515 -
接口
+關(guān)注
關(guān)注
33文章
8706瀏覽量
151971 -
IC設(shè)計
+關(guān)注
關(guān)注
38文章
1302瀏覽量
104304 -
RAM
+關(guān)注
關(guān)注
8文章
1369瀏覽量
115044
原文標(biāo)題:IC設(shè)計:常見的ram訪問沖突【必學(xué)】
文章出處:【微信號:FPGA_Study,微信公眾號:FPGA自習(xí)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論