CN109885902A - 一种基于Python语言的EDA开发平台及其使用方法 - Google Patents

一种基于Python语言的EDA开发平台及其使用方法 Download PDF

Info

Publication number
CN109885902A
CN109885902A CN201910083491.3A CN201910083491A CN109885902A CN 109885902 A CN109885902 A CN 109885902A CN 201910083491 A CN201910083491 A CN 201910083491A CN 109885902 A CN109885902 A CN 109885902A
Authority
CN
China
Prior art keywords
python
code
firrtl
interpreter
language
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910083491.3A
Other languages
English (en)
Other versions
CN109885902B (zh
Inventor
赖晓铮
曾琴
陈若晖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
South China University of Technology SCUT
Original Assignee
South China University of Technology SCUT
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by South China University of Technology SCUT filed Critical South China University of Technology SCUT
Priority to CN201910083491.3A priority Critical patent/CN109885902B/zh
Publication of CN109885902A publication Critical patent/CN109885902A/zh
Application granted granted Critical
Publication of CN109885902B publication Critical patent/CN109885902B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本发明公开了一种基于Python语言的EDA开发平台及其使用方法,开发平台包括:基于Python的硬件描述类库,对Python脚本进行解释的P2F解释器、FIRRTL语言中间表示层、对FIRRTL语言进行解释的F2V解释器以及用于仿真测试的Verilator仿真工具。本发明通过增加Python语言及FIRRTL语言的解释器,充分利用Python语言面向对象,支持函数式编程,以及支持多态,操作符重载和多继承等的特点,使得所述开发平台的用户可以直接使用Python语言实现对FPGA/ASIC芯片的硬件描述及测试,极大提高了EDA开发的效率。

Description

一种基于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在线社区对用户需求的响应和商业软件一样非常快,在不同系统平台上进行移植也非常简单。综上所述,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等工具进行测试分析。
以上所述实施例只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。

Claims (6)

1.一种基于Python语言的EDA开发平台,其特征在于,包括:
基于Python的硬件描述类库,为使用Python语言编写的专为描述硬件电路逻辑描述的Python库,定义一系列硬件描述所用到的对象以及特性;
语言解释器,用于将Python语言解释为RTL级Verilog代码,包括Python到FIRRTL的P2F解释器和FIRRTL到RTL级Verilog的F2V解释器;
Verilator仿真工具,用于将基于Python语言的测试用例,转换到能够综合的Verilog代码后,使用Verilator编译为能够仿真的C++代码进行仿真测试。
2.根据权利要求1所述的一种基于Python语言的EDA开发平台,其特征在于:对于基于Python的硬件描述类库,在Python脚本代码中,能够通过import接口引用Python语言构造的硬件描述类库来描述硬件逻辑,该库实现了一系列硬件逻辑电路构造所必须的组件,封装在Python库当中,包括寄存器、模块、存储器和信号输入输出;该库还实现了一系列专为硬件设计的类型,能够用于位操作、可综合为硬件算术、逻辑运算的对象类型,包括无符号、有符号和布尔类型,以及一系列的重载符号,包括赋值和重赋值符号。
3.根据权利要求1或2所述的一种基于Python语言的EDA开发平台,其特征在于:在编写Python代码时,能够直接调用已有的硬件描述类库,也能够加载第三方类库,还能够在平台上编写及封装自定义的类库。
4.根据权利要求1所述的一种基于Python语言的EDA开发平台,其特征在于,所述语言解释器包括:
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代码。
5.根据权利要求1所述的一种基于Python语言的EDA开发平台,其特征在于:对于Verilator仿真工具,用户使用Python语言编写仿真用例进行测试,仿真用例以及包含在硬件描述类库中的测试功能首先解释为能够综合的Verilog代码,然后调用Verilator工具生成相应的能够仿真的C++代码,并进一步生成相应的时序精确的结果波形文件.vcd,通过gtkwave工具进行测试分析。
6.一种权利要求1至5任意一项所述的基于Python语言的EDA开发平台的使用方法,其特征在于,包括以下步骤:
1)使用Python语言编写硬件描述脚本以及对应的测试用例;其中在编写Python代码时,能够直接调用已有的硬件描述类库,也能够加载第三方类库,还能够在平台上编写及封装自定义的类库;
2)调用P2F解释器,将Python代码,即脚本或测试用例解释为FIRRTL语言中间表示层;
3)调用F2V解释器,将FIRRTL语言中间表示层的代码解释为RTL级Verilog代码;
4)调用Verilator仿真工具,根据Verilog代码描述的测试用例,对Verilog代码描述的脚本进行测试,生成相应的时序精确的结果波形文件.vcd,再通过gtkwave工具进行测试分析;其中,需先用Verilator仿真工具把Verilog代码描述的测试用例编译为可仿真的C++代码,然后再进行仿真测试。
CN201910083491.3A 2019-01-29 2019-01-29 一种基于Python语言的EDA开发平台系统及其使用方法 Expired - Fee Related CN109885902B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910083491.3A CN109885902B (zh) 2019-01-29 2019-01-29 一种基于Python语言的EDA开发平台系统及其使用方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910083491.3A CN109885902B (zh) 2019-01-29 2019-01-29 一种基于Python语言的EDA开发平台系统及其使用方法

Publications (2)

Publication Number Publication Date
CN109885902A true CN109885902A (zh) 2019-06-14
CN109885902B CN109885902B (zh) 2020-09-22

Family

ID=66927164

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910083491.3A Expired - Fee Related CN109885902B (zh) 2019-01-29 2019-01-29 一种基于Python语言的EDA开发平台系统及其使用方法

Country Status (1)

Country Link
CN (1) CN109885902B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110961364A (zh) * 2019-12-18 2020-04-07 浪潮(北京)电子信息产业有限公司 一种基于fpga平台的芯片全功能自测系统及其方法
CN111460759A (zh) * 2020-03-19 2020-07-28 华南理工大学 一种基于Python语言的EDA验证平台及其使用方法
CN112782567A (zh) * 2021-02-19 2021-05-11 上海剑桥科技股份有限公司 芯片测试系统、方法、装置、介质及设备
CN113238759A (zh) * 2021-04-14 2021-08-10 西安电子科技大学 一种类Python程序设计语言XD-M的解释系统及方法
WO2024031553A1 (zh) * 2022-08-11 2024-02-15 西门子股份公司 实时控制方法、实时控制装置、计算设备及存储介质
WO2024045436A1 (zh) * 2022-09-01 2024-03-07 中山大学 图形化高层次综合电路性能分析方法、系统、装置及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010034876A1 (en) * 1997-09-16 2001-10-25 Synetry Corporation System for converting hardware designs in high-level programming languages to hardware implementations
CN103207338A (zh) * 2013-04-25 2013-07-17 上海纳恩汽车技术有限公司 一种基于Python脚本的汽车电子测试平台
CN104732001A (zh) * 2013-12-20 2015-06-24 爱德万测试公司 电子器件的在线设计验证
CN104965750A (zh) * 2015-06-05 2015-10-07 浪潮集团有限公司 基于Python语言的Rapidio切换器逻辑仿真验证平台及方法
CN108829968A (zh) * 2018-06-11 2018-11-16 西安电子科技大学 基于Python扩展函数的电路图审查方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010034876A1 (en) * 1997-09-16 2001-10-25 Synetry Corporation System for converting hardware designs in high-level programming languages to hardware implementations
CN103207338A (zh) * 2013-04-25 2013-07-17 上海纳恩汽车技术有限公司 一种基于Python脚本的汽车电子测试平台
CN104732001A (zh) * 2013-12-20 2015-06-24 爱德万测试公司 电子器件的在线设计验证
CN104965750A (zh) * 2015-06-05 2015-10-07 浪潮集团有限公司 基于Python语言的Rapidio切换器逻辑仿真验证平台及方法
CN108829968A (zh) * 2018-06-11 2018-11-16 西安电子科技大学 基于Python扩展函数的电路图审查方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SAM SKALICKY等: "Hot & Spicy: Improving Productivity with Python and HLS for FPGAs", 《IEEE XPLORE》 *
刘毅飞: "基于Python软硬件协同设计方法", 《现代电子技术》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110961364A (zh) * 2019-12-18 2020-04-07 浪潮(北京)电子信息产业有限公司 一种基于fpga平台的芯片全功能自测系统及其方法
CN110961364B (zh) * 2019-12-18 2022-06-17 浪潮(北京)电子信息产业有限公司 一种基于fpga平台的芯片全功能自测系统及其方法
CN111460759A (zh) * 2020-03-19 2020-07-28 华南理工大学 一种基于Python语言的EDA验证平台及其使用方法
CN112782567A (zh) * 2021-02-19 2021-05-11 上海剑桥科技股份有限公司 芯片测试系统、方法、装置、介质及设备
CN113238759A (zh) * 2021-04-14 2021-08-10 西安电子科技大学 一种类Python程序设计语言XD-M的解释系统及方法
WO2024031553A1 (zh) * 2022-08-11 2024-02-15 西门子股份公司 实时控制方法、实时控制装置、计算设备及存储介质
WO2024045436A1 (zh) * 2022-09-01 2024-03-07 中山大学 图形化高层次综合电路性能分析方法、系统、装置及介质

Also Published As

Publication number Publication date
CN109885902B (zh) 2020-09-22

Similar Documents

Publication Publication Date Title
CN109885902A (zh) 一种基于Python语言的EDA开发平台及其使用方法
Bryant Boolean analysis of MOS circuits
Lockhart et al. PyMTL: A unified framework for vertically integrated computer architecture research
US10831456B1 (en) External code integrations within a computing environment
US8150673B1 (en) Partitioning a model in modeling environments
CN100399341C (zh) 一种矢量模式软硬件协同仿真/验证方法
US8347245B2 (en) Hardware definition language generation for frame-based processing
CN103678745B (zh) 一种用于fpga的跨平台多层次集成设计系统
CN104965750B (zh) 基于Python语言的Rapidio切换器逻辑仿真验证平台及方法
US6192504B1 (en) Methods and systems for functionally describing a digital hardware design and for converting a functional specification of same into a netlist
WO2006034352A2 (en) Automatic generation of code for component interfaces in models
CN110196720B (zh) 一种Simulink生成动态链接库的优化方法
EP1913410A2 (en) Method and system for debug and test using replicated logic
US20160306913A1 (en) Method and apparatus for system design verification
Sohofi et al. Assertion-based verification for system-level designs
CN108197351B (zh) 一种受单片机控制的集成电路的仿真验证方法
CN108829382A (zh) 一种用Python建立参考模型提高自动化验证平台效率的方法
CN107291992B (zh) 一种适用沙漠地区电子装备综合环境试验仿真系统及方法
CN106598909A (zh) 一种可编程片上系统构建方法
CN104657136B (zh) Simulink组件的集成系统
US20030237078A1 (en) Incorporating simulation analysis instrumentation into HDL models
Wang et al. MAPP: the Berkeley model and algorithm prototyping platform
US8600722B1 (en) Method and apparatus for providing program-based hardware co-simulation of a circuit design
CN111460759A (zh) 一种基于Python语言的EDA验证平台及其使用方法
CN106844900A (zh) 电磁暂态仿真系统的搭设方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Lai Xiaozheng

Inventor after: Chen Ruohui

Inventor after: Zeng Qin

Inventor before: Lai Xiaozheng

Inventor before: Zeng Qin

Inventor before: Chen Ruohui

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20200922