儀器:Emulator
在SSD主控芯片設(shè)計(jì)階段,除了RTL Simulation以外,通常還會(huì)進(jìn)行Verification的工作,而Verification中就會(huì)使用到Emulator或者FPGA。
先說(shuō)一下Simulation和Emulation的區(qū)別:
Simulator是做仿真,基于軟件,重點(diǎn)是實(shí)現(xiàn)芯片的功能并輸出結(jié)果;
Emulator是做模擬,用硬件實(shí)現(xiàn),通過(guò)模擬實(shí)現(xiàn)芯片的內(nèi)部設(shè)計(jì),從而實(shí)現(xiàn)功能并輸出結(jié)果;
業(yè)界比較知名的Emulator提供商Cadence,旗下的Emulator產(chǎn)品Palladium系列,如圖所示。
圖1-1 Emulator
按照官方的說(shuō)法,這貨可以做Simulation,Simulation Acceleration和Emulation。
在設(shè)計(jì)SSD主控芯片時(shí),Emulator和FPGA都可以用于ASIC Verification,那這兩者區(qū)別有哪些? 個(gè)人理解,主要有這么幾點(diǎn):
1. 價(jià)格:Emulator大概百萬(wàn)刀級(jí)別,F(xiàn)PGA大概是數(shù)千到萬(wàn)刀級(jí)別 ;
2. 能力:Emulator的邏輯可以到23億門(mén)(這是老款Palladium XP,最新款據(jù)Palladium Z1達(dá)到了90億門(mén)),F(xiàn)PGA大概是百萬(wàn)門(mén)級(jí)別。對(duì)應(yīng)到SSD主控里,一塊FPGA可能只能模擬前段(PCIe+NVMe),后端(閃存 Controller)可能需要另外一塊FPGA, 而Emulator,只要你想塞,整個(gè)ASIC的RTL塞進(jìn)入也是妥妥的;
3. Debug:Emulator可以比較方便的導(dǎo)出ASIC攻城獅所需要的信號(hào)并抓取硬件邏輯波形,而FPGA在連接協(xié)議分析儀,邏輯分析儀方面比較方便;
4. 速度:Emulator雖然好,但是速度比FPGA要慢的多 – 來(lái)個(gè)傳說(shuō)中的例子:如果FPGA上boot一個(gè)OS要幾個(gè)小時(shí),那Emulator上boot一個(gè)OS可能要幾天
5. 逼格:FPGA是個(gè)公司就能有,Emulator則絕對(duì)是實(shí)力的彰顯—有領(lǐng)導(dǎo),VIP來(lái)參觀的時(shí)候,給參觀一下,頓時(shí)就跟其他公司拉開(kāi)差距了;
歸根結(jié)底,Emulator和FPGA都是很好的工具,需要正確,合理地使用,才能更好地在芯片研發(fā)階段發(fā)現(xiàn)更多ASIC問(wèn)題。
Emulator(或FPGA)另一個(gè)好處是,固件團(tuán)體可以使用這些工具提前開(kāi)始開(kāi)發(fā),不用等芯片回來(lái)以后,先經(jīng)歷“不死也要脫層皮”的Bringup階段,然后才開(kāi)始“遇到問(wèn)題不知道硬件原因還是代碼原因的”開(kāi)發(fā)階段。
Emulator – 致力于構(gòu)建SSD主控和諧團(tuán)隊(duì)!
儀器:協(xié)議分析儀(Analyzer)
要測(cè)試SSD,需要很多很多不一樣的設(shè)備,需要花很多很多的銀子。
目前市面上的SSD接口挺多,有什么SATA,SAS,PCIe,U.2, M.2, MSATA, GumStick,其實(shí)走的前端協(xié)議就兩大類: SATA/SAS和PCIe。
一顆SSD主控一般分前、中、后三段,前端就是SATA/SAS和PCIe這些配上AHCI或者NVMe,中段就是FTL,后端就是閃存控制器。
FTL是純軟件實(shí)現(xiàn),測(cè)這個(gè)基本上不需要什么設(shè)備。
后端跟閃存打交道,主要用邏輯分析儀,另一種巨貴的儀器,這里不展開(kāi)說(shuō)。
這里先聊兩種協(xié)議分析儀,SATA/SAS Analyzer 和 PCIe Analyzer。
Analyzer是個(gè)啥玩意兒?你可以這么理解,以SATA Analyzer為例, SATA Host和SATA SSD之間傳輸命令和數(shù)據(jù),就像兩個(gè)人在打電話,不在這個(gè)線路上的你,正常情況下是聽(tīng)不到的他們說(shuō)了什么的。
Analyzer就相當(dāng)于在他們兩之間裝了一個(gè)竊聽(tīng)器,這樣你就可以完完整整的知道他們之間的對(duì)話,同時(shí)他們倆并不會(huì)察覺(jué)。
SATA/SAS Analyzer的供應(yīng)商,平時(shí)接觸比較多的有兩家:SerialTek和LeCroy。
圖為SerialTek SATA/SAS Analyzer
圖1-2 SerialTek SATA/SAS協(xié)議分析儀
連在主機(jī)和SSD之間是這么個(gè)樣子,如圖所示。
圖1-3 SATA 協(xié)議分析儀連接示意圖
抓到的Trace是這個(gè)樣子,如圖所示。
圖1-4 SATA Trace示例
PCIe Analyzer的供應(yīng)商,主要有三家:LeCroy,SerialTek和Agilent。
圖為L(zhǎng)eCroy的PCIe Analyzer:
圖1-5 LeCroy PCIe 協(xié)議分析儀
配有各種Interposer卡,如圖所示:
圖1-6 LeCroy PCIe 協(xié)議分析儀 Interposer cards
抓到的Trace是這個(gè)樣子的(這是一個(gè)NVMe讀寫(xiě)的命令,LeCroy可以幫你解碼NVMe,AHCI這種常見(jiàn)的存儲(chǔ)協(xié)議),圖7-14中,軟件將PCIe Trace中的NVMe命令解析了出來(lái)。
圖1-7 PCIe軟件解析NVMe指令
使用PCIe Analyzer可以測(cè)量PCIe的物理層,鏈路層,事物層。跟示波器不同,Analyzer可以基于PCIe協(xié)議將鏈路上所有Lane上發(fā)生的事務(wù)都解析出來(lái),并且還提供Trigger(觸發(fā))的功能 。
對(duì)于Analyzer的一大挑戰(zhàn)就是在鏈路電源狀態(tài)切換的過(guò)程能夠快速適應(yīng),越早能夠?qū)崿F(xiàn)正確的抓包并解析越好。
這點(diǎn)在調(diào)試的時(shí)候尤其重要,看一個(gè)實(shí)際的例子:對(duì)一個(gè)寄存器做CfgWr操作,但是結(jié)果發(fā)現(xiàn)寫(xiě)進(jìn)去的值不對(duì),而且這個(gè)問(wèn)題只在ASPM enable的時(shí)候才會(huì)發(fā)生。
電源狀態(tài)切換對(duì)于PCIe 發(fā)送端和接收端來(lái)說(shuō)是屬于壓力比較大的操作,因此有時(shí)會(huì)導(dǎo)致鏈路不穩(wěn)定從而發(fā)送錯(cuò)誤的包。這種問(wèn)題調(diào)試需要抓trace,而analyzer必須在鏈路從L0s退出進(jìn)入L0時(shí)發(fā)送的TLP都抓到,否則就無(wú)法查看錯(cuò)誤到底在什么地方。而L0S退出的時(shí)間非常短,Analyzer需要在鏈路從electrical idle(空閑狀態(tài))退出后非常短的時(shí)間內(nèi)(幾十個(gè)FTS)就能正確抓包并解析。
工具是死的,人是活的,啥時(shí)候抓trace,抓哪個(gè)階段,抓的時(shí)候滿屏的紅色怎么辦,怎么設(shè)Trigger,trace怎么分析?這些就需要攻城獅們自己花時(shí)間琢磨了。
儀器:Jammer
再牛的肖邦,也彈不出SSD廠商的悲傷。
一塊SSD到不同客戶手上,不知道會(huì)接在什么機(jī)器,使用什么樣的OS和主機(jī)驅(qū)動(dòng),在什么環(huán)境下使用,
結(jié)合巨大的使用數(shù)量,不知道哪天某塊SSD就會(huì)從主機(jī)那邊收到一個(gè)不按套路出牌的FIS或者Primitive (SATA SSD)。
舉個(gè)例子: 主機(jī)發(fā)了一個(gè)讀命令,SSD二話不說(shuō)開(kāi)始干活,辛辛苦苦把數(shù)據(jù)從閃存里讀出來(lái),仔仔細(xì)細(xì)的進(jìn)行ECC解碼,小心翼翼傳到DDR,進(jìn)行MPECC檢查,再全神貫注的傳到SATA模塊的某個(gè)FIFO,這時(shí)候SSD抹抹頭上的汗,把手擦干凈,寫(xiě)了一張字條,上書(shū)”X_RDY”, 恭恭敬敬的遞給主機(jī), 然后把數(shù)據(jù)捧在懷里,細(xì)心的用SOF包裝好,殷切的期盼主機(jī)也回復(fù)一張小字條“R_RDY”。主機(jī)十分感動(dòng)的看著SSD,然后回復(fù)了一句“R_ERR”拒絕了他。
林子大了,什么樣的客戶都有,但是客戶們的要求是一樣的——“主機(jī)虐你千百遍,SSD你要待他如初戀” ——術(shù)語(yǔ)叫做Robustness (健壯性)。
為了保證健壯性,ASIC和固件攻城獅們要花大量的精力,腦補(bǔ)各種錯(cuò)誤可能性,在RTL和FW 中加入相應(yīng)的錯(cuò)誤處理(Error Handling)的流程。
這么做有兩個(gè)問(wèn)題:
這些錯(cuò)誤處理的流程,在實(shí)驗(yàn)室里面跑個(gè)一禮拜,可能也撞不到一個(gè);
再牛的攻城獅,也沒(méi)法提前考慮到各種錯(cuò)誤可能性。
與其讓別人找麻煩,不如自己給自己找麻煩。搞測(cè)試的就是平時(shí)給ASIC和固件找麻煩,以SATA SSD來(lái)說(shuō),可以用一種工具——Jammer.
圖中小一號(hào)的那個(gè)就是SATA Jammer。
圖為SATA 協(xié)議分析和Jammer
如果說(shuō)Analyzer是一個(gè)竊聽(tīng)器,讓你知道主機(jī)和設(shè)備之間發(fā)生了什么,那么Jammer就是一個(gè)郵遞員,主機(jī)和設(shè)備之間所有的通信都必須經(jīng)過(guò)他的手,然后Jammer可以把信拆開(kāi),將里面的內(nèi)容修改或者替換,再轉(zhuǎn)發(fā)出去。
結(jié)合之前的例子,我們可以把正常主機(jī)回復(fù)R_RDY改成R_ERR, 從而檢查SSD遇到這種情況處理是否正確。
圖為Jammer管理軟件截圖——向一個(gè)Data FIS中故意注入CRC Error。
通過(guò)在SATA鏈路上創(chuàng)建各種不同的錯(cuò)誤,可以確認(rèn)各種錯(cuò)誤處理的流程是否正確,或者完善,甚至增加新的流程。
Jammer還有別的用處,當(dāng)你想知道某種場(chǎng)景(Scenario)發(fā)生以后主機(jī)或者設(shè)備的反應(yīng)時(shí),你可以通過(guò)Jammer來(lái)知道答案。比如當(dāng)設(shè)備回復(fù)的SDB里面Error Bit被置上,或者設(shè)備一直不發(fā)SDB時(shí),主機(jī)是不是會(huì)重發(fā)命令,重發(fā)幾次,重發(fā)多次設(shè)備都沒(méi)反應(yīng)的話Driver會(huì)不會(huì)啟動(dòng)OOB,Application會(huì)不會(huì)報(bào)錯(cuò)?
Jammer -- 你值得擁有。
本文節(jié)選自《深入淺出SSD:固態(tài)存儲(chǔ)核心技術(shù)、原理與實(shí)戰(zhàn)》一書(shū)
-
芯片
+關(guān)注
關(guān)注
456文章
51182瀏覽量
427274 -
測(cè)試儀器
+關(guān)注
關(guān)注
0文章
438瀏覽量
33959 -
SSD
+關(guān)注
關(guān)注
21文章
2887瀏覽量
117858
原文標(biāo)題:京滬深一套房才能換一臺(tái)的神秘芯片測(cè)試儀器
文章出處:【微信號(hào):SSDFans,微信公眾號(hào):SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論