python基于什么语言-一种基于Python语言的EDA开发平台及其使用方法与流程

032824039012.gif

本发明涉及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等工具进行测试分析。

以上所述实施例只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值