一种自动编译生成不同功能的FPGA工程的方法与流程

文档序号:29854601发布日期:2022-04-30 08:58阅读:134来源:国知局
一种自动编译生成不同功能的FPGA工程的方法与流程
一种自动编译生成不同功能的fpga工程的方法
技术领域
1.本发明属于芯片测试技术领域,更具体地,涉及一种自动编译生成不同功能的fpga工程的方法。


背景技术:

2.芯片,本质上是将数以亿计的晶体管高度集成的一个拇指大小面积的物理电路。在芯片的开发制造过程中涉及到数字部分设计、模拟部分设计、集成、生成掩膜、光刻、粒子注入、蚀刻等工程。设计工作量大、周期长、过程复杂,单次试制至少百万美元起,其成本、周期、工作量决定了我们在芯片设计过程中要高度严谨,因此,需要通过各种测试手段保证各个过程设计满足预期。
3.目前测试芯片的手段主要有设计软件进行虚拟仿真、通过现场可编程逻辑门阵列(field programmable gate array,fpga)芯片进行半实物仿真、通过硬件仿真平台进行接近实际测试。其中,设计软件进行虚拟仿真主要是通过建模,给激励进行仿真,只能用于一些功能开发的正确性作初步测试,无法模拟实际芯片的工作状态,例如受电源波动、电磁干扰、实际电路元件特性。硬件仿真平台进行测试接近芯片实际状态,仿真速度较快,但是硬件仿真平台的成本都在百万以上,同时仅能进行1~2个芯片的仿真,具有很大的局限性。
4.fpga芯片是一种半定制芯片,通过软件编程对其内部电路进行搭建,形成自己的专用电路。设计芯片本质上就是设计自己的专用电路,在芯片正式生产前,可以运用fpga芯片测试自己的设计是否满足客户需求,获得芯片在实际使用环境中表现。fpga芯片凭借其可以多次编程,成本低,可以一定程度反映芯片真实表现,在芯片设计中获得大量应用。
5.fpga存在可以编程的逻辑资源,资源越多,成本呈指数上升。为进一步降低测试成本,常采用多片逻辑资源较少的fpga芯片协同工作,实现对大型芯片设计的测试。例如,对一些大型的soc集成电路在fpga上进行原型验证时,会对该大型设计进行分割设计,形成多个fpga工程,协同测试。虽然通过分割可以利用多fpga芯片实现大型芯片的测试,但是切割后的多个fpga工程之间存在相互关联,导致单个fpga工程的更新迭代会影响其他fpga的功能,版本管控困难,容易出问题。例如:一个集成电路设计里面包含公用功能模块和其他功能模块、约束模块,该集成电路被切分成3个fpga工程实现。如公用功能模块的设计代码有更新,则需要同步更新另外两个fpga工程,否则存在版本出错风险。这无形增加了工作量,降低测试效率。


技术实现要素:

6.针对现有技术的以上缺陷或改进需求,本发明提供了一种自动编译生成不同功能的fpga工程的方法,能有效解决利用多个fpga工程进行大型芯片测试的过程中,存在一个或多个fpga工程可能更新不同步的问题,且显著减少了设计的工作量,通用性强,节省了验证时间。
7.为实现上述目的,按照本发明的一个方面,提供了一种自动编译生成fpga工程的
方法,其特征在于,包括:编写第一脚本文件,用于描述指令和设置全局参数;其中,第一脚本文件描述的指令用于添加功能模块的设计文件和约束文件;编写第二脚本文件,用于声明配置参数和描述指令;其中,第二脚本文件描述的指令用于调用第一脚本文件;运行第二脚本文件,生成fpga工程。
8.在一些实施方式中,该方法还包括编写功能模块的设计文件和约束文件。
9.在一些实施方式中,编写功能模块的设计文件包括用程序语言实现功能模块的功能;编写功能模块的约束文件包括描述逻辑设计的约束。
10.在一些实施方式中,编写功能模块的设计文件还包括采用条件编译语句实例化各个功能模块;逻辑设计的约束包括物理位置约束、电气特性约束和时序约束中的至少一种约束。
11.在一些实施方式中,第一脚本文件描述的指令包括第一指令、第二指令和第三指令;第一指令用于搭建工程和设定器件目标,第二指令用于添加功能模块的设计文件、约束文件和库文件;第三指令用于综合和实现。
12.在一些实施方式中,第二脚本文件声明的配置参数与功能模块对应,运行第二脚本文件生成的fpga工程与功能模块对应。
13.在一些实施方式中,配置参数包括第一配置参数和第二配置参数,功能模块包括第一功能模块和第二功能模块,fpga工程包括第一fpga工程和第二fpga工程;第一配置参数和第一fpga工程与第一功能模块对应,第二配置参数和第二fpga工程与第二功能模块对应;运行第二脚本文件,输入第一配置参数,调用第一功能模块的设计文件和约束文件,生成第一fpga工程;运行第二脚本文件,输入第二配置参数,调用第二功能模块的设计文件和约束文件,生成第二fpga工程。
14.在一些实施方式中,第一脚本文件设置的全局参数包括第二脚本文件声明的配置参数。
15.在一些实施方式中,第一脚本文件为tcl脚本,第二脚本文件为makefile脚本。
16.根据本发明的另一方面,提供了一种芯片测试方法,包括用上述方法生成多个fpga工程;采用多个fpga工程协同测试。
17.总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:采用makefile文本,用于输入配置参数,采用tcl文本,自动加载设计文件和约束文件生成fpga工程。在实际测试过程中,仅需要更改makefile中的配置参数,替换成迭代后的文件,即可自动生成多个fpga工程。也就是说,仅利用一个fpga环境,改变输入的配置参数,就能自动生成多个具备相关不同功能的fpga工程,无需针对每个fpga工程都创建一个fpga环境,一方面减少了设计的工作量,通用性强,节省了验证时间;另一方面避免了多个工程未同步更新带来的风险。
附图说明
18.图1是本发明实施例的自动编译生成不同功能的fpga工程的方法流程图;
19.图2是编写第一脚本文件的方法流程图。
具体实施方式
20.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。正如本领域技术人员可以认识到的那样,在不脱离本技术的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
21.如图1所示,本发明实施例的自动编译生成不同功能的fpga工程的方法包括:
22.步骤一:编写功能模块的设计文件和约束文件。
23.具体地,编写功能模块的设计文件包括用程序语言实现预定的功能(即功能模块的功能),得到功能模块的设计文件。在一些实施方式中,程序语言为verilog语言、vhdl语言或者systemverilog语言。在一些实施方式中,功能模块包括第一功能模块和第二功能模块。在一些实施方式中,功能模块包括第一功能模块、第二功能模块和第三功能模块。当然,还可以包括更多的功能模块,根据实际的测试需要确定。
24.编写功能模块的约束文件包括描述逻辑设计的约束,得到功能模块的约束文件。在一些实施方式中,用文件编辑器和fpga开发eda工具自带的约束文件编辑器进行编辑。在一些实施方式中,逻辑设计的约束包括物理位置约束、电气特性约束和时序约束。通过逻辑设计的约束,保证设计能在固定的位置、按一定的速率正确运行。
25.在一些实施方式中,编写设计文件还包括采用条件编译语句实例化各个功能模块。具体地,设定一些选择条件,根据输入的参数,决定是否调用各个功能模块的设计文件和约束文件。例如,设定的选择条件为:输入为a时,实例化第一功能模块(例如功能模块a),调用第一功能模块的设计文件和约束文件;输入为b时,实例化第二功能模块(例如功能模块b),调用第二功能模块的设计文件和约束文件;输入为c时,实例化第三功能模块(例如功能模块c),调用第三功能模块的设计文件和约束文件。
26.步骤二:编写第一脚本文件,用于描述指令和设置全局参数。
27.在一些实施方式中,第一脚本文件描述的指令包括第一指令、第二指令和第三指令。其中,第一指令用于搭建工程和设定器件目标,第二指令用于添加功能模块的设计文件、约束文件和库文件,第三指令用于综合和实现。
28.参见附图2,在一些实施方式中,编写第一脚本文件具体包括:先描述第一指令,以搭建工程和设定器件目标;再描述第二指令,以添加功能模块的设计文件、约束文件和库文件;最后描述第三指令,以执行综合和实现。在一些实施方式中,在描述第一指令之后,以及描述第三指令之前,设置全局参数。设置全局参数和描述第二指令的顺序可以调换,即,可以先描述第二指令,再设置全局参数,也可以先设置全局参数,再描述第二指令。
29.在一些实施方式中,第一脚本文件为tcl脚本。tcl是一种脚本语言,目前各大fpga开发平台都支持tcl脚本。
30.在一些实施方式中,用tcl脚本命令creat_project描述第一指令。
31.在一些实施方式中,用tcl脚本命令add_files描述第二指令中的添加功能模块的设计文件和添加功能模块的约束文件。在一些实施方式中,用tcl脚本命令set_property描述第二指令中的添加功能模块的库文件。
32.在一些实施方式中,用tcl脚本命令set_property设置参数。
33.在一些实施方式中,用tcl脚本命令launch_runs和wait_on_run描述第三指令中的综合。在一些实施方式中,用tcl脚本命令launch_runs和wait_on_run描述第三指令中的实现。可以理解的是,上述脚本命令也可采用其他能实现相同或相似功能的指令替换,本发明对此不做限制。
34.步骤三:编写第二脚本文件,用于声明配置参数和描述指令。
35.在一些实施方式中,配置参数用于生成各fpga工程。
36.在一些实施方式中,配置参数与功能模块对应。在一些实施方式中,配置参数包括第一配置参数和第二配置参数。在一些实施方式中,配置参数包括第一配置参数、第二配置参数和第三配置参数。在一些实施方式中,第一配置参数对应于第一功能模块,第二配置参数对应于第二功能模块,第三配置参数对应于第三功能模块。
37.在一些实施方式中,第二脚本文件描述的指令用于调用第一脚本文件,例如tcl脚本。
38.在一些实施方式中,第二脚本文件为makefile脚本。可以理解的是,所述第一脚本文件和所述第二脚本文件也可为其他能实现相同或相似功能的文件类型,本发明对此不做限制。
39.在一些实施方式中,第一脚本文件设置的全局参数包括第二脚本文件声明的配置参数。
40.步骤四:运行第二脚本文件,生成fpga工程。
41.在一些实施方式中,运行第二脚本文件,输入配置参数,即可自动加载配置参数对应的功能模块,调用该功能模块的设计文件和约束文件,生成对应的fpga工程。
42.在一些实施方式中,fpga工程与功能模块对应。在一些实施方式中,fpga工程包括第一fpga工程和第二fpga工程。在一些实施方式中,fpga工程包括第一fpga工程、第二fpga工程和第三fpga工程。在一些实施方式中,第一fpga工程对应于第一功能模块,第二fpga工程对应于第二功能模块,第三fpga工程对应于第三功能模块。
43.在一些实施方式中,运行第二脚本文件,输入第一配置参数(例如输入参数a),即可自动加载第一功能模块(例如功能模块a),调用第一功能模块的设计文件和约束文件,生成第一fpga工程;运行第二脚本文件,输入第二配置参数(例如输入参数b),即可自动加载第二功能模块(例如功能模块b),调用第二功能模块的设计文件和约束文件,生成第二fpga工程;运行第三脚本文件,输入第三配置参数(例如输入参数c),即可自动加载第三功能模块(例如功能模块c),调用第三功能模块的设计文件和约束文件,生成第三fpga工程。
44.在一些实施方式中,上述步骤一、步骤二和步骤三各自独立完成,没有先后顺序。步骤四在最后完成,即在执行完步骤一、步骤二和步骤三之后,再执行步骤四。
45.本发明的方法只需要创建一个通用的fpga工程环境,通过输入简单的参数即可自动加载设计文件和约束文件,生成一个fpga工程。由于是一套代码,设计迭代更加容易,只需维护一个fpga工程环境,当common的设计代码有更新时,只需更新一个通用的fpga工程环境即可。相较于对多个工程环境进行维护的情形,即明显减少了工作量,又大幅降低了出错机率。
46.此外,本发明的方法采用tcl脚本命令快速创建工程,添加设计文件、约束文件、声明宏、编译、综合、导出过程文件和烧写文件,运行tcl脚本,即可自动编译完成在fpga上的
整个工程实现流程。首先,人工参与度低,节省人力成本,同时减少因为人为失误导致设计迭代的次数;其次,通用性较强,如只需要在tcl脚本中复制、粘贴新的ic设计文件即可生成一个新的ic原型验证工程;再次,节省验证时间,如采用tcl命令可以在前一个流程完成后自动打开网表,而不需要工程师实时查看综合进度再打开网表,能显著节省时间,特别是相对于打开大型设计的网表非常耗时的情形。
47.本发明还提供一种芯片测试方法,包括用上述方法生成多个fpga工程;采用多个fpga工程协同测试。
48.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本技术的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
49.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
50.流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或多个(两个或两个以上)用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
51.在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
52.应理解的是,本技术的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
53.此外,在本技术各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。
54.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到其各种变化或替换,
这些都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1