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