python语言的编程模式_一种基于Python语言的EDA开发平台及其使用方法与流程
本發明涉及EDA開發的技術領域,尤其是指一種基于Python語言的EDA開發平臺及其使用方法。
背景技術:
目前,主流的EDA設計語言Verilog HDL能實現完整的芯片硬件邏輯電路開發,但是其代碼密度低,可移植性和編程效率等等都存在問題。芯片設計耗時,絕大多數需求的實現都必須從頭開始設計,編寫大量的HDL代碼,很難實現復用。一旦需求改變,大量接口需要重新設計。同時,對于硬件架構好壞的評估通常都要在所有設計工作都完成的前提下,才能得到關于架構設計的反饋。該過程非常耗時,根據反饋做出的調整還必須再次驗證。上述情況造成的硬件芯片開發周期過長已經成為阻礙EDA設計快速發展的重要瓶頸。
在現代編程語言和編譯器技術的支持下,EDA業界也嘗試改善EDA設計方法的設計效率,例如基于C/C++語言的高層次綜合(high-level synthesis,HLS)硬件描述方式。但是,HLS硬件描述方法目前僅僅在信號處理及人工智能等特定算法領域獲得一些進展,在面向對象和高級語言特性支持方面有所欠缺。
Chisel是U.C.Berkeley大學在2012年提出的另一種基于Scala語言的硬件描述方式。不同于傳統的Verilog硬件描述語言,Chisel利用Scala語言的面向對象、函數式編程等特點,使得硬件描述的抽象水平大大提高。在很大程度上簡化和加速了硬件設計,但是,Chisel的基礎——Scala語言使用相對復雜,應用領域狹窄,很少人能了解和掌握,不利于Chisel大規模推廣應用。
Python語言是近些年來新興的編程語言,擁有很強的面向對象編程能力,它的類模塊支持多態,操作符重載和多繼承等高級概念。Python語法簡潔,使用范圍廣,學習成本低,通過調用有大量現成的函數庫就能進行開發。Python的使用和分發是完全免費的,同時Python在線社區對用戶需求的響應和商業軟件一樣非???#xff0c;在不同系統平臺上進行移植也非常簡單。綜上所述,Python語言是EDA設計中實現硬件描述的理想編程語言。
技術實現要素:
本發明的目的在于克服現有技術的缺點與不足,提出了一種基于Python語言的EDA開發平臺及其使用方法,通過增加Python語言及FIRRTL語言的解釋器,充分利用Python語言面向對象,支持函數式編程,以及支持多態,操作符重載和多繼承等的特點,使得開發平臺的用戶可以直接使用Python語言實現對FPGA/ASIC芯片的硬件描述及測試,極大提高了EDA開發的效率。
為實現上述目的,本發明所提供的技術方案如下:
一種基于Python語言的EDA開發平臺,包括:
基于Python的硬件描述類庫,為使用Python語言編寫的專為描述硬件電路邏輯描述的Python庫,定義一系列硬件描述所用到的對象以及特性;
語言解釋器,用于將Python語言解釋為RTL級Verilog代碼,包括Python到FIRRTL的P2F解釋器和FIRRTL到RTL級Verilog的F2V解釋器;
Verilator仿真工具,用于將基于Python語言的測試用例,轉換到能夠綜合的Verilog代碼后,使用Verilator編譯為能夠仿真的C++代碼進行仿真測試。
進一步,對于基于Python的硬件描述類庫,在Python腳本代碼中,能夠通過import接口引用Python語言構造的硬件描述類庫來描述硬件邏輯,該庫實現了一系列硬件邏輯電路構造所必須的組件,封裝在Python庫當中,包括寄存器、模塊、存儲器和信號輸入輸出;該庫還實現了一系列專為硬件設計的類型,能夠用于位操作、可綜合為硬件算術、邏輯運算的對象類型,包括無符號、有符號和布爾類型,以及一系列的重載符號,包括賦值和重賦值符號。
進一步,在編寫Python代碼時,能夠直接調用已有的硬件描述類庫,也能夠加載第三方類庫,還能夠在平臺上編寫及封裝自定義的類庫。
進一步,所述語言解釋器包括:
FIRRTL中間表示層,為平臺框架中的中間層,是一種高層次抽象的RTL級描述語言,不同于底層的平臺指向的RTL級Verilog語言,它能夠作為獨立的編譯層次,生成不同平臺的RTL級Verilog代碼;同樣,不同的高級編程語言前端也能夠靈活替換;它在本平臺的編譯框架中的角色,類似于高級編程語言解析中的LLVM所扮演的角色;
Python語言到FIRRTL中間表示層的P2F解釋器,用于將用戶編寫的Python硬件描述代碼解釋為FIRRTL中間表示層語言,對其中調用的硬件描述類庫中的各類組件對象解釋為FIRRTL對應的模塊;
FIRRTL中間表示層到RTL級Verilog的F2V解釋器,用于將FIRRTL中間表示層語言解釋為底層RTL級能夠綜合的Verilog代碼,該代碼能夠通過EDA工具進行綜合,進而下載到FPGA芯片或用于ASIC芯片流片;用戶能夠通過對F2V解釋器進行參數配置,使得同一段FIRRTL代碼根據用戶最終開發的需要,生成基于不同架構的RTL級Verilog代碼。
進一步,對于Verilator仿真工具,用戶使用Python語言編寫仿真用例進行測試,仿真用例以及包含在硬件描述類庫中的測試功能首先解釋為能夠綜合的Verilog代碼,然后調用Verilator工具生成相應的能夠仿真的C++代碼,并進一步生成相應的時序精確的結果波形文件.vcd,通過gtkwave工具進行測試分析。
上述基于Python語言的EDA開發平臺的使用方法,包括以下步驟:
1)使用Python語言編寫硬件描述腳本以及對應的測試用例;其中在編寫Python代碼時,能夠直接調用已有的硬件描述類庫,也能夠加載第三方類庫,還能夠在平臺上編寫及封裝自定義的類庫;
2)調用P2F解釋器,將Python代碼,即腳本或測試用例解釋為FIRRTL語言中間表示層;
3)調用F2V解釋器,將FIRRTL語言中間表示層的代碼解釋為RTL級Verilog代碼;
4)調用Verilator仿真工具,根據Verilog代碼描述的測試用例,對Verilog代碼描述的腳本進行測試,生成相應的時序精確的結果波形文件.vcd,再通過gtkwave工具進行測試分析;其中,需先用Verilator仿真工具把Verilog代碼描述的測試用例編譯為可仿真的C++代碼,然后再進行仿真測試。
本發明與現有技術相比,具有如下優點與有益效果:
本發明充分利用Python語言面向對象、支持函數式編程以及支持多態、操作符重載和多繼承等的特點,通過增加了基于Python的硬件描述類庫、Python語言到FIRRTL的語言解釋器以及FIRRTL到Verilog的語言解釋器,實現了基于Python的硬件描述方法,使得開發平臺的用戶可以直接使用Python語言實現對FPGA/ASIC芯片的硬件描述及測試,提高了硬件描述代碼的抽象性,縮減了EDA開發的迭代周期,提高了EDA設計以及驗證效率,具有實際推廣價值。
附圖說明
圖1為本發明基于Python語言的EDA開發平臺的基本結構示意圖。
圖2為本發明基于Python語言的EDA開發平臺的運行流程圖。
具體實施方式
下面結合具體實施例對本發明作進一步說明。
如圖1所示,本實施例所提供的基于Python語言的EDA開發平臺,包括:
基于Python的硬件描述類庫,為使用Python語言編寫的專為描述硬件電路邏輯描述的Python庫,定義一系列硬件描述所用到的對象以及特性。在Python腳本代碼中,可以通過import接口引用Python語言構造的硬件描述類庫來描述硬件邏輯。該庫實現了一系列硬件邏輯電路構造所必須的組件,封裝在Python庫當中,如寄存器、模塊、存儲器、信號輸入輸出等。該庫還實現了一系列專為硬件設計的類型,如可用于位操作、可綜合為硬件算術(加、減、位移)、邏輯(與、或、異或)運算的對象類型,包括無符號、有符號以及布爾(布爾串)類型,以及一系列的重載符號,如賦值(“=”)、重賦值(“:=”)等符號。在編寫Python代碼時,可以直接調用已有的硬件描述類庫,也可以加載第三方類庫,還可以在平臺上編寫及封裝自定義的類庫。
語言解釋器,用于將Python語言解釋為RTL級Verilog代碼,包括:
FIRRTL中間表示層,為平臺框架中的中間層,是一種靈活的、高層次抽象的RTL級描述語言,不同于底層的平臺指向的RTL級Verilog語言,它可以作為獨立的編譯層次,生成不同平臺的RTL級Verilog代碼(ASIC或FPGA);同樣,不同的高級編程語言前端也可以靈活替換。它在本平臺的編譯框架中的角色,與高級編程語言解析中的LLVM所扮演的角色類似;
Python語言到FIRRTL中間表示層的P2F解釋器,用于將用戶編寫的Python硬件描述代碼解釋為FIRRTL中間表示層語言,對其中調用的硬件描述類庫中的各類組件對象解釋為FIRRTL對應的模塊;
FIRRTL中間表示層到RTL級Verilog的F2V解釋器,用于將FIRRTL中間表示層語言解釋為底層RTL級能夠綜合的Verilog代碼,該代碼可以通過EDA工具進行綜合,進而下載到FPGA芯片或用于ASIC芯片流片;用戶可以通過對F2V解釋器進行參數配置,使得同一段FIRRTL代碼根據用戶最終開發的需要,生成基于不同架構的RTL級Verilog代碼。
Verilator仿真工具,用于將基于Python語言的測試用例,轉換到可綜合的Verilog代碼后,使用Verilator編譯為可仿真的C++代碼進行仿真測試;用戶使用Python語言編寫仿真用例進行測試,仿真用例以及包含在硬件描述類庫中的測試功能首先解釋為可綜合的Verilog代碼,然后調用Verilator工具生成相應的可仿真的C++代碼,并進一步生成相應的時序精確的結果波形文件.vcd,通過gtkwave等工具進行測試分析。
如圖2所示,本實施例上述的基于Python語言的EDA開發平臺的具體運行流程,如下:
1)用戶調用Python硬件描述類庫,編寫硬件邏輯描述的Python腳本。
2)用戶根據所設計的腳本,使用硬件描述類庫中提供的仿真測試組件,編寫相對應的Python測試用例。
3)根據用戶編寫的基于硬件描述類庫的Python腳本及其測試用例,調用P2F解釋器,解釋生成對應的FIRRTL中間表示代碼。
4)調用F2V解釋器,將FIRRTL解釋為RTL級Verilog代碼,并且可以通過EDA工具進行綜合并下載到FPGA芯片或直接用于ASIC芯片流片。
5)調用Verilator仿真工具,把可綜合的RTL級Verilog代碼生成可仿真的C++代碼。
6)運行C++代碼進行仿真測試,生成相應的時序精確的結果波形文件.vcd,通過gtkwave等工具進行測試分析。
以上所述實施例只為本發明之較佳實施例,并非以此限制本發明的實施范圍,故凡依本發明之形狀、原理所作的變化,均應涵蓋在本發明的保護范圍內。
總結
以上是生活随笔為你收集整理的python语言的编程模式_一种基于Python语言的EDA开发平台及其使用方法与流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有家长炮轰《中国奇谭》 导演回应:审美提
- 下一篇: python读取html_从零开始的Py