最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
静安区| 昭平县| 涟水县| 文山县| 南安市| 福清市| 滨海县| 赣榆县| 海林市| 兴山县| 汾阳市| 张家港市| 通江县| 衡阳市| 叶城县| 富顺县| 林西县| 平和县| 镶黄旗| 武义县| 含山县| 商都县| 海盐县| 阿拉善右旗| 康乐县| 青冈县| 侯马市| 西充县| 香河县| 郴州市| 延长县| 辽源市| 鹤山市| 酉阳| 红原县| 枝江市| 昌江| 安吉县| 北流市| 绩溪县| 扶绥县|