CN117083615A - 用于估计pld设计中的信号相关延迟的方法和装置 - Google Patents
用于估计pld设计中的信号相关延迟的方法和装置 Download PDFInfo
- Publication number
- CN117083615A CN117083615A CN202280021234.7A CN202280021234A CN117083615A CN 117083615 A CN117083615 A CN 117083615A CN 202280021234 A CN202280021234 A CN 202280021234A CN 117083615 A CN117083615 A CN 117083615A
- Authority
- CN
- China
- Prior art keywords
- driver
- pld
- delay
- slope
- stage
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 100
- 238000013461 design Methods 0.000 title claims abstract description 85
- 230000001419 dependent effect Effects 0.000 title claims abstract description 41
- 230000001934 delay Effects 0.000 claims abstract description 62
- 238000003860 storage Methods 0.000 claims abstract description 27
- 238000012546 transfer Methods 0.000 claims abstract description 17
- 238000004088 simulation Methods 0.000 claims description 32
- 230000007704 transition Effects 0.000 claims description 18
- 238000011144 upstream manufacturing Methods 0.000 claims description 8
- 230000000630 rising effect Effects 0.000 claims description 6
- 230000004931 aggregating effect Effects 0.000 claims description 3
- 230000014759 maintenance of location Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 15
- 238000012360 testing method Methods 0.000 description 12
- 235000013599 spices Nutrition 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 229910052710 silicon Inorganic materials 0.000 description 6
- 239000010703 silicon Substances 0.000 description 6
- 230000002776 aggregation Effects 0.000 description 5
- 238000004220 aggregation Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 4
- 239000004020 conductor Substances 0.000 description 4
- 238000007796 conventional method Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 101100004408 Arabidopsis thaliana BIG gene Proteins 0.000 description 3
- 101100485279 Drosophila melanogaster emb gene Proteins 0.000 description 3
- 102100029095 Exportin-1 Human genes 0.000 description 3
- 101100485284 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CRM1 gene Proteins 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 3
- 101150094313 XPO1 gene Proteins 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 108700002148 exportin 1 Proteins 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 2
- 230000036962 time dependent Effects 0.000 description 2
- 208000033986 Device capturing issue Diseases 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Abstract
公开了一种用于估计PLD设计中的信号相关延迟的方法和装置。关于一个或多个级对该PLD设计建模,该级中的每一者包括驱动器和用布线树耦接到该驱动器的一个或多个接收器。该建模基于一组选定参数,该一组选定参数包括:与该驱动器相关联的斜率相关延迟;与该布线树的布局相关的延迟;与来自先前驱动器输入的斜率传递相关的参数。访问该选定参数中的每个选定参数的一组预定值;计算用于经建模的级中的每一者的该估计的信号相关延迟;并且被写入到计算机可读存储介质。
Description
相关申请的交叉引用
本申请要求于2021年5月18日提交的美国临时专利申请63/190,237号和于2022年5月10日提交的美国非临时专利申请17/740,644号的优先权,这些申请中的每一者的全部内容以引用方式并入,就像在本文中全文阐述一样。
背景技术
一些集成电路(IC)具有专用于特定操作功能的结构设计。此类IC通常称为专用IC(ASIC)。在设计ASIC时,运行诸如“SPICE”(“强调IC的模拟程序”)的模拟程序以预测ASIC的操作行为。
然而,关于执行一个或多个逻辑功能,一些IC的结构和对应的操作功能是可编程的。具有此类可编程特性的IC通常称为可编程逻辑器件(PLD)。存在各种类型的可编程逻辑器件(PLD)。
如本文中所使用,一种类型的PLD称为现场可编程门阵列(FPGA)并且具有晶体管阵列。每个晶体管具有可由供应到其的栅极电压控制的导电(“开/关”)状态。因此,由FPGA或PLD执行的逻辑功能基于配置阵列的晶体管(“开关”)的开/关状态可编程。
PLD有时例如由终端用户“在现场”编程(例如,FPGA)。虽然运行诸如“SPICE”(“强调IC的模拟程序”)的电路模拟程序以预测设备的操作行为在IC供应商端(例如,具有IC制造者、制造商、销售商)是高效且方便的,在该IC供应商端中供应商设计和制造IC设备并且可访问(和/或可能甚至生成)与其相关的详细电路网表,但是在现场使用诸如SPICE的模拟工具通常不方便、昂贵、低效并且过度耗时,该现场中常规地部署和在原位编程诸如FPGA的PLD。
示例性具体实施涉及一种用于产生用于PLD上的电路元件的一组延迟模型、允许在用于PLD的设计工具组中部署该一组延迟模型和用于分析跨设计工具组链的电路时序(例如,以确定预期其电路设计在PLD上执行的速度)的方法。
然而,有各种延迟模型的工具组通常生成不同的预测,这取决于如何构建延迟模型以及它们多么近似硅上的真实延迟。不幸的是,使用常规技术生成的延迟模型的不准确性要求许多保护带的使用是保守的。保护带的此类过量使用增加了延迟估计,并且因此通常降低了预测的操作频率,以确保用户设计至少在功能上正确且可操作。
因此,尽管PLD可在较高频率下运行用户设计,但是常规工具组通常预测较低操作频率。这约束了用户根据由工具组生成的较低频率预测设置用于PLD的时钟频率。当PLD最终基于如此约束的配置数据编程时,其可操作性能(例如,速度)可能因此小于(例如,慢于)PLD在未如此约束的情况下实际上能够实现的性能。
需要的是一种对PLD设计中的延迟建模的方法,该方法是高级且简洁的以适用于集成到FPGA设计工具组中,还可表达以对用于不同用户设计的PLD的不同配置建模并且以更高的准确性预测PLD的硅上操作频率。
发明内容
一种用于估计可编程逻辑器件(PLD)设计中的信号相关延迟的方法包括关于一个或多个级对PLD设计建模,每一级包括驱动器和用布线树耦接到该驱动器的一个或多个接收器输入,其中布线树不包括或者包括一个或多个可编程开关。该建模基于一组选定参数,该一组选定参数包括:与驱动器相关联的一个或多个斜率相关延迟;与布线树的布局相关的延迟;与来自先前驱动器输入的斜率传递相关的参数,先前驱动器在该驱动器上游相继顺序地与一个或多个级相关。在布线树包括一个或多个可编程开关的情况下,建模还基于与每个开关相关的多个参数,因为开关向每一级添加了电容性负载。从第一计算机可读存储介质访问经建模的级中的每一者的选定参数中的每个选定参数的一组预定值。基于对应的访问的选定参数值之和计算用于经建模的级中的每一者的估计的信号相关延迟。计算的用于经建模的级中的每一者的估计的信号相关延迟被写入到计算机可读存储介质。
公开了一种包括代码的有形的计算机可读存储介质,该代码在由一个或多个处理器执行时致使或控制与先前描述的用于估计PLD设计中的信号相关延迟的方法相关的过程的执行,以用于估计信号相关延迟。
一种确定与PLD设计的一个或多个延迟模型相关的一组参数中的每个参数的值的方法包括:填充第一数据集和第二数据集,其中每个数据集包括对应于多个目标参数的不同且独立的数据,其中关于一个或多个级对PLD设计建模,每一级包括驱动器和用布线树耦接到该驱动器的一个或多个接收器输入,布线树不包括或者包括一个或多个可编程开关。目标参数包括:与驱动器相关联的一个或多个斜率相关延迟;与布线树的布局相关的延迟;与开关中的每个开关(如果有的话)相关的多个参数,该开关将电容性负载添加到每一级;与来自先前驱动器输入的斜率传递相关的参数,先前驱动器在该驱动器上游相继顺序地与一个或多个级相关。基于第一数据集计算对应于经建模的PLD设计的电路的第一模拟,该第一数据集中拟合与目标参数相关的对应第一组值。基于第二数据集计算对应于经建模的PLD设计的电路的第二模拟,该第二数据集中限定了与多个保护带相关的对应第二组值。保存第一组值和第二组值,其中保存的第一组值和第二组值作为代码写入到计算机可读存储介质,该代码在由一个或多个处理器执行时可操作以用于在访问和执行代码时估计对应于保存的第一组值和第二组值的信号相关延迟。
第一数据集和第二数据集通常不具有重叠的测试例,并且彼此独立,因为重叠的测试例不给出新信息。
本公开的方法和装置允许对PLD设计中的延迟建模,这允许工具组以比使用常规技术获得的更高的准确性预测PLD的硅上操作频率,在常规技术中许多限制性保护带用于生成低频预测,并且在常规技术中根据由工具组生成的低频预测设定PLD的时钟频率。
如所述,本公开的方法和装置允许对指定用于PLD的设计中的延迟建模。由于任何模型是对现实的近似,所以必然地模型和/或其中的参数通常被“拟合”到与现实的可接受水平的“误差”。因此,“拟合(fit)”、“拟合的(fitted)”和“拟合(fitting)”以及类似术语被理解为基于与现实的一些工程预定“误差”将模型和/或参数调整到可接受的值。
以电阻的建模为例,其中该模型仅具有以10欧姆递增的电阻值,即电阻可以是10欧姆、20欧姆、...、3004850欧姆、...、10G欧姆、...,但不限于此。如果实际电阻是111欧姆,则需要做出如何对111欧姆建模的决定。在一种方法中,实际值被“拟合”到有最小“误差”的最近模型。这个示例中的一个选项是将111欧姆实际电阻建模为110欧姆电阻,所得“误差”为-1欧姆(110-111=-1)。另一个最近模型是将111欧姆实际电阻建模为120欧姆电阻,所得“误差”为+9欧姆(120-111=+9)。选择110欧姆的模型低估了实际值,而120欧姆的模型高估了实际值。取决于用户选择的标准,将使用一个或另一个模型值。例如,如果实际电阻与电路时序直接相关,则选择110欧姆的较低模型将导致比现实更快的响应,并且选择120欧姆的较高模型将导致比现实更慢的响应。如果用户标准是确保电路工作,则选择120欧姆模型更谨慎。
类似于上述电阻器的示例,时序、延迟、电容和其他参数的建模影响用户是否想要低估或高估的误差。
如果我们可以计算其可能的范围,则“误差”可被认为是有时表示为“e”的预测误差。
建模的目标是尽可能接近现实,以便例如以可能的最高频率运行设计。如果用户设计到绝对边缘,则不存在边际。例如,如果设计边缘适用于在1.1013GHz操作下的操作并且温度改变1摄氏度,则可能设计将停止操作。因此,工程师希望使用在设计的绝对边缘之外的保护带,并且通过“保护”设计、时序允许适当操作,而没有限制。例如,在以上提及的1.1013GHz设计中,条件改变(例如,从-40摄氏度到+125摄氏度的操作)的一组模拟可能产生如果1.1013GHz的时钟频率降低到1.0GHz,则该设计将在-40摄氏度到+125摄氏度范围内操作。这可能是可接受的折衷。保护带由改变参数以看对设计的总体效果的多个模拟在模型中确定。通常多个模拟将导致用户可以决定可接受什么的保护带范围。例如,在以上1.1013GHz示例中,如果用户知道系统将仅在从25摄氏度到60摄氏度的操作中,则用户可以查看仅覆盖这个范围的保护带并且决定可接受的最大时钟频率。应当理解的是,保护带可以覆盖各种参数,并且由工程师、设计者或用户用于尝试并且保证可接受的性能,而不管是频率、低功率还是任何其他因素。
在逻辑设计中,例如使用数据和时钟进入其中的触发器,对于上升输出和下降输出两者,关于时钟存在数据的建立时间。同样对于触发器,对于上升输出和下降输出,存在数据保持时间。因此,有可能具有用于所提及的这四种情形中的每种情形的保护带。
类似于以上电阻示例,关于以上触发器示例,存在高估和低估。即,可以高估数据保持时间以保证数据以时钟输入(良好),而低估数据保持时间,在这种情况下不保证数据以时钟输入(差)。同样对于建立时间,一个是良好的而另一个是不期望的。因此,取决于选择,可以建立不同的保护带以确保适当的操作。
模型也可以基于信号转变。例如,使用上拉和下拉晶体管布置(例如,PMOS-NMOS)的简单反相器可基于高到低信号转变而具有与低到高转变不同的延迟。这可能是由于各种因素,诸如但不限于不同的晶体管尺寸(例如,L/W)、不同的电子迁移率、栅极氧化物厚度(例如,Cox),但不限于此。要理解的是,功能块(例如驱动器)可以具有不同的高到低转变模型和低到高转变模型。因此,功能块通常具有与它们相关联的一对模型。
为了更详细地解释,误差的基本原因是PLD中的晶体管各自具有非线性行为,这通常需要迭代数值模拟方法来模拟。这是SPICE模拟所做的。本公开的方法和装置创建了为闭合形式并且使用多项式函数的高级且简洁的延迟模型。因此,延迟模型计算相对较快,并且适用于FPGA设计工具组。然而,由于这些延迟模型仅近似指示晶体管的物理行为的实非线性公式,因此不可避免地具有一些误差。本公开的方法和装置实现了模型的简洁性与模型的表现度之间的平衡,并且因此实现了准确性。
在以上讨论中,极大地简化了保护带以理解概念。本公开的方法和装置具有导出保护带的另一种方式。通常,对于少数测试例,通过使用特定模型的最大或平均误差确定聚合模型误差。通常拟合模型以使聚合模型误差最小化。在本发明的方法和装置中,我们可以通过下面讨论的技术使最大绝对误差最小化。
由每个单独的测试例绘制建模误差,揭示了像正态分布的钟形曲线。大多数测试例具有非常小的绝对误差,但是少数测试例可能变成分布的尾部。钟形分布在两侧具有尾部,左侧尾部是延迟的低估,而右侧尾部是延迟的高估。在等同于在时序分析术语中执行建立时序检查的估计电路操作频率的情况下,则左侧尾部填充是不期望的,因为它给出了延迟的低估,并且因此给出了操作频率的高估。因此,我们将左尾部填充的延迟误差的量视为要添加到模型预测的延迟的附加保护带。即,因为左尾部包含延迟低估的情况,所以我们基于左尾部处的延迟误差决定保护带。
从来自第二组测试例(数据)的钟形误差分布获得保护带。第一组测试例(数据)被很好控制并且具有有意义的属性(诸如所有扇出对开)以帮助减少要创建模型的模拟的数量。第二组测试例(数据)在扇出开/关组合方面更随机且更均匀地分布。它倾向于捕获更多离群值并且给出更精确的尾部分布。并不严格需要保护所有尾部点。小部分,诸如2%-5%的尾部填充,在延迟方面可能保持略微低估。这是因为延迟模型用于各个级。由于电路操作频率由多个级组成的关键电路路径确定,所以一些级具有正误差而其他级具有负预测误差,并且它们趋向于沿路径彼此抵消。因此在统计上,留下非常小部分的尾部填充因其低估幅度而被减轻,而不完全消除其低估实际上并不损害电路路径延迟的预测或电路性能。益处是减少了对过度保护模型的需要。
在涉及使同步电路在功能上正确操作的保持时序分析(也称为最小延迟分析)中,优选地不过于高估预测。即,所有电路路径将具有某个最小延迟值,否则电路可能具有竞态条件并且可能出现故障。然而,延迟模型中延迟的高估将在保持时序检查中给出假阳性,而真实硅冒着违反保持时序和出现故障的风险。因此,保护带以类似于以上讨论的方式(即,小部分保持高估)应用于钟形误差分布的右侧尾部填充。
附图说明
本文参考以下描述和附图来描述与本公开的示例性具体实施相关的一些例示性方面、特征和元素。因此,描述了其中本文所公开的原理实际上可实现的各种方式,并且其所有方面和等同物旨在落入所要求保护的主题的范围内。结合附图中的每个枚举图(图),考虑到以下描述,本公开的前述和其他特征和使用变得更加明显。在本公开的整个说明书中,类似的附图标号(如附图的每个图中所示)通常表示相同的部件、特征和/或元素。因此,在附图中:
图1描绘了示例性PLD具体实施;
图2A描绘了PLD具体实施的示例性模型;
图2B描绘了示出示例性级的PLD具体实施的示例性模型;
图3描绘了用聚合Utree实现的PLD的示例性模型;
图4A和图4B描绘了示例性PLD模型;
图5描绘了用于对PLD建模的示例性方法的流程图;
图6描绘了用于估计与PLD模型相关的延迟的示例性方法的流程图;
图7描绘了用于计算第一电路模拟的示例性方法的流程图;
图8描绘了与第二电路模拟计算相关的示例性方法的流程图;
图9描绘了示例性模拟器空间工具链;
图10描绘了示例性用户设计者空间;
图11描绘了示例性计算机系统;
图12描绘了第一延迟公式;并且
图13描绘了第二延迟公式。
具体实施方式
概述
在以下描述中,“延迟”和“时间”和“延迟时间”以及类似短语可互换使用,因为本领域技术人员理解它们的测量单位为时间。
在以下描述中,“延迟”和“时间”和“延迟时间”以及类似短语和“频率”可互换使用,因为本领域技术人员理解它们是彼此的倒数。延迟=1/频率,而频率=1/时间。频率的单位为赫兹,而时间/延迟的单位为秒。
示例性具体实施涉及用于对PLD中的延迟建模并且估计要在PLD上实现的设计中的信号相关延迟的方法。该方法包括关于一个或多个级对PLD设计建模。每一级具有驱动器和由布线树耦接到该驱动器的一个或多个接收器输入。布线树不包括或者包括一个或多个可编程开关。该建模基于一组选定参数,该一组选定参数包括与驱动器相关联的一个或多个斜率相关延迟、与布线树的布局相关的延迟、与向每一级添加电容性负载的开关中的每个开关(如果有的话)相关的多个参数以及与来自先前驱动器输出的斜率传递相关的参数,先前驱动器在该驱动器上游相继顺序地与一个或多个级相关。
从第一计算机可读存储介质访问用于经建模的级中的每一者的选定参数的每个选定参数一组预定值。基于对应的访问的选定参数值之和计算用于经建模的级中的每一者的估计的信号相关延迟。这些参数可以是独立变量的系数(例如,LT)或独立变量的平方系数(例如,QT^2)。计算的用于经建模的级中的每一者的估计的信号相关延迟被写入到第二计算机可读存储介质,该第二计算机可读存储介质用于确定PLD最大操作频率的保护带或最大延迟分析。
示例性PLD
示例性具体实施涉及确定PLD中的延迟。关于本描述,PLD表示可编程地操作以执行指定过程(诸如一个或多个逻辑功能)的集成电路(IC)。示例性具体实施涉及表示具有可编程瓦片阵列的PLD的FPGA。可编程瓦片可包括例如(但不限于)输入/输出块(IO)、可配置逻辑块(CLB)、专用随机存取存储器块(RAM)、处理器、乘法器、数字信号处理块(DSP)、时钟(CLK)管理器、延迟锁定环(DLL)和互连线(INT)。
可编程瓦片通常通过将配置数据流加载到内部配置存储器单元中编程,该内部配置存储器单元限定如何配置可编程元件。配置数据由外部设备从存储器(例如,从外部PROM)读取或写入到FPGA中。然后,各个存储单元的对应集体状态确定FPGA的可操作功能。
图1描绘了PLD具体实施100。PLD 100设置在半导体管芯110上。导体120的构造、网络及/或图案设置在半导体管芯110内并且实现各个瓦片之间的电互连。导体120包括导电的迹线和/或通孔(也称为例如“VIA”或垂直互连通路)。因此,PLD 100应当被理解为具有三维(3D)空间、结构和/或电导体架构。
PLD 100包括逻辑瓦片列,这些逻辑瓦片包括可配置逻辑块(CLB)、输入/输出块(IO)以及用于可编程地互连逻辑瓦片的可编程互连瓦片(INT)。终止瓦片(TERM)围绕逻辑瓦片列,并且可以通过导体120将PLD 100与用于将用户的设计加载到PLD上的编程器连接。TERM还将PLD 100与其他设备耦接,其他设备在其编程时可操作地控制或以其他方式与PLD100交互。
可编程瓦片在将配置数据流加载到PLD 100的内部配置存储器单元中时编程,该内部配置存储器单元限定如何配置其可编程元件。配置数据通常从存储器(例如,从外部PROM)读取或写入到PLD 100中。然后,各个存储单元的对应集体状态确定PLD 100的可操作功能并且对其编程。例如,一个或多个CLB因此可配置以实现数字信号处理(DSP)、数字锁环(DLL)、时钟(CLK)或其他逻辑功能。
虽然关于FPGA描述了用于PLD 100的延迟计算的示例性具体实施,但是应当理解和意识到,附加的和/或替代的具体实施涉及其他类型的PLD。例如,示例性具体实施涉及通过应用处理层(诸如导电(例如,金属)层)编程的PLD,该处理层互连PLD 100的各个部件。此类PLD有时称为“掩模可编程”PLD。
在附加的或替代的实施方案中,使用熔丝和/或反熔丝处理配置PLD 100的可操作状态。术语“PLD”和“可编程逻辑器件”以及本文中所描述的示例性FPGA具体实施应当被理解为(但不限于)描述这些设备和部分(但并非全部)可编程的设备,诸如包括硬编码晶体管逻辑与可编程开关构造的组合的IC,该可编程开关构造可编程地互连硬编码晶体管逻辑。
示例性PLD模型
图2A和图2B各自描绘了PLD具体实施的示例性模型200。在示例性具体实施中,模型200表示例如“抽象”PLD 100(图1)的一部分。关于图2A至图2B所描述的特征和元件应当被理解为基于加载到PLD 100的内部配置存储器单元中的配置数据流编程。模型200表示PLD 100的至少一部分的编程的FPGA配置的具体实施。
模型200将PLD 100表示为具有一个或多个延迟级,这些延迟级在本文中也称为“Utree”。描绘的模型200具有驱动器(“d”)210和一个或多个接收器(例如,分别表示为r1、r2、r3、r4的220、230、240、250),这些接收器用连接到r1和r2的第一电阻/电容(“RC”)布线树215耦接到驱动器210,并且通过第二RC布线树245到r3和r4。第一RC布线树215连接到布置在从驱动器210到接收器r1和r2中的每个接收器的多个扇出中的可编程开关(并且在r3和r4的情况下,在先经过可编程开关241之后通过第二RC布线树245)。
从驱动器210到接收器220的第一扇出包括驱动器210输出、RC布线树115、可编程开关221和222,以及到接收器r1 220的输入。该第一扇出在图2B中由标记280的虚线示出。注意,这个扇出包括驱动器(d)210输出、与开关221和开关222连接的215RC布线树的一部分,以及到接收器(r1)220的输入。
从210到230的第二扇出(表示为210-230)包括通过RC布线树215和开关231耦接到驱动器210输出的第二接收器230(r2)输入。
第三扇出210-240/250包括第四扇出210-240和第五扇出210-250。第四扇出210-240包括驱动器d 210、RC布线树215的部分、开关241、RC布线树245的部分、开关242,以及到第三接收器240(r3)输入。第五扇出210-250包括驱动器d 210输出、RC布线树215的部分、开关241、RC布线树245的部分、开关253,以及到第四接收器(r4)250。仅为了说明目的,在图2B中在290处,第五扇出210-250用点划线示出。
图3描绘了PLD的示例性模型。示例性具体实施涉及将延迟级310“Utree1”的一部分与第二个延迟级320“Utree2”的至少一部分聚合到聚合级320中。
Utree 1310包括驱动器311(1)、第一接收器315(2)和第二接收器319(3)。第一接收器315(2)通过包括开关312的布线树耦接到第一驱动器311(1)。第二接收器319(3)通过包括开关317的布线树耦接到第一驱动器311(1)。应当注意,布线树将驱动器311(1)的输出连接到开关312、317以及可选的其他开关。如图3所示,布线树将驱动器311(1)的输出连接到开关312、开关317以及有如327处的省略号表示可能存在的开关的任何其他分支。
聚合的Utree 2320包括驱动器315(2)(其按照第一接收器315(2)和第四接收器329(4)实现。第四接收器329(4)通过布线树的相应部分耦接到第二驱动器315(2),该布线树被实现为具有固定负载(例如,没有活动开关)。
驱动器315与接收器329聚合以限定Utree 2320。Utree 300包括驱动器311(1)、接收器319(3)和接收器329(4)。因此,从驱动器311(1)的角度,其具有两个接收器端点,接收器319(3)和接收器329(4)。
应当注意,为了聚合目的,聚合的Utree(即,Utree 2320)具有从Utree1 310驱动器315输出的直接连接,并且该直接连接具有固定负载,即该连接没有活动开关。例如,如图所示,315的输出直接连接到329的输入,表明不存在开关。
示例性具体实施涉及用于估计PLD的设计中的信号相关延迟的方法,并且包括关于一个或多个级对PLD设计建模,如下面参见图4A、图4B、图5、图6、图7、图8和/或图9所描述。在执行这些方法时,实现聚合的Utree 300通过减少所需模型的数量简化计算。
图4A描绘了示例性PLD模型400。PLD模型400包括驱动器410(d)、接收器420(r1)和接收器430(r2),它们各自通过包括公共电阻415(R(1,2))的布线树耦接到驱动器410(d)。
接收器420(r1)通过公共电阻415(R(1,2))和与其耦接的第一扇出耦接到驱动器410(d)。第一扇出包括电阻411和开关417(S1)。
接收器430(r2)通过公共电阻415(R(1,2))和与其耦接的第二扇出耦接到驱动器410(d)。第二扇出包括电阻412和开关418(S2)。
在示例性具体实施中,根据公式1计算PLD模型400的信号相关延迟,下面也在图12中在1200处示出。
在公式1中,“D”表示模型400的信号相关延迟。(j,T,P,X)表示“D”是在公式1的右手侧详细描述的函数的变量。j、T、P在下面解释,X表示为开的该一组开关。下划线X为开的该一组开关(下划线指示向量)。如果开关s开,则X(s)为1,否则为0。
在公式1中,“A”表示与驱动器410相关联的固定电弧延迟。电弧延迟是跨功能块(在这种情况下为驱动器410)的延迟。
在公式1中,“B(j,P)”表示到布线布局P中的扇出“j”的基线布线延迟。P是无量纲的,并且是物理布局的列表的索引。
在公式1中,和“LT+QT2”表示与驱动器相关的依赖于斜率的延迟。示例性具体实施通过将和LT+QT2的作为斜率传递系数的线性分量L约束为大于或等于零(L=>0)的值并且将其二次分量Q约束为小于或等于零(Q<=0)的值减少过拟合。Q的单位为1/T。
在公式1中,项“表示由处于其“开”状态的开关添加的递增延迟在布线路径到扇出“j”的分支上添加电容,这相对于基线布线延迟增加了对延迟计算的准确性。
当不存在添加电容性负载的开关时,和(K、R和X)中的项消失并且仅B参数和斜率相关参数(L/Q)以及A保留。
公式1中的以下独立变量由下面的表1中描述的符号表示。
表1
公共路径电阻项R(s,j,P)允许K[或K']值独立于布线布局类型P。
K(s,j)表示当测量从驱动器到接收器j的延迟时当打开开关s时引入的有效电容。
因此,示例性具体实施涉及用于使用参数化延迟模型基于其开关的导电状态估计到特定延迟级(例如,Utree)的特定扇出的延迟的方法。该方法使用依赖于转变时间的参数(例如,L和Q;公式1)计算,每个有其约束符号和添加项(例如,K(s);公式1)对于将电容性负载添加到级的每个开关,该电容性负载包括公共路径电阻因数(例如,R(s);公式1)。
在示例性具体实施中,也估计转变时间。在每个延迟级的输入处估计也称为级的“斜率”的转变时间。像以上参见公式1所论述的延迟估计,从先前延迟级计算斜率估计。对于每一级,示例性具体实施计算到每个扇出的延迟和每个扇出处的斜率。
在示例性具体实施中,PLD模型400的斜率相关延迟根据下面的公式2计算,并且如图13中在1300所示。
在公式2中,“T”表示模型400的转变时间相关延迟,“L'Tin”表示从先前驱动器输入的斜率传递,并且“(j,P)”表示到布线布局P中的扇出“j”的基线斜率,并且X表示开关“开”。下划线X为开的该一组开关(下划线指示向量)。如果开关s开,则X(s)为1,否则为0。
当不存在添加电容性负载的开关时,和(K'、R和X)中的项消失并且仅B'参数和斜率相关参数(L')保留。
在公式2中,项(类似于公式1中的项)表示由处于其“开”状态的开关添加的递增延迟在布线路径到扇出“j”的分支上添加电容,这对模型添加了准确性。
公式2中的以下独立变量由下面的表2中描述的符号表示。
表2
公共路径电阻项R(s,j,P)允许K[或K']值独立于布线布局类型P。
K'(s,j)表示当测量从驱动器到接收器j的延迟时当打开开开关s时引入的有效电容。
在示例性具体实施中,斜率模型使用与以上参见公式1描述的延迟模型中使用的数据集部分或完全重叠的数据。一个或多个级潜在地具有零斜率传递(项“L'”;公式2)。
图4B描绘了耦接到顺序上先前级499的PLD模型400。
考虑到斜率传递项L'为零值,示例性具体实施基于关于其先前级499确定的斜率并且在估计当前延迟级400的结束(输出)时的斜率之前,估计当前延迟级400的开始时的斜率。在示例性具体实施中,转变时间模型的计算因此包括递归例程,该递归例程跟踪通过至少包括先前级499的多个连续级(例如,多个先前级)。
在示例性具体实施中,在计算对应于到达其中作为斜率传递系数的斜率传递项L'具有零(0)值的级的结果时,用于计算转变时间模型的递归例程终止。因此实现了涉及线性编程的方法,并且类似于在计算延迟模型中使用的方法,以便拟合斜率模型参数。在计算转变时间模型时包括斜率传递函数L'增加了使用这种方法可实现的准确性,例如与传统方法相比。例如,对于一些驱动器(例如反相器),驱动器的输入处的斜率影响输出处的斜率。未能捕获这个效应导致较不准确的延迟模型。
因此,示例性具体实施涉及用于使用参数化延迟模型估计到特定延迟级的特定扇出的转变时间或斜率延迟的方法。使用依赖于转变时间的参数计算该方法。
该方法计算聚合的延迟级(其中Utree的聚合不会明显扩大延迟模型的尺寸)。示例性具体实施还涉及确定用于延迟模型的参数值的方法。
示例性具体实施涉及用于在PLD模型400的设计和以上公式1和公式2的计算中估计信号相关延迟和斜率相关延迟的方法,并且包括如下面参见图4、图5、图6、图7、图8、图9和/或图10描述的对其设计建模。
示例性方法
图5描绘了用于对PLD建模的示例性方法500的流程图。方法500涉及根据示例性具体实施确定与PLD设计的一个或多个延迟模型(例如,示例PLD 100、PLD 300、PLD模型400;分别为图1、图3、图4A至图4B)相关的一组参数的值。
在步骤510中,关于一个或多个级对PLD设计建模,该级分别包括驱动器和用布线树耦接到该驱动器的一个或多个接收器。该建模基于一组选定参数,该一组选定参数包括:与驱动器相关联的一个或多个斜率相关延迟;与布线树的布局相关的延迟;与来自先前驱动器输入的斜率传递相关的参数,先前驱动器在该驱动器上游相继按顺序与一个或多个级相关。在步骤518中,布线树包括一个或多个可编程开关,并且多个参数包括与一个或多个可编程开关中的每个可编程开关相关的参数。应当注意,可编程开关将电容性负载添加到这些级。
多个参数指对s、j(对于公式1为K、R、X,对于公式2为K'、R、X)的求和中的每个项。
在可选框511中示出的示例性具体实施中,与驱动器相关联的斜率相关延迟包括具有固定持续时间的电弧延迟,和/或具有取决于驱动器的转变时间的斜率的持续时间的延迟。
在可选框512中示出的示例性具体实施中,与驱动器相关联的斜率相关延迟包括依赖于斜率的驱动器转变时间延迟,该依赖于斜率的驱动器转变时间延迟为约束为大于或等于零的值的线性分量与约束为小于或等于零的值的二次分量之和。
在可选框513中示出的示例性具体实施中,与布线树的布局相关的延迟与从驱动器到接收器的级的扇出相关。
在可选框514中示出的示例性具体实施中,与将电容性负载添加到级的开关相关的多个参数包括:电容因数,该电容因数对应于处于“开”状态的开关;和电阻因数,该电阻因数对应于包括“开”级开关和接收器中的一个接收器中的路径。
此外,在可选框515中示出的示例性具体实施中,建模包括将这些级中的第一个级聚合成聚合级,并且在可选框516,至少第二级包括固定负载。
在步骤520中,从第一计算机可读存储介质访问用于经建模的级的选定参数的一组预定值。
在步骤530中,基于对应的访问的选定参数值之和计算用于经建模的级的估计的信号相关延迟。
在步骤540中,计算的用于经建模的级的估计的信号相关延迟被写入到第二计算机可读存储介质,可选地作为一个或多个配置文件。
在可选步骤550中,设计工具的代码由一个或多个处理器执行,该代码可操作以利用计算的用于经建模的级的估计的信号相关延迟估计信号相关延迟。
图6描绘了用于估计与PLD模型相关的延迟的示例性方法的流程图。根据示例性具体实施,方法600涉及确定与PLD设计(诸如示例PLD 100)的一个或多个延迟模型相关的一组参数的值。
在步骤610中,填充第一数据集和第二数据集,每个数据集包括对应于多个目标参数的不同且独立的数据,其中根据图5的方法500的步骤510、520、530和540(以及可选的步骤511-516)对PLD设计建模。
可选地,在步骤610中,填充包括读取指示要如何生成多个目标参数的一个或多个配置文件,该配置文件包括计算的用于模型的每一级的估计的信号延迟。
在步骤620中,基于第一数据集计算对应于经建模的PLD设计的电路的第一模拟,该第一数据集中拟合了对应第一组目标参数。在一个可选示例中,在计算电路的第一模拟时,基于一个或多个计算的预测误差的绝对值拟合与目标参数相关的对应第一组值。在一个示例中,拟合包括减小一个或多个计算的预测误差的绝对值的最大值,直到获得最低减小值。在这个示例中,在步骤699中写入到计算机可读存储介质的代码/数据包括与驱动器相关的一个或多个所得延迟。
例如,使用数据集中的观察拟合目标参数。每次观察由选择的独立变量和测量的延迟(从SPICE模拟)组成。即,每次观察对应于通过从驱动器到接收器的电路的spice模拟的延迟。该观察包括测量的延迟和独立变量值(例如,开的开关和布线布局)。线性编程用于通过使数据集中的最大延迟预测误差最小化来拟合目标参数。例如,误差是SPICE模拟的延迟与相应的从公式1预测的延迟之间的差。
在一个可选示例中,在699处保存的值被保存为代码662,并且当被执行时估计与对应于保存的第一组值和第二组值的信号相关的延迟。
在一个可选示例中,每一级包括至少一个扇出。每个扇出从该级的驱动器跨越到其接收器中的一个接收器,该接收器用其包括驱动器和接收器的布线树耦接到该驱动器。
图7描绘了用于计算第一电路模拟的示例性方法的流程图。因此,图7表示与图6的步骤620相关的其他(例如,可选的)细节。
下面参见细节框722至727描述步骤620的这些方面。
在图7的示例中,如框722所示,记录与驱动器相关联的一对斜率相关延迟,其中该一组级中的每一级包括至少一个扇出,至少一个扇出中的每个扇出从该一组级的驱动器跨越到其一个或多个接收器,并且通过驱动器与接收器之间的布线树耦接到驱动器,并且至少一个扇出中从驱动器到接收器的活动路径包括处于导电“开”状态的至少一个开关。
在框723中,可选地,从与涉及驱动器的一个或多个延迟相关的第一组保存的值中选择一组数据点。
在框724中,记录的与驱动器相关联的一对斜率相关延迟中的每个斜率相关延迟插入到一组选定数据点中的一个数据点中。
在框725中,拟合与布线树的布局相关的延迟和与向一组级中的每一级添加电容性负载的一组开关中每个开关相关的参数,其中使一个或多个计算的预测误差的绝对值的最大值最小化。
在框726中,计算与布线树的布局相关的延迟的对应值和与向该一组级中的每一级添加电容性负载的该一组开关中的每个开关相关的参数。
在框727中,记录计算的与布线树的布局相关的延迟的对应值和与向该一组级中的每一级添加电容性负载的该一组开关中的每个开关相关的参数,其中记录的与驱动器相关联的一对斜率相关延迟和与布线树的布局相关的延迟的记录值以及与向该一组级中的每一级添加电容性负载的该一组开关中的每个开关相关的参数被写入到计算机可读存储介质。
在步骤630中,基于第二数据集计算对应于经建模的PLD设计的电路的第二模拟,该第二数据集中限定了与多个保护带相关的对应第二组值。
可选地,在步骤630中,与多个保护带相关的第二组值包括变化的独立变量的宽阵列,该变化的独立变量与可编程开关中的哪一个处于导电状态、一个或多个级中的哪一个驱动测试下的级以及PLD的一个或多个物理布局中的哪一个对应于这些级相关,第一数据集与第二数据集之间没有重叠。
图8描绘了用于计算第二电路模拟的示例的流程图。因此,图8表示下面描述的步骤630(图6)的其他(例如,可选的)方面。
在框831中,确定与一组延迟模型中的每个延迟模型的建立时间相关的一个或多个低估的或与保持时间相关的一个或多个高估的一个或多个可允许率(R),并且生成第二数据集中的第二组值中的每个值的一个或多个延迟预测误差。
在框832中,将生成的一个或多个延迟预测误差(“e”)中的每个延迟预测误差从其最小序数值排序到其最大值,并且当PLD内的设备的输入或级具有上升信号时选择具有上升信号的延迟预测误差,或当PLD具有下降信号时选择具有下降信号的延迟预测误差。关于建立时间,计算一个或多个延迟预测误差(“e”),使得一个或多个可允许率(R)包括有小于计算的延迟预测误差的序数值的生成的延迟预测误差的一部分,其中保护带设定为值“e”,而关于保持时间,计算延迟预测误差“e”,使得可允许率R包括有大于计算的延迟预测误差的序数值的生成的延迟预测误差的一部分,其中保护带为值“e”。
在框833中,可选地,多个保护带包括:第一保护带,该第一保护带包括当PLD具有上升输出信号时的至少一个建立时间的估计;第二保护带,该第二保护带包括当PLD具有下降输出信号时的至少一个建立时间的估计;第三保护带,该第三保护带包括当PLD具有上升输出信号时的至少一个保持时间的估计;和第四保护带,该第四保护带包括当PLD具有下降输出信号时的至少一个保持时间的估计。
返回参见图6,在步骤638中,在第一模拟中识别的值和在第二模拟中识别的值被保存到计算机可读存储介质。
返回参见图6,在步骤640中,确定当前级的斜率传递系数是否等于零。如果当前级的斜率传递系数L'等于零(L'=0),则在步骤699实现方法600终止,并且在第一模拟中识别的值和在第二模拟中识别的值以及在下面讨论的递归例程中识别的值被保存到计算机可读存储介质。
可选地,在662处,值被保存为代码并且被执行以估计对应于保存的第一组值和第二组值的信号相关延迟。
然而,如果在步骤640中确定当前级的斜率传递系数不等于零(L'≠0),则执行步骤650。在步骤650中,在估计当前级的结束时的斜率之前,基于顺序上在其先前级的斜率估计当前级的开始时的斜率。然后,方法600循环返回并且重新执行步骤640,直到当前级的斜率传递系数L'等于零(0),并且因此为递归例程。
在一个可选示例660中,对于其中L'≠0的当前级,执行递归例程,该递归例程跟踪L'通过多个顺序先前级以估计当前级的斜率直到L'=0。即,递归例程持续直到对于当前级估计的值等于零(0)。
在示例性具体实施中,分别参见图5和图6描述的方法500和600以及参见图7、图8和图9描述的其步骤和框由一个或多个计算机系统执行。在示例性具体实施中,跨用于设计PLD的工具链实现关于这些方法计算的数据。
示例性工具链和计算机系统
图9描绘了用于模拟包括FPGA(和/或其他IC)延迟模型的PLD的示例性工具链900。工具链900包括模拟器空间910。通常,模拟器空间910与主体PLD的供应商、制造商、设计者或销售商一起部署。另一方面,设计者空间1030(图10中)通常与PLD的终端(或中游)用户一起部署。
模拟器空间910包括模拟器计算机911,该模拟器计算机可操作以用于实行和/或执行诸如SPICE的IC模拟程序,并且可访问与设计主体PLD相关的所有相关数据库、电路网表和产品数据。此外,模拟器计算机(和/或可用由其生成的数据操作的计算机)可基于一组程序文件916操作,这些程序文件被有形地编码在可与模拟器计算机911一起操作的计算机可读存储介质上。
在示例性具体实施中,程序文件916包括数据,该数据在由模拟器计算机911的一个或多个处理器实行和/或执行时致使实行、执行和/或控制方法500或方法600(分别为图5、图6)中的一者或多者。917是SPICE模拟下游的模型拟合器。在示例性具体实施中,模拟器计算机输出一组延迟模型912。因此,(至少部分地)基于方法500和/或方法600,模拟器计算机911计算、模型拟合器917拟合以及模拟器计算机911存储(例如,用于PLD 100(图1))一组延迟模型912。
图10描绘了具有包括设计工具组1033的设计者空间1030的工具链1000的示例。该一组延迟模型1012包括在设计工具组1030中。延迟模型1012从图9中的该一组延迟模型912导出,或者与该一组延迟模型相同。设计工具组1033关于准备在诸如FPGA的PLD上实现的用户设计可操作。
设计工具组1033还包括与PLD的选择(例如,目录)相关的预设计的电路设计的设计库1035。设计库1035可选地具有与预设计的电路设计的操作频率相关的信息。
示例性具体实施涉及用于产生用于PLD(例如,100;图1)上的电路元件的一组延迟模型912的方法(例如,500、600;分别为图5、图6),并且允许在用于PLD的设计工具组1033中将延迟模型912部署为一组延迟模型1012。
示例性具体实施涉及用于跨工具链1000分析电路时序功能的过程。基于本文中所描述的示例性具体实施的设计工具组1033允许用户有效且高效地计算准确预期其电路设计在其设计的PLD上执行的速度。
虽然该一组延迟模型912本身通常不直接用于对PLD设备(例如,PLD 100;图1)编程以运行用户的设计,但是它们允许给定位流集加载到PLD中以编程和运行特定用户设计的完全相同的和/或修改和修订的变型。因此,虽然参数化延迟模型及其参数不直接设置在PLD上以便物理地配置其可编程元件,但是它们被部署在设计工具组1033中,用该设计工具组可编程地配置它们。
有各种延迟模型组的传统设计工具组通常基于运行用户的设计的频率生成不同的预测。不幸地,使用常规技术生成的延迟模型的不准确性要求过量的保护带的使用是保守的。此类过量的保护带增加了延迟估计,考虑到PLD的实际能力,通常呈现是过度保守的延迟估计,并且因此不必要地约束预测的操作频率,为了确保用户设计至少在功能上是正确和可操作的。
因此,尽管PLD 100可在较高频率下运行用户的设计,但是常规工具组通常预测较低的操作频率。这约束了用户根据由工具组生成的较低频率预测设置PLD 100的时钟频率。当PLD 100最终基于如此约束的配置数据编程时,其可操作性能(例如,速度)因此可能小于(例如,慢于)PLD在未如此约束的情况下实际上能够实现的可操作性能。
本文中所描述的示例性具体实施提供一种对PLD的设计中的延迟建模的方法,其允许设计工具组1033以较大准确性对PLD的硅上操作频率建模。根据本发明实现的一组延迟模型912和1012提供PLD的真实操作能力的更精确反映,如最后以其上设置PLD的硅(或其他半导体)配置。
如其名称所表示,PLD为可编程集成电路(IC)设备,并且因此允许以各种方式基于编程的配置数据连接其电路元件以实现各种用户设计功能性、设计性能及操作频率。考虑到PLD的灵活性和可变性,基于本发明实现的设计工具组1033允许用户使用一组延迟模型1012设计。不管PLD 100上的电路元件如何连接,示例性具体实施允许同一组延迟模型912和1012计算用户提出的设计中的每个设计的性能的预测。
由于存在许多方式连接PLD的电路元件,因此穷尽列举所有可能的连接路径变得不可行。在示例性具体实施中,有限的第一组连接方法被提炼成第一数据集。第一数据集连接电路元件并且收集关于那些情况的数据点以拟合对应的一组参数化延迟模型。
用不同于第一组连接方法的第二组连接方法细化延迟模型,该第二组连接方法被提炼成第二数据集。第一数据集和第二数据集连接电路元件并且收集关于那些情况的数据点以拟合对应的一组参数化延迟模型。
第一数据集和第二数据集通常不具有重叠的测试例,并且彼此独立,因为重叠的测试例不给出新信息。
在示例性具体实施中,通过使用验证集验证延迟模型。验证集独立于第一数据集和第二数据集。验证集验证参数化延迟模型的准确性,并且验证这些延迟模型以可接受的准确性覆盖连接电路元件的许多可能方式。
示例性具体实施允许PLD用户相对于对过程编程的临时的当前常规方法以增加的准确性设计PLD诸如“在现场”的FPGA。示例性具体实施避免了与其相关联的许多附加的过量保护带。因此,示例性具体实施提高了现场编程器的PLD设计的性能,例如,与通常使用附加保护带的常规编程方法相比。
应当理解,与方法500和600(分别为图5;图6)相关的流程图以及图7至图8中描绘的更详细的流程图(包括在内)描绘了根据本公开中描述的各种具体实施的方法、计算机程序产品以及相关有形计算机可读介质和计算机系统的各种具体实施的架构、功能和操作。因此,本文流程图中的每个框和/或步骤表示包括在计算机可用程序代码的一个或多个部分中的代码的一部分或片段,该计算机可用程序代码实现了关于流程图描述的一个或多个逻辑功能。
本文中描述的方法和介质以硬件、软件或硬件和软件的组合实现。另选地,这些方法和介质在一个计算机系统中以集中方式实现,或者以分布方式实现,其中不同的元件跨几个互连的计算机系统分布。
虽然适用于执行本文中描述的方法的任何种类的计算机系统或其他装置是合适的,但是示例性具体实施在专用于执行本文中描述的计算的专用计算机系统平台上设置、部署或编程。在示例性具体实施中,硬件和软件的组合包括具有计算机程序的通用计算机系统。在用其加载、实行和执行时,程序控制计算机系统,使得其作为专用设备执行本公开中描述的方法。
示例性具体实施还被编码和/或嵌入在计算机程序产品和/或相关的有形计算机可读存储介质中。这些具体实施包括使得能够实现本文所描述的方法的所有特征,并且这些特征在计算机系统中加载时能够执行这些方法和相关过程,并且编程、配置、引导和控制计算机系统以执行这些方法和相关过程。
如本文所使用,术语“软件”指或涉及任何语言的任何表达,包括但不限于硬件描述语言(HDL)、相关语言或另一种语言、代码或注释和/或其中的一组编码指令,该软件的效果为致使具有信息处理能力的系统直接或者在转换为另一种语言、代码或注释时或以不同材料形式的再现执行特定功能。例如,根据本文的公开实现的软件程序包括但不限于子例程、函数、规程、对象方法、对象实现、可执行应用、小应用程序、小服务程序、源代码、目标代码、共享库/动态加载库、关系型和其他数据库查询以及相关搜索和回复、以及指令、和/或设计用于在本文中描述的计算机上执行的其他指令序列和相关数据。
在示例性具体实施中,此类软件在模拟器空间和/或设计者空间中以及在各种计算机系统上运行(例如,被读取、执行以及可操作地活动和可操作地起作用),如下面参见图9和图10所描述。
图11描绘了可与设计工具组1033一起操作的示例性计算机系统1150。计算机1150具有总线1151。一个或多个处理器耦接到总线1151。例如,计算机1150具有中央处理单元(CPU)1152。CPU 1152部分地基于诸如存储在CPU 1152通过总线1151耦接到的只读存储器(ROM)1153中的基本输入/输出系统(BIOS)的代码执行与计算机1150的操作相关的一般处理操作。
在其计算的执行期间,CPU 1152可操作以用于从随机存取存储器(RAM)1154读取数据以及向该RAM写入数据。在示例性具体实施中,RAM 1154表示一个或多个存储器相关部件,每个存储器相关部件可操作为具有CPU 1152和/或一个或多个其他处理器的计算机可读存储介质(CRM),如下面所描述。
在示例性具体实施中,诸如数学(“Math’)协处理器和/或图形处理单元(GPU)的至少一个协处理器(COP)1158耦接到总线1151,并且可与RAM 1154和/或存储在计算机可读存储介质(CRM1)1155上的程序代码一起操作,该CRM1也耦接到总线1151。在一个示例性具体实施中,存在第二计算机可读存储介质(CRM2)1159,其也耦接到总线1151。
在示例性具体实施中,存储在CRM1 1155上的程序代码还允许计算机1150与设计工具组1033一起操作。在示例性具体实施中,设计工具组1033的实例存储在具有专用库1157(也耦接到总线1151)的CRM1 1155上,以及/或者存储在计算机1150内包括的独立介质中。
计算机1150具有耦接到总线1151的一个或多个接口1156。接口1156可操作以用于将计算机1150通信地耦接到设计者使用的一个或多个外围设备,包括(但不限于)显示器、鼠标、键盘、外部存储装置和/或一个或多个通信网络。
参见以上公式1和公式2描述的各个示例性具体实施的简化模型和方法,因此使用有限的数据量计算,并且这减少了用于拟合延迟模型数据的参数的数据量,并且提高了计算延迟估计的速度。此外,示例性具体实施通过例如避免对建立时序的低估来避免非期望方向上的误差。
如上所述,PLD设计的每一级包括驱动器和用布线树耦接到该驱动器的一个或多个接收器。布线树不包括或者包括一个或多个可编程开关。该建模基于预定模型,并且延迟估计1033作为一组选定参数,该一组选定参数由模拟器计算机910预计算。一组选定参数包括与驱动器相关联的一个或多个斜率相关延迟、与布线树的布局相关的延迟、与向每一级添加电容性负载的开关中的每个开关(如果有的话)相关的多个参数、以及与来自先前驱动器输入的斜率传递相关的参数,先前驱动器在该驱动器上游相继顺序地与一个或多个级相关。
为了清楚和简洁,以及为了避免不必要的或无用的混淆、模糊、阻碍或闭塞本公开的示例的特征或元素,已省略或以不太详尽地讨论相关技术领域的普通技术人员通常已知的某些复杂和细节。任何此类省略或讨论对于描述本公开的示例是不必要的,和/或对于本文所述的本公开的示例的显著特征、功能和方面的理解不是特别相关的。
术语“或”在本文中以包括性而非排他性意义使用(除非在特定情况下明确陈述为相反),并且术语“和/或”在本文中的使用包括与其结合/分离的相关联的所列项目中的一者或多者的任何和所有组合。在本说明书内,术语“包括(include)”及其复数形式“包括(includes)”(和/或,在一些上下文中,术语“具有(have)”及其变形“具有(has)”分别以与下述权利要求中使用的术语“包括(comprise)”和“包括(comprises)”相同的含义使用,可能存在的对其的任何修正,及其等同物和另选物,和/或因此旨在被理解为基本上与其同义。附图是示意性的、图解的、符号的和/或与流程相关的表示,并且因此不一定按比例绘制,除非在本文中明确指出是相反的。除非另外明确指出关于任何特定用法相反,否则本文使用的特定术语旨在被理解为一般性和/或描述性意义,而不是为了任何限制目的。
因此,关于用于估计PLD(诸如FPGA)上设计实现中的信号相关延迟的方法以及基于该方法可操作的系统描述示例性具体实施。该方法包括关于一个或多个级对PLD设计建模。每一级具有驱动器和用布线树耦接到该驱动器的一个或多个接收器。布线树不包括或者包括一个或多个可编程开关。该建模基于一组选定参数,该一组选定参数包括与驱动器相关联的一个或多个斜率相关延迟、与布线树的布局相关的延迟、与向每一级添加电容性负载的每个开关相关的多个参数、以及与来自先前驱动器输入的斜率传递相关的参数,先前驱动器在该驱动器上游相继顺序地与两个或更多个级相关。
从第一计算机可读存储介质访问用于经建模的级中的每一者的选定参数的每个选定参数的一组预定值。基于对应的访问的选定参数值之和计算用于经建模的级中的每一者的估计的信号相关延迟。计算的用于经建模的级中的每一者的估计的信号相关延迟作为代码写入到第二计算机可读存储介质,当由一个或多个处理器执行时,该代码可操作以用于估计指定用于编程到PLD中的用户的设计中的信号相关延迟。
在本文的说明书和附图中,因此关于以下阐述的权利要求来描述示例性具体实施。然而,本公开不限于这些示例,并且本文中的说明书和附图因此旨在启发集成电路相关技术领域的普通技术人员对其另选方案和等效方案的理解、领悟和建议。
Claims (20)
1.一种用于估计可编程逻辑器件(PLD)设计中的信号相关延迟的方法,所述方法包括:
关于一个或多个级对PLD设计建模,所述级分别包括驱动器和用布线树耦接到所述驱动器的一个或多个接收器,所述建模基于一组选定参数所述一组选定参数包括:
与所述驱动器相关联的一个或多个斜率相关延迟;
与所述布线树的布局相关的延迟;和
与来自先前驱动器输入的斜率传递相关的参数,所述先前驱动器在所述驱动器上游相继按顺序与所述一个或多个级相关;
从第一计算机可读存储介质访问经建模的级的所述选定参数的一组预定值;
基于对应的访问的选定参数值之和计算用于经建模的级的估计的信号相关延迟;以及
在第二计算机可读存储介质中写入所计算的用于经建模的级的估计的信号相关延迟。
2.根据权利要求1所述的方法,其中所述布线树包括一个或多个可编程开关,并且其中所述一组选定参数包括与所述一个或多个可编程开关相关的参数。
3.根据权利要求2所述的方法,其中所计算的用于经建模的级的估计的信号相关延迟被写为一个或多个配置文件。
4.根据权利要求2所述的方法,其中所述一组选定参数包括与所述一个或多个可编程开关相关的参数:
电容因数,所述电容因数对应于处于“开”状态的所述一个或多个可编程开关;和
电阻因数,所述电阻因数对应于包括所述“开”状态可编程开关和所述接收器中的一个接收器的路径。
5.根据权利要求1所述的方法,其中所计算的用于经建模的级的估计的信号相关延迟被写为一个或多个配置文件。
6.根据权利要求1所述的方法,其中与所述驱动器相关联的所述一个或多个斜率相关延迟包括具有固定持续时间的电弧延迟,或具有取决于所述驱动器的转变时间的斜率的持续时间的延迟。
7.根据权利要求6所述的方法,其中与所述驱动器相关联的所述一个或多个斜率相关延迟包括依赖于斜率的驱动器转变时间延迟,所述依赖于斜率的驱动器转变时间延迟为约束为大于或等于零的值的线性分量与约束为小于或等于零的值的二次分量之和。
8.根据权利要求1所述的方法,其中与所述布线树的布局相关的所述延迟与从所述驱动器到所述一个或多个接收器中的每个接收器的相应级的扇出相关。
9.根据权利要求1所述的方法,其中所述对所述PLD设计建模包括将所述级中的第一个级与第二级聚合成聚合级。
10.根据权利要求9所述的方法,其中所述第二级包括固定负载。
11.一种确定与可编程逻辑器件(PLD)设计的一个或多个延迟模型相关的一组参数的值的方法,所述方法包括:
填充第一数据集和第二数据集,所述第一数据集和所述第二数据集包括对应于多个目标参数的不同的独立数据,其中关于一个或多个级对所述PLD设计建模,所述一个或多个级分别包括驱动器和用布线树耦接到所述驱动器的一个或多个接收器,并且其中所述多个目标参数包括:
与所述驱动器相关联的一个或多个斜率相关延迟;
与所述布线树的布局相关的延迟;和
与来自先前驱动器输入的斜率传递相关的参数,所述先前驱动器在所述驱动器上游相继按顺序与所述一个或多个级相关;
基于所述第一数据集计算对应于经建模的PLD设计的电路的第一模拟,所述第一数据集中拟合了对应第一组目标参数;
基于所述第二数据集计算对应于经建模的PLD设计的电路的第二模拟,所述第二数据集中限定了与多个保护带相关的对应第二组值;以及
将在所述第一模拟中识别的值和在所述第二模拟中识别的值保存到计算机可读存储介质。
12.根据权利要求11所述的方法,其中所述布线树包括一个或多个可编程开关,并且其中所述一组选定参数包括与所述一个或多个可编程开关相关的参数。
13.根据权利要求11所述的方法,所述方法包括:
(a)确定当前级的斜率传递参数是否等于零;并且
当所述当前级的所述斜率传递参数等于零时,将在所述第一模拟中识别的值和在所述第二模拟中识别的值以及在递归例程中识别的值保存到计算机可读存储介质;
当所述当前级的所述斜率传递参数不等于零时,在估计所述当前级的结束时的斜率之前估计所述当前级的开始时的所述斜率,并且然后返回到(a)。
14.根据权利要求13所述的方法,其中所保存的第一组值和第二组值作为代码写入到所述计算机可读存储介质,当由一个或多个处理器执行时,所述代码能够操作以用于在访问和执行所述代码时估计对应于所保存的第一组值和第二组值的所述信号相关延迟。
15.根据权利要求13所述的方法,所述方法包括将在所述第一模拟中识别的值和在所述第二模拟中识别的值保存为代码,并且执行以估计对应于所保存的第一组值和第二组值的信号相关延迟。
16.根据权利要求13所述的方法,所述方法包括当所述当前级的所述斜率传递参数不等于零时,则对于其中所述斜率传递参数不等于零的所述当前级,在估计所述当前级的所述结束时的斜率之前估计所述当前级的开始时的所述斜率,并且执行递归例程,所述递归例程跟踪所述斜率传递参数通过多个次序的先前级以估计所述当前级的斜率,直到所述斜率传递参数等于零,然后返回到(a)。
17.一种用于计算关于驱动器的第一电路模拟的方法,所述方法包括:
(a)将记录的与所述驱动器相关联的一对斜率相关延迟插入到一组选定数据点中;
拟合与布线树的布局相关的相应延迟和与向一组级添加电容性负载的一组开关相关的参数,其中使一个或多个计算的预测误差的绝对值的最大值最小化;
计算与所述布线树的所述布局相关的所述延迟的对应值和与向所述一组级添加电容性负载的所述一组开关相关的所述参数;
记录所计算的与所述布线树的布局相关的所述延迟的对应值和与向所述一组级添加电容性负载的所述一组开关相关的所述参数,其中所记录的与所述驱动器相关联的一对斜率相关延迟、以及与所述布线树的所述布局相关的所述延迟的记录值和与向所述一组级添加电容性负载的所述一组开关相关的所述参数被写入到计算机可读存储介质;以及
记录与所述驱动器相关联的一对斜率相关延迟,其中所述一组级包括至少一个扇出,至少一个扇出中的每个扇出从所述一组级的所述驱动器跨越到其一个或多个接收器,并且用所述驱动器与所述接收器之间的布线树耦接到所述驱动器,并且所述至少一个扇出中从所述驱动器到所述接收器的活动路径包括处于导电“开”状态的至少一个开关。
18.根据权利要求17所述的方法,所述方法包括从与所述驱动器相关的一个或多个延迟相关的第一组保存的值中选择一组数据点,并且然后进行到(a)。
19.一种用于计算PLD中的一个或多个保护带的第二电路模拟的方法,所述方法包括:
对于一组延迟模型确定与建立时间相关的一个或多个低估的或与保持时间相关的一个或多个高估的一个或多个可允许率,并且生成第二数据集中的第二组值的一个或多个延迟预测误差;以及
将所生成的一个或多个延迟预测误差从其最小序数值排序到其最大值,并且当所述PLD的级具有上升信号时选择具有上升信号的延迟预测误差,或当所述PLD的所述级具有下降信号时选择具有下降信号的延迟预测误差,其中关于所述建立时间,计算所述一个或多个延迟预测误差,使得所述一个或多个可允许率包括所生成的延迟预测误差中具有小于所计算的延迟预测误差的序数值的一部分,其中所述保护带设定为某个值,并且关于所述保持时间,计算所述一个或多个延迟预测误差,使得所述可允许率包括所述生成的延迟预测误差中具有大于所述计算的延迟预测误差的序数值的一部分,其中所述一个或多个保护带中的所述保护带为所述值。
20.根据权利要求19所述的方法,其中所述一个或多个保护带包括:第一保护带,所述第一保护带包括当所述PLD的所述级具有上升输出信号时的至少一个建立时间的估计;第二保护带,所述第二保护带包括当所述PLD的所述级具有下降输出信号时的至少一个建立时间的估计;第三保护带,所述第三保护带包括当所述PLD的所述级具有上升输出信号时的至少一个保持时间的估计;和第四保护带,所述第四保护带包括当所述PLD的所述级具有下降输出信号时的至少一个保持时间的估计。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/190,237 | 2021-05-18 | ||
US17/740,644 | 2022-05-10 | ||
US17/740,644 US20220382945A1 (en) | 2021-05-18 | 2022-05-10 | Method and Apparatus for Estimating Signal Related Delays in a PLD Design |
PCT/US2022/028744 WO2022245607A2 (en) | 2021-05-18 | 2022-05-11 | Method and apparatus for estimating signal related delays in a pld design |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117083615A true CN117083615A (zh) | 2023-11-17 |
Family
ID=88706597
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280021234.7A Pending CN117083615A (zh) | 2021-05-18 | 2022-05-11 | 用于估计pld设计中的信号相关延迟的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117083615A (zh) |
-
2022
- 2022-05-11 CN CN202280021234.7A patent/CN117083615A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6324671B1 (en) | Using a reduced cell library for preliminary synthesis to evaluate design | |
US10318686B2 (en) | Methods for reducing delay on integrated circuits by identifying candidate placement locations in a leveled graph | |
US7203920B2 (en) | Method and apparatus for retrofitting semiconductor chip performance analysis tools with full-chip thermal analysis capabilities | |
Cong et al. | Interconnect performance estimation models for design planning | |
US8479130B1 (en) | Method of designing integrated circuit that accounts for device aging | |
EP2866160A2 (en) | Methods and tools for designing integrated circuits with auto-pipelining capabilities | |
US8726211B2 (en) | Generating an equivalent waveform model in static timing analysis | |
CN106326510B (zh) | 验证时钟树延迟 | |
JP3821612B2 (ja) | 不要輻射解析方法 | |
US8713506B2 (en) | System and method for employing signoff-quality timing analysis information concurrently in multiple scenarios to reduce dynamic power in an electronic circuit and an apparatus incorporating the same | |
US9646122B2 (en) | Variable accuracy parameter modeling in statistical timing | |
US6412101B1 (en) | Simultaneous path optimization (SPO) system and method | |
US6718523B2 (en) | Reduced pessimism clock gating tests for a timing analysis tool | |
US7840923B2 (en) | Methods and apparatuses for designing integrated circuits using virtual cells | |
US9507903B2 (en) | Method for estimation of delays and slews during circuit optimization | |
US11574101B2 (en) | Techniques for providing optimizations based on categories of slack in timing paths | |
US8302049B2 (en) | Method for enabling multiple incompatible or costly timing environment for efficient timing closure | |
Bian et al. | Nonlinear delay-table approach for full-chip NBTI degradation prediction | |
US8739093B1 (en) | Timing characteristic generation and analysis in integrated circuit design | |
CN117083615A (zh) | 用于估计pld设计中的信号相关延迟的方法和装置 | |
US20120304135A1 (en) | Method and apparatus for precision tunable macro-model power analysis | |
US20220382945A1 (en) | Method and Apparatus for Estimating Signal Related Delays in a PLD Design | |
Posser et al. | Electromigration Inside Logic Cells | |
US6701496B1 (en) | Synthesis with automated placement information feedback | |
US8549450B1 (en) | Methods and software for determining net bounds for placing and routing |
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 |