五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

標(biāo)準(zhǔn)驗(yàn)證環(huán)境與處理器驗(yàn)證的代碼實(shí)現(xiàn)(一)

2022-12-08 16:21 作者:YvetteGrace  | 我要投稿

背景:

標(biāo)準(zhǔn)的UVM驗(yàn)證環(huán)境其實(shí)在各個(gè)用戶實(shí)現(xiàn)過(guò)程中也不標(biāo)準(zhǔn),這里只是提供一套相對(duì)容易復(fù)用的環(huán)境實(shí)現(xiàn)模板,后面可能會(huì)考慮采用腳本進(jìn)行實(shí)現(xiàn)。

另外,處理器驗(yàn)證和一般的電路模塊驗(yàn)證也有很大區(qū)別。這個(gè)專欄也會(huì)根據(jù)這些差異點(diǎn),做一些差異原因與處理方案的描述,內(nèi)容十分基礎(chǔ),有待深入討論。

這里先介紹一下agent與sequence

Agent:

Agent模塊,代理各個(gè)重要模塊。常見(jiàn)的“重要模塊”就是sequence、sequencer、driver、monitor,另外interface的連接也可以在agent中完成。

Agent的功能原本可以在env中實(shí)現(xiàn),但是會(huì)導(dǎo)致復(fù)用性變差,這一點(diǎn)會(huì)在后續(xù)env里解釋。


  1. agent中實(shí)例化了sequencer、driver、monitor,以及一個(gè)或數(shù)個(gè)interface

  2. 在build phase階段,需要將這些模塊注冊(cè)到factory中:

    1. 根據(jù)當(dāng)前agent是否為active,決定是否注冊(cè)sqr與drv

    2. passive mod只啟用mon,不發(fā)送激勵(lì)

  3. drv和mon需要的interface也在這里采用config_db傳遞(傳空也無(wú)妨)

  4. active mod下,在connect phase中將drv的port連接到sqr的export上

sequence

sequence中可以對(duì)不同類型的激勵(lì)進(jìn)行管理、配置,建議從base_seq寫(xiě)起,實(shí)現(xiàn)基礎(chǔ)的配置功能,然后再繼承到各個(gè)子類sequence中,進(jìn)行特殊功能的實(shí)現(xiàn)。

  1. phase的objection一般建議在sequence中實(shí)現(xiàn),這里放在了pre_body和post_body中進(jìn)行raise與drop;

  2. sequence是一個(gè)object,而非component,需要掛載到sqr上傳遞給drv,一般在main_phase中進(jìn)行這個(gè)傳遞過(guò)程;

  3. seq的body中實(shí)現(xiàn)transaction的配置與打包,trans一般就是UVM中激勵(lì)傳輸?shù)臉?biāo)準(zhǔn)粒度(當(dāng)然也可以直接做點(diǎn)對(duì)點(diǎn)的信號(hào)傳輸,適合激勵(lì)量較少的情況)

driver

driver的目的是獲取sequence,解包transaction,并將解包結(jié)果傳遞給DUT,這一過(guò)程一般通過(guò)直接對(duì)interface上的信號(hào)賦值實(shí)現(xiàn)。

一般激勵(lì)過(guò)程會(huì)在drv的main_phase中進(jìn)行,這也是個(gè)經(jīng)典問(wèn)題“什么時(shí)候用main_phase,什么時(shí)候用run_phase”,main_phase是可以重新跳轉(zhuǎn)回reset_phase的,而run_phase則與之并行。在需要DUT運(yùn)行過(guò)程中重啟的情況中,main_phase -> reset_phase是一個(gè)十分有利于維護(hù)的跳轉(zhuǎn)實(shí)現(xiàn)方案。

DUT不同,drv的實(shí)現(xiàn)方式也會(huì)有很大的差異,這里只給了一個(gè)極簡(jiǎn)的參考,不用被這個(gè)方案束縛。

處理器驗(yàn)證的差異點(diǎn)

其實(shí)沒(méi)有用到sqr->drv的傳輸,driver的目的是主動(dòng)發(fā)起transaction的獲取請(qǐng)求,并進(jìn)行解包。這一過(guò)程會(huì)不斷循環(huán),以模擬對(duì)DUT不斷傳輸?shù)妮斎胄盘?hào)。

而處理器驗(yàn)證的情況與上述過(guò)程存在一定差異。

首先是激勵(lì)的傳入,處理器的輸入通常不是實(shí)時(shí)的,而是在一開(kāi)始就準(zhǔn)備好的一段指令流。這段指令流可以是特定的手寫(xiě)匯編碼,也可以是隨機(jī)指令生成器產(chǎn)生的一段指令流,通過(guò)DUT的取指通路傳入到處理器當(dāng)中進(jìn)行操作。個(gè)人理解,現(xiàn)在的處理器通常是亂序、并行執(zhí)行的,且CPU也是從DDR通過(guò)cache讀取一長(zhǎng)段指令流,以減少交互次數(shù),所以按單筆指令進(jìn)行激勵(lì)的驗(yàn)證方式就顯得十分突兀,無(wú)法模擬出正常的行為。

另外,指令流的傳輸并不需要借助interface逐個(gè)賦值,通常是寫(xiě)到DDR或者cache的memory模型中,一般采用文本交互。文本交互的時(shí)間、資源消耗是不低的,頻繁進(jìn)行文本交互無(wú)疑會(huì)大幅拖慢仿真。

綜上,處理器的激勵(lì)一般是不需要drv這個(gè)永動(dòng)機(jī)來(lái)驅(qū)動(dòng)的,而是在初始化階段完成的,drv在這樣的驗(yàn)證環(huán)境中就顯得可有可無(wú)了。

標(biāo)準(zhǔn)驗(yàn)證環(huán)境與處理器驗(yàn)證的代碼實(shí)現(xiàn)(一)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
新巴尔虎右旗| 株洲县| 化德县| 清涧县| 呼伦贝尔市| 沭阳县| 雷波县| 临桂县| 徐水县| 凌源市| 广西| 广东省| 和平区| 长宁区| 怀远县| 南康市| 台北县| 行唐县| 通州市| 澎湖县| 汉川市| 会昌县| 勃利县| 札达县| 聂拉木县| 普兰县| 巨鹿县| 甘南县| 左贡县| 合阳县| 泸西县| 南充市| 仙桃市| 肃宁县| 武功县| 洪江市| 德保县| 十堰市| 克什克腾旗| 黄石市| 湖口县|