一种FPGA芯片的调试方法与流程

文档序号:31879476发布日期:2022-10-21 22:49阅读:71来源:国知局
一种FPGA芯片的调试方法与流程
一种fpga芯片的调试方法
技术领域
1.本技术涉及数字集成电路技术领域,尤其涉及一种fpga芯片的调试方法。


背景技术:

2.在fpga设计中,经常会存在跟预期不符合的情况,现有的fpga调试手段,一种是将fpga内部需要查看的信号连接到fpga管脚,然后用专业信号检测仪器这些管脚进行分析;另一种是利用外接电缆通过jtag接口连到fpga上,通过芯片生产厂商提供的软件逻辑分析仪来模拟各种触发条件生成波形来分析问题。
3.上述第一种调试方案是在fpga综合布局布线阶段后进行的,如果用户定位故障时需要跟踪的内部信号没有在设计阶段连接到fpga管脚,这时就需要修改设计,将需要跟踪的内部信号重新分配到芯片管脚上,这样会导致fpga资源利用率的上升,调试完成后,还得将修改回退,极大的增加了设计工作量。第二种调试方案中需要在fpga逻辑中插入fpga厂家提供的逻辑分析单元,由于这部分功能占用的是fpga内部的bram资源,所以所能存储的现场数据量非常有限,另外通过电缆连接的方式使用起来也非常不便。


技术实现要素:

4.为了克服现有技术的不足,本技术实施例提供一种fpga芯片的调试方法,其特征在于,所述包括:
5.对fpga芯片布局布线后进行调试,获取需要输出到fpga芯片外部端口的内部模块调试端口信息;所述fpga芯片还包含内部模块其他端口;
6.对fpga芯片根据按照所述内部模块调试端口信息编辑的调试流程约束文件进行第二次布局生成布局网表;所述调试流程约束文件对所述内部模块调试端口和fpga芯片外部端口的连接关系进行约束;
7.对fpga芯片根据所述布局网表进行第二次布线,得到输出到fpga芯片外部端口的所述内部模块调试端口的信号;所述内部模块其他端口在所述第二次布线和所述布线中的结果保持一致。
8.优选的,所述内部模块调试端口信息是fpga芯片在调试阶段需要分析的端口信息;所述内部模块调试端口在设计阶段没有连接到fpga芯片外部端口。
9.优选的,所述调试流程约束文件中约束的fpga芯片外部端口是对fpga芯片进行所述布局布线后空闲的输出端口。
10.优选的,根据所述布局生成的布局文件和所述调试流程约束文件对fpga芯片进行所述第二次布局。
11.优选的,根据所述布线生成的布线文件和所述布局网表对fpga芯片进行所述第二次布线。
12.优选的,利用所述内部模块调试端口的信号对fpga芯片进行调试。
13.本技术提供了一种fpga芯片的调试方法,通过在第二次布局阶段增加调试流程约
束文件,对fpga芯片重新进行布局布线和仿真,能在无需修改用户设计的条件下,非常准确的获取内部模块端口信号的状态。同时,由于采用原有布线文件对fpga芯片进行布线,可以保证原有绕线结果不变,而无需过多增加额外的模块,因此可以节省fpga芯片上的资源。
附图说明
14.为了更简单说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
15.图1为现有技术中fpga芯片的调试方法流程示意图;
16.图2为本技术实施例中一种fpga芯片的调试方法流程示意图;
17.图3为本技术实施例中一种fpga芯片的调试方法结构示意图;
18.图4为本技术实施例中一种fpga芯片的调试方法另一种结构示意图。
具体实施方式
19.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
20.图1为现有技术中fpga芯片的调试方法流程示意图,一般fpga的设计流程包括:软件分析设计、模块端口信号选取并分配到fpga端口输出、布局布线、软件生成码流、下载码流到芯片、示波器查看信号进行调试等步骤。其中布局是指从映射取出定义的逻辑和输入输出块,并把它们分配到fpga内部的物理位置,布线是根据布局的拓扑结构,利用自动布线软件,完成所有的逻辑连接。
21.在查看信号进行调试时,如果想要跟踪的内部模块端口信号没有在设计阶段输出到fpga芯片的外部端口上,用户需要修改设计,当设计非常复杂时,这是一个极大的负担,会导致fpga资源利用率的上升,而且容易出错。当fpga调试完毕后,还得将修改回退,额外增加了调试的工作量。
22.图2为本技术实施例中一种fpga芯片的调试方法流程示意图,包括以下步骤:
23.步骤210:对fpga芯片布局布线后进行调试,获取需要输出到fpga芯片外部端口的内部模块调试端口信息;fpga芯片还包含内部模块其他端口。
24.在一个实施例中,内部模块调试端口信息是fpga芯片在调试阶段需要分析的端口信息;内部模块调试端口在设计阶段没有连接到fpga芯片外部端口。
25.步骤220:对fpga芯片根据按照内部模块调试端口信息编辑的调试流程约束文件进行第二次布局生成布局网表;调试流程约束文件对内部模块调试端口和fpga芯片外部端口的连接关系进行约束。
26.在一个实施例中,在生成所述新的布局网表之前,还需要编辑调试流程约束文件;约束文件根据内部模块调试端口信息编写;约束文件描述fpga芯片空闲输出端口和所述内部模块调试端口的连接关系;fpga空闲芯片输出端口为上次布局布线后没有使用的fpga芯
片输出端口。
27.步骤230:对fpga芯片根据布局网表进行第二次布线,得到输出到fpga芯片外部端口的内部模块调试端口的信号;内部模块其他端口在第二次布线和原有布线中的结果保持一致。
28.在一个实施例中,根据原有布线文件和新的布局网表对fpga芯片进行布线和仿真。
29.在一个实施例中,跟踪输出到fpga芯片外部端口的内部模块调试端口信号,对fpga进行故障调试并找出故障原因。
30.图3为本技术实施例中一种fpga芯片的调试方法结构示意图,如图所示:
31.在综合、布局、布线模块中使用流程运行工具,将设计工程依次运行综合、布局和绕线。
32.分析绕线所得到的结果,选取fpga芯片内部要查看的某个模块输出端口状态,并将端口分配到芯片上的管脚i/0上。
33.在一个实施例中,正常设计的流程中,对管脚分配的信息会保存在一个约束文件中,正常的流程会读取约束文件,确定特定端口是从fpga芯片的输出管脚出来(如果用户不指定,那么流程会自动分配到某个管脚)。同样的,用户在调试过程中也可以把选取net对应的端口分配到i/0的信息,写入另外一个调试流程约束文件(正常流程的约束文件,不做修改)。调试流程,在重新进行布局时,会读取调试流程约束文件,产生新的布局网表。此处,正常流程的约束文件和调试流程的约束文件,是两个互不影响的独立文件。
34.在设计不做其他修改的情况下,重新运行布线流程。重新布线时,保证除了选取的端口相关的该条net外,其他任何绕线都跟原有的绕线结果保持一致。这是因为每次绕线时,都会产生一个绕线约束文件,该文件保留了所有绕线方式。当调试流程重新布线时,就需要读取正常流程产生的绕线约束文件,按照绕线约束文件里的绕线的约束,进行绕线。这保证了在不修改设计的情况下,两次布线结果保持一致。而新加的与net相关的绕线,在原有绕线约束文件里没有,就需要按照绕线算法依据新的布局网表重新绕线。这就保证正常流程的绕线和调试流程的绕线,只有新加的线不同,其他线不变。
35.然后就可以使用专业信号检测仪器,查看选取net对应的端口分配到的管脚i/o的信号状态,看是否端口状态跟预期一致。
36.图4为本技术实施例中一种fpga芯片的调试方法另一种结构示意图,显示为一个具体的fpga芯片设计,其中,fpga芯片包含i/o0-7八个对外端口,fpga芯片中包含模块insta,模块insta中包含两个内部子模块instb和instc。此时用户可以将模块insta的输入端口in0_a和in1-a,输出端口out0-a和out1-a分别分配到芯片的管脚i/o上(比如输出端口可以分配到i/04和i/05)。用户此时只能用设备(比如示波器)查看fpga芯片管脚i/04和i/05的信号状态(i/04对应端口out0_a的状态,i/05对应端口out1_a的状态)。而内部子模块instb和instc的输出端口此时是无法用仪器直接查看的(此时,用户只能通过仪器查看fpga芯片i/00-7对外端口的信号状态)。
37.当用户发现芯片工作不符合预期时,就需要调试。比如想查看instb的out0_b的信号是否跟预期一致。那么常规操作是修改用户设计,将模块insta添加一个输出端口out2_a,将内部子模块instb的输出端口out0_b和模块insta的输出端口out2_a连接,并将输出端
口out2-a分配到fpga芯片的剩余空闲管脚,比如i/06上。
38.现有技术的情况下用户需要修改设计,本技术可以规避用户修改设计,直接通过软件修改i/o配置文件,将out0_b分配到fpga芯片管脚i/06上。然后运行placer,router,bitgen等流程重新生成码流。生成码流后,在芯片上,直接用仪器(比如示波器)查看fpga芯片管脚i/06的状态。根据此方法,用户可以查看任意内部模块的任意端口(比如此例中的子模块instb的out0_b和子模块instc的out0_c,实际中的fpga芯片设计,可能包含成百上千个模块,能够极大的节省资源和调试时间)。
39.需要说明的是,在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定的编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明内容,并且上面对特定语言、系统功能模块的调用所做的描述仅仅是为了披露发明的最佳实施方式。
40.在此处所提供的说明书中,说明了大量的具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下完成实现。在一些示例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
41.显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要去及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1