可编程集成电路底层

文档序号:1938070 发布日期:2021-12-07 浏览:12次 >En<

阅读说明:本技术 可编程集成电路底层 (Programmable integrated circuit bottom layer ) 是由 G·W·贝克勒 M·朗汉默 于 2020-12-23 设计创作,主要内容包括:提供了一种用于实现可编程器件的方法。该方法可以包括从可编程器件上的现有路由网络提取底层,然后将用户设计映射到所提取的底层。底层可以表示满足预定约束的快速路由布线的子集。底层可以由多个重复的相邻逻辑块组成,每个逻辑块实现某个数据路径缩减操作。以这种方式实现电路设计可以显著地改善电路性能,同时将编译时间缩减一半以上。(A method for implementing a programmable device is provided. The method may include extracting an underlay from an existing routing network on the programmable device and then mapping the user design to the extracted underlay. The bottom layer may represent a subset of the fast routing wires that satisfy predetermined constraints. The bottom layer may consist of multiple repeated adjacent logical blocks, each implementing some data path reduction operation. Implementing the circuit design in this manner can significantly improve circuit performance while reducing compile time by more than half.)

具体实施方式

本实施例涉及用于从可编程集成电路互连架构中提取或解析快速路由模式并将用户应用映射到所提取的快速路由模式的方法。所提取的路由模式(有时称为路由“底层”)可以根据目标逻辑利用率和速度而不同。可以跨可编程集成电路重复路由模式。

以这种方式使用底层设计定制逻辑电路可以显著地增加用户应用的速度,同时将编译时间缩减50%或更多。例如,在可编程逻辑器件具有1 GHz的最大操作速度的场景下,以这种方式设计的用户应用可以运行高达800-900 MHz,这比现有设计快两倍以上。本领域技术人员应当理解,可以在没有这些具体细节中的一些或全部的情况下实践本示例性实施例。在其它情况下,没有详细描述公知的操作,以免不必要地模糊了本发明。

考虑到前述内容,图1是可编程集成电路10的图。如图1所示,可编程逻辑器件10可以包括功能块的二维阵列,包括逻辑阵列块(LAB) 11和其它功能块,诸如随机存取存储器(RAM)块13和专用处理块,诸如部分或完全硬连线以执行一个或多个特定任务(诸如数学/算术运算)的数字信号处理(DSP)块12。

诸如LAB11的功能块可以包括接收输入信号并对输入信号执行定制功能以产生输出信号的较小可编程区(例如,逻辑元件、可配置逻辑块或自适应逻辑模块)。器件10还可以包括用于将LAB11与RAM块13和DSP块12互连的可编程路由结构。可编程逻辑和路由结构的组合有时被称为“软”逻辑,而DSP块有时被称为“硬”逻辑。器件10上的硬逻辑的类型不限于DSP块,并且可以包括其他类型的硬逻辑。加法器/减法器、乘法器、点积计算电路和可以或可以不形成为DSP块12的一部分的其它算术电路有时可以统称为“算术逻辑”。

可编程逻辑器件10可以包含用于配置软逻辑的可编程存储器元件。可以使用输入/输出元件(IOE)16用配置数据(也称为编程数据)加载存储器元件。一旦加载,存储器元件就提供对应静态控制信号,其控制一个或多个LAB11、可编程路由结构和可选地DSP12或RAM13的操作。在典型的场景下,加载的存储器元件的输出被施加到金属氧化物半导体晶体管(例如,传输晶体管)的栅极,以导通或关断某些晶体管,从而配置包括路由路径的功能块中的逻辑。可以以这种方式控制的可编程逻辑电路元件包括多路复用器(例如,用于在互连电路中形成路由路径的多路复用器)、查找表、逻辑阵列、AND(与)、OR(或)、NAND(与非)和NOR(或非)逻辑门、通过门等的部分。作为软逻辑的一部分的逻辑门和多路复用器、可配置状态机或在器件10上不具有单个专用目的任何通用逻辑组件可以被统称为“随机逻辑”。

存储器元件可以使用任何合适的易失性和/或非易失性存储器结构,诸如随机存取存储器(RAM)单元、熔丝、反熔丝、可编程只读存储器单元、掩模编程和激光编程结构、机械存储器设备(例如,包括本地机械谐振器)、机械操作的RAM(MORAM)、可编程金属化单元(PMC)、导电桥接RAM(CBRAM)、电阻存储器元件、这些结构的组合等。由于存储器元件在编程期间加载有配置数据,所以存储器元件有时称为配置存储器、配置RAM(CRAM)、配置存储器元件或可编程存储器元件。

此外,可编程逻辑器件10可以使用输入/输出元件(IOE)16来驱动信号从器件10断开并且从其它器件接收信号。输入/输出元件16可以包括并行输入/输出电路、串行数据收发器电路、差分接收器和发射器电路、或用于将一个集成电路连接到另一个集成电路的其他电路。如图所示,输入/输出元件16可以位于芯片的外围周围。如果需要,可编程逻辑器件可以具有以不同方式布置的输入/输出元件16。

PLD 10上的路由结构(有时称为可编程互连电路)可以垂直路由通道14(即,沿着PLD 10的垂直轴形成的互连)和水平路由通道15(即,沿着PLD 10的水平轴形成的互连)的形式提供,每个路由通道包括至少一个轨道以路由至少一个布线。如果需要,路由布线可以比路由通道的整个长度短。长度L的布线可以跨越L个功能块。例如,四线长布线可以跨越四个功能块。水平路由通道中的四线长布线可称为“H4”布线,而垂直路由通道中的四线长布线可称为“V4”布线。

此外,应当理解,实施例可以在任何集成电路中实现。如果需要,这种集成电路的功能块可以布置在更多的层级或层中,其中多个功能块互连以形成更大的块。其它器件布置可以使用不以行和列布置的功能块。以这种方式布置的器件10有时被称为现场可编程门阵列(FPGA)。

图2是使用互连电路耦合在一起的可编程逻辑块的图。如图2所示,诸如逻辑块202的两个逻辑块可以使用水平(行式)路由通道R_long和R_short以及使用垂直(列式)路由通道C_long和C_short来互连。逻辑块202可表示图1的LAB11,或者可表示逻辑组件的其它合适的分组。在图2的示例中,每个逻辑块202可以包括可编程逻辑204的较小区。每个逻辑块202内的较小可编程逻辑区204有时被称为自适应逻辑模块(ALM)、逻辑元件或逻辑单元。在逻辑块202内可以有任何合适数量的逻辑单元204。通常,每个逻辑单元或ALM 202可以是FPGA上的本地元件,其包括一组查找表(LUT)电路和关联的寄存器,它们可以被共同配置以实现逻辑门或甚至算术电路。

行式路由通道R_long和R_short可表示图1中所示的水平路由通道15。较长的路由通道R_long可跨越更多的逻辑块(例如,跨越多于10个逻辑块、多于20个逻辑块、多于30个逻辑块等),而较短的路由通道R_short可跨越相对较少的逻辑块(例如,跨越少于10个逻辑块、少于五个逻辑块等)。

类似地,列式路由通道C_long和C_short可表示图1所示的垂直路由通道14。较长的路由通道C_long可跨越更多的逻辑块(例如,跨越多于10个逻辑块、多于20个逻辑块、多于30个逻辑块等),而较短的路由通道C_short可跨越相对较少的逻辑块(例如,跨越少于10个逻辑块、少于五个逻辑块等)。

因此,长路由通道R_long和C_long有时被称为长全局互连,而短路由通道R_short和C_short有时被称为短全局互连。每个逻辑块202可经由路由布线210耦合到短全局互连。逻辑块202可以经由短全局互连访问长全局互连。

每个逻辑块202还可以经由路径208耦合到关联的本地互连电路206。R_short上的信号可经由路径212耦合到本地互连电路206,而C_short上的信号可经由路径214耦合到本地互连电路206。逻辑块202可进一步经由直接链路路径216直接耦合到相邻本地互连电路206(即,与相邻逻辑块202相关联的本地互连电路206)。该直接链路路径216可以表示邻近逻辑块之间的最快路由路径,并且有时可以被称为“潜”路径。

在可编程逻辑器件中设计和实现定制逻辑电路可能是一项重要的任务。因此,逻辑设计者通常使用基于计算机辅助设计(CAD)工具的逻辑设计系统来帮助他们设计电路。一种逻辑设计系统可以帮助逻辑设计者设计和测试用于系统的复杂电路。当设计完成时,逻辑设计系统可以用于生成用于对适当的可编程逻辑器件进行电编程的配置数据。

图3中示出了根据实施例的说明性逻辑电路设计系统300。电路设计系统300可以在集成电路设计计算设备上实现。例如,系统300可以基于一个或多个处理器,诸如个人计算机、工作站等。(多个)处理器可以使用网络(例如局域网或广域网)来链接。这些计算机中的存储器或外部存储器和存储设备,诸如内部和/或外部硬盘,可以用于存储指令和数据。

基于软件的组件(诸如计算机辅助设计工具320和数据库330)驻留在系统300上。在操作期间,诸如计算机辅助设计工具320的软件的可执行软件在系统300的(多个)处理器上运行。数据库330用于存储系统300的操作的数据。通常,软件和数据可以存储在非暂时性计算机可读存储介质(例如,有形计算机可读存储介质)上。软件代码有时可以被称为软件、数据、程序指令、指令或代码。非暂时性计算机可读存储介质可以包括计算机存储器芯片、诸如非易失性随机存取存储器(NVRAM)的非易失性存储器、一个或多个硬盘驱动器(例如,磁驱动器或固态驱动器)、一个或多个可移除闪存驱动器或其他可移除介质、压缩盘(CD)、数字多功能盘(DVD)、蓝光盘(BD)、其他光学介质、以及软盘、磁带、或任何其他合适的存储器或(多个)存储设备。

存储在非暂时性计算机可读存储介质上的软件可以在系统300上执行。当安装系统300的软件时,系统300的存储装置具有使系统300中的计算设备执行各种方法(过程)的指令和数据。当执行这些过程时,计算设备被配置为实现电路设计系统300的功能。

计算机辅助设计(CAD)工具320可以由单个供应商或多个供应商来提供,其中某些或全部工具有时被统称为CAD工具、电路设计工具或电子设计自动化(EDA)工具。工具320可以被提供为一套或多套工具(例如,用于执行与在可编程逻辑器件中实现电路设计相关联的任务的编译器套件)和/或一个或多个单独的软件组件(工具)。(多个)数据库330可以包括仅由一个或多个特定工具访问的一个或多个数据库,并且可以包括一个或多个共享数据库。共享数据库可由多个工具访问。例如,第一工具可以将用于第二工具的数据存储在共享数据库中。第二工具可以访问共享数据库以检索由第一工具存储的数据。这允许一个工具将信息传递给另一个工具。如果需要,工具还可以在彼此之间传递信息,而不在共享数据库中存储信息。

图4中示出了可以在诸如图3的电路设计系统300之类的电路设计系统中使用的说明性计算机辅助设计工具420。

设计过程可以以集成电路设计的功能规范(例如,集成电路设计的功能或行为描述)的制定开始。电路设计者可以使用设计和约束输入工具464来指定期望电路设计的功能操作。设计和约束输入工具464可以包括诸如设计和约束输入辅助466和设计编辑器468之类的工具。设计和约束输入辅助,诸如辅助466,可以用于帮助电路设计者从现有电路设计库中定位期望的设计,并且可以向电路设计者提供计算机辅助的帮助,以输入(指定)期望的电路设计。

作为一个示例,设计和约束输入辅助466可以用于为用户呈现选项的屏幕。用户可以点击屏幕上的选项来选择正在设计的电路是否应当具有某些特征。设计编辑器468可以用于输入设计(例如,通过输入硬件描述语言代码行),可以用于编辑从库中获得的设计(例如,使用设计和约束输入辅助),或者可以帮助用户选择和编辑适当的预封装的代码/设计。

设计和约束输入工具464可以用于允许电路设计者使用任何合适的格式来提供期望的电路设计。例如,设计和约束输入工具464可以包括允许电路设计者使用真值表输入电路设计的工具。真值表可使用文本文件或时序图来指定,并且可从库中导入。真值表电路设计和约束输入可用于大电路的一部分或整个电路。

作为另一示例,设计和约束输入工具464可以包括示意图捕获工具。示意图捕获工具可以允许电路设计者从诸如逻辑门和逻辑门的组的组成部分可视地构造集成电路设计。可以使用预先存在的集成电路设计库,以允许用示意图捕获工具导入设计的期望部分。

如果需要,设计和约束输入工具464可以允许电路设计者使用硬件描述语言向电路设计系统300提供电路设计,所述硬件描述语言诸如Verilog硬件描述语言(VerilogHDL)、超高速集成电路硬件描述语言(VHDL)、SystemVerilog、或高级电路描述语言,诸如OpenCL或SystemC,仅举几个例子。集成电路设计的设计者可以通过用编辑器468编写硬件描述语言代码来输入电路设计。如果需要,代码块可以从用户维护的或商业库导入。

在已经使用设计和约束输入工具464输入设计之后,行为仿真工具472可以用于仿真电路设计的功能。如果设计的功能不完整或不正确,则电路设计者可以使用设计和约束输入工具464对电路设计进行改变。在已经使用工具474执行合成操作之前,可以使用行为仿真工具472来验证新电路设计的功能操作。如果需要,诸如行为仿真工具472的仿真工具也可在设计流程中的其它阶段使用(例如,在逻辑合成之后)。行为仿真工具472的输出可以以任何合适的格式(例如,真值表、时序图等)提供给电路设计者。

一旦电路设计的功能操作已经被确定为是令人满意的,逻辑合成和优化工具474可以例如使用来自特定库的门来生成电路设计的门级网表,所述门与由工厂支持的目标工艺有关,所述工厂已经被选择来产生集成电路。替代地,逻辑合成和优化工具474可以使用目标可编程逻辑器件的门(即,在特定可编程逻辑器件产品或产品系列的逻辑和互连资源中)生成电路设计的门级网表。

逻辑合成和优化工具474可以基于由逻辑设计者使用工具464输入的电路设计数据和约束数据,通过做出硬件的适当选择来优化设计,以实现电路设计中的不同逻辑功能。作为一个示例,逻辑合成和优化工具474可以基于电路设计中的寄存器之间的组合路径的长度以及由逻辑设计者使用工具464输入的对应定时约束来执行多级逻辑优化和技术映射。

在使用工具474进行逻辑合成和优化之后,电路设计系统可以使用诸如布局、路由和物理合成工具476的工具来执行物理设计步骤(布局合成操作)。工具476可以用于确定将由工具474产生的门级网表的每个门放置在哪里。例如,如果两个计数器彼此交互,则工具476可以将这些计数器定位在相邻区中,以缩减互连延迟或满足指定最大允许互连延迟的定时要求。工具476为任何目标集成电路(例如,为诸如现场可编程门阵列(FPGA)之类的给定可编程集成电路)创建电路设计的有序且高效的实现。

诸如工具474和476的工具可以是编译器套件的一部分(例如,由可编程逻辑器件供应商提供的编译器工具套件的一部分)。在某些实施例中,诸如工具474、476和478的工具还可以包括诸如定时估计器的定时分析工具。这允许工具474和476在实际生产集成电路之前满足性能要求(例如,定时要求)。

在已经使用工具476生成了期望电路设计的实现之后,可以使用分析工具478分析和测试该设计的实现。例如,分析工具478可以包括定时分析工具、电力分析工具或形式验证工具,仅举几个例子。

在已经使用工具420并且根据目标集成电路技术完成了令人满意的优化操作之后,工具420可以产生集成电路的掩模级布局描述或用于对可编程逻辑器件进行编程的配置数据。

图5中示出在使用图4的工具420以产生集成电路的掩模级布局描述时涉及的说明性操作。如图5所示,电路设计者可以首先提供设计规范502。设计规范502通常可以是以应用代码(例如,C代码、C++代码、SystemC代码、OpenCL代码等)的形式提供的行为描述。在一些场景中,可以以寄存器传送级(RTL)描述506的形式提供设计规范。

RTL描述可具有描述寄存器传送级的电路功能的任何形式。例如,可以使用诸如Verilog硬件描述语言(Verilog HDL或Verilog)、SystemVerilog硬件描述语言(SystemVerilog HDL或SystemVerilog)、或者甚高速集成电路硬件描述语言(VHDL)之类的硬件描述语言来提供RTL描述。如果需要,RTL描述的一部分或全部可以作为示意性表示或以使用OpenCL、MATLAB、Simulink或其它高级合成(HLS)语言的代码的形式来提供。

通常,行为设计规范502可以包括无计时或部分计时的功能代码(即,应用代码不描述逐周期硬件行为),而RTL描述506可以包括详细说明寄存器传送级的电路的逐周期行为的完全计时的设计描述。

设计规范502或RTL描述506也可包括目标准则,诸如面积使用、功率消耗、延迟最小化、时钟频率优化或其任何组合。优化约束和目标准则可以统称为约束。

可以为单独的数据路径、单独的数据路径的部分、设计的部分或整个设计提供那些约束。例如,约束可以用设计规范502、RTL描述506(例如,作为编译指示(pragma)或断言)提供在约束文件中,或者通过用户输入(例如,使用图4的设计和约束输入工具464)来提供,这里仅举几个例子。

在步骤504处,可执行行为合成(有时也称为算法合成)以将行为描述转换成RTL描述506。如果已经以RTL描述的形式提供设计规范,则可以跳过步骤504。

在步骤518处,行为仿真工具472可以执行RTL描述的RTL仿真,其可以验证RTL描述的功能。如果RTL描述的功能不完整或不正确,则电路设计者可以对HDL代码进行改变(作为一个示例)。在RTL仿真518期间,可将从仿真RTL描述的行为获得的实际结果与预期结果进行比较。

在步骤508期间,逻辑合成操作可以使用来自图4的逻辑合成和优化工具474生成门级描述510。逻辑合成508的输出是设计的门级描述510。

在步骤512期间,使用例如图4的布局工具476的布局操作可以将门级描述510中的不同门放置在目标集成电路上的优选位置,以满足给定的目标准则(例如,最小化面积并最大化路由效率或最小化路径延迟并最大化时钟频率或最小化逻辑元件之间的重叠,或其任意组合)。布局512的输出是满足底层目标器件的合法布局约束的所布局的门级描述513。

在步骤515期间,使用例如图4的路由工具476的路由操作可以连接来自所布局的门级描述513的门。路由操作可以尝试满足给定的目标准则(例如,最小化拥塞、最小化路径延迟和最大化时钟频率、满足最小延迟要求或其任意组合)。路由515的输出是有时被称为器件配置比特流或器件配置映像的路由的门级描述516。

当在步骤512和515执行布局和路由时,可以同时执行物理合成操作517,以进一步修改和优化电路设计(例如,使用图4的物理合成工具476)。

图5的RTL设计流程通常产生具有有限性能的电路设计。这是因为当使用常规RTL流程进行设计时,对于特定逻辑单元而言访问高速路由布线的能力在很大程度上是运气问题,因为与物理布局和路由操作有关的优化通常缺乏对FPGA上的路由网络的对称访问。例如,如果在给定位置处第一选择直接路径布线不可用,则逻辑单元被迫采用慢得多且迂回的路线到达预期目的地。这是由有限的物理路由布线上的资源竞争引起的,这是难以优化的计算问题。

根据实施例,附加的底层流程可以用来将电路设计映射到现有底层。“底层”在这里可以被定义为作为FPGA路由网络架构的一部分自然存在并且满足某一预定速度准则的路由布线或路由模式的子集。因此,自然存在于FPGA上的底层的(多个)路由模式有时被称为FPGA路由构造的“人工制品”。底层的路由布线通常应当包括适用于算术、联网、交换或其它功能加速器设计的快速数据路径连接。

图6是用于提取(解析)底层并将电路设计映射到所提取的底层的说明性步骤的流程图。图6的步骤可以使用图3和图4中所示的电路设计工具320或420来执行。在步骤600处,设计工具可以用于从FPGA架构提取底层。步骤600可以包括一系列子步骤602、604和606。

在步骤602处,设计工具可以访问FPGA器件数据库(参见例如图3的数据库330)以获得用于FPGA器件的器件路由网络。器件路由网络在FPGA上布置了可用和现有的所有路由连接。

在步骤604处,设计工具可以接收用户定义的目标路由约束。作为示例,路由约束可以指定信号路由路径的源/原点坐标、信号路由路径的定时和速度要求、应当使用的路由资源的类型(例如,仅使用特定长度的短全局通道、仅使用本地互连电路、仅使用直接链路寄生路径等)、(多个)路由方向、串扰属性以及其他合适的信号路由准则。

在步骤606处,设计工具可以识别由器件路由网络内的满足在步骤604定义的目标路由约束的相邻(或接近相邻)逻辑块组成的路由布线的子集/模式。该标识的布线子集构成了底层,并且无线的其余部分应被丢弃作为不是底层的一部分。

这种底层提取实际上是严重受限的逻辑路由器。给定某些约束,可能没有解决方案或仅有非常少量的解决方案。这样,设计工具可以使用具有分级启发法(其可以是或可以不是完全稳定的)的递归搜索而不是常规的全局搜索来识别路由线路的子集。递归搜索是更详尽的和计算密集的,但是对于这样的受限域是可接受的。没有必要的是,提取工具可以假定相对于常规CAD流程的附加自由度。虽然常规路由器与固定的原点和目的地终端(即,需要被连线在一起的固定电路放置)一起操作,但是底层路由器可以接受各种目的地终端,然后修改所请求的逻辑资源以递送用于期望功能的部分高速解决方案。

在步骤608处,用户的电路设计可以被映射到所提取的底层(例如,使得电路设计的信号仅使用由所提取的底层定义的路由路径)。理想地,用户电路设计或应用可以100%的效率映射到提取的底层。然而,这并不总是可能的。如果用户的设计不能被完全映射到所提取的底层(如在步骤610所确定的),则在步骤612处,图5的常规RTL流程可以用于实现未映射的电路设计的剩余部分(例如,可以对逻辑电路的未映射部分执行附加布局和路由操作)。

在步骤614处,可选地,可以将所提取的底层重新定位或重复到FPGA上的一个或多个其它区(例如,可以将底层应用于本地区或跨整个器件)。FPGA通常具有常规的可重复的架构块,因此底层模式可在器件上重复实施超过十次、数百次或甚至数千次。作为示例,底层可以被映射到Clos网络、人工智能(AI)网络、加速器平台或其他合适的数据路径设计。以这种方式将电路设计映射到提取的高速底层将大大提高定制逻辑设计的性能,与仅使用常规RTL流程的现有实现相比,通常使最大工作频率(Fmax)加倍。

底层目标设计可以与常规设计流程共存。作为示例,底层映射设计可以是以比使用常规流程实现的逻辑电路的其余部分高得多的时钟速率操作的加速器。

尽管以特定次序描述了操作的方法,但是应当理解,也可以在所描述的操作之间执行其他操作,可以调整所描述的操作,使得它们在略微不同的时间发生,或者所描述的操作可以分布在允许处理操作在与处理相关联的各种间隔发生的系统中,只要以期望的方式执行叠加操作的处理。

图6的底层提取方法可以用于提取可重复的高速路由模式,诸如图7的路由底层700。如图7所示,底层700可包括以链连接的重复2:1多路复用电路704。第一多路复用器704可以具有被配置为从两个不同的逻辑块702接收信号的输入。逻辑块702可以表示图2的逻辑块202。第二多路复用器704可以具有连接到第一多路复用器704的输出的第一输入和被配置为从另一逻辑块702接收信号的第二输入。第三多路复用器704可以具有连接到第二多路复用器704的输出的第一输入和被配置为从又一逻辑块702接收信号的第二输入。其中底层700包括串联连接的三个多路复用器704的这个示例仅仅是说明性的。通常,底层700可以包括互连以形成高速路由的任何合适数量的可重复多路复用电路(例如,2:1多路复用器、3:1多路复用器、2:1和3:1多路复用器的某种组合等)。没有一个用于FPGA的固定底层。根据目标路由密度和目标性能或者是否放松约束,还可以检测不同的路由模式。

图8是使用图7的底层700的实际路由模式的图。如图8所示,底层700可包括多个相邻(或接近相邻)的逻辑块,其中每个逻辑块702可使用LAB 202-逻辑来实现,并且其中每个2:1多路复用器704可使用诸如LAB 202-mux(本文中有时称为LAB-宽多路复用器)的LAB来实现。LAB 202-输入可包括将信号馈送到对应LAB 202-逻辑的器件输入引脚。第三LAB宽-mux 202-mux可将信号馈送到对应LAB 202-输出,其可包括器件输出引脚。

图8示出了将不同LAB之间的逻辑单元204链接在一起的快速路由连接(参见例如结合图2描述的直接链路路径216)。虽然这些快速路由中的大多数在相同索引的逻辑单元之间具有1:1的相关性或配对,但是快速路由中的一些可以被加扰(如部分850中所示)。当底层布线被加扰时,当将算术数据路径映射到这样的路由底层时的一个潜在问题是,进位链可能不能被映射到这样的底层。然而,这是最快的底层。可能存在稍微较慢的底层,其将具有用于每个LAB的1:1配对(即,信号将以目的地函数在逻辑上可接受的位顺序到达)。

底层也不需要完全开发。在一种情况下,大多数连接将被映射到底层(例如,通过将连接约束到底层中的已知快速连接),并且其中对于该底层没有已知快速连接的逻辑单元可以被留下以浮置(float),依赖于常规RTL流程以稍后找到用于那些浮置逻辑单元的连接。由于底层中的大多数连接是受约束的,所以设计工具应具有找到用于未指定连接的快速路由的较容易的时间,因为用于整个电路结构的布局/路由自由度大大地减小了。

当与快速网络一起使用时,底层在性能方面是最有效的。随着在底层周围添加越来越多的逻辑,速度可能下降得较多。然而,与常规设计流程相比,所提取的底层将提供本地可重复的路由结构/框架,其可以跨器件复制以根据用户的目标优化速度和逻辑利用。

由重复的2:1多路复用器组成的图7的底层700仅仅是说明性的,并且没有意图限制本实施例的范围。图9A示出了由被配置为计算八个输入字的和的重复加法器组成的另一合适的底层900。如图9A所示,底层900可包括以链状结构连接的可重复加法器902,以将输入字d1-d8加在一起,其中每个加法器902组合两个单独的值。每个加法器902可使用逻辑块(例如,参见图1的LAB 11或图2的逻辑块202,或其它合适的逻辑元件群组)来实现,且因此可被称作LAB式加法器。在图9A的示例中,相邻加法器904之间的大多数连接是短的水平布线904,但是注意,连接之一由一个水平路由段906-1和一个垂直路由段906-2组成。通过段906-1和906-2的延迟可能比通过单个水平布线904的延迟慢。

图9B示出了另一个合适的底层900',其包括插入在水平路由段906-1和垂直路由段906-2之间的附加寄存器电路910。以这种方式配置的寄存器910可以用作流水线元件,用于提高整个基于加法器的底层900'的吞吐量。

图9C示出了将诸如加法器902'的加法器移动到转向节点的又一合适的底层900″。以这种方式配置,相邻加法器902之间的所有布线可以同样快,而不牺牲否则流水线寄存器会引入的任何等待时间。

其中底层由2:1多路复用器组成的图7-8的示例和其中底层由加法器组成的图9A-9C的示例,仅仅是说明性的。图10示出了诸如FPGA底层1000的底层,其由被配置为计算八个不同输入字d1-d8的一些功能的功能块1002来形成。功能块1002可以是“软”(可编程)逻辑块或“硬”不可配置功能块(有时称为嵌入式/硬连线功能块)。每个功能块1002可使用逻辑块(例如,参见图1的LAB 11或图2的逻辑块202,或其它合适的逻辑元件群组)或逻辑区来实现。每个功能块1002可以是多路复用器(例如,2:1多路复用器电路)、加法器、逻辑门(例如,逻辑与(AND)门、逻辑与非(NAND)门、逻辑或(OR)门、逻辑或非(NOR)门、逻辑异或(XOR)门、逻辑同或(XNOR)门)以及可以从预先形成的元件的库中选择的其他合适的2:1功能运算器。如果需要,底层1000内的每个功能块1002可以具有多于两个的输入。通常,底层1000可以包括用于组合多于八个输入信号或少于八个输入信号的任意数量的功能块1002。

预先形成的库元件可以具有不同的进入和外出模式,这有助于实现更大系统的组装,因为数据不总是简单地使用恒定数据路径宽度在一个方向上从源流向目的地。图11A-11D是具有不同进入/外出模式的说明性2:1数据路径缩减运算器的图。这些2:1数据路径缩减运算器可以是多路复用器(例如,2:1多路复用器电路)、加法器、逻辑门(例如,逻辑与门、逻辑与非门、逻辑或门、逻辑或非门、逻辑异或门、逻辑同或门)和其它合适的2:1功能运算器。

作为示例,图11A示出了第一数据路径缩减运算器1100-1,其具有来自西边和北边的第一和第二进入端口以及在东边的外出端口。作为另一示例,图11B示出了第二数据路径缩减运算器1100-2,其具有来自西边和南边的第一和第二进入端口以及在东边的外出端口。作为再另一示例,图11C示出了第三数据路径缩减运算器1100-3,其具有来自北边和南边的第一和第二进入端口以及在西边的外出端口。作为又另一示例,图11D示出了第四数据路径缩减运算器1100-4,其具有来自南边和东边的第一和第二进入端口以及在北边的外出端口。

图11A-11D的示例仅仅是说明性的。通常,2:1函数运算器可以具有来自任何两个边缘的进入端口和在某个其他边缘的外出端口。这些数据路径缩减运算器中的每一个都可以使用逻辑块(参见例如图1的LAB 11或图2的逻辑块202,或其他合适的逻辑元件组)或逻辑区来实现。这些数据路径缩减运算器的输入和输出端口可以连接到任何合适长度的通道(例如,结合图2描述的类型的短全局通道R_short/C_short或长全局通道R_long/C_long)。

尽管在自由形式的结构意义上有一些限制,但是可以使用相邻(或接近相邻)的2:1数据路径缩减运算器来表达或构建大量感兴趣的电路。图12是说明性N:1多路复用器的图,其可由具有不同进入/外出模式的多个2:1多路复用运算器构造。如图12所示,代表16:1多路复用器的底层1200可以使用图11A-11D的不同类型的相邻数据路径缩减运算器来组成。

通常,任何数字电路可以被表达为2:1逻辑与非门的组合,因此所有电路可以以这种方式使用2:1缩减节点来组装。二维布局中的邻接(或接近邻接)的附加要求是约束性的,但不是不可克服的。由这些2:1数据路径缩减运算器形成的底层被认为是先验地极快的,因此映射到这样的底层的任何更大的电路将能够以非常高的速度操作。这与执行完全放置和路由的现有方法形成了鲜明的对比,现有方法通常受到最不成功布线连接的速度的限制。

至此已经针对可编程集成电路描述了实施例。可编程逻辑器件的示例包括可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、现场可编程逻辑阵列(FPLA)、电可编程逻辑器件(EPLD)、电可擦除可编程逻辑器件(EEPLD)、逻辑单元阵列(LCA)、复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA),这里仅举几个例子。

在本文的一个或多个实施例中描述的可编程逻辑器件可以是数据处理系统的一部分,该数据处理系统包括以下组件中的一个或多个:处理器;存储器;IO电路;以及外围设备。数据处理可以用于各种应用,诸如计算机联网、数据联网、仪器、视频处理、数字信号处理或其中期望使用可编程或可重新编程逻辑的优点的任何合适的其他应用。可编程逻辑器件可以用于执行各种不同的逻辑功能。例如,可编程逻辑器件可以被配置为与系统处理器协同工作的处理器或控制器。可编程逻辑器件还可以用作仲裁器,用于仲裁对数据处理系统中的共享资源的访问。在又一示例中,可编程逻辑器件可以被配置为处理器与系统中的其他组件之一之间的接口。

示例:

以下示例涉及进一步的实施例。

示例1是一种使用设计工具在可编程器件上实现逻辑电路的方法,包括:从所述可编程器件上的路由网络提取底层,其中,所提取的底层包括所述路由网络中满足目标路由约束的路由布线的子集;将逻辑电路映射到所提取的底层。逻辑电路中的信号仅使用所提取的底层中定义的路由路径。

示例2是示例1的方法,其中提取底层可选地包括访问数据库以获得关于路由网络的信息。

示例3是示例2的方法,其中,提取底层可选地还包括接收目标路由约束,并且其中,目标路由约束包括从由以下各项组成的组中选择的约束:源坐标、定时要求、速度要求、路由资源类型、路由方向和串扰属性。

示例4是示例1-3中任一项的方法,可选地还包括确定逻辑电路是否被完全映射到所提取的底层。

示例5是示例4的方法,可选地还包括响应于确定逻辑电路不能被完全映射到所提取的底层,对逻辑电路的未映射部分执行附加的布局和路由操作。

示例6是示例1-5中任一项的方法,可选地还包括在可编程器件上的至少一个其他区上使用所提取的底层。

示例7是示例1-6中任一项的方法,其中,所提取的底层可选地包括多个相邻可编程逻辑块。

示例8是示例1-7中任一项的方法,其中,所提取的底层可选地包括多个2:1数据路径缩减运算器。

示例9是示例8的方法,其中,多个2:1数据路径缩减运算器可选地包括多个2:1多路复用器。

示例10是示例8的方法,其中,多个2:1数据路径缩减运算器可选地包括多个加法器。

示例11是示例8的方法,其中,多个2:1数据路径缩减运算器可选地包括多个逻辑门。

示例12是示例8的方法,其中,多个2:1数据路径缩减运算器可选地具有不同的进入和外出模式。

示例13是一种集成电路,包括:可编程路由网络;以及使用从可编程路由网络提取的底层实现的逻辑电路,其中,底层包括可编程路由网络内的满足目标路由约束的布线模式。

实施例14是示例13的集成电路,其中,所述底层可选地包括多个可编程逻辑块。

示例15是示例13的集成电路,其中,所述底层可选地包括多个相邻的可编程逻辑块。

示例16是示例14-15中任一项的集成电路,其中,底层中的多个可编程逻辑块中的至少一个被可选地用于实现2:1数据路径缩减运算器。

示例17是示例16的集成电路,其中,2:1数据路径缩减运算器可选地包括2:1多路复用器。

示例18是示例16的集成电路,其中,2:1数据路径缩减运算器可选地包括加法器。

示例19是示例16的集成电路,其中,2:1数据路径缩减运算器可选地包括逻辑门。

示例20是示例13-19中任一项的集成电路,其中,所述目标路由约束可选地包括定时约束。

示例21是一种非暂时性计算机可读存储介质,包括指令以:提取可编程互连结构中的路由路径的子集,其中,所提取的路由路径的子集满足预定性能准则;以及将应用映射到所提取的路由路径的子集。

例如,上述装置的所有可选特征也可以参考本文所述的方法或过程来实现。前述内容仅仅是对本公开的原理的说明,并且本领域技术人员可以做出各种修改。上述实施例可以单独地或以任何组合来实现。

29页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种借由自动工具完成的模块化半定制FPGA芯片设计方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类