EDA的逻辑语句描述语句出现在哪个部分

本发明涉及EDA开发的技术领域尤其是指一种基于Python语言的EDA开发平台及其使用方法。

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库,定义一系列硬件描述所用到的对象以及特性;

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芯片流片

6)运行C++代码進行仿真测试,生成相应的时序精确的结果波形文件.vcd通过gtkwave等工具进行测试分析。

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

大家好!!能不能说说并行语句和顺序语句到底有什么区别

资深技术员, 积分 445, 距离下一级还需 55 积分

资深技术员, 积分 445, 距离下一级还需 55 积分

0

资深技术员, 积分 445, 距离下一级还需 55 积分

资深技术员, 积分 445, 距离下一级还需 55 积分

0

组合逻辑语句设计就用并行语句;
如果时序电路一般也就用顺序语言;

对资源节约要求高算法少用并行,多用顺序(芯片面积小)


对系统性能要求高多用并行,少用顺序(并行处理快啊)

关键性能区用并行(DSP、加解密、校验之类的),其他(内含的键盘处理等等低速部分)用时序

还停留在普通编程语言的思维习惯吧

先从本质上想想难怪许多人都叫verilog编程语言呢?悲哀
0
0
看叻看书,突然觉得3楼说的有道理

资深技术员, 积分 445, 距离下一级还需 55 积分

资深技术员, 积分 445, 距离下一级还需 55 积分

0

资深技术员, 积分 445, 距离下一级还需 55 积汾

资深技术员, 积分 445, 距离下一级还需 55 积分

0
我发现大家对这个问题还处在模凌两可的阶段!!有那位达人能指教

资深技术员, 积分 445, 距离下一级还需 55 积汾

资深技术员, 积分 445, 距离下一级还需 55 积分

0

资深技术员, 积分 445, 距离下一级还需 55 积分

资深技术员, 积分 445, 距离下一级还需 55 积分

0
 在你做数字逻辑语句设计時不用时钟的逻辑语句电路部分,就用并行语句;
 如果存在时钟优先级选择什么的,一般也就用顺序语言;
 如果你对门级设计及理解恏的话甚至都可以用并行语句来描述,只是可读性差点而矣

助理工程师, 积分 1282, 距离下一级还需 718 积分

助理工程师, 积分 1282, 距离下一级还需 718 积分

助理工程师, 积分 1282, 距离下一级还需 718 积分

助理工程师, 积分 1282, 距离下一级还需 718 积分

书上都有解释的标准问题,

书上都有解释的标准问题你在这里問解释的既不严谨,也不深入看书吧!
0
0
扫描二维码,随时随地手机跟帖

您需要登录后才可以回帖

您需要登录后才可以回帖


我要回帖

更多关于 逻辑语句 的文章

 

随机推荐