一种确定端口时序约束的方法及相关装置
文献发布时间:2023-06-19 11:35:49
技术领域
本申请涉及计算机应用技术领域,更具体地说,涉及一种确定端口时序约束的方法及相关装置。
背景技术
数字电路是指用数字信号完成对数字量的算术运算和逻辑运算的电路,数字电路由于具有逻辑运算和逻辑处理功能,所以又可称为数字逻辑电路。
随着SOC(System on Chip,系统级芯片)设计规模的持续增长和工艺的不断演进,越来越多的晶体管被集成到一颗芯片上。针对大规模集成电路各个端口的IO(Input/Output,输入/输出)时序约束,现有的确定方法首先需要根据RTL(Register TransferLevel,寄存器传输级)电路给各个端口设定各自的IO时序约束,经过逻辑综合的STA(Static Timing Analysis,静态时序分析)过程得到时序报告,然后通过查看时序报告来检查IO时序约束的正确性和完备性。
但这类方法需要耗费大量的时间、人力和计算资源。
发明内容
为解决上述技术问题,本申请提供了一种确定端口时序约束的方法及相关装置,以降低确定端口时序约束的方法所需耗费的时间、人力和计算资源。
为实现上述技术目的,本申请实施例提供了如下技术方案:
一种确定端口时序约束的方法,包括:
获取待分析数字电路;
获取与所述待分析数字电路对应的初始时序约束文件;
依据端口信息或所述初始时序约束文件对所述待分析数字电路中的各端口进行分类;所述端口信息包括端口在所述待分析数字电路中的位置、与待分析数字电路中其他元件的连接关系、所述端口的负载或驱动命令种类以及所述端口的用途中的至少一项;
根据所述初始时序约束文件以及各端口的分类结果,确定各端口的时序约束。
可选的,所述依据端口信息对所述待分析数字电路中的各端口进行分类包括:
当所述待分析数字电路中的端口满足第一预设条件时,将所述端口划分为第一类端口;所述第一预设条件包括:所述端口为时钟网络的一部分或所述端口为未加负载的输入端口或所述端口为无驱动的输出端口或所述端口为固定值驱动的输出端口或所述端口在所述初始时序约束文件中已添加预设时序约束或所述端口用作anlog信号且负载或驱动器电路单元为硬核且所述端口所在的时钟网络被设置了不允许触动属性;
当所述待分析数字电路中的端口满足第二预设条件时,将所述端口划分为第二类端口;所述第二预设条件包括:所述端口直接接到一个或多个寄存器或者经过组合逻辑接到一个或多个寄存器,并且与所述端口连接的寄存器由至少一个时钟驱动;
当所述待分析数字电路中的端口为馈通端口时,将所述端口划分为第三类端口。
可选的,所述根据所述初始时序约束文件以及各端口的分类结果,确定各端口的时序约束包括:
不为所述第一类端口添加时序约束,且对在所述初始时序约束文件中已添加预设时序约束的端口,维持所述端口的预设时序约束;
为所述第二类端口添加一个或多个虚拟时钟;
为所述第三类端口添加最大延迟约束。
可选的,所述为所述第二类端口添加一个或多个虚拟时钟包括:
当所述端口直接接到一个或多个寄存器或者经过组合逻辑接到一个或多个寄存器,并且与所述端口连接的寄存器由同一个时钟驱动时,为各类第二类端口添加一个第一虚拟时钟;
当所述端口直接接到一个或多个寄存器或者经过组合逻辑接到一个或多个寄存器,并且与所述端口连接的寄存器由多个时钟驱动时,为各类第二类端口添加多个第二虚拟时钟。
可选的,添加的第一虚拟时钟与块内部对应寄存器的真实时钟同步,添加的第一虚拟时钟用于定义所述端口的输入延迟约束或输出延迟约束;
添加的各第二虚拟时钟的名字均由固定前缀和块相连接的不同寄存器的真实时钟名字构成,添加的各第二虚拟时钟与其相关名字的真实时钟同步,添加的各第二虚拟时钟用于约束各自时钟域内的输入输出延迟值,添加的第二虚拟时钟与不同名字的真实时钟之间不能互相检查。
一种确定端口时序约束的系统,包括:
电路获取模块,用于获取待分析数字电路;
约束获取模块,用于获取与所述待分析数字电路对应的初始时序约束文件;
端口分类模块,用于依据端口信息或所述初始时序约束文件对所述待分析数字电路中的各端口进行分类;所述端口信息包括端口在所述待分析数字电路中的位置、与待分析数字电路中其他元件的连接关系、所述端口的负载或驱动命令种类以及所述端口的用途中的至少一项;
约束确定模块,用于根据所述初始时序约束文件以及各端口的分类结果,确定各端口的时序约束。
可选的,所述端口分类模块具体用于,当所述待分析数字电路中的端口满足第一预设条件时,将所述端口划分为第一类端口;所述第一预设条件包括:所述端口为时钟网络的一部分或所述端口为未加负载的输入端口或所述端口为无驱动的输出端口或所述端口为固定值驱动的输出端口或所述端口在所述初始时序约束文件中已添加预设时序约束或所述端口用作anlog信号且负载或驱动器电路单元为硬核且所述端口所在的时钟网络被设置了不允许触动属性;
当所述待分析数字电路中的端口满足第二预设条件时,将所述端口划分为第二类端口;所述第二预设条件包括:所述端口直接接到一个或多个寄存器或者经过组合逻辑接到一个或多个寄存器,并且与所述端口连接的寄存器由至少一个时钟驱动;
当所述待分析数字电路中的端口为馈通端口时,将所述端口划分为第三类端口。
可选的,所述约束确定模块具体用于,不为所述第一类端口添加时序约束,且对在所述初始时序约束文件中已添加预设时序约束的端口,维持所述端口的预设时序约束;
为所述第二类端口添加一个或多个虚拟时钟;
为所述第三类端口添加最大延迟约束;
所述为所述第二类端口添加一个或多个虚拟时钟包括:
当所述端口直接接到一个或多个寄存器或者经过组合逻辑接到一个或多个寄存器,并且与所述端口连接的寄存器由同一个时钟驱动时,为各类第二类端口添加一个第一虚拟时钟;添加的第一虚拟时钟与块内部对应寄存器的真实时钟同步,添加的第一虚拟时钟用于定义所述端口的输入延迟约束或输出延迟约束;
当所述端口直接接到一个或多个寄存器或者经过组合逻辑接到一个或多个寄存器,并且与所述端口连接的寄存器由多个时钟驱动时,为各类第二类端口添加多个第二虚拟时钟;添加的各第二虚拟时钟的名字均由固定前缀和块相连接的不同寄存器的真实时钟名字构成,添加的各第二虚拟时钟与其相关名字的真实时钟同步,添加的各第二虚拟时钟用于约束各自时钟域内的输入输出延迟值,添加的第二虚拟时钟与不同名字的真实时钟之间不能互相检查。
一种确定端口时序约束的系统,包括:存储器和处理器,所述存储器中存储有程序代码,所述处理器用于调用所述程序代码,所述程序代码被执行时实现上述任一项所述的确定端口时序约束的方法。
一种存储介质,所述存储介质中存储有程序代码,所述程序代码被执行时实现上述任一项所述的确定端口时序约束的方法。
从上述技术方案可以看出,本申请实施例提供了一种确定端口时序约束的方法及相关装置,其中,所述确定端口时序约束的方法在获取了待分析数字电路和初始时序约束文件后,依据端口信息或所述初始时序约束文件对所述待分析数字电路中的各端口进行分类,并根据所述初始时序约束文件以及各端口的分类结果,确定各端口的时序约束,依据该方法设计者只需要在初始时序约束文件中约束块内部的寄存器之间的SDC(Synopsysdesign constraints)信息约束路径,端口的时序约束会根据内部电路结构和信息自动产生,极大地简化了手写端口时序约束的复杂过程并且无需反复迭代,可一次性地生成完整且正确的端口时序约束,大大降低了确定端口时序约束的方法所需耗费的时间、人力和计算资源。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请的一个实施例提供的一种确定端口时序约束的方法的流程示意图;
图2为本申请的另一个实施例提供的一种确定端口时序约束的方法的流程示意图;
图3为本申请的又一个实施例提供的一种确定端口时序约束的方法的流程示意图;
图4为本申请的再一个实施例提供的一种确定端口时序约束的方法的流程示意图;
图5为本申请的一个实施例提供的一种确定端口时序约束的系统的结构示意图。
具体实施方式
正如背景技术中所述,现有的确定端口时序约束的方法的缺点主要包括:
1、通常每个模块有几百个甚至几千个IO数据端口,并且每个IO端口都需要一条或多条SDC命令来约束IO时序,需要花费大量的时间和精力和资源。
2、手工写IO时序约束需要很多轮迭代才能实现IO时序收敛,需要不同工程师反复合作解决IO时序约束问题。
3、不确定性,由于电路结构的复杂性,designer可能并不能完全通过RTL判断出某个端口与哪些时钟相关,很容易造成部分IO时序约束遗漏。
4、滞后性,由于IO时序约束与电路结构紧密相关,每一次RTL更新都需要检查并更新相应的IO时序约束,这样会影响项目的进度。
为了解决这些问题,本申请实施例提供了一种确定端口时序约束的方法,所述确定端口时序约束的方法在获取了待分析数字电路和初始时序约束文件后,依据端口信息或所述初始时序约束文件对所述待分析数字电路中的各端口进行分类,并根据所述初始时序约束文件以及各端口的分类结果,确定各端口的时序约束,依据该方法设计者只需要在初始时序约束文件中约束块内部的寄存器之间的SDC信息约束路径,端口的时序约束会根据内部电路结构和信息自动产生,极大地简化了手写端口时序约束的复杂过程并且无需反复迭代,可一次性地生成完整且正确的端口时序约束,大大降低了确定端口时序约束的方法所需耗费的时间、人力和计算资源。
此外,即使数字电路设计有变动,端口的时序约束也不需要再次手动修改,该方法可以基于新的数字电路结构自动生成新的端口时序约束,极大地简化了定义时序约束的工作量,减少了时序约束文件修改的迭代次数,提高了工作效率,缩短了TTM(Time ToMarketing,产品上市周期)
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一种确定端口时序约束的方法,如图1所示,包括:
S101:获取待分析数字电路;
S102:获取与所述待分析数字电路对应的初始时序约束文件;
S103:依据端口信息或所述初始时序约束文件对所述待分析数字电路中的各端口进行分类;所述端口信息包括端口在所述待分析数字电路中的位置、与待分析数字电路中其他元件的连接关系、所述端口的负载或驱动命令种类以及所述端口的用途中的至少一项;
S104:根据所述初始时序约束文件以及各端口的分类结果,确定各端口的时序约束。
在本实施例中,所述确定端口时序约束的方法创造性地通过静态分析数字电路的结构以及端口的连接来判断每一个端口所需要的时序约束类型,并自动生成每一个端口的时序约束,极大地提升了确定端口时序约束的效率,降低了所需耗费的人力、时间以及计算资源。
下面对本申请实施例提供的确定端口时序约束的方法的各个步骤的具体可行执行过程进行描述。
可选的,在本申请的一个实施例中,如图2所示,所述依据端口信息对所述待分析数字电路中的各端口进行分类包括:
S1031:当所述待分析数字电路中的端口满足第一预设条件时,将所述端口划分为第一类端口;所述第一预设条件包括:所述端口为时钟网络的一部分或所述端口为未加负载(no-loading)的输入(input)端口或所述端口为无驱动(undriven)的输出(output)端口或所述端口为固定值驱动(constant-driven)的输出(output)端口或所述端口在所述初始时序约束文件(initial SDC)中已添加预设时序约束或所述端口用作anlog信号(模拟信号)且负载(loading)或驱动器电路单元(driver cell)为硬核(hardmacro)且所述端口所在的时钟网络被设置了不允许触动(dont_touch)属性;
S1032:当所述待分析数字电路中的端口满足第二预设条件时,将所述端口划分为第二类端口;所述第二预设条件包括:所述端口直接接到一个或多个寄存器或者经过组合逻辑接到一个或多个寄存器,并且与所述端口连接的寄存器由至少一个时钟驱动;
S1033:当所述待分析数字电路中的端口为馈通端口时,将所述端口划分为第三类端口。
在步骤S1032中,当所述待分析数字电路中的端口满足第二预设条件时,还可根据与端口连接的寄存器由同一个时钟还是不同时钟驱动,分为两类。
相应的,针对这三类端口,参考图3,所述根据所述初始时序约束文件以及各端口的分类结果,确定各端口的时序约束包括:
S1041:不为所述第一类端口添加时序约束,且对在所述初始时序约束文件中已添加预设时序约束的端口,维持所述端口的预设时序约束;
S1042:为所述第二类端口添加一个或多个虚拟时钟(virtual clock);
S1043:为所述第三类端口添加最大延迟(max_delay)约束。
可选的,参考图4,所述为所述第二类端口添加一个或多个虚拟时钟包括:
S10421:当所述端口直接接到一个或多个寄存器或者经过组合逻辑接到一个或多个寄存器,并且与所述端口连接的寄存器由同一个时钟驱动时,为各类第二类端口添加一个第一虚拟时钟;
S10422:当所述端口直接接到一个或多个寄存器或者经过组合逻辑接到一个或多个寄存器,并且与所述端口连接的寄存器由多个时钟驱动时,为各类第二类端口添加多个第二虚拟时钟。
可选的,添加的第一虚拟时钟与块内部对应寄存器的真实时钟同步,添加的第一虚拟时钟用于定义所述端口的输入延迟约束或输出延迟约束;
添加的各第二虚拟时钟的名字均由固定前缀和块相连接的不同寄存器的真实时钟名字构成,添加的各第二虚拟时钟与其相关名字的真实时钟同步,添加的各第二虚拟时钟用于约束各自时钟域内的输入输出延迟值,添加的第二虚拟时钟与不同名字的真实时钟之间不能互相检查。
对于添加的所有虚拟时钟(第一虚拟时钟和第二虚拟时钟),他们之间都要相互设置为明确设定(false path),因为不同的虚拟时钟之间不能相互检查。
下面对本申请实施例提供的确定端口时序约束的系统进行描述,下文描述的确定端口时序约束的系统可与上文描述的确定端口时序约束的方法相互对应参照。
相应的,本申请实施例提供了一种确定端口时序约束的系统,如图5所示,包括:
电路获取模块10,用于获取待分析数字电路;
约束获取模块20,用于获取与所述待分析数字电路对应的初始时序约束文件;
端口分类模块30,用于依据端口信息或所述初始时序约束文件对所述待分析数字电路中的各端口进行分类;所述端口信息包括端口在所述待分析数字电路中的位置、与待分析数字电路中其他元件的连接关系、所述端口的负载或驱动命令种类以及所述端口的用途中的至少一项;
约束确定模块40,用于根据所述初始时序约束文件以及各端口的分类结果,确定各端口的时序约束。
可选的,所述端口分类模块具体用于,当所述待分析数字电路中的端口满足第一预设条件时,将所述端口划分为第一类端口;所述第一预设条件包括:所述端口为时钟网络的一部分或所述端口为未加负载的输入端口或所述端口为无驱动的输出端口或所述端口为固定值驱动的输出端口或所述端口在所述初始时序约束文件中已添加预设时序约束或所述端口用作anlog信号且负载或驱动器电路单元为硬核且所述端口所在的时钟网络被设置了不允许触动属性;
当所述待分析数字电路中的端口满足第二预设条件时,将所述端口划分为第二类端口;所述第二预设条件包括:所述端口直接接到一个或多个寄存器或者经过组合逻辑接到一个或多个寄存器,并且与所述端口连接的寄存器由至少一个时钟驱动;
当所述待分析数字电路中的端口为馈通端口时,将所述端口划分为第三类端口。
可选的,所述约束确定模块具体用于,不为所述第一类端口添加时序约束,且对在所述初始时序约束文件中已添加预设时序约束的端口,维持所述端口的预设时序约束;
为所述第二类端口添加一个或多个虚拟时钟;
为所述第三类端口添加最大延迟约束;
所述为所述第二类端口添加一个或多个虚拟时钟包括:
当所述端口直接接到一个或多个寄存器或者经过组合逻辑接到一个或多个寄存器,并且与所述端口连接的寄存器由同一个时钟驱动时,为各类第二类端口添加一个第一虚拟时钟;添加的第一虚拟时钟与块内部对应寄存器的真实时钟同步,添加的第一虚拟时钟用于定义所述端口的输入延迟约束或输出延迟约束;
当所述端口直接接到一个或多个寄存器或者经过组合逻辑接到一个或多个寄存器,并且与所述端口连接的寄存器由多个时钟驱动时,为各类第二类端口添加多个第二虚拟时钟;添加的各第二虚拟时钟的名字均由固定前缀和块相连接的不同寄存器的真实时钟名字构成,添加的各第二虚拟时钟与其相关名字的真实时钟同步,添加的各第二虚拟时钟用于约束各自时钟域内的输入输出延迟值,添加的第二虚拟时钟与不同名字的真实时钟之间不能互相检查。
相应的,本申请实施例还提供了一种确定端口时序约束的系统,包括:存储器和处理器,所述存储器中存储有程序代码,所述处理器用于调用所述程序代码,所述程序代码被执行时实现以下步骤:
获取待分析数字电路;
获取与所述待分析数字电路对应的初始时序约束文件;
依据端口信息或所述初始时序约束文件对所述待分析数字电路中的各端口进行分类;所述端口信息包括端口在所述待分析数字电路中的位置、与待分析数字电路中其他元件的连接关系、所述端口的负载或驱动命令种类以及所述端口的用途中的至少一项;
根据所述初始时序约束文件以及各端口的分类结果,确定各端口的时序约束。
相应的,本申请实施例还提供了一种存储介质,所述存储介质中存储有程序代码,所述程序代码被执行时实现上述任一实施例所述的确定端口时序约束的方法。
综上所述,本申请实施例提供了一种确定端口时序约束的方法及相关装置,其中,所述确定端口时序约束的方法在获取了待分析数字电路和初始时序约束文件后,依据端口信息或所述初始时序约束文件对所述待分析数字电路中的各端口进行分类,并根据所述初始时序约束文件以及各端口的分类结果,确定各端口的时序约束,依据该方法设计者只需要在初始时序约束文件中约束块内部的寄存器之间的SDC信息约束路径,端口的时序约束会根据内部电路结构和信息自动产生,极大地简化了手写端口时序约束的复杂过程并且无需反复迭代,可一次性地生成完整且正确的端口时序约束,大大降低了确定端口时序约束的方法所需耗费的时间、人力和计算资源。
本说明书中各实施例中记载的特征可以相互替换或者组合,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
- 一种确定端口时序约束的方法及相关装置
- 一种确定天线端口数的方法及相关装置