发明内容
本发明所要解决的技术问题是,用以给FPGA互连线建立一种更准确的技术方案,从而提取出的延时信息与真实延时更为接近。
对此,本发明提供了一种FPGA互连线延时获取方法,包括如下步骤:
模型的建立与分析步骤:将FPGA的互连线划分为若干个模型,并确定每个模型负载数量变化引起路径个数变化的数量;
初步处理步骤:根据负载数量的变化,通过版图提取的网表,以得到每一条路径的延时,再将这些模型的延时参数填写在库中;
延时处理步骤:在进行布局布线的时候,通过查找库,得到互连线模型,然后调用相应模型的延时参数,用数值拟合方式获得整条互连线的总延时。
优选的,所述模型的建立与分析步骤中:根据互连线结构、驱动和负载类型的不同,划分互连线的模型。
优选的,所述初步处理步骤中,所述网表带有版图寄生参数。
本发明还提供一种FPGA互连线延时获取系统,包括:
模型的建立与分析模块:用于将FPGA的互连线划分为若干个模型,并确定每个模型负载数量变化引起路径个数变化的数量;
初步处理模块:用于根据负载数量的变化,通过版图提取的网表,以得到每一条路径的延时,再将这些模型的延时参数填写在库中;
延时处理模块:用于在进行布局布线的时候,通过查找库,得到互连线模型,然后调用相应模型的延时参数,用数值拟合方式获得整条互连线的总延时。
优选的,所述模型的建立与分析模块中:根据互连线结构、驱动和负载类型的不同,划分互连线的模型。
优选的,所述初步处理模块中,所述网表带有版图寄生参数。
与现有技术相比,本发明的优点在于,综合考虑了互连线驱动端与负载的变化,并且能根据实际布局布线的负载数量进行延时的增减,因此精准度较高,能很好地获取真实芯片的延时参数。
具体实施方式
结合图2、图3、图4和图5,对本发明的实施例做进一步的说明。
一般意义上所说的互连线包括了可编程的配置选择器(MUX)、连线上的反相器(inverter)和物理连线。大多数FPGA都是采用了层次式互连方式的可编程互连线模型,该模型通常在布线通道中存在三种连线,即相邻高速互连层次的短线(Short Line)、局部连线层次的可分割长线(Dividable Long Line)和全局层次的长线(Long Line),配置选择器作为不同的线之间连接的开关。
互连线延时主要受到了互连线结构、驱动和负载所影响,短线、可分割长线、长线这三种类型互连线的驱动与负载都是不一样的,因此对互连线建立模型的时候,需要根据驱动与负载的不同建立不同的模型。即使对于驱动和负载都相同的线,由于在实际布局布线时,并非所有负载都同时导通,实际导通负载数量的变化也会引起延时的改变,因此需要构造一个较好的方案,用以根据布局布线实际情况获得互连线的延时。
参见图2,为短线中的一种DOUBLE线的连线方式。
其中,多项式模型与数值拟合方式如正文所言,负载会影响互连线延时;在实际的FPGA开发过程中,不同的用户设计会引起布局布线方式的改变,从而负载数量会发生变化,此时即使是同一根互连线,其延时也有所不同。为近似地体现出此现象导致的互连线延时的变化,本发明构思了一种新的互连线建模方式,既考虑到了驱动与负载不同影响到互连线的延时,也考虑到了负载数量的变化引起延时的变化。
本发明的实施例中,以互连线种类为基本进行划分,利用多项式模型来建立互连线的近似延时模型,最后用数值拟合方式获取所有互连线的延时。
以double线为例,互连线延时模型采用多项式形式,如
Td=K0+∑KxNx
其中:
(1)Td表示互连线延时;
(2)K0是“本征延时”,即负载为0的时候该互连线的延时数据,此延时不随负载变化;
(3)Kx是该互连线上某种负载的其中一个导通时在输出端引起的延时增量(假若某互连线有U种负载,并且每个负载有
级MOS管,则Kx一共有∑
个);
(4)Nx是EDA工具根据布局布线后的信息,获取获得该互连线上与Kx对应的某种负载的某一级MOS管的导通数目。在FPGA配套软件对用户设计进行布局布线后,所用到的互连线的负载都已经被确定下来了,因此Nx是可以通过软件得到的,每个Kx都有其相对应的Nx.
图2即为两级Double线,左下角的CLB 为源端,其余为接收端。在本文中,设定每个方向上(水平、垂直)靠近源端的终端CLB为第一级(CLB1),远离源端的终端CLB为第二级(CLB2),这种互连线的负载为CLB内部的可编程的配置选择器(MUX)。
在图2可看到,Double线共有两级负载,但是由于CLB1和CLB2内部各有两种类型的MUX,每种MUX都有两级传输管,因此在建模时,应将CLB看作为共有四级负载,并且每一级负载都应有两个k值。可将此四级负载定义为四条路径(Path),共8个k值。
(1)Path1:源端到CLB1的第一种MUX;
(2)Path2:源端到CLB1的第二种MUX;
(3)Path3:源端到CLB1的第一种MUX;
(4)Path4:源端到CLB1的第二种MUX;
以Path1为例,源端经过Path1到输出,其延时估算多项式(子模型)为
Td=K0+K1*N1+K2*N2+K3*N3+K4*N4
+K5*N5+K6*N6+K7*N7+K8*N8
其中,
(1)Path1负载的第一级传输管导通数为N1,在第一级传输管导通的前提下,第二级传输管导通数为N2;
(2)Path2的第一级传输管导通数为N3,在第一级传输管导通的前提下,第二级传输管导通数为N4;
(3)Path3的第一级传输管导通数为N5,在第一级传输管导通的前提下,第二级传输管导通数为N6;
(4)Path4的第一级传输管导通数为N7,在第一级传输管导通的前提下,第二级传输管导通数为N8。
K0为本征延时,K1-K8是N1-N8对应位置的一个传输管导通时在输出端所引起的延时增量,这即本发明参数提取的主要内容,此互连线模型其他的路径与Path1用类似的方法算出。对于不同的输出路径,延时不同,有不同的K0-K8参数值,如下表,为 标准double线延时函数参数(单位ps):
在布局布线时,FPGA配套软件根据布局布线信息,通过库获取所用到的模型及其延时参数,利用上述多项式的公式算出每一根用到的互连线的延时,此方法即为数值拟合方式。
3.2 具体实施方式
为说明我们这种互连线的建模与参数提取的方式,下面分步将所有步骤列出来。
1.01 分析FPGA互连线的结构;
1.02 根据互连线结构、驱动和负载类型的不同,划分互连线的模型;
1.03 对划分好的互连线模型确定负载个数,并确定K值的数量
1.04 在FPGA的总电路图中找到对应模型形成的电路,将其单独提取出来,并在电路中对该模型对应的电路添加必要的配置点和测量点(配置点是用来在SPICE仿真中加激励的);
1.05 对该电路提取带有版图寄生参数的网表;
1.06 利用SPICE仿真激励文件(SP文件)对电路添加激励,并利用SPICE仿真获得所有模型的全部路径的延时参数;
1.07 将SPICE仿真获得的延时参数做一定的数学处理,使之成为多项式模型方式;
1.08 根据TDL语言格式,将延时参数填写到库中;
1.09 FPGA配套软件根据数值拟合方式获取每一段互连线的延时,从而得到整条路径的延时。
以上即是此实施例的全部步骤,可见参见图4。下面将对上述9个步骤做详细的说明。
1.FPGA互连线的建模
在理解建模的过程之前,首先明确两个概念,一为路径的定义,本文中所说的路径即是互连线到达的一个终点,即互连线的源端到达负载的终点都是路径,负载有多少种,即有多少条路径;二为K值的个数,K值个数由路径的数量以及每条路径的MUX的级数决定,如上文所说的Double线,它有四条路径(U=4),每条路径的MUX有两级(
=2),那么K为∑
=2+2+2+2=8个。
建模过程可见图4,由于FPGA互连线的延时与结构、驱动和负载相关,因此可将这三项内容分层次,先从结构上将互连线划分为Short Line、Dividable Long Line和Long Line三种,这三种类型的互连线由于驱动端MOS管的尺寸不一致,还可划分为几种类型的线,例如short line可划分为时钟线(clock line)、一般的短线(local line)和二线(double line),对于进一步划分的线而言,由于负载个数的不同,尚可划分成几个模型。当模型划分好,即可根据电路得到K值个数。
1.10 如图5所示,为互连线建模的过程,对FPGA互连线建模需要熟悉整个电路结构,以便能正确划分互连线模型,并确定K的数量。
1.11 2.SPICE仿真与数学处理
1.12 通过SPICE仿真可得到上面划分的模型中的K0-Kx的值,K0是扇出为0时的“本征延时”,Kx是某类型负载的一个传输管导通带来的延时增量。SPICE仿真需要三个文件,一为电路对应的版图提取网表,此项是通过提取FPGA电路涉及该模型部分的电路,再提取版图数据获得的,含有RC寄生参数(互连线的等效电容电阻的寄生参数),能真实地模拟真实芯片的情况;二是仿真激励文件,此文件通过给模型的源端和配置点激励,从而使得波形能够通过互连线传输;三是其他仿真设置文件,如仿真精度设置文件等。
1.13 SPICE仿真的基本思路是在输出路径开启的前提下,分别开启不同类型的传输管,测得开启前后的延时值,相减即得延时增量。
1.14 为了在仿真速度和精度上得到平衡,在使用nanosim(nanosim为SPICE仿真软件的一种)仿真时设置为3级精度。此外,为了减小工具误差,在仿真时同时开启多个相同类型的传输管,通过求平均值的方法得到延时增量Kx。
1.15 以上文所说的标准double线为例,延时参数的提取过程为:首先开启N1,N2使得path1导通,测出该测试路径的延时K,然后开启path1的其他扇出的第一级传输管,可获取出第一级传输管的延时增量K1;然后再开启第二级传输管,可获取出第二级传输管的延时增量K2;用K减去K1和K2可得到本路径0扇出时的本征延时K0;同理可仿真,获取得出K3-K8。根据以上所述的方法可分别仿真、获取出每条路径的延时参数。
1.16 以上过程中, 仿真时的扇出要始终保持在较低的情况下,可以避免延时参数过于悲观,在实际应用中,多扇出的情况也是很少的。
1.17 3.库的填写及软件调用参数
1.18 通过SPICE仿真获得所有模型的参数后,即可根据一定的方式将参数填写到库中,我们采用的是TDL语言格式,以上述所写的标准double线为例,可见下表,为参数库的格式:
在布局布线过后,软件通过一定的方式,将每个模型所有Nx获取出来,则每一条互连线都可用下述的多项式获得延时:
Td=K0+∑KxNx
此实施例通过合理的细分互连线延时模型,从而对FPGA互连线进行建模。并对每个互连线延时模型用SPICE仿真出其模型对应的延时参数,在获取互连线的延时时利用数值分析拟合方式调用这些模型对应的延时参数从而得到整个互连线的延时。此种建模办法很好地将FPGA可编程互连线的扇出及半开半闭的情况考虑入内,并且用了高精度的SPICE仿真软件来仿真得出每一种模型的延时,因此这样获取出的FPGA的互连线延时的精准度相对较高。
Xilinx公司的FPGA在可编程逻辑器件领域中占据了50%左右的市场份额,该公司的FPGA配套软件ISE是FPGA开发非常可靠的软件,ISE包括了综合、翻译、映射、布局布线、产生后仿真网表已经配置信息生成等FPGA开发的所有步骤,它在布局布线和后仿真网表和SDF文件(标准延迟格式文件)产生过程中,调用了相应的参数库,参数库中即包含了FPGA互连线的延时参数。
下表是利用Xilinx的Virtex-II系列芯片实际测试所得的延时值与后仿真得到的延时值作对比所得到的结果,其中后仿真为利用ISE10.1软件获得后仿真网表和SDF文件,再利用modelsim仿真得到输入与输出的延时。
在上表中,互连线的长度是以逻辑块(例如CLB)在电路上的长度为单位的,ISE软件是10.1的版本,芯片测试和软件运行都是在25℃、1.5V的电压下测量的。从表中可以看出,,相对于芯片实际测量的延时值与ISE软件利用仿真库获取得到的延时,其误差大概在28%左右。因此,Xilinx公司的参数还尚待提高。
下表为利用本文所说的方法获得的延时结果与SPICE仿真结果(SPICE仿真结果与芯片实际测试结果非常接近)的比较:
(单位为ns)
Best_case是在1.65V电压、-55℃环境下的数据
Worst_case是在1.35V电压、125℃环境下的数据
由上表可以看出,利用本方法获取得到的延时,相对于较准确的SPICE仿真延时,误差大致上在15%左右,最大也不超过21%,因此本方法准确率高,是一种非常有效的提取FPGA互连线建模及延时提取的方式。
以上所述之具体实施方式为本发明的较佳实施方式,并非以此限定本发明的具体实施范围,本发明的范围包括并不限于本具体实施方式,凡依照发明之形状、结构所作的等效变化均在本发明的保护范围内。