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