CN111931441B - Fpga快速进位链时序模型的建立方法、装置以及介质 - Google Patents

Fpga快速进位链时序模型的建立方法、装置以及介质 Download PDF

Info

Publication number
CN111931441B
CN111931441B CN202010675974.5A CN202010675974A CN111931441B CN 111931441 B CN111931441 B CN 111931441B CN 202010675974 A CN202010675974 A CN 202010675974A CN 111931441 B CN111931441 B CN 111931441B
Authority
CN
China
Prior art keywords
module
fpga
time sequence
carry
full
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.)
Active
Application number
CN202010675974.5A
Other languages
English (en)
Other versions
CN111931441A (zh
Inventor
田永杰
张恒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Pango Microsystems Co Ltd
Original Assignee
Shenzhen Pango Microsystems Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Pango Microsystems Co Ltd filed Critical Shenzhen Pango Microsystems Co Ltd
Priority to CN202010675974.5A priority Critical patent/CN111931441B/zh
Publication of CN111931441A publication Critical patent/CN111931441A/zh
Application granted granted Critical
Publication of CN111931441B publication Critical patent/CN111931441B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/394Routing

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)
  • Architecture (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本申请实施例公开了一种FPGA快速进位链时序模型的建立方法、装置以及介质,涉及芯片设计领域。该方法包括:获取FPGA的多个全加器,所述全加器包括LUT模块和CARRY模块;将所述多个全加器划分为多个模块组,其中,所述多个模块组中的每个模块组包括至少一个所述全加器;获取所述多个模块组中每个模块组对应的时序模型;基于所述多个模块组中每个模块组对应的时序模型,建立所述FPGA的快速进位链时序模型。本申请能够准确地对FPGA中的快速进位链进行时序建模,提升时序分析的准确性。

Description

FPGA快速进位链时序模型的建立方法、装置以及介质
技术领域
本申请涉及芯片设计技术领域,更具体地,涉及一种FPGA快速进位链时序模型的建立方法、装置以及介质。
背景技术
随着集成电路的高速发展,现场可编程逻辑门阵列(Field Programmable GateArray,FPGA)芯片作为一种可编程逻辑器件,在短短二十多年中从电子设计的外围器件逐渐演变为数字系统的核心,伴随着半导体工艺技术的进步,FPGA芯片的设计技术也取得了飞跃式发展及突破。由于FPGA芯片具有高密度、高保密、低功耗、低成本、系统集成、动态可重构等特点,已经在通信、航天、消费电子等领域得到广泛应用。
加法器是FPGA内部最基本的运算模块,使用加法器可以实现减法、乘法、除法等算数运算逻辑,现在的FPGA芯片通常会采用超前进位加法器(Carry-Lookahead Adder,CLA),以减少多位加法器的进位延时,由于超前进位加法器,进位不是逐级传递的,而是提前跨越多级提前计算出来的,因此需要对超前进位加法器的时序模型进行建模。
然而,目前构建的FPGA芯片的快速进位链的时序模型往往不够准确。
发明内容
鉴于上述问题,本申请提出了一种FPGA快速进位链时序模型的建立方法、装置以及介质,以解决上述问题。
第一方面,本申请实施例提供了一种FPGA快速进位链时序模型的建立方法,该方法包括:获取FPGA的多个全加器,全加器包括LUT模块和CARRY模块;将多个全加器划分为多个模块组,其中,多个模块组中的每个模块组包括至少一个全加器;获取多个模块组中每个模块组对应的时序模型;基于多个模块组中每个模块组对应的时序模型,建立FPGA的快速进位链时序模型。
第二方面,一种FPGA快速进位链时序模型的建立装置,包括:全加器获取模块、模块组划分模块、时序模型获取模块以及快速进位链时序模型的建立模块。其中:全加器获取模块用于获取FPGA的多个全加器;模块组划分模块用于将多个全加器划分为多个模块组,其中,模块组包括至少一个全加器;时序模型获取模块用于获取多个模块组中每个模块组对应的时序模型;快速进位链时序模型的建立模块用于基于多个模块组中每个模块组对应的时序模型的建立FPGA的快速进位链时序模型。
第三方面,本申请实施例提供了一种电子设备,包括一个或多个处理器、存储器、以及一个或多个程序,其中一个或多个程序被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序配置用于执行第一方面的实施例的FPGA快速进位链时序模型的建立方法。
第四方面,本申请实施例提供了一种计算机可读取存储介质,计算机可读取存储介质中存储有程序代码,程序代码可被处理器调用执行第一方面的实施例的FPGA快速进位链时序模型的建立方法。
本申请实施例提供的FPGA快速进位链时序模型的建立方法、装置以及介质,通过获取FPGA的多个全加器,全加器包括LUT模块和CARRY模块;将多个全加器划分为多个模块组,其中,多个模块组中的每个模块组包括至少一个全加器;并获取多个模块组中每个模块组对应的时序模型;再基于多个模块组中每个模块组对应的时序模型,建立FPGA的快速进位链时序模型。由于利用对多个全加器的分组可以构建快速进位链从最小一级到最大一级的时序弧,避免了信号从最小一级到最大一级时需要逐级相加延时,而导致快速进位链的时序不准确的问题,从而能够准确地建立快速进位链的时序模型。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本申请实施例提供的一个二进制全加器和真值表的示意图。
图2示出了根据本申请实施例提供的使用全加器实现的一个4bits的加法运算的结构示意图。
图3示出了根据本申请一个实施例提供的FPGA快速进位链时序模型的建立方法的流程示意图。
图4示出了根据本申请实施例提供的一种FPGA内部的全加器的结构示意图。
图5示出了根据本申请实施例提供的通过图4的全加器实现的两级超前进位加法器的结构示意图。
图6示出了根据本申请另一个实施例提供的FPGA快速进位链时序模型的建立方法的流程示意图。
图7示出了根据本申请图6所示的FPGA快速进位链时序模型的建立方法中步骤S230的提供一个实施例的方法流程图。
图8示出了根据本申请实施例提供的FPGA通过LUT6CARRY实现的8位加法器的结构示意图。
图9示出了根据本申请图7所示的FPGA快速进位链时序模型的建立方法中步骤S232的提供一个实施例的方法流程图。
图10示出了根据本申请又一个实施例提供的FPGA快速进位链时序模型的建立方法的流程示意图。
图11示出了根据本申请图10所示的FPGA快速进位链时序模型的建立方法中步骤S350的提供一个实施例的方法流程图。
图12示出了根据本申请再一个实施例提供的FPGA快速进位链时序模型的建立方法的流程示意图。
图13示出了本申请实施例提供的FPGA快速进位链时序模型的建立装置的功能模块图。
图14示出了本申请实施例提供的电子设备的结构框图。
图15是本申请实施例的用于保存或者携带实现根据本申请实施例的FPGA快速进位链时序模型的建立方法的程序代码的存储介质。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
随着集成电路的高速发展,特别是FPGA芯片的飞速发展,FPGA芯片也被越来越广泛地应用于各个领域中。
其中,FPGA芯片内部包括了一些可编程的逻辑模块,主要包括了以下三个部分:可配置逻辑模块(configurable logic module,CLM),输入输出模块(input/output block,IOB)和可编程互联线(programmable interconnect,PI)。FPGA是以硬件描述语言(如Verilog)进行电路设计,然后通过EDA软件生成包含所有可编程逻辑模块配置信息的位流文件,将此位流下载到FPGA内部的配置内存单元,完成对CLM,IOB和互联线等的配置,是现代IC设计验证的技术主流。
而加法器是FPGA内部最基本的运算模块,使用加法器可以实现减法、乘法、除法等算数运算逻辑。如图1所示,图1是一个二进制全加器的示意图和真值表。从图1中可以得知,全加器有三个输入端,两个输出端;输入端包括两个加数A、B和一个进位输入CIN(Carryinput),输出端包括SUM和进位输出COUT。由图1中的真值表可以看出SUM=A⊕B⊕CIN,COUT=A·B+A·CIN+B·CIN。
如图2所示,图2是使用全加器实现了一个4bits的加法运算的结构。从图2中可以得知,该4bits加法运算需要使用4个全加器,在执行加法运算时,高位全加器的加法运算依赖于前一个全加器进位输出COUT,这样只有低位全加器运算完成,进位COUT输出到高位全加器的进位输入CIN时,高位全加器才可以运算。这样,进位输出像波浪一样依次从低位向高位传递,产生最终结果的加法器,叫行波进位加法器(Ripple-Carry Adder,RCA)。行波进位加法器的优点是电路设计简单,只要设计好了全加器,就可以COUT-CIN级联实现任意位数的加法运算;缺点是高位运算必须等待低位运算完成后才能进行运算,这样就导致多位加法器进位链的延时很长,加法运算速度慢。为了优化行波进位加法器进位链延时长的问题,于是人们发明了超前进位加法器(Carry-Lookahead Adder,CLA)。超前进位加法器的设计原理是通过增加一些辅助电路,使得高位加法的进位输出不直接依赖于前一位加法器的进位输出,达到快速进位的效果,以减少多位加法器的进位延时。由上面可知,全加器的进位输出Ci+1=Ai·Bi+(Ai+Bi)·Ci,假定Gi=Ai·Bi,Pi=Ai+Bi,则有Ci+1=Gi+Pi·Ci。考虑一个4位全加器的进位输出:
C1=G0+P0·C0
C2=G1+P1·C1=G1+P1·G0+P1·P0·C0
C3=G2+P2·C2=G2+P2·(G1+P1·G0)+P2·P1·P0·C0
C4=G3+P3·C3=G3+P3·(G2+P2·G1+P2·P1·G0)+P3·P2·P1·P0·C0
由上面公式可以看出,经过变换后,进位输出C2,C3,C4只与最低的进位C0有关,通过这种方法实现的加法器就是超前进位加法器,进位不是逐级传递的,而是提前跨越多级提前计算出来的。显然,快速进位链的延时不是全加器的进位延时逐级相加的,如何准确且方便地对快速进位链进行时序建模是FPGA时序模型必须考虑的问题。
然而,目前对快速进位链进行时序建模时,是将快速进位链的延时平均分配到各个全加器的进位延时上,然后可以按照行波全加器的方式对每一级进位延时进行建模。这样会导致信号在传递时需要逐级延时相加,从而造成构建的快速进位链的时序模型不够准确。
因此,针对于上述问题,发明人提出了本申请实施例中的FPGA快速进位链时序模型的建立方法、装置以及介质,能够准确地对FPGA中的快速进位链进行时序建模,提升时序分析的准确性。
请参阅图3,图3示出了本申请一个实施例提供的FPGA快速进位链时序模型的建立方法流程图,该FPGA快速进位链时序模型的建立方法可以包括如下步骤:
S110,获取FPGA的多个全加器,全加器包括查找表(LUT)模块和进位(CARRY)模块。
其中,FPGA芯片可以由多个LUT模块和多个CARRY模块实现的超前进位加法器,超前进位加法器可以包括多个全加器。其中可以将一个LUT模块和一个CARRY模块组成一个LUTCARRY模块,从而可以形成多个LUTCARRY模块,并且超前进位加法器(也可称多位加法器)中的多个全加器和多个LUTCARRY模块可以一一对应。因此,超前进位加法器可以看作是由多个独立LUTCARRY模块实现的全加器组成的,而快速进位链在design网表中是基于FPGA器件信息隐式存在的。这种情况下,FPGA的布局布线design网表中的多位加法器也是由一个个的LUTCARRY模块组成,LUTCARRY的进位端口CIN和COUT逐级相连,看起来就像是行波进位加法器一样,快速进位链隐藏在FPGA器件信息下的,其中,不同的FPGA器件实现的超前进位加法器的进位级数可能是不同的,这就需要在对超前进位加法器的快速进位链进行时序建模时,根据FPGA器件的不同做不同的处理。由于LUTCARRY模块和全加器相对应,因此可以根据FPGA器件信息中的一个LUTCARRY模块确定一个全加器,从而获取到FPGA的多个全加器。可以理解的是,全加器除了包括LUTCARRY模块还可以包括其它模块,如数据选择器(multiplexer,MUX)等。
具体地,作为一种示例,如图4所示,图4提供了一种FPGA内部的全加器实现结构,该全加器可以先由两个LUT5组成的LUT6,并结合CARRY模块和一些MUX组成。
其中,A,B为全加器的加数SUM为和输出,CIN为进位输入,COUT为进位输出,CIN为进位输入,COUT为进位输出,LUT5A可以配置为A⊕B,LUT5B可以配置为!A⊕B,输出端口L6和COUT前面的MUX都是低电平选择通路0,高电平选择通路1。那么可以有:
COUT=A·B+A·CIN+B·CIN=A⊕B·CIN+!(A⊕B)·B
SUM=A⊕B⊕C=A⊕B·!CIN+!(A⊕B)·CIN。
如图5所示,图5通过图3中的全加器实现了两级超前进位加法器,两级超前进位的逻辑表达式如下:COUT=(C⊕D)·(A⊕B)·CIN+(C⊕D)·!(A⊕B)·B+(C⊕D)·D,可以看出该超前进位加法器的快速进位链的CIN信号跨越了两级加法器,经一个MUX选择后,直接输出到了COUT端口,显然,这种超前进位加法器的进位链延时不是简单地叠加每一级全加器的CIN->COUT的延时,而是直接跨越了多个LUT6CARRY直接输出到多级进位输出COUT端口,因此在对该超前进位加法器进行时序建模时,需要根据超前进位加法器的快速进位级数,跨越多个全加器进行时序建模。
S120,将多个全加器划分为多个模块组,其中,多个模块组中的每个模块组包括至少一个全加器。
在一些实施方式中,可以根据FPGA器件实现了多少级超前进位的信息,对FPGA器件的多位加法器中的全加器(以下也可以看作为LUTCARRY模块)进行分组。具体地,例如FPGA器件实现了N级超前进位,那么可以将多个LUTCARRY模块按照每N个LUTCARRY模块为一组的方式进行划分。具体地,FPGA器件实现了2级超前进位,多个LUTCARRY模块的数量为8个,那么可以按照每2个LUTCARRY模块为一个模块组的方式进行划分,划分后可以得到4个模块组。这样就可以将FPGA的快速进位链的信息以模块组(以下可称LUTCARRY group)的形式体现出来。
在另一些实施方式中,可以根据LUTCARRY模块的数量来确定需要划分的模块组的数量,具体地,LUTCARRY模块的数量可以为需要划分的模块组的数量的整数倍,作为一种示例,例如LUTCARRY模块的数量为M,且M/N=S,其中N为正整数,那么可以将M个LUTCARRY模块划分为S个模块组,其中,每个模块组包括了N个LUTCARRY模块。
S130,获取多个模块组中每个模块组对应的时序模型。
在一些实施方式中,在每个模块组被划分好以后,可以分别对每个模块组添加标识,例如4个模块组,具体可以为模块组A、模块组B、模块组C以及模块组D。然后可以从时序模型数据库中,获取与模块组对应的时序模型,可选地,时序模型数据库中可以包括多个时序模型和时序模型关系表,其中,时序模型关系表可以是由多个模块组标识和多个时序模型预先建立一一对应关系后得到。作为一种示例,时序模型关系表可以如表1所示:
表1
从表1可以得知,若是需要获取模块组A对应的时序模型,则可以根据模块组A的标识从时序模型关系表中找到时序模型a,然后再从时序模型数据库中提取出时序模型a即可,以此类推,多个模块组中每个模块组对应的时序模型都可以通过上述方法获得。
S140,基于多个模块组中每个模块组对应的时序模型,建立FPGA的快速进位链时序模型。
在一些实施方式中,在运行时根据需要构建每个模块组的时序模型,快速进位链的时序模型就能够被准确地建模了。
可见,在本实施例中,通过获取FPGA的多个全加器,全加器包括LUT模块和CARRY模块;将多个全加器划分为多个模块组,其中,多个模块组中的每个模块组包括至少一个全加器;并获取多个模块组中每个模块组对应的时序模型;再基于多个模块组中每个模块组对应的时序模型,建立FPGA的快速进位链时序模型。由于利用对多个全加器的分组可以构建快速进位链从最小一级到最大一级的时序弧,避免了从最小一级到最大一级需要逐级相加延时而导致快速进位链的时序就是不准确的问题,从而能够准确地建立快速进位链的时序模型。
请参阅图6,图6示出了本申请另一个实施例提供的FPGA快速进位链时序模型的建立方法流程图,该FPGA快速进位链时序模型的建立方法可以包括如下步骤:
S210,获取FPGA的多个全加器,全加器包括LUT模块和CARRY模块。
其中,S210的具体实施方式可以参考S110,故不在此赘述。
S220,获取FPGA的超前进位的目标级数。
在一些实施方式中,目标级数可以为FPGA实现了的超前进位级数,例如通过查询FPGA的器件信息得知,FPGA对应实现的超前进行为4级,则目标级数可以为4级。从而获得FPGA的超前进位的目标级数。
S230,基于目标级数将多个全加器划分为多个模块组。
在一些实施方式中,FPGA包括超前进位加法器,超前进位加法器包括多个全加器,如图7所示,S230可以包括:
S231,获取多个全加器中每个全加器在超前进位加法器中的级数。
作为一种示例,如图8所示,FPGA包括超前进位加法器可以为8位加法器,该8位加法器可以包括8个全加器,对应地也包括了8个LUTCARRY模块,具体可以为LUT6CARRY模块,该FPGA器件可以实现图4中的两级超前进位加法器,每一级全加器由一个LUT6CARRY实现,LUT6CARRY的进位端口CIN-COUT逐级相连,FPGA的快速进位链在该design层级的8位加法器中是隐式存在。在超前进位加法器中,从超前进位加法器的输入端CIN到输出端COUT,可以将8个全加器分别对应8个级数,如图5中的全加器S1对应的级数为1,全加器S2对应的级数为2,全加器S3对应的级数为3。其中,当全加器越靠近超前进位加法器的输入端CIN时,其对应的级数就越小。从而可以根据全加器在超前进位加法器中的连接位置得到该全加器在超前进位加法器中对应的级数。
S232,按最小级数的全加器到最大级数的全加器的顺序,基于目标级数将多个全加器划分为多个模块组。
作为一种示例,例如目标级数为2,在第一次对全加器进行划分时,可以先将全加器S1和全加器S2划分为一个模块组,然后再将全加器S3和全加器S4划分为一个模块组,以此类推,最后将全加器S7和全加器S8划分为一个模块组。从而完成基于目标级数将多个全加器划分为多个模块组。
在本实施方式中,通过获取多个全加器中每个全加器在超前进位加法器中的级数,并按最小级数的全加器到最大级数的全加器的顺序,基于目标级数将多个全加器划分为多个模块组,能够确保每个模块组中的全加器是逐级相连的。
在一些实施方式中,如图9所示,S232可以包括:
S2321,按一个模块组包括目标级数的全加器的方式对多个全加器进行划分,并检测多个全加器中未被划分的全加器的数量。
作为一种示例,例如目标级数为2,多个全加器的数量为9时,首先按一个模块组包括2个全加器的方式对多个全加器进行划分,当划分到全加器S8时,只剩下一个全加器,例如全加器S9不能根据目标级数来进行划分。此时检测到多个全加器中未被划分的全加器数量为1。
S2322,当未被划分的全加器的数量大于零且小于目标级数时,将未被划分的全加器划分为一个模块组。
作为一种示例,例如未被划分的全加器只剩下全加器S9时,即未被划分的全加器的数量大于零且小于目标级数2时,则可以将未被划分的全加器S9单独划分为一个模块组。
考虑到多位加法器的位数是随机的,即多位加法器的全加器数量是随机的,若全加器数量不是目标级数的整数倍,则存在不能多个全加器均匀划分的问题,在本实施方式中,通过按一个模块组包括目标级数的全加器的方式对多个全加器进行划分,并检测多个全加器中未被划分的全加器的数量,且当未被划分的全加器的数量大于零且小于目标级数时,将未被划分的全加器划分为一个模块组,从而能够精准有效地将多个全加器划分为多个模块组。
在一些实施方式中,当多个全加器的数量为目标级数的整数倍时,也按最大级数的全加器到最小级数的全加器的顺序,基于目标级数将多个全加器划分为多个模块组。
S240,获取每个模块组对应的时序模型。
S250,基于每个模块组对应的时序模型,建立FPGA的快速进位链时序模型。
其中,S240至S250的具体实施方式可以参考S130至S140,故不在此赘述。
作为一种示例,在实际应用中,首先可以找到FPGA design中的所有多位加法器以及其中使用的所有LUTCARRY,然后根据FPGA器件实现了多少级超前进位的信息,对多位加法器中的LUTCARRY进行分组,如果该FPGA器件实现n级超前进位,那么就从多位加法器的最低级开始,向上每n个LUTCARRY分为一组,由于多位加法器的位数是随机的,那么最后一组LUTCARRY个数在1到n之间。然后,将每一组内的LUTCARRY看成一个整体,将这一整体看成是FPGA design的一个虚拟instance,而组内的LUTCARRY看成是这个instance的内部结构,这样快速进位链的信息以LUTCARRY group的形式显示地体现了出来,那么在运行时根据需要构建每个group的时序模型,快速进位链的时序模型就能够被准确地建模了。
在本实施例中,通过获取FPGA的超前进位的目标级数,并基于目标级数将多个全加器划分为多个模块组,从而可以确保根据划分的模块组得到的快速进位链的时序模型可以满足FPGA要实现的超前进位的级数需求。
请参阅图10,图10示出了本申请另一个实施例提供的FPGA快速进位链时序模型的建立方法流程图,该FPGA快速进位链时序模型的建立方法可以包括如下步骤:
S310,获取FPGA的多个全加器,全加器包括LUT模块和CARRY模块。
S320,将多个全加器划分为多个模块组,其中,多个模块组中的每个模块组包括至少一个全加器。
其中,S310至S320的具体实施方式可以参考S110至S120,故不在此赘述。
S330,从多个模块组中获取任意一个模块组作为目标模块组。
S340,获取目标模块组对应的输入输出pin(脚)。
在一些实施方式中,可以根据目标模块组中各个LUTCARRY的时序弧(以下可称timing arc)信息和组内LUTCARRY的连接关系,可以通过遍历的方法构建group的边界pin之间的timing arc,然后将获取该timing arc的输入输出pin作为目标模块组对应的输入输出pin。
S350,根据输入输出pin确定与目标模块组对应的时序模型。
在一些实施方式中,如图11所示,S350可以包括:
S351,获取时序模型关系表,时序模型关系表基于多个输入输出pin和多个时序模型生成。
其中,具体地,时序模型关系表基于多个输入输出pin和多个时序模型建立对应关系后生成,不同的输入pin和输出pin可以形成不同种组合,每一个输入pin和输入pin的组合可以对应一个时序模型。
S352,基于时序模型关系表、输入输出pin确定与目标模块组对应的时序模型。
其中,具体地基于时序模型关系表、输入输出pin确定与目标模块组对应的时序模型的方式可以参考S130中根据模块组标识确定时序模型的方式,故不在此赘述。
S360,基于每个模块组对应的时序模型,建立FPGA的快速进位链时序模型。
作为一种示例,例如在构建LUTCARRY group时序模型时,需要知道模型LUTCARRY的timing arc信息,底层device的时序模型信息以及LUTCARYY和device的pin map信息。首先,根据LUTCARRY的timing arc信息和组内LUTCARRY的连接关系,可以通过遍历的方法构建group的边界pin之间的timing arc,然后根据timing arc的输入输出pin和device pin的map关系,找到对应的device时序模型,将其中的timing value标记到对应的分组timingarc上,这样就完成了对LUTCARRY group时序模型的构建。
其中,需要说明的是,timing value为时序模型中的timing arc的延时值。
请参阅图12,图12示出了本申请一个实施例提供的FPGA快速进位链时序模型的建立方法流程图,该FPGA快速进位链时序模型的建立方法可以包括如下步骤:
S410,获取FPGA的多个全加器,全加器包括LUT模块和CARRY模块。
S420,将多个全加器划分为多个模块组,其中,多个模块组中的每个模块组包括至少一个全加器。
S430,获取每个模块组对应的时序模型。
S440,基于每个模块组对应的时序模型,建立FPGA的快速进位链时序模型。
其中,S410至S440的具体实施方式可以参考S110至S140,故不在此赘述。
S450,获取FPGA的design pin。
在一些实施方式中,可以通过FPGA器件信息查找到FPGA的布局脚(design pin)。
S460,构造FPGA的快速进位链时序模型中的每个时序模型和design pin之间的时序关系。
作为一种方式,可以遍历design网表的实例(instance)和关系网(net),跳过LUTCARRY group内的instance和net,构造LUTCARRY group对应普通类型的timing arc,然后遍历所有LUTCARRY group的时序模型,构造每个LUTCARRY group的时序模型对应designpin之间的instance timing arc,即构造每个时序模型和design pin之间的时序关系。
S470,基于时序关系得到FPGA的快速进位链时序网表。
当构造好了每个时序模型和design pin之间的instance timing arc,可得到多个instance timing arc,再将多个instance timing arc生成网表,既可得到FPGA的快速进位链时序网表。
在实际应用中,可以通过如下方法将构建好的LUTCARRY group时序模型应用于FPGA的时序分析中的构造timing graph(时序网表)中。一般地,构建时序网表的方法是通过遍历design网表的instance和net,根据对应instance的时序模型信息和net连接关系,构造为对应网表中的instance timing arc和net timing arc。而对于获取到通过上述方法构建的LUTCARRY group时序模型,由于LUTCARRY group的时序模型的timing arc可能是跨越了多级instance,因此并不符合上述timing graph的构建规则。
因此在通过每个LUTCARRY group的时序模型构建时序网表时,具体的构建方法可以如下:遍历design网表的instance和net,跳过LUTCARRY group内的instance和net,构造对应普通类型的timing arc,然后遍历所有LUTCARRY group的时序模型,构造这些时序模型中对应design pin之间的instance timing arc,通过上述方法就完成了对designtiming graph的构造。
作为一种示例,请再次参阅图8,图8所示是一个FPGA通过LUT6CARRY实现8位加法器的示意图,该FPGA器件可实现图4中的两级超前进位加法器,每一级全加器由一个LUT6CARRY实现,LUT6CARRY的进位端口CIN-COUT逐级相连,FPGA的快速进位链在该design层级的8位加法器中是隐式存在。对该FPGA design的加法器进行建模时,首先,找到design中的多位加法器,然后对该多位加法器中的LUT6CARRY进行分组,分组规则是从多位加法器的最低一级LUT6CARRY向上,每两级LUT6CARRY分为一组,这样就将加法器中的使用到的LUT6CARRY全加器分为了4组①②③④,每一组都由两个LUT6CARRY组成,包含两级快速进位链信息。然后,就需要将每一组看成一个整体,构建对应的时序模型,具体方法是通过遍历组内LUT6CARRY的方法,根据LUT6CARRY的timing arc和组内LUT6CARRY进位端口CIN和COUT的连接关系,获取分组①②③④整体的timing arc,然后根据这些timing arc的pin和底层device pin的map关系,找到底层device的对应时序模型信息,将其中的timing value的值标记到所有分组的timing arc上,这样就完成了design中多位加法器时序建模,快速进位链的时序信息包含在组成多位加法器的分组①②③④时序模型中。
其中,上述快速进位链通过对LUT6CARRY分组实现了时序模型的建模,在构建timing graph时,首先遍历上述FPGA design中的instance和net,跳过上述快速进位链分组模型中的8个LUT6CARRY和每一个分组内两个LUT6CARRY之间进位端口COUT->CIN的连接net n0、n1、n2、n3,通过上面提到的普通方法构建剩余的instance和net,而对于快速进位链分组时序模型在timing graph的构建,遍历分组时序模型中的timing arcs,基于这些timing arcs的输入输出pin构建为timing graph的instance timing arc,这些timingarcs的输入输出pin不一定在同一个LUT6CARRY上,如组内下一级LUT6CARRY的CIN直接构建为instance timing arc上一级LUT6CARRY的COUT。而对于组内LUT6CARRY之间COUT->CIN的net timing arc,这些net的连接关系已经体现到了分组的时序模型的instance timingarc中,因此不需要在timing graph中构建了。
请参阅图13,其示出了本申请一个实施例提供的FPGA快速进位链时序模型的建立装置,该FPGA快速进位链时序模型的建立装置500可以包括:全加器获取模块510、划分模块520、时序模型获取模块530以及快速进位链时序模型构建模块540。其中:
全加器获取模块510,用于获取FPGA的多个全加器,全加器包括LUT模块和CARRY模块。
划分模块520,用于将多个全加器划分为多个模块组,其中,多个模块组中的每个模块组包括至少一个全加器。
时序模型获取模块530,用于获取多个模块组中每个模块组对应的时序模型。
快速进位链时序模型构建模块540,用于基于多个模块组中每个模块组对应的时序模型,建立FPGA的快速进位链时序模型。
进一步地,划分模块520包括:
目标级数获取单元,用于获取FPGA的超前进位的目标级数。
划分单元,用于基于目标级数将多个全加器划分为多个模块组。
进一步地,FPGA包括超前进位加法器,超前进位加法器包括多个全加器,划分单元包括:
级数获取子单元,用于获取多个全加器中每个全加器在超前进位加法器中的级数。
划分子单元,用于按最小级数的全加器到最大级数的全加器的顺序,基于目标级数将多个全加器划分为多个模块组。
进一步地,划分子单元具体用于按一个模块组包括目标级数的全加器的方式对多个全加器进行划分,并检测多个全加器中未被划分的全加器的数量;当未被划分的全加器的数量大于零且小于目标级数时,将未被划分的全加器划分为一个模块组。
进一步地,时序模型获取模块530包括:
目标模块组确定单元,用于从多个模块组中获取任意一个模块组作为目标模块组。
输入输出pin获取单元,用于获取目标模块组对应的输入输出pin。
时序模型获取单元,用于根据输入输出pin确定与目标模块组对应的时序模型。
进一步地,时序模型获取单元包括:
时序模型关系表获取子单元,用于获取时序模型关系表,时序模型关系表基于多个输入输出pin和多个时序模型生成。
时序模型确定子单元,用于基于时序模型关系表、输入输出pin确定与目标模块组对应的时序模型。
进一步地,该FPGA快速进位链时序模型的建立装置500还包括:
design pin获取模块,用于获取FPGA的design pin。
时序关系构造模块,用于构造FPGA的快速进位链时序模型中的每个时序模型和design pin之间的时序关系。
时序网表获取模块,用于基于时序关系得到FPGA的快速进位链时序网表。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,所显示或讨论的模块相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参考图14,其示出了本申请实施例提供的一种电子设备的结构框图。该电子设备600可以是前述实施例中能够运行程序的电子设备600。本申请中的电子设备600可以包括一个或多个如下部件:处理器610、存储器620、以及一个或多个程序,其中一个或多个程序可以被存储在存储器620中并被配置为由一个或多个处理器610执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
处理器610可以包括一个或者多个处理核。处理器610利用各种接口和线路连接整个电子设备内的各个部分,通过运行或执行存储在存储器620内的指令、程序、代码集或指令集,以及调用存储在存储器620内的数据,执行电子设备的各种功能和处理数据。可选地,处理器610可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器610可集成中央处理器610(CentralProcessing Unit,CPU)、图像处理器610(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器610中,单独通过一块通信芯片进行实现。
存储器620可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器620可用于存储指令、程序、代码、代码集或指令集。存储器620可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等、拍摄功能)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储终端在使用中所创建的数据(比如电话本、音视频数据、地图数据、行驶记录数据)等。
请参考图15,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读介质700中存储有程序代码710,程序代码710可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质700可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质具有执行上述方法中的任何方法步骤的程序代码的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码可以例如以适当形式进行压缩。
综上所述,本申请实施例提供的FPGA快速进位链时序模型的建立方法、装置以及介质,通过获取FPGA的多个全加器,全加器包括LUT模块和CARRY模块;将多个全加器划分为多个模块组,其中,多个模块组中的每个模块组包括至少一个全加器;并获取多个模块组中每个模块组对应的时序模型;再基于多个模块组中每个模块组对应的时序模型,建立FPGA的快速进位链时序模型。由于利用对多个全加器的分组可以构建快速进位链从最小一级到最大一级的时序弧,避免了信号从最小一级到最大一级时需要逐级相加延时,而导致快速进位链的时序不准确的问题,从而能够准确地建立快速进位链的时序模型。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (9)

1.一种FPGA快速进位链时序模型的建立方法,其特征在于,所述方法包括:
获取FPGA的多个全加器,所述全加器包括LUT模块和CARRY模块;
获取所述FPGA的超前进位的目标级数,所述FPGA包括超前进位加法器,所述超前进位加法器包括所述多个全加器;
获取所述多个全加器中每个全加器在所述超前进位加法器中的级数,基于所述目标级数将所述多个全加器划分为多个模块组,其中,所述多个模块组中的每个模块组包括至少一个所述全加器;
获取所述多个模块组中每个模块组对应的时序模型;
基于所述多个模块组中每个模块组对应的时序模型,建立所述FPGA的快速进位链时序模型。
2.根据权利要求1所述的方法,其特征在于,所述获取所述多个全加器中每个全加器在所述超前进位加法器中的级数,基于所述目标级数将所述多个全加器划分为多个模块组,包括:
获取所述多个全加器中每个全加器在所述超前进位加法器中的级数;
按最小级数的全加器到最大级数的全加器的顺序,基于所述目标级数将所述多个全加器划分为所述多个模块组。
3.根据权利要求2所述的方法,其特征在于,所述基于所述目标级数将所述多个全加器划分为所述多个模块组,包括:
按一个模块组包括所述目标级数的全加器的方式对所述多个全加器进行划分,并检测所述多个全加器中未被划分的全加器的数量;
当所述未被划分的全加器的数量大于零且小于所述目标级数时,将所述未被划分的全加器划分为一个模块组。
4.根据权利要求1所述的方法,其特征在于,所述获取所述多个模块组中每个模块组对应的时序模型,包括:
从所述多个模块组中获取任意一个模块组作为目标模块组;
获取所述目标模块组对应的输入输出pin;
根据所述输入输出pin确定与所述目标模块组对应的时序模型。
5.根据权利要求4所述的方法,其特征在于,所述根据所述输入输出pin确定与所述目标模块组对应的时序模块,包括:
获取时序模型关系表,所述时序模型关系表基于多个输入输出pin和多个时序模型生成;
基于所述时序模型关系表、所述输入输出pin确定与所述目标模块组对应的时序模型。
6.根据权利要求1至4任一项所述的方法,其特征在于,在所述基于所述多个模块组中每个模块组对应的时序模型,建立所述FPGA的快速进位链时序模型之后,还包括:
获取所述FPGA的design pin;
构造所述FPGA的快速进位链时序模型中的每个时序模型和所述design pin之间的时序关系;
基于所述时序关系得到所述FPGA的快速进位链时序网表。
7.一种FPGA快速进位链时序模型的建立装置,其特征在于,包括:
全加器获取模块,用于获取FPGA的多个全加器,所述全加器包括LUT模块和CARRY模块;
划分模块,用于获取所述FPGA的超前进位的目标级数,所述FPGA包括超前进位加法器,所述超前进位加法器包括所述多个全加器;获取所述多个全加器中每个全加器在所述超前进位加法器中的级数,基于所述目标级数将所述多个全加器划分为多个模块组,其中,所述多个模块组中的每个模块组包括至少一个所述全加器;
时序模型获取模块,用于获取所述多个模块组中每个模块组对应的时序模型;
快速进位链时序模型构建模块,用于基于所述多个模块组中每个模块组对应的时序模型,建立所述FPGA的快速进位链时序模型。
8.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个程序,其中所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如权利要求1至6任一项所述的方法。
9.一种计算机可读取存储介质,其特征在于,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行如权利要求1至6任一项所述的方法。
CN202010675974.5A 2020-07-14 2020-07-14 Fpga快速进位链时序模型的建立方法、装置以及介质 Active CN111931441B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010675974.5A CN111931441B (zh) 2020-07-14 2020-07-14 Fpga快速进位链时序模型的建立方法、装置以及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010675974.5A CN111931441B (zh) 2020-07-14 2020-07-14 Fpga快速进位链时序模型的建立方法、装置以及介质

Publications (2)

Publication Number Publication Date
CN111931441A CN111931441A (zh) 2020-11-13
CN111931441B true CN111931441B (zh) 2024-06-11

Family

ID=73313923

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010675974.5A Active CN111931441B (zh) 2020-07-14 2020-07-14 Fpga快速进位链时序模型的建立方法、装置以及介质

Country Status (1)

Country Link
CN (1) CN111931441B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113128151B (zh) * 2021-04-21 2022-02-18 无锡中微亿芯有限公司 利用多裸片结构fpga布局结果的网表分割方法
CN113705135B (zh) * 2021-07-20 2023-11-07 深圳市紫光同创电子有限公司 基于fpga进位链的电路结构优化方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102866875A (zh) * 2012-10-05 2013-01-09 刘杰 通用多操作数加法器
CN105138769A (zh) * 2015-08-24 2015-12-09 深圳市同创国芯电子有限公司 一种用于可编程电路的时序模型生成方法及装置
CN105335128A (zh) * 2015-10-29 2016-02-17 中国人民解放军国防科学技术大学 Gpdsp中基于三级超前进位加法器的64位定点alu电路

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7979228B2 (en) * 2007-07-20 2011-07-12 The Regents Of The University Of Michigan High resolution time measurement in a FPGA
US7941774B2 (en) * 2008-08-04 2011-05-10 Texas Instruments Incorporated Partial timing modeling for gate level simulation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102866875A (zh) * 2012-10-05 2013-01-09 刘杰 通用多操作数加法器
CN105138769A (zh) * 2015-08-24 2015-12-09 深圳市同创国芯电子有限公司 一种用于可编程电路的时序模型生成方法及装置
CN105335128A (zh) * 2015-10-29 2016-02-17 中国人民解放军国防科学技术大学 Gpdsp中基于三级超前进位加法器的64位定点alu电路

Also Published As

Publication number Publication date
CN111931441A (zh) 2020-11-13

Similar Documents

Publication Publication Date Title
Lian et al. High-performance FPGA-based CNN accelerator with block-floating-point arithmetic
US5841674A (en) Circuit design methods and tools
US20200218509A1 (en) Multiplication Circuit, System on Chip, and Electronic Device
US7509368B2 (en) Sparse tree adder circuit
CN107305484B (zh) 一种非线性函数运算装置及方法
CN111931441B (zh) Fpga快速进位链时序模型的建立方法、装置以及介质
Eldafrawy et al. FPGA logic block architectures for efficient deep learning inference
KR102581403B1 (ko) 공유 하드웨어 로직 유닛 및 그것의 다이 면적을 줄이는 방법
US7725522B2 (en) High-speed integer multiplier unit handling signed and unsigned operands and occupying a small area
US7143126B2 (en) Method and apparatus for implementing power of two floating point estimation
CN111936965A (zh) 随机舍入逻辑
CN116974868A (zh) 芯片功耗估计装置、方法、电子设备及存储介质
US10628543B1 (en) Systems and methods for estimating a power consumption of a register-transfer level circuit design
Kumawat et al. Design and comparison of 8× 8 Wallace Tree Multiplier using CMOS and GDI technology
US10185545B2 (en) Trailing or leading zero counter having parallel and combinational logic
US20220365755A1 (en) Performing constant modulo arithmetic
US6484193B1 (en) Fully pipelined parallel multiplier with a fast clock cycle
US8868634B2 (en) Method and apparatus for performing multiplication in a processor
Abraham et al. An ASIC design of an optimized multiplication using twin precision
WO2019127480A1 (zh) 用于处理数值数据的方法、设备和计算机可读存储介质
CN115857873B (zh) 乘法器、乘法计算方法、处理系统及存储介质
CN113033788B (zh) 数据处理器、方法、装置及芯片
JP2022101463A (ja) 浮動小数点仮数のための丸め回路
Yedukondalu et al. Implementation of 16-Bit Multiplier-Accumulator Using Modified Booth Algorithm
REDDY DESIGN AND IMPLEMENTATION OF AREA EFFICIENT MULTIPLY-ACCUMULATE UNIT

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