電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 14|回復(fù): 0
收起左側(cè)

【芯片設(shè)計(jì)】sram wrapper的封裝思路

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
匿名  發(fā)表于 6 天前 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
項(xiàng)目交付總結(jié)輸出繼續(xù),這一篇跟上篇相似都是遇到了一些問題后的回憶款。不過說實(shí)話我也不是很確定記憶有沒有誤差畢竟時(shí)間太長,所以當(dāng)作一個(gè)參考思路就好了。
那么這次遭遇的是什么問題呢?芯片尤其智能駕駛芯片不是越來越重視功能安全的問題了嘛,所以就必然會(huì)涉及到數(shù)據(jù)的校驗(yàn),其中ECC校驗(yàn)就是很常見的檢錯(cuò)糾錯(cuò)方法,尤其對于數(shù)據(jù)通路如SRAM這類單元的數(shù)據(jù)保護(hù)。所以在項(xiàng)目推進(jìn)的過程中,抽空就回想了一下之前比較成熟的設(shè)計(jì)方案是怎么弄的。
很多時(shí)候通過工具生成的sram是不會(huì)直接使用,而是要裹上若干層wrapper之后才會(huì)在RTL中例化。具體的wrapper層數(shù)和每層的行為記得沒那么準(zhǔn),但大體上是能對上的。生成的sram拿過來之后,最先封裝的就是其對應(yīng)的校驗(yàn)邏輯,包括輸入側(cè)的ecc encoding和輸出側(cè)的decoding,decoding時(shí)會(huì)對原始數(shù)據(jù)進(jìn)行糾錯(cuò)。最終輸出為糾錯(cuò)邏輯后的讀數(shù)據(jù)和1bit/2bit err上報(bào)信息。在出口時(shí)根據(jù)時(shí)序壓力可以選擇是否對數(shù)據(jù)進(jìn)行打拍,印象中ecc后通常會(huì)打一拍。

在sram_wrap1的基礎(chǔ)上會(huì)繼續(xù)封裝wrapper2拼接層,這里有些忘了,是單獨(dú)做一層還是直接和wrapper1合在一起,故這層wrapper不是一定會(huì)出現(xiàn)的。有sram生成經(jīng)驗(yàn)的小伙伴都清楚,工藝和制造商不是什么要求都滿足的,因此給定一個(gè)深度和寬度后工具很有可能告訴你沒有滿足的sram可以使用(在另一篇《【芯片設(shè)計(jì)】sram的一次選型與優(yōu)化經(jīng)歷》里再聊這個(gè))。這個(gè)時(shí)候怎么辦呢,無非是拼深度、拼寬度更有甚至通過spram去拼dpram。有深度和寬度的拼接那就必然會(huì)引入選擇和數(shù)據(jù)組合的邏輯,加之我們盡可能希望外部使用時(shí)不去感知內(nèi)部真實(shí)sram的組織結(jié)構(gòu),所以這一層也可以單獨(dú)封裝為sram_wrap2。不過還是要強(qiáng)調(diào)下,不確定這層是一定存在的,甚至這個(gè)拼接是在ecc里還是外也有些印象模糊,那姑且就按當(dāng)前的思路來吧。這一級也是一樣,根據(jù)時(shí)序情況可以在出口增加寄存器打拍。

第三級wrapper也是可選的,即RTL可以直接拿sram_wrap2去用也可以選擇sram_wrap3,這一級主要是bypass邏輯或者叫hazard處理。結(jié)構(gòu)圖簡化就是下面這樣:

這一層wrapper是要處理什么事呢,在另一篇有關(guān)斷言的文章里最后一題描述的就是這個(gè)場景,直接截圖下:



sram_wrap3實(shí)現(xiàn)的就是這個(gè)讀回過程中有同地址的寫則將最新寫入的數(shù)據(jù)直接讀出的功能,當(dāng)然了數(shù)據(jù)順序和時(shí)序是需要滿足的啊,規(guī)定好的3拍回?cái)?shù)據(jù)拿還是得在第3拍回不能早也不能超車。到wrapper3這層就已經(jīng)滿足RTL里所有的功能需求了,那么是不是還需要wrapper4呢?是可以有的,不過這就是fifo或者類似場景下的定向需求了。這個(gè)需求點(diǎn)在哪里呢,如果我們的fifo很大很深的話用寄存器搭建會(huì)導(dǎo)致很大的面積以及功耗開銷,因此可以替換為sram作為存儲(chǔ)單元?墒且詓ram為存儲(chǔ)單元,以目前封裝wrapper的情況看,發(fā)起讀請求后需要3到4拍數(shù)據(jù)才能返回,這顯然會(huì)導(dǎo)致性能下降以及潛在的功能問題。
根據(jù)fifo取數(shù)的特點(diǎn)(順序讀寫),通常我們都會(huì)采用預(yù)取的策略,即在已經(jīng)知道下一個(gè)要讀取的數(shù)據(jù)地址前提下,提前把數(shù)據(jù)從sram讀到寄存器中,這樣當(dāng)需要讀取時(shí)當(dāng)拍即可把預(yù)讀的數(shù)據(jù)給下游使用。當(dāng)然實(shí)際場景里會(huì)更復(fù)雜些,比如預(yù)取區(qū)有空位為sram為空,則數(shù)據(jù)直接進(jìn)入預(yù)取區(qū)不經(jīng)過sram。但總之就是這樣的一套邏輯,之前在實(shí)現(xiàn)基于sram的同步fifo時(shí)也參考了該方案。

以上這些內(nèi)容就是在記憶中對sram使用前的封裝處理,最后將他們匯總到一張圖中。


系列文章入口——
【芯片設(shè)計(jì)】SoC 101(一):緒論
【芯片設(shè)計(jì)】FIFO漫談(零)從無處不在的FIFO開始說起
【芯片設(shè)計(jì)】計(jì)算機(jī)體系結(jié)構(gòu)(一)虛擬內(nèi)存
【芯片設(shè)計(jì)】深入理解AMBA總線(零)緒論
【芯片設(shè)計(jì)】握手協(xié)議的介紹與時(shí)序說明
【芯片設(shè)計(jì)】復(fù)位那些小事 —— 復(fù)位消抖
【芯片設(shè)計(jì)】快速入門數(shù)字芯片設(shè)計(jì)(一)Introduction
【芯片驗(yàn)證】UVM源碼計(jì)劃(零)下定決心讀源碼前的自測環(huán)節(jié)
【芯片設(shè)計(jì)】異步電路碎碎念(一) 到底什么是異步電路
【芯片設(shè)計(jì)】從RTL到GDS(一):Introduction
其他文章鏈接——
【芯片驗(yàn)證】sva_assertion: 15道助力飛升的斷言練習(xí)
【芯片驗(yàn)證】可能是RTL定向驗(yàn)證的巔峰之作
【芯片驗(yàn)證】RTL仿真中X態(tài)行為的傳播 —— 從xprop說起
【芯片驗(yàn)證】年輕人的第一個(gè)systemVerilog驗(yàn)證環(huán)境全工程與解析
【芯片設(shè)計(jì)】verilog中有符號(hào)數(shù)和無符號(hào)數(shù)的本質(zhì)探究
【芯片設(shè)計(jì)】論RTL中always語法的消失術(shù)
【芯片設(shè)計(jì)】代碼即注釋,注釋即代碼
【芯片設(shè)計(jì)】700行代碼的risc處理器你確實(shí)不能要求太多了
入職芯片開發(fā)部門后,每天摸魚之外的時(shí)間我們要做些什么呢
如何計(jì)算系統(tǒng)的outstanding 和 burst length?
芯片搬磚日!け扑缽(qiáng)迫癥的關(guān)鍵詞不對齊事件
熟人社會(huì)里,一群沒有社會(huì)價(jià)值的局外人

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號(hào)?立即注冊

x
回復(fù)

使用道具

發(fā)表回復(fù)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表