HDL是HardwareDescriptionLanguage(硬件描述語(yǔ)言)。設(shè)計(jì)FPGA時(shí),就是通過(guò)HDL來(lái)搭建底層硬件電路,最終實(shí)現(xiàn)不同功能的電路。即FPGA設(shè)計(jì)是設(shè)計(jì)一個(gè)完成某種需求的電路。
而對(duì)FPGA驗(yàn)證時(shí),是對(duì)FPGA硬件電路輸入各種數(shù)據(jù),經(jīng)過(guò)電路處理數(shù)據(jù)后,得到輸出數(shù)據(jù)與參考數(shù)據(jù)進(jìn)行比較。在這里,數(shù)據(jù)輸入、處理、輸出、比較的過(guò)程一般由PC機(jī)的CPU軟件模擬來(lái)完成。即FPGA驗(yàn)證是通過(guò)CPU模擬電路的數(shù)據(jù)輸入、處理、輸出、比較的過(guò)程,軟件模擬器設(shè)計(jì)的過(guò)程。
我們可以初略理解為:FPGA設(shè)計(jì)是電路設(shè)計(jì),F(xiàn)PGA驗(yàn)證是軟件設(shè)計(jì)。電路設(shè)計(jì)是基于時(shí)鐘脈沖的并行設(shè)計(jì),軟件設(shè)計(jì)是基于CPU指令集的串行設(shè)計(jì)。也就有了2種思維的沖突:硬件與軟件的思維沖突、并行與串行的思維沖突。
因?yàn)檫@種思維沖突,在FPGA驗(yàn)證初期編寫(xiě)testbench仿真HDL代碼時(shí),就會(huì)遇到各種困惑和調(diào)試?yán)щy,這種初期FPGA驗(yàn)證手寫(xiě)TB驗(yàn)證的方式效率極低,在量級(jí)大的代碼面前效果也不好,自然需要更好的方案。
SV的仿真調(diào)度機(jī)制能很好地解決這種沖突,它利用時(shí)間片time slot的思想,將硬件并行運(yùn)行的各個(gè)任務(wù)抽象為獨(dú)立運(yùn)行的線程,留給用戶上層的應(yīng)用接口來(lái)開(kāi)發(fā)驗(yàn)證工作,再隨后,有了UVM等驗(yàn)證框架的加入,讓驗(yàn)證開(kāi)發(fā)更便利和高效。整個(gè)過(guò)程的技術(shù)發(fā)展都被抽象后封裝,用戶不用關(guān)心,但同時(shí)帶來(lái)FPGA設(shè)計(jì)到驗(yàn)證入門(mén)和理解比較困難的問(wèn)題。
如果我們能夠多一些去理解SV的仿真調(diào)度機(jī)制到UVM的抽象過(guò)程,就自然能夠很好的理解FPGA設(shè)計(jì)和仿真之間思維的沖突。
注: 原創(chuàng)不易,未經(jīng)作者本人授權(quán),禁止轉(zhuǎn)載,轉(zhuǎn)載必究。