一种面向SSI器件的FPGA持续集成开发方法与系统

文档序号:28319460发布日期:2022-01-04 21:52阅读:419来源:国知局
一种面向SSI器件的FPGA持续集成开发方法与系统
一种面向ssi器件的fpga持续集成开发方法与系统
技术领域
1.本发明涉及fpga设计的领域,尤其涉及一种面向ssi器件的fpga持续集成开发方法与系统。


背景技术:

2.fpga(field programmable gate array,现场可编程逻辑门阵列)在电子信息系统中的作用越来越重要,随着芯片设计与制造水平的不断发展,fpga的设计越来越复杂,设计人员对fpga器件的各项片上逻辑资源量的要求也愈发提高。近几十年来,依靠摩尔定律,每一代新的芯片制造工艺都可提升几乎两倍的逻辑资源量,然而随着近期摩尔定律的放缓,新工艺节点的发布时间不断推迟,仅仅沿用早期的fpga设计与制造思路难以满足业界不断增长的需求。同时,在芯片制造工程领域,随着芯片自身的尺寸越大,其良品率将急剧下降。大面积晶片生产难度的增长也带来了大型单晶片fpga芯片成本的急剧攀升。由于可制造性与成本原因,很多逻辑设计不得不拆分至多片独立的fpga上进行,而板卡级电路所固有的io数量限制、pcb信号延迟与信号完整性难题也使得多片fpga的板级配合很难高效地进行。
3.堆叠硅片互联(ssi,stacked silicon interconnect)技术是目前fpga的主流厂商为打破摩尔定律限制,提升片上逻辑资源量的同时兼顾芯片器件成本的一种新型fpga芯片架构,例如xilinx的versal premium系列、virtex ultrascale+、virtex ultrascale、kintex ultrascale、和virtex

7系列中均采用了ssi技术,可为fpga开发人员提供广泛的资源与功能,充分满足各种前沿需求。如附图1所示,堆叠硅片互联这一技术使得fpga厂商的产品可以基于小面积芯片制造成本的优势,同时借助硅片间互联技术与新型芯片封装技术,通过微凸块(microbumps)和直通硅晶穿孔(through

silicon vias),将多个易于制造的fpga裸片die(又称super logic regions,slr,超级逻辑区域)组合并封装为一个整体,从而在提供大型单晶片fpga所具备的容量与带宽的同时,尽可能地提升芯片的可制造性,压缩批量制造成本和生产时间周期,进而满足愈发增长的fpga市场需求。在xilinx的ultrascale+系列fpga中,为提供更好的跨slr设计资源,专门设置有sll(super long line,超长连接线路)与laguna

tiles(暂无权威的中文翻译,是一种fpga片内专用于桥接不同slr时的流水线d触发器集合,往往与sll配合应用)以协助fpga开发。近几年来,国内外的主流云计算服务商已经开始部署ssi类型的fpga器件,例如aws(amazon web services,亚马逊云计算服务)目前已经部署的fpga器件为xilinx的ultrascale+vu9p系列型号,包含多个slr区域,属于ssi类型。而xilinx最新推出的大规模fpga器件,基本也都采用了ssi技术,可以预见在未来的fpga云市场中,采用ssi技术的fpga应用场景将越来越广泛。
4.无论在云还是在本地的fpga应用环境中,ssi技术都正在快速普及。尽管ssi技术的出现基本解决了难以兼顾逻辑资源总量与芯片成本的难题,但由于在ssi器件中,封装为一个整体的各个slr区域仍然在时钟资源、数据时序路径等方面相对独立,因此对于大型逻辑网表映射到多个slr上时,跨slr的连接处仍然需要设计人员作精巧的微调处理,以获得
最佳的实现性能。然而,对于初中级fpga开发人员,针对ssi器件的时序约束与布局布线调整优化设计仍然不便掌握,且极易出错。这些设计门槛也很大程度上限制了在国内外fpga云环境与本地环境中ssi类型器件的普及。


技术实现要素:

5.针对上述问题,根据本发明的第一方面,提出一种fpga开发方法,所述方法包括步骤:
6.步骤100:接收输入的hdl源文件和用户约束文件,进行ooc综合,生成逻辑网表,并封装为dcp文件;
7.步骤200:接收步骤100生成的dcp文件,调用跨slr接口电路自动化生成脚本以生成跨slr接口电路;
8.步骤300:进行整体布局布线,将输出结果封装为dcp文件;
9.步骤400:将步骤300生成的dcp文件生成比特流文件,配置fpga设备,对fpga设备进行运行与实时调试。
10.在本发明的一个实施例中,步骤200中所述跨slr接口电路自动化生成脚本包括:
11.根据用户逻辑工作时钟频率与sll允许的最高时钟频率信息,确定传输倍频系数n,n为正整数;
12.生成跨slr接口电路,所述电路用于将sll线频率提升为用户逻辑频率的n倍,并进行slr区域输入输出线到sll线的n比1的串并转换;
13.确定跨slr接口电路各个单元之间的逻辑连接关系;
14.进行跨slr接口电路逻辑和物理布线。
15.在本发明的一个实施例中,还包括:将步骤100至400中所生成的分析报告反馈至用户。
16.在本发明的一个实施例中,其中,步骤400中还包括:向用户提供实测的片内逻辑波形数据报告。
17.在本发明的一个实施例中,其中所生成的跨slr接口电路包括时钟发生单元、sll线、n相位选择控制器和选择器,其中
18.时钟发生单元用于生成用户逻辑的频率和用于sll线的频率;
19.sll线用于连接slr模块;
20.n相位选择控制器用于控制选择器实施串并转换;
21.选择器用于串并转换,以将多条输出线上的并行信号转为一条sll线上的串行信号,以及将一条sll线上的串行信号转为多条输入线上的并行信号。
22.在本发明的一个实施例中,其中所生成跨slr接口电路还包括多个串行连接的d触发器和多个并行连接的d触发器,其中所述sll线采用所述串行连接的d触发器增强线路信号。
23.在本发明的一个实施例中,还包括:
24.在步骤100中,使用vivado运行在云环境的容器中进行ooc综合,生成逻辑网表;
25.在步骤200中,rapidwright运行在云环境的容器中,接收步骤100生成的dcp文件并调用跨slr接口电路自动化生成脚本;
26.在步骤300中,使用vivado运行在云环境的容器中进行整体布局布线;
27.在步骤400中,使用vivado运行在云环境的容器中将步骤300生成的dcp文件生成比特流文件。
28.在本发明的一个实施例中,还包括:利用持续集成工具,通过自动化脚本,检测设计仓库的代码文件变动情况,当云平台用户更改fpga的逻辑设计代码或布局布线约束文件时,自动触发执行步骤100到400。
29.根据本发明的第二方面,提供一种计算机可读存储介质,其中存储有一个或者多个计算机程序,所述计算机程序在被执行时用于实现本发明的fpga开发方法。
30.根据本发明的第三方面,提供一种计算系统,包括:存储装置、以及一个或者多个处理器;其中,所述存储装置用于存储一个或者多个计算机程序,所述计算机程序在被所述处理器执行时用于实现本发明的fpga开发方法。
31.与现有技术相比,本发明的面向ssi器件的fpga持续集成开发方法与系统,提供了一种自动化的优化方案,显著降低了大型逻辑设计在fpga器件部署的难度,使得设计者不需要手动的方式进行繁琐的跨slr设计迭代与局部布局布线的调整,降低了开发门槛,有助于大型逻辑设计在ssi类型的fpga云环境与本地环境上的映射实现与快速部署。
附图说明
32.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
33.图1示出了堆叠硅片互联技术;
34.图2(a)示出了本发明的自动化脚本的流程图;
35.图2(b)示出了各阶段中各软件的各种输入输出文件
36.图3示出了跨slr接口电路自动化生成脚本执行流程;
37.图4示出了跨slr接口电路自动化生成脚本生成的跨slr接口模块电路;
38.图5示出了与持续集成工具的结合的示意图。
具体实施方式
39.针对背景技术中提出的问题,发明人进行了研究,提出了一种面向ssi器件的fpga持续集成开发方法与系统,本发明适用于基于网络的云环境,同样也适用于无网络的本地离线开发环境,将面向fpga底层硬件细节的eda辅助交互工具操作流程脚本化、自动化。图2(a)示出了自动化脚本的流程图,概括说来,包括四个阶段:在第一阶段vivado接收hdl源文件和用户约束文件,进行各个子模块的综合;在第二阶段由rapidwright进行布线,调用内部预置的跨slr接口电路自动化生成脚本生成跨slr接口模块电路;在第三阶段,再次启动vivado,进行整体布局布线工作;在第四阶段,生成比特流文件,配置fpga,进行fpga设备运行与实时调试工作。图2(b)详细示出了各阶段中eda软件的各种输入输出文件,以下将参照图2(b)对上述四个阶段进行如下详细说明:
40.第一阶段
41.用户将hdl源文件和用户约束文件推送到vivado环境中进行ooc(out of context,上下文无关的,即分别对设计层次中的各个子模块进行单独处理)综合,其次生成逻辑网表并进行阶段性评估分析。根据本发明的一个实施例,如果用户所提供的设计文件不可综合或不能在ooc综合阶段满足约束条件,vivado最终向用户给出反馈以协助在此阶段的迭代设计,如果满足约束条件则将此阶段的输出逻辑网表结果最终封装为dcp文件传送至下一阶段。
42.根据本发明的一个实施例,在本阶段,vivado可以运行在云环境的容器中。
43.第二阶段
44.根据本发明的一个实施例,在rapidwright工具环境中,将第一阶段中vivado ooc综合后生成的逻辑网表信息传递给rapidwright工具的dcp文件入口。
45.考虑到目前业界的主流ssi类型fpga器件中,sll的资源数量往往较少,在跨slr区域的设计中属于紧张资源,需要在尽可能在保证性能与稳定性的同时节省sll资源。
46.通过提取第一阶段的综合后逻辑网表信息,读取fpga设备型号、用户逻辑网表所需要映射的区域面积,进而结合器件各个slr逻辑资源量的实际情况确定所需的sll资源数量。
47.启动rapidwright之后,调用内部预置的跨slr接口电路自动化生成脚本。图3示出了根据本发明的一个实施例的跨slr接口电路自动化生成脚本执行流程。根据该流程,其首先计算sll线的传输倍频系数n,即sll频率可以增加的倍数n,n为正整数,从而将所需的sll线的数量变为n分之一;最后生成跨slr接口电路,该电路用于将sll线频率提升n倍,并完成slr区域输入输出线到sll线的n比1的串并转换;进而确定跨slr接口电路各个单元之间的逻辑连接关系,完成逻辑布线,再最终进行跨slr接口电路物理布局布线映射工作。n的数值则需要结合器件自身速度等级、用户逻辑(位于slr区域)的工作时钟频率等信息确定。为更好地解释n取值的方法,叙述一具体实施案例:例如,对于某速度等级下的fpga器件所允许的sll传输时钟频率最高为600mhz,而用户逻辑工作时钟频率为150mhz的情况下,则所需的倍频系数n=600/150=4。自动化生成脚本根据用户逻辑工作时钟频率与sll允许的最高时钟频率信息,来确定最优的传输倍频系数n,n=sll允许的最高时钟频率/用户逻辑工作时钟频率,如果相除结果非整数,则向下取整,以使sll上实际工作的时钟频率不超过sll最高时钟频率。
48.根据上文所述一个具体实施案例,通过将sll线上的工作频率提升为4倍,使其每条线可以传输n倍的数据,而总体的跨slr数据传输带宽不变,从而将所需的sll线的数量变为4分之一,显著节省了sll资源。
49.为更清楚地表述所述实施例的设计实现方法,图4示出了本发明的跨slr接口模块电路的结构示意图。图4中除两个slr内部逻辑区域(图中分别表示为slr1和slr2)之外的部分均为跨slr接口模块电路。时钟发生单元产生两个频率clk_0和clk_slr,clk_0为用户逻辑工作频率,即slr内部频率,用于slr1和slr2。clk_slr为clk_0的n倍,用于sll线,sll线采用串行d触发器增强信号,图4中的s1、s2、s3、s4、s5、s6为串行d触发器,串行d触发器采用的时钟输入为clk_slr。在slr区域的边缘进行slr区域输入输出线到sll线的n比1的转换,采用由n相位选择控制器控制的n:1选择器进行,图中示出了两个n:1选择器sel1和sel2,sel1用于slr1,sel2用于slr2。
50.n:1选择器用于实现串并转换,将多条输出线上的并行信号转为一条sll线上的串行信号,还用于将一条sll线上的串行信号转为多条输入线上的并行信号。n:1选择器在某个时刻具体选择某条输入输出线由n相位选择控制器控制,n相位选择控制器的工作时钟频率为clk_slr,用于为n:1选择器提供选择端的控制信号,该控制信号控制n:1选择器(sel1或sel2)具体确定n条线中的哪条线被选中。n:1选择器本身可以为纯组合逻辑,没有时钟频率信号接入,因此其实际工作频率与n相位选择控制器相同,为clk_slr。n:1选择器(sel1或sel2)以clk_slr的频率依次选中n个输入线(或输出线)中的一条,因此这n个输入线(或输出线)的频率为clk_0。
51.串行设置的d触发器(s1、s2、s3、s4、s5、s6,以下简称为串行d触发器),用于提升信号驱动能力和跨slr信号质量,其数量与n无关。n:1选择器与slr区域(slr1或slr2)间的d触发器还并行设置多个d触发器,即图中的p11、p12、p13、p14和p21、p22、p23、p24,以下简称为并行触发器。
52.n相位选择控制器工作在clk_slr时钟频率下,产生一组面向n:1选择器的控制信号,例如选择器sel1的se端将以clk_slr的节拍依次片选到p11、p12、p13、p14触发器的q端数据,送入d触发器s1的d端,完成并转串工作。
53.串行d触发器的物理位置位于slr的边缘(或者可看作为“slr边缘逻辑区域”),仍然是在slr的裸片die上实现的。
54.根据本发明的一个实施例,在本阶段rapidwright可以运行在云环境的容器中。
55.根据本发明的一个实施例,此阶段的输出结果将封装为dcp文件传送至下一阶段。
56.第三阶段
57.再次加载启动vivado环境,进行整体布局布线工作,并针对总体设计进行分析评估,生成阶段性分析报告。如果该阶段下不能满足整体的布局布线约束条件,则将报告反馈至用户以在本阶段继续进行设计调整与迭代。此阶段的输出结果将封装为dcp文件传送至下一阶段。
58.根据本发明的一个实施例,在本阶段,vivado可以运行在云环境的容器中。
59.第四阶段
60.vivado将第三阶段生成的dcp文件转化为比特流文件(即.bit配置文件),利用所述比特流文件进行fpga设备的配置,并对fpga设备运行与实时调试的工作。优选的,在本阶段中,向用户提供实测的片内逻辑波形数据等报告,以用于后期的进一步设计优化或云上部署。
61.根据本发明的一个实施例,本阶段可以在本地环境或云环境中执行。
62.持续集成(continuous integration,简称ci),是借助持续集成的工具实现在源代码变更后自动检测、拉取、构建并进行单元测试的过程。持续集成的基本思想是利用持续集成的工具监测一个或多个远程源代码仓库是否出现变更,当变更被推送到远程仓库时,工具将会自动监测到更改、下载副本、构建并运行任何所需要的单元测试,以便尽快为开发者提供反馈。
63.优选的,根据本发明的一个实施例,将上述4个阶段与持续集成工具(以gitlab

ci为例进行说明)进一步整合。如图5所示,借助gitlab

ci工具,将通过自动化脚本,检测gitlab设计仓库的代码文件变动情况,当云平台用户更改fpga的逻辑设计代码或布局布线
约束文件时,将自动触发一次完整的工作流程(即上述第一阶段至第四阶段)直至生成可在fpga物理器件上进行配置的比特流文件,同时各个阶段下的分析报告也将反馈至云平台用户以供参考。
64.为使本领域任何普通技术人员能够实现或者使用本公开内容,上面围绕本公开内容进行了描述。对于本领域普通技术人员来说,对本公开内容进行各种修改是显而易见的,并且,本文定义的通用原理也可以在不脱离本公开内容的精神或保护范围的基础上适用于其它变型。此外,除非另外说明,否则任何方面和/或实施例的所有部分或一部分可以与任何其它方面和/或实施例的所有部分或一部分一起使用。因此,本公开内容并不限于本文所描述的例子和设计方案,而是与本文公开的原理和新颖性特征的最广范围相一致。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1