CN115544929A - 对fpga eda软件中路径时序延时的测试方法及装置 - Google Patents
对fpga eda软件中路径时序延时的测试方法及装置 Download PDFInfo
- Publication number
- CN115544929A CN115544929A CN202211516990.5A CN202211516990A CN115544929A CN 115544929 A CN115544929 A CN 115544929A CN 202211516990 A CN202211516990 A CN 202211516990A CN 115544929 A CN115544929 A CN 115544929A
- Authority
- CN
- China
- Prior art keywords
- path
- delay
- time sequence
- module
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/343—Logical level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/347—Physical level, e.g. placement or routing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Tests Of Electronic Circuits (AREA)
Abstract
本发明提供了一种对FPGA EDA软件中路径时序延时的测试方法及装置,通过获取时序模型文件、芯片结构文件、网表文件以及布线文件并解析,计算出时序模型文件中每条时序路径的逻辑延时与路径延时,再获取时序报告文件并解析,找出时序报告文件中每条时序路径的逻辑延时与路径延时,最后将每条时序路径计算出的逻辑延时与路径延时与从时序报告中得到的相对应的时序路径的逻辑延时与路径延时进行比较,得到比对结果输出。通过本发明可以迅速地验证出哪条时序路径有误,及时发现bug,从而提高FPGA EDA软件的测试效率。
Description
技术领域
本发明属于可编程逻辑器件FPGA EDA的软件测试领域,尤其是涉及一种对FPGAEDA软件中路径时序延时的测试方法及装置。
背景技术
FPGA EDA软件是一种用于设计电子电路的自动化工具,它的主要功能是将电路设计转换为网表文件后,再对其进行装箱,布局,布线,生成配码等一系列的流程处理。布线之后每条时序路径都有逻辑延时以及路径延时,时序路径通常是非常多的,EDA软件处理时会计算到每个模块的每个端口的逻辑延时以及每个mux经过的路径延时,测试人员需要通过一定的规则以及时序模型去逐条检查每条时序路径的延时是否计算正确,这是一个非常浩大的工作量。如果使用一种自动化验证时序延时的测试方法,则可以大大提高测试人员的测试效率,有效的缩短测试时间。
发明内容
本发明所要解决的技术问题是怎样能够利用软件测试技术进行时序延时的测试,提出了一种对FPGA EDA软件中路径时序延时的测试方法及装置。
为解决上述技术问题,本发明所采用的技术方案是:
一种对FPGA EDA软件中路径时序延时的测试方法,包括以下步骤:
步骤1:获取时序模型文件、芯片结构文件、网表文件以及布线文件并解析,通过各文件中的模块之间的关系,计算出时序模型文件中每条时序路径的逻辑延时和路径延时;
步骤2:获取时序报告文件并解析,找出时序报告文件中每条时序路径的逻辑延时和路径延时;
步骤3:将步骤1中每条时序路径计算出的逻辑延时和路径延时,与步骤2中从时序报告中得到的相对应的时序路径的逻辑延时和路径延时进行比较,得到比对结果输出。
进一步地,步骤1中计算出时序模型文件中每条时序路径的逻辑延时和路径延时的方法是:
步骤1.1:解析所述时序模型文件,得到各模块、各模块所对应的通道延时,以及每个模块端口的延时、建立时间和保持时间,并生成时序模型字典time_mode_dict;
步骤1.2:解析芯片结构文件,得到所有芯片的坐标位置和与每个坐标位置对应的模块名,并生成用于存储模块位置字典lable_mux_dict;
步骤1.3:解析网表文件,得到网表中所有模块cell、每个模块cell下所有端口以及各端口上所通过的信号,生成模块端口信号字典cell_dict;
步骤1.4:解析布线文件,得到每个信号经过的source点,路径,以及sink点,生成信号字典route_dict,其中每个source点,路径,以及sink点都包括了坐标位置及端口名;
步骤1.5:计算逻辑延时:获取时序报告中的一条时序路径列表,找出逻辑延时类型的路径节点,确定出这条时序路径经过的第一个时序路径节点的模块cell及端口port作为字典time_mode_dict中的输入端口dstPort1,再沿着这条时序路径查看该模块的输出端口作为startPort1,从时序模型字典time_mode_dict中对应的模块cell及端口dstPort1和startPort1找出模块端口的延时,依次类推找到这条时序路径中所有的逻辑延时,进行累加;
步骤1.6:计算路径延时:找出时序路径列表中路径延时类型的路径节点,从第一个路径延时类型的路径节点开始得到时序路径经过的模块cell、端口port以及模块位置location,从模块端口信号字典cell_dict中根据模块cell、端口port得到该端口所经过的信号名,且该模块cell、端口port为信号起始点source,再从时序路径列表中找出路径延时类型的下一个路径节点的模块名cell、端口port及位置location,这个路径节点为终点sink,依据信号名、起始点source及终点sink从信号字典route_dict找出这条路径经过的所有通道chan,依据通道chan找出路径经过的所有位置location,依据位置location从模块位置字典lable_mux_dict中获取模块名module_name,根据模块名module_name从时序模型字典time_mode_dict中找出相应module_name对应的延时作为路径延时,依次类推找到这条时序路径中的所有路径延时,并进行累加。
进一步地,步骤2中找出时序报告文件中每条时序路径的逻辑延时和路径延时的方法是:
获取时序报告文件得到所有的时序路径,将所有的时序路径保存在时序路径字典path_dict中;在所述时序路径字典path_dict中,包括了各种时序路径类型下的所有时序路径,在各时序路径中,列出了该时序路径所经过的所有模块cell,端口以及延时,将该时序路径中相同延时类型的延时进行相加得到路径延时和逻辑延时,将路径延时和逻辑延时相加得到总延时。
进一步地,在所述时序路径字典path_dict中,还包括起始时钟的延时,数据延时以及终点时钟的延时,所述数据延时包括逻辑延时和路径延时。
进一步地,所述时序路径类型包括同时钟setup路径,同时钟hold路径,跨时钟setup路径,跨时钟hold路径,异步setup路径,以及异步hold路径。
进一步地,计算终点时钟延时则是计算时钟到终点寄存器的延时,根据寄存器的终点模块名及端口名,从时序模型字典time_mode_dict中,找出相应的模块名及端口对应下的建立时间或者保持时间,求和后即为终点时钟延时。
进一步地,计算起始时钟延时则是计算时钟到起始寄存器的延时,根据寄存器的起点模块名及端口名,从时序模型字典time_mode_dict中,找出相应的模块名及端口对应下的延时,求和后即为起点时钟延时。
进一步地,在计算时序路径逻辑延时的时候,如果是setup类型的路径,需要将所有逻辑延时的时间减去t_su的延时,如果是hold类型的路径,需要将所有逻辑延时的时间加上t_h的延时。
本发明还提供了一种对FPGA EDA软件中路径时序延时的测试装置,包括以下模块:
实际计算延时模块:用于获取时序模型文件、芯片结构文件、网表文件以及布线文件并解析,通过各文件中的模块之间的关系,计算出时序模型文件中每条时序路径的逻辑延时和路径延时;
时序报告延时计算模块:用于获取时序报告文件并解析,找出时序报告文件中每条时序路径的逻辑延时和路径延时;
判别模块:用于将实际计算延时模块中每条时序路径计算出的逻辑延时和路径延时,与时序报告延时计算模块中从时序报告中得到的相对应的时序路径的逻辑延时和路径延时进行比较,得到比对结果输出。
采用上述技术方案,本发明具有如下有益效果:
本发明提供的对FPGA EDA软件中路径时序延时的测试方法及装置,通过将时序报告中的实际延时与通过每条路径经过的节点计算的延时进行比较,确定出错误的时序路径位置,方便快捷。而本发明得以实现重要的是在于,理清了在计算延时的时候,通过从多个文件中确定模块端口之间的关系,并根据从各个文件中解析出的延时计算所有延时的期望值,与时序报告中的实际延时进行比较。解决了由于每个电路可能有成百上千条时序路径,每条时序路径可能经过很多cell,通过测试人员手动验证每条时序路径中的逻辑延时和路径延时,工作量非常大,通过本发明,可以非常有效,并且非常迅速的验证出哪条时序路径有误,及时发现bug,从而提高FPGA EDA软件的测试效率。
附图说明
图1为本发明系统流程图;
图2为本发明测试装置图。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了本发明一种对FPGA EDA软件中路径时序延时的测试方法的具体实施例,包括以下步骤:
步骤1:获取时序模型文件、芯片结构文件、网表文件以及布线文件并解析,通过各文件中的模块之间的关系,计算出时序模型文件中每条时序路径的逻辑延时和路径延时。
本实施例中,计算出时序模型文件中每条时序路径的逻辑延时与路径延时的方法是:
步骤1.1:解析所述时序模型文件,得到各模块、各模块所对应的通道延时,以及每个模块端口的延时、建立时间和保持时间,并生成时序模型字典time_mode_dict。
其中,时序模型文件是硬件通过实际的时序的延时整理出来的文件,其中包括了到每个模块端口的延时,建立时间(是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间),保持时间(是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间),以及到每个模块的延时,以xml文件的形式保存,本发明中所有后续的延时计算都会通过这个文件进行计算,通过引入python中的parse模块,进行xml文件的解析,解析后生成时序模型字典time_mode_dict,该字典中如下所示:
{CELL:[{(dstPort1, startPort1): [p_delay], (dstPort2, startPort2):[p_delay] , (dstPort3, startPort3): [p_delay]}, {ff_Port: {port1: {t_su:delay, t_h: delay}, port2: {t_su: delay, t_h: delay}, port3: {t_su: delay, t_h: delay}}}], Ram_Block:[{(dstPort1, startPort1): [p_delay], (dstPort2,startPort2): [p_delay] , (dstPort3, startPort3): [p_delay]}, {ff_Port:{port1: {t_su: delay, t_h: delay}, port2: {t_su: delay, t_h: delay}, port3:{t_su: delay, t_h: delay}}}], IO:[{(dstPort1, startPort1): [p_delay],(dstPort2, startPort2): [p_delay] , (dstPort3, startPort3): [p_delay]}, {ff_Port: {port1: {t_su: delay, t_h: delay}, port2: {t_su: delay, t_h: delay},port3: {t_su: delay, t_h: delay}}}], PLL:[{(dstPort1, startPort1): [p_delay],(dstPort2, startPort2): [p_delay] , (dstPort3, startPort3): [p_delay]}, {ff_Port: {port1: {t_su: delay, t_h: delay}, port2: {t_su: delay, t_h: delay},port3: {t_su: delay, t_h: delay}}}], MUX: {module_name1: m_delay, module_name2: m_delay, module_name3: m_delay }}。
其中CELL,Ram_Block,IO,PLL表示网表文件中的模块名,dstPort1是指一条时序路径节点中的输入端口名,startPort1是指一条时序路径节点中的输出端口名,p_delay表示从dstPort1到startPort1的延时。
字典中,ff_Port表示到进入的端口,port1表示从ff_Port所到的端口,t_su即为建立时间,t_h为保持时间,以上延时均属于逻辑延时。
字典中,MUX中表示的延时为路径延时,module_name1表示模块名,m_delay表示该模块的通道延时,通道延时属于路径延时。
步骤1.2:解析芯片结构文件,得到所有芯片的坐标位置和与每个坐标位置对应的模块名,并生成模块位置字典lable_mux_dict;
其中,芯片结构文件中包含了所有芯片的坐标位置,以及模块名,通过解析这个文件,生成lable_mux_dict字典,存储每个坐标路径对应的模块名,该字典如下所示:
{loc1: module_name, loc2: module_name, loc3: module_name},以位置为key,以模块名为属性值。
步骤1.3:解析网表文件,得到网表中所有cell、每个cell下所有端口以及各端口上所通过的信号,生成模块端口信号字典cell_dict。
因为网表中包括了所有cell以及端口和信号,解析网表文件时,以cell_name为key, 以该cell下的端口port以及信号signal为value值保存到模块端口信号字典cell_dict中,如下所示:
{cell_name1: {port1: [signal…], port2: [signal…], port3:[signal…]}, cell_name2: {port1: [signal…], port2: [signal…], port3:[signal…]}, cell_name2: {port1: [signal…], port2: [signal…], port3:[signal…]}}。
步骤1.4:解析布线文件,得到每个信号经过的source点,路径,以及sink点,生成信号字典route_dict,其中每个source点,路径,以及sink点都包括了坐标位置及端口名;
其中,布线文件以信号名为key, 以该信号经过的source点,路径,以及sink点为value值保存到信号字典route_dict中,其中每个信号可能有多个sink点,通过元祖形式(字典中每个小括号中表示的为一个元祖)将每条路径都保存到列表中,如下所示:
{signal1: [(source, chan…,sink), (source, chan…,sink)…], signal2:[(source, chan…,sink), (source, chan…,sink)…], signal3: [(source, chan…,sink), (source, chan…,sink)…]}。
其中经过的每个source, chan, sink中都包括了坐标位置以及端口名,以列表形式保存:[loc, port],loc表示坐标位置,port表示端口名。
通过对时序模型文件、芯片结构文件、网表文件以及布线文件的解析,可以通过布线文件中的信号名、起点模块名和端口名,与网表文件建立关联,通过信号中的通道chan的位置,从芯片结构文件的模块位置字典lable_mux_dict中找到通道chan所对应的模块,进而从时序模型字典time_mode_dict中找到模块端口间的延时,以及模块通道延时。由于发现了这些文件之间的关联,从而使逻辑延时与路径延时的计算成为可能,进而可以与时序报告中的实际延时进行比较。
对于时序报告来说,通过时序路径获取生成的时序报告pb文件,该pb文件的数据可以通过sqlite数据库打开,所以通过引入python中的sqlite3库,打开pb文件,并获取所有的时序路径,包括同时钟setup路径,同时钟hold路径,跨时钟setup路径,跨时钟hold路径,异步setup路径,以及异步hold路径,生成后的所有路径保存在path_dict字典中,该字典如下所示:
{path_type1: [path1, path2, path3…], path_type2: [path1, path2,path3…], path_type3: [path1, path2, path3…]}。
其中path_type表示时序路径的类型,包括同时钟setup路径,同时钟hold路径,跨时钟setup路径,跨时钟hold路径,异步setup路径,以及异步hold路径,path1, path2,path3表示该类型下的所有路径,其中path1, path2, path3是一个列表类型,列出了该时序路径所经过的所有模块cell,端口以及延时,该列表如下所示:
[(delay_type, delay, total_delay, cell, port, location), (delay_type,delay, total_delay, cell, port, location), (delay_type, delay, total_delay,cell, port, location), (delay_type, delay, total_delay, cell, port,location)]。
该列表中的每一个元祖(python中的tuple,通过小括号表示)都表示一条路径,其中delay_type表示延时类型,delay_type为0的时候表示逻辑延时,delay_type为1的时候表示路径延时,delay为时序报告中计算的相应延时类型的延时,total_delay为该条时序路径中所有delay的总和,cell是指这条路径的cell名(有时,路径中的cell名字与网表文件中得到的cell名不一致,则需要将路径中的cell名转换成网表文件中的cell名),port是指这条路径的cell中的端口名,location表示这个cell装箱布局后的位置,将该时序路径中相同延时类型的延时进行相加得到路径延时和逻辑延时,将路径延时和逻辑延时相加得到总延时。
通过解析时序报告获取到了所有时序路径的延时,保存为时序报告延时字典rpt_dict,该字典rpt_dict中包括了起始时钟的延时,数据延时以及终点时钟的延时,所述数据延时包括逻辑延时和路径延时,该字典如下所示:
{‘src_clk’: [logic_delay, net_delay, total_delay], ‘data’: [logic_delay, net_delay, total_delay], ‘dest_clk’: [logic_delay, net_delay, total_delay]}。‘src_clk’表示起始时钟的延时,‘data’表示数据延时,‘dest_clk’表示终点时钟的延时。logic_delay表示逻辑延时,net_delay表示路径延时,total_delay表示总延时。
步骤1.5:计算逻辑延时:获取时序报告中的一条时序路径列表,找出该条时序路径列表中为逻辑延时类型的路径节点,确定出这条时序路径经过的第一个时序路径节点的模块cell及端口port作为字典time_mode_dict中的startPort1,再沿着这条时序路径查看该模块输出的端口作为dstPort1,从时序模型字典time_mode_dict中对应的模块cell及端口dstPort1和startPort1找出模块端口的延时,依次类推找到这条时序路径中所有的逻辑延时,进行累加。
具体的,首先判断时序报告中的路径是否为空,如果为空,则说明这个工程没有时序路径,如果不为空,则进行逻辑延时的计算,计算时,通过获取path1这个列表,找到delay_type为0表示逻辑延时类型的路径节点,通过找到这条时序路径经过的cell以及port,通过第一个cell以及port确定第一个路径节点的模块名(CELL,Ram_Block,IO,PLL),以及起始端口startPort1,再沿着这条时序路径找到该模块输出的端口作为终点端口dstPort1,再通过time_mode_dict找到该模块名下(dstPort1,startPort1)所对应的逻辑延时[p_delay],后面的路径依次类推找到这条时序路径的所有逻辑延时类型的延时进行累加。
本实施例中,计算终点时钟延时的时候,则是计算时钟到终点寄存器的延时,需要根据时序模型字典time_mode_dict,找到字典中的ff_Port,再根据寄存器的终点模块名及端口名,找出相应的模块名及端口对应下的延时,求和后即为起点时钟延时。
本实施例中,在计算时序路径逻辑延时的时候,其中如果是setup类型路径的时候,需要将所有逻辑延时的时间减去t_su的延时,如果是hold类型路径的时候,需要将所有逻辑延时的时间加上t_h的延时。
步骤1.6计算路径延时:找出时序路径列表中路径延时类型的路径节点,从第一个路径延时类型的路径节点开始得到时序路径经过的模块cell、端口port以及模块位置location,从模块端口信号字典cell_dict中根据模块cell、端口port得到该端口所经过的信号名,且该模块cell、端口port为信号起始点source,再从时序路径列表中找出路径延时类型的下一个路径节点的模块名cell、端口port及位置location,这个路径节点为终点sink,依据信号名、起始点source及终点sink从信号字典route_dict找出这条路径经过的所有通道chan,依据通道chan找出路径经过的所有位置location,依据位置location从模块位置字典lable_mux_dict中获取模块名module_name,根据模块名module_name从时序模型字典time_mode_dict中找出MUX下相应module_name对应的通道延时作为路径延时,依次类推找到这条时序路径中的所有路径延时,并进行累加。
通过上面的逻辑延时以及路径延时,生成实际计算延时字典calc_delay,该字典中包括了我们通过时序模型和芯片结构计算出来的所有的逻辑延时以及路径延时,字典如下所示:
{‘src_clk’: [logic_delay, net_delay, total_delay], ‘data’: [logic_delay, net_delay, total_delay], ‘dest_clk’: [logic_delay, net_delay, total_delay]}。
最后进行延时比对以及生成结果文件:通过时序报告延时字典rpt_dict与实际计算延时字典calc_delay进行比较,对相同延时类型的key,进行其中逻辑延时logic_delay,路径延时net_delay和总延时 total_delay的比对,最后生成比对的结果文件,如果有错则打印出错的路径,延时类型,时序报告中的延时,计算期望的延时,从而对错误一目了然。
如果结果不一致时,生成的结果如下表-1所示:
路径id | 起始cell | 终点cell | 报告中的逻辑延时 | 报告中的路径延时 | 报告中的总延时 | 计算的逻辑延时 | 计算的路径延时 | 计算的总延时 |
1 | Cell1_1 | Cell1_2 | 200 | 300 | 500 | 200 | 400 | 600 |
2 | Cell2_1 | Cell2_2 | 523 | 400 | 923 | 325 | 923 | 1248 |
3 | Cell3_1 | Cell3_2 | 206 | 536 | 752 | 206 | 536 | 742 |
4 | Cell4_1 | Cell4_2 | 159 | 248 | 407 | 260 | 613 | 873 |
图2示出了本发明一种对FPGA EDA软件中路径时序延时的测试装置图的一种具体实施例,包括:
实际计算延时模块:用于获取时序模型文件、芯片结构文件、网表文件以及布线文件并解析,通过各文件中的模块之间的关系,计算出时序模型文件中每条时序路径的逻辑延时和路径延时;
时序报告延时计算模块:用于获取时序报告文件并解析,找出时序报告文件中每条时序路径的逻辑延时和路径延时;
判别模块:用于将实际计算延时模块中每条时序路径计算出的逻辑延时和路径延时,与时序报告延时计算模块中从时序报告中得到的相对应的时序路径的逻辑延时和路径延时进行比较,得到比对结果输出。
本发明提供的对FPGA EDA软件中每条路径时序延时的测试方法及装置,通过将时序报告中的时序报告延时与通过每条路径经过的节点计算的实际计算延时进行比较,确定出错误的时序路径位置,由于每个电路可能有成百上千条时序路径,每条时序路径可能经过很多cell,通过测试人员手动验证每条时序路径中的逻辑延时和路径延时,工作量及其大,通过本发明,可以非常有效迅速的验证出哪条时序路径有误,及时发现bug,从而提高FPGA EDA软件的测试效率。此外本发明还可以进行批量的电路进行验证,并且扩展性强,可以加入到界面自动化的执行中,待界面执行完装箱布局布线后,可以调用本发明的验证脚本,进行时序的批量验证。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (9)
1.一种对FPGA EDA软件中路径时序延时的测试方法,其特征在于,包括以下步骤:
步骤1:获取时序模型文件、芯片结构文件、网表文件以及布线文件并解析,通过各文件中的模块之间的关系,计算出时序模型文件中每条时序路径的逻辑延时和路径延时;
步骤2:获取时序报告文件并解析,找出时序报告文件中每条时序路径的逻辑延时和路径延时;
步骤3:将步骤1中每条时序路径计算出的逻辑延时和路径延时,与步骤2中从时序报告中得到的相对应的时序路径的逻辑延时和路径延时进行比较,得到比对结果输出。
2.根据权利要求1所述的测试方法,其特征在于,步骤1中计算出时序模型文件中每条时序路径的逻辑延时和路径延时的方法是:
步骤1.1:解析所述时序模型文件,得到各模块、各模块所对应的通道延时,以及每个模块端口的延时、建立时间和保持时间,并生成时序模型字典time_mode_dict;
步骤1.2:解析芯片结构文件,得到所有芯片的坐标位置和与每个坐标位置对应的模块名,并生成用于存储模块位置字典lable_mux_dict;
步骤1.3:解析网表文件,得到网表中所有模块cell、每个模块cell下所有端口以及各端口上所通过的信号,生成模块端口信号字典cell_dict;
步骤1.4:解析布线文件,得到每个信号经过的source点,路径,以及sink点,生成信号字典route_dict,其中每个source点,路径,以及sink点都包括了坐标位置及端口名;
步骤1.5:计算逻辑延时:获取时序报告中的一条时序路径列表,找出该条时序路径列表中为逻辑延时类型的路径节点,确定出这条时序路径经过的第一个时序路径节点的模块cell及端口port作为字典time_mode_dict中的输入端口dstPort1,再沿着这条时序路径查看该模块的输出端口作为startPort1,从时序模型字典time_mode_dict中对应的模块cell及端口dstPort1和startPort1找出模块端口的延时,依次类推找到这条时序路径中所有的逻辑延时,进行累加;
步骤1.6:计算路径延时:找出时序路径列表中为路径延时类型的路径节点,从第一个路径延时类型的路径节点开始得到时序路径经过的模块cell、端口port以及模块位置location,从模块端口信号字典cell_dict中根据模块cell、端口port得到该端口所经过的信号名,且该模块cell、端口port为信号起始点source,再从时序路径列表中找出路径延时类型的下一个路径节点的模块名cell、端口port及位置location,这个路径节点为终点sink,依据信号名、起始点source及终点sink从信号字典route_dict找出这条路径经过的所有通道chan,依据通道chan找出路径经过的所有位置location,依据位置location从模块位置字典lable_mux_dict中获取模块名module_name,根据模块名module_name从时序模型字典time_mode_dict中找出相应module_name对应的延时作为路径延时,依次类推找到这条时序路径中的所有路径延时,并进行累加。
3.根据权利要求2所述的测试方法,其特征在于,步骤2中找出时序报告文件中每条时序路径的逻辑延时和路径延时的方法是:
获取时序报告文件得到所有的时序路径,将所有的时序路径保存在时序路径字典path_dict中;在所述时序路径字典path_dict中,包括了各种时序路径类型下的所有时序路径,在各时序路径中,列出了该时序路径所经过的所有模块cell,端口以及延时,将该时序路径中相同延时类型的延时进行相加得到路径延时和逻辑延时,将路径延时和逻辑延时相加得到总延时。
4.根据权利要求3所述的测试方法,其特征在于,在所述时序路径字典path_dict中,还包括起始时钟的延时,数据延时以及终点时钟的延时,所述数据延时包括逻辑延时和路径延时。
5.根据权利要求3所述的测试方法,其特征在于,所述时序路径类型包括同时钟setup路径,同时钟hold路径,跨时钟setup路径,跨时钟hold路径,异步setup路径,以及异步hold路径。
6.根据权利要求4所述的测试方法,其特征在于,计算终点时钟延时则是计算时钟到终点寄存器的延时,根据寄存器的终点模块名及端口名,从时序模型字典time_mode_dict中,找出相应的模块名及端口对应下的建立时间或者保持时间,求和后即为终点时钟延时。
7.根据权利要求4所述的测试方法,其特征在于,计算起始时钟延时则是计算时钟到起始寄存器的延时,根据寄存器的起点模块名及端口名,从时序模型字典time_mode_dict中,找出相应的模块名及端口对应下的延时,求和后即为起点时钟延时。
8.根据权利要求6所述的测试方法,其特征在于,在计算时序路径逻辑延时的时候,如果是setup类型的路径,需要将所有逻辑延时的时间减去t_su的延时,如果是hold类型的路径,需要将所有逻辑延时的时间加上t_h的延时。
9.一种对FPGA EDA软件中路径时序延时的测试装置,其特征在于,包括以下模块:
实际计算延时模块:用于获取时序模型文件、芯片结构文件、网表文件以及布线文件并解析,通过各文件中的模块之间的关系,计算出时序模型文件中每条时序路径的逻辑延时和路径延时;
时序报告延时计算模块:用于获取时序报告文件并解析,找出时序报告文件中每条时序路径的逻辑延时和路径延时;
判别模块:用于将实际计算延时模块中每条时序路径计算出的逻辑延时和路径延时,与时序报告延时计算模块中从时序报告中得到的相对应的时序路径的逻辑延时和路径延时进行比较,得到比对结果输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211516990.5A CN115544929B (zh) | 2022-11-30 | 2022-11-30 | 对fpga eda软件中路径时序延时的测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211516990.5A CN115544929B (zh) | 2022-11-30 | 2022-11-30 | 对fpga eda软件中路径时序延时的测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115544929A true CN115544929A (zh) | 2022-12-30 |
CN115544929B CN115544929B (zh) | 2023-03-17 |
Family
ID=84722630
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211516990.5A Active CN115544929B (zh) | 2022-11-30 | 2022-11-30 | 对fpga eda软件中路径时序延时的测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115544929B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116187270A (zh) * | 2023-05-04 | 2023-05-30 | 中科亿海微电子科技(苏州)有限公司 | 一种自动化验证原理图中标识符的测试方法及装置 |
CN116805143A (zh) * | 2023-08-24 | 2023-09-26 | 湖南师范大学 | 一种数字电路时序统计方法、装置、设备及存储介质 |
CN117150994A (zh) * | 2023-10-30 | 2023-12-01 | 北京云枢创新软件技术有限公司 | 一种信号赋值延时的分析方法、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101464921A (zh) * | 2008-12-31 | 2009-06-24 | 北京天碁科技有限公司 | 一种生成芯片工艺调整的测试向量的方法及系统 |
CN104698370A (zh) * | 2013-12-10 | 2015-06-10 | 展讯通信(上海)有限公司 | 芯片中电路的时序测试方法、装置及rtl仿真设备 |
CN106096171A (zh) * | 2016-06-22 | 2016-11-09 | 深圳市紫光同创电子有限公司 | 基于静态分析的异步电路时序检查方法 |
CN108073771A (zh) * | 2017-12-25 | 2018-05-25 | 中国电子科技集团公司第四十七研究所 | Fpga静态时序分析算法 |
CN114742001A (zh) * | 2022-03-16 | 2022-07-12 | 南京邮电大学 | 一种基于多fpga的系统静态时序分析方法 |
-
2022
- 2022-11-30 CN CN202211516990.5A patent/CN115544929B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101464921A (zh) * | 2008-12-31 | 2009-06-24 | 北京天碁科技有限公司 | 一种生成芯片工艺调整的测试向量的方法及系统 |
CN104698370A (zh) * | 2013-12-10 | 2015-06-10 | 展讯通信(上海)有限公司 | 芯片中电路的时序测试方法、装置及rtl仿真设备 |
CN106096171A (zh) * | 2016-06-22 | 2016-11-09 | 深圳市紫光同创电子有限公司 | 基于静态分析的异步电路时序检查方法 |
CN108073771A (zh) * | 2017-12-25 | 2018-05-25 | 中国电子科技集团公司第四十七研究所 | Fpga静态时序分析算法 |
CN114742001A (zh) * | 2022-03-16 | 2022-07-12 | 南京邮电大学 | 一种基于多fpga的系统静态时序分析方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116187270A (zh) * | 2023-05-04 | 2023-05-30 | 中科亿海微电子科技(苏州)有限公司 | 一种自动化验证原理图中标识符的测试方法及装置 |
CN116187270B (zh) * | 2023-05-04 | 2023-08-22 | 中科亿海微电子科技(苏州)有限公司 | 一种自动化验证原理图中标识符的测试方法及装置 |
CN116805143A (zh) * | 2023-08-24 | 2023-09-26 | 湖南师范大学 | 一种数字电路时序统计方法、装置、设备及存储介质 |
CN117150994A (zh) * | 2023-10-30 | 2023-12-01 | 北京云枢创新软件技术有限公司 | 一种信号赋值延时的分析方法、电子设备及存储介质 |
CN117150994B (zh) * | 2023-10-30 | 2024-01-23 | 北京云枢创新软件技术有限公司 | 一种信号赋值延时的分析方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115544929B (zh) | 2023-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115544929B (zh) | 对fpga eda软件中路径时序延时的测试方法及装置 | |
US7797658B2 (en) | Multithreaded static timing analysis | |
US20070101216A1 (en) | Method to locate logic errors and defects in digital circuits | |
CN111965530A (zh) | 一种基于jtag的fpga芯片自动化测试方法 | |
CN112417798B (zh) | 一种时序测试方法、装置、电子设备及存储介质 | |
CN115238619B (zh) | 数字芯片的子模块后仿真方法和系统 | |
US7437701B1 (en) | Simulation of a programming language specification of a circuit design | |
CN113536718B (zh) | 一种门级仿真网表文件正确性的验证方法及装置 | |
CN116956801B (zh) | 芯片验证方法、装置、计算机设备和存储介质 | |
CN117454811A (zh) | 待测设计的验证方法及装置 | |
CN115684894B (zh) | 芯片可测性设计的测试方法及测试平台 | |
CN116227398A (zh) | 一种自动化生成ip核测试激励的方法及系统 | |
CN116562227A (zh) | 一种芯片信号连通性验证方法及装置 | |
CN115684895A (zh) | 芯片可测性设计测试方法、测试平台及其生成方法及装置 | |
CN117350208A (zh) | 时序逻辑元件性能检查方法及设备 | |
CN114756463A (zh) | 一种测试环境开发方法、系统、设备以及介质 | |
CN100389425C (zh) | 实现数模混合型集成电路验证的方法及装置 | |
US10268786B2 (en) | System and method for capturing transaction specific stage-wise log data | |
CN116187270B (zh) | 一种自动化验证原理图中标识符的测试方法及装置 | |
US7689399B1 (en) | Automatic extraction of design properties | |
US10769332B2 (en) | Automatic simulation failures analysis flow for functional verification | |
CN106707144B (zh) | 一种应用于反熔丝fpga测试向量的逆向分析方法 | |
CN116256620B (zh) | Chiplet集成芯片的检测方法、装置、电子设备及存储介质 | |
Anand et al. | Bounded Proof Sign-off with Formal Coverage | |
JPH06232735A (ja) | 同期ディジタル電子回路の設計方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |