集成电路中的状态可见性和操纵的制作方法

文档序号:11546326阅读:308来源:国知局
集成电路中的状态可见性和操纵的制造方法与工艺

本文呈现的实施例涉及电子电路,并且更具体地涉及用于访问集成电路中的存储电路的技术。



背景技术:

存储电路常常被用于保持集成电路中的状态,并且在运行用户应用之前常常需要对这些存储电路的写访问,例如作为对计算进行初始化的部分。考虑可编程逻辑器件(pld)作为集成电路的一个示例。对pld进行配置以实现给定电路设计包括通过将数据写入到存储电路来对配置存储器元件进行编程。另外,存储电路常常需要在集成电路开始操作之前处于初始状态中。例如,存储电路上的状况常常设置计算的开始点(例如,将计数器重置为零)或者存储用于计算的系数(例如,对于有限冲激响应(fir)滤波器)。

在操作集成电路期间独立于对用户应用的运行的对这些存储电路的读访问发挥同等重要的作用。例如,涉及调试操作(诸如观察集成电路的状态以确定操作的正确性、为了对电路设计进行仿真的目的而使用集成电路、或者针对缺陷或出错状况(诸如单粒子效应(seu))的出现而监测集成电路)的应用常常需要对集成电路中的存储电路的状态的提取。



技术实现要素:

根据一些实施例,处于第一模式中的控制电路可以通过经由配置资源对配置存储器位进行编程来生成关于集成电路的电路设计实施方案。电路设计实施方案可以包括存储电路。在利用电路设计实施方案对集成电路的操作期间,电路设计实施方案可以执行在存储电路处的第一访问操作。处于第二模式中的控制电路可以在第二模式中执行经由配置资源在存储电路处的第二访问操作。在一些实施例中,第二访问操作是写操作。在其它实施例中,第二访问操作是读操作。

应当认识到,本发明能够以许多方式(诸如过程、装置、系统、设备或计算机可读介质上的方法)来实施。本文公开了本发明的若干实施例。

在某些实施例中,上述写操作可以通过使存储电路中的位反相来将错误注入到电路设计实施方案中。错误注入的影响可以包括观察集成电路的输出以检查该错误是否影响输出。

如果期望的话,写操作还可以包括在控制电路处接收重置信号,在接收到重置信号时执行在控制电路处的中断操作,以及经由配置资源将重置请求信号从控制电路发送到扇区,其中重置请求信号请求执行扇区中的重置操作。

本发明的另外的特征、本发明的本质和各种优点将从附图和优选实施例的下面的详细描述中变得更加清楚。

附图说明

图1是根据实施例的说明性集成电路的示意图。

图2是根据实施例的用于利用用户界面和控制在配置资源上的多个扇区的全局控制电路来访问存储电路的说明性电路的示意图。

图3是根据实施例的实现使用扫描链对存储电路的状态捕获的说明性电路的示意图。

图4是根据实施例的具有由局部控制电路控制的扫描链的说明性扇区的示意图。

图5是根据实施例的执行对存储电路的阵列的访问操作的说明性控制电路的示意图。

图6是根据实施例的具有控制电路的说明性系统的示意图,该控制电路与处理器电路进行通信并且执行经由配置资源和接口对集成电路中的存储电路的访问操作。

图7是示出了根据实施例的用于执行经由集成电路中的配置资源对存储电路的访问操作的说明性操作的流程图。

图8是示出了根据实施例的用于执行对集成电路中的电路设计实施方案的统计监测的说明性操作的流程图。

具体实施方式

集成电路可以实施电路设计,其有时还被称为应用或用户应用。电路设计实施方案可以包括逻辑电路(例如,逻辑与门、逻辑或门、反相器、等等)、存储电路(例如,寄存器、锁存器、存储器、等等)、运算电路(例如,加法器、减法器、乘法器、除法器、等等)、输入电路(例如,输入端口、接收器电路、存储器接口、等等)、输出电路(例如,输出端口、发送器电路、存储器接口、等等)。

集成电路中的存储电路常常被用于存储电路设计实施方案的状态。电路设计实施方案可以在操作集成电路期间执行读访问操作以从这些存储电路中取得数据信号和/或执行写访问操作以将数据信号存储在这些存储电路中。在一些情况下,可能期望独立于在操作期间集成电路运行的应用而执行读访问操作和/或写访问操作中的至少一些操作。

例如,独立于应用的运行而执行的写访问操作可以包括:在运行应用之前进行的写访问操作(例如,通过将计数器重置为零或者设置常数系数值来对计算进行初始化,将状态机放置成初始状态,对可配置电路进行编程,等等)、部分重配置、将应用设置成已知状态以用于调试目的、单粒子效应(seu)校正、等等。

作为另一示例,独立于应用的运行而执行的读访问操作可以包括诸如以下的调试操作:观察集成电路的状态以确定操作的正确性、为了对电路设计进行仿真的目的而使用集成电路、针对缺陷或出错状况(诸如单粒子效应(seu))的出现而监测集成电路、等等。

如果期望的话,从存储电路中取得的数据的值可以通过调试端口(诸如内部配置访问端口(icap)、联合测试行动组(jtag)端口、或其它输出端口)被路由到嵌入式处理器电路或其它可能的接收方以用于在集成电路外的进一步分析。

用于独立于应用的运行而执行读访问操作和/或写访问操作的当前解决方案(例如,由加利福尼亚圣何塞的altera公司销售的signalprobe或者ii逻辑分析器,或由加利福尼亚圣何塞的xilinx公司销售的chipscopetmpro软件)具有许多缺点。例如,为了取得集成电路的状态的目的的读访问操作常常与应用的运行相比较慢,并且一般需要停止应用的运行。一些存储电路可能不是能直接访问的,并且因此在读访问操作期间不可观察到并且在写访问操作期间不可写入。应用的定时和资源利用可以通过将调试连接添加到在电路设计实施方案内部的连接处的探测信号和/或分配内部追踪缓冲器来被影响。另外,在其处探测到信号的连接常常需要在运行应用之前是已知的,使得它们可以被包含在电路设计实施方案中。

本领域技术人员将意识到,当前示例性实施例可以在没有这些具体细节中的一些或全部的情况下来实践。在其它实例中,未详细描述公知操作以便不会不必要地使当前的实施例模糊不清。

在图1中示出了可以被配置为实施电路设计的集成电路(诸如可编程集成电路100)的说明性实施例。如图1所示,可编程集成电路100可以包括功能块的二维阵列,包括逻辑阵列块(lab)110和其它功能块,例如诸如随机访问存储器(ram)块130和数字信号处理(dsp)块120。功能块(诸如lab110)可以包括接收输入信号并执行在输入信号上的定制功能以产生输出信号的较小的可编程区(例如,逻辑元件、可配置逻辑块、或自适应逻辑模块)。

另外,可编程集成电路100可以具有用于驱动关闭可编程集成电路100的信号并用于从其它设备接收信号的输入/输出元件(ioe)102。输入/输出元件102可以包括并行输入/输出电路、串行数据收发器电路、差分接收器和发送器电路、或用于将一个集成电路连接到另一集成电路的其它电路。如所示的,输入/输出元件102可以被定位在芯片的外周附近。如果期望的话,可编程集成电路100可以具有以不同的方式布置的输入/输出元件102。例如,输入/输出元件102可以形成可以被定位在可编程集成电路100上的任何地方的(例如,跨可编程集成电路的宽度均匀地分布的)输入/输出元件的一列或多列。如果期望的话,输入/输出元件102可以形成(例如,跨可编程集成电路的高度分布的)输入/输出元件的一行或多行。备选地,输入/输出元件102可以形成可以被分布在可编程集成电路100的表面上或者被聚集在所选择的区域中的输入/输出元件的岛(island)。

可编程集成电路100还可以包括形式为垂直路由信道140(即,沿可编程集成电路100的垂直轴形成的互连)和水平路由信道150(即,沿可编程集成电路100的水平轴形成的互连)的可编程互连电路,每个路由信道包括至少一个轨道以路由至少一根接线。

要指出,除了图1中描绘的互连电路的拓扑结构之外的其它路由拓扑结构旨在被包含在本发明的范围内。例如,路由拓扑结构可以包括对角地行进或沿它们的范围的不同部分水平地和垂直地行进的接线以及在三维集成电路的情况下垂直于设备平面的接线,并且接线的驱动器可以被定位在与接线的一端不同的点处。路由拓扑结构可以包括基本上跨过整个可编程集成电路100的全局接线、跨过可编程集成电路100的部分的分数全局接线、特定长度的交错接线、较小的本地接线、或任何其它适当的互连资源布置。

另外,应当理解,实施例可以被实施在任何集成电路中。如果期望的话,这样的集成电路的功能块可以被布置在更多的层级或层中,其中多个功能块被互连以形成更大的块。其它设备布置可以使用未按行和列布置的功能块。

可编程集成电路100可以包含可编程存储器元件。存储器元件可以使用输入/输出元件(ioe)102和配置资源而被加载有配置数据(还被称为编程数据)。一旦被加载,存储器元件中的每个存储器元件均提供控制相关联的功能块的操作的对应的静态控制信号(例如,lab110、dsp120、ram130、输入/输出元件102、或产生信号路径的互连资源)。

在典型情形下,经加载的存储器元件的输出被施加到功能块中的金属氧化物半导体场效应晶体管的栅极以接通或断开某些晶体管,并且由此对包括路由路径的功能块中的逻辑进行配置。可以以这种方式控制的可编程逻辑电路元件包括多路复用器(用于形成互连电路中的路由路径的多路复用器)、查找表、逻辑阵列、与逻辑门、或逻辑门、与非逻辑门、以及与或逻辑门、通过门(passgate)、等等的部分。

存储器元件可以使用任何适当的易失性存储器结构和/或非易失性存储器结构,诸如例如随机访问存储器(ram)单元、保险丝、反熔丝、可编程只读存储器存储器单元、掩码编程结构和激光编程结构、机械存储器设备(例如,包括本地机械谐振器)、机械操作的ram(moram)、这些结构的组合、等等。因为存储器元件在编程期间被加载有配置数据,所以存储器元件有时被称为配置存储器元件、配置ram(cram)、或可编程存储器元件。

可编程存储器元件可以采用包括行和列的配置存储器阵列来组织。跨过所有列的数据寄存器和跨过所有行的地址寄存器可以接收配置数据。配置数据可以被移位到数据寄存器上。当合适的地址寄存器被认定时,数据寄存器将配置数据写入到由地址寄存器指定的行的配置存储器位。

在某些实施例中,可编程集成电路100可以包括被组织在扇区中的配置存储器,其中扇区可以包括指定在该扇区中或跨越该扇区的子部件和接线的功能和/或互连的配置ram位。每个扇区可以包括单独的数据和地址寄存器。关于扇区的另外的信息能够在共同拥有的题为“programmablecircuithavingmultiplesectors”的美国专利申请号14/460548中找到,在此将其通过引用整体并入本文。

图2示出了具有被组织在扇区240中的配置存储器的说明性可配置集成电路(诸如可编程集成电路100)。每个扇区240可以包括本地控制电路220。这些本地控制电路可以控制时钟分布网络和各自的扇区240的配置。如果期望的话,本地控制电路220可以操纵并观察在各自的扇区240内的扫描链。

在某些实施例中,本地控制电路220可以被实施为状态机。在某些实施例中,本地控制电路220可以被实施为最小的处理器。由本地控制电路220支持的每个操作可以被实施为在包含控制程序的存储器中的单独的例程。

在某些实施例中,该控制程序存储器可以接收并存储新的例程以便将新的操作和功能实施到扇区中。这些新的操作可以提高扇区内的局部活性。在没有该可扩展性的情况下,新的功能可以需要根据预先存在的操作来实施,其可以增加在全局控制电路与本地控制电路之间的所需要的通信的量并且完全防止对局部控制电路220的并行使用。

通信网络230可以将局部控制电路220连接到全局控制电路210。例如,通信网络230可以被用于传输配置数据和/或调试数据以分别用于配置目的和/或调试目的。在一些实施例中,通信网络230可以被用于传输作为电路设计实施方案的部分的数据信号。如果期望的话,通信网络230可以被实施为基于网格的片上网络(noc)。关于片上网络和fpga的另外的信息能够在共同拥有的美国专利申请公开号2014/0126572“programmablelogicdevicewithintegratednetwork-on-chip”中找到,在此将其通过引用整体并入本文。

全局控制电路210可以连接到设备引脚,其能够通过设备引脚与用户界面250进行通信。用户界面250可以包括例如jtag扫描链、输入/输出端口、可编程逻辑电路、或这些电路的任何组合。全局控制电路210可以从用户界面250接收命令,处理接收到的命令,并且根据需要通过通信网络230将所处理的命令发送到局部控制电路220。响应于从全局控制电路210接收到命令,局部控制电路220可以编排存储电路在各自的扇区240中的读取,并且随后通过通信网络230将从存储电路中取得的数据发送回到全局控制电路210。

因为全局控制电路210除此之外负责协调局部控制电路220的操作,以用于在用户界面250与局部控制电路220之间的通信并且为了安全特征,全局控制电路210(或至少其部分)也可以被实施在处理器中。处理器可以是专用处理器、针对已经被包含在设备的设计中的用户可见处理器的特别启动代码、或者另一适当的布置。

划分成扇区的优点可以是局部控制电路220可以独立地且并行地操作。每个局部控制电路220可以如下面更详细地公开的使用其各自的扇区240中的一个或多个扫描链、或者通过具有包括数据寄存器控制器的数据寄存器的接口而从其各自的扇区240中取得数据。在一些实施例中,局部控制电路220中的每个局部控制电路可以在丢弃不需要的数据之后将从各自的扇区240中取得的数据过滤为精简数据集。局部控制电路220可以随后通过通信网络230将精简数据集发送到全局控制电路210。如果每个局部控制电路220通过通信网络230以低于网络230的最大带宽来发送数据,则全局控制电路210可以确定针对局部控制电路220的排程(schedule),以使通过网络230发送的数据相交错。备选地,全局控制电路210可以提供允许局部控制电路220通过网络230以网络230的完整带宽串行地发送数据的时序排程。

全局控制电路210可以(例如,例如使用10吉比特以太网协议或外围部件互连快速(pcie)协议(仅举数例)的通过高速串行接口(hssi)收发器电路)以高数据速率与用户界面250进行通信。全局控制电路210可以通过时分复用通信网络230与局部控制电路220进行通信,例如其中局部控制电路220中的每个局部控制电路以相对较低的速率但是并行地操作。

局部控制电路220中的每个局部控制电路能够在第一时间段期间监测其各自的扇区240中的存储电路的第一集合,并且在第二时间段期间监测其各自的扇区240中的存储电路的第二集合。局部控制电路的控制程序可以被动态地扩展以执行该监测功能。该监测功能允许在某个时间点处监测的存储电路的集合比通过通信网络230和全局控制电路210从扇区发送到用户界面250的位的数目大得多,以用于外部监测和解读。另外,修理电路设计中的需要更改关于可配置集成电路的设计实施方案的程序错误(例如,将逻辑“与”改变为逻辑“或”)可能需要使用扇区的部分重配置能够带来的局部变化。

扇区240的独立性还可以导致被完全包含在一个扇区内的并且由各自的局部控制电路220控制的更短的扫描链。在某些实施例中,关于存储电路的状态的信息可以使用扫描链来取得。图3示出了实现使用被布置在扫描链中的扫描存储电路(例如,扫描寄存器)对用户存储电路(例如,用户寄存器)的状态捕获和状态恢复的说明性电路300。因为用户存储电路320a和320b都能够使用扫描存储电路在不遍历其它存储电路的情况下来访问,所以用户存储电路320a和320b可以被称为可观察到的存储电路。

如图3所示,扫描链包括扫描存储电路340和扫描存储电路345。多路复用器330和335与扫描存储电路340和345耦合在一起作为当信号load为‘0’时扫描链中的移位寄存器。包括扫描存储电路340和345的扫描链是用于捕获存储在用户存储电路320a和320b中的数据并将其移出而不将附加的数据移入到用户存储电路320a和320b中的专用扫描链。因此,包括扫描存储电路340和345的扫描链能够执行对存储在用户存储电路320a和320b中的数据的非破坏性捕获,而不干扰或擦除存储在用户存储电路320a和320b中的数据。对存储在用户存储电路中的数据的非破坏性捕获还被称为快照或被称为状态可视化。

时钟分布网络可以使用多路复用器355来在时钟信号clk_0、clk_1、…clk_n之中选择时钟信号。逻辑与门365可以从多路复用器355中接收所选择的时钟信号、以及可以接收能够启用或禁用所选择的时钟信号的信号enable_scan。作为示例,逻辑与门365的输出可以是时钟信号c2,其可以触发扫描存储电路340和345。

另一时钟分布网络可以使用多路复用器350来在时钟信号clk_0、clk_1、…clk_n之中选择时钟信号。逻辑与门360可以从多路复用器350中接收所选择的时钟信号、以及可以接收能够启用或禁用所选择的时钟信号的信号enable_user。作为示例,逻辑与门360的输出可以是时钟信号c1,其可以触发扫描存储电路320a和320b。

在有时还被称为用户模式的应用运行模式中(即,在操作电路设计实施方案期间),用户存储电路320a和320b可以分别从多路复用器310和315接收数据信号d1和d2。在该模式中,信号unload可以被解除认定,并且多路复用器310和315可以选择信号data-in_a和data-in_b分别作为信号d1和d2。用户存储电路320a和320b可以存储在时钟信号c1的触发事件(例如,上升沿、下降沿、高电平、低电平、或其任何组合)处的信号d1和d2,并且可以分别提供信号d1和d2的值作为信号data-out_a和data-out_b。

如果期望的话,控制电路(例如,图2的局部控制电路220)可以执行用户存储电路的读访问操作,以提取用户存储电路320a和320b的状态。例如,存储在用户存储电路320a和320b中的信号可以在数据取得模式中使用扫描链来取得。取得存储在用户存储电路320a和320b中的信号有时还被称为在读回模式中的操作电路300。为此,信号enable_user和enable_scan可以被解除认定以分别停止时钟信号c1和c2。信号load可以被设置为‘1’,使得多路复用器330和335分别选择来自用户存储电路320a和320b的信号。

信号enable_scan可以被认定,以允许时钟信号c2的一个触发事件。时钟信号c2的一个触发事件会触发扫描存储电路340和345,以分别存储被存储在用户存储电路320a和320b中的值。随后,信号load可以从‘1’被切换为‘0’,以使得多路复用器330和335选择来自扫描链上的其它扫描存储电路的信号。例如,多路复用器335选择扫描存储电路340的输出信号s1。信号enable_scan可以随后被认定,以开始时钟信号c2中的振荡。扫描存储电路340和345随后将由信号s1和s2指示的所存储的数据移出在时钟信号c2的连续触发事件处的信号scan-out中的扫描链。在某些实施例中,存储在用户存储电路320a和320b中的值可以在读回模式中被取得,而不停止时钟信号c1。例如,信号load和时钟信号c1和c2可以被同步,使得能够在不停止时钟信号c1的情况下进行读回。

如果期望的话,信号enable_user可以被认定,以开始时钟信号c1中的振荡。响应于时钟信号c1中的振荡,用户存储电路320a和320b可以在设计运行模式中操作,而所存储的数据使用扫描链来取得。

在示例性实施例中,图3的扫描链不具有到用于在集成电路中的可编程逻辑块之间路由信号的全局路由导体的直接连接。使用图3的专用扫描链来获取存储在用户存储电路320a-320b中的数据的快照可以允许去除全局冻结信号以及否则将用于对全局路由导体进行选通的冻结逻辑。

在另一实施例中,全局控制电路210或局部控制电路220可以具有能够禁用读回模式的安全逻辑。安全逻辑能够使得扇区240中的一个或多个扇区进入安全模式,在安全模式中在各自的扇区240中的扫描链获取存储在用户存储电路中的数据的快照的能力被禁用。安全逻辑能够被用于确保被编程为安全的用户存储电路的状态不能够在用户模式中被访问。安全逻辑可以例如由cram设置或保险丝来控制。

在另一情形下,控制电路(例如,图2的局部控制电路220)可以执行用户存储电路的写访问操作,以将用户存储电路320a和320b设置处于预定状态。例如,预定数据可以在数据恢复模式中使用扫描链被写入到用户存储电路320a和320b。将预定数据写入到用户存储电路320a和320b有时还被称为在写回模式中的操作电路300。为此,信号load可以被设置为‘0’以使得多路复用器330和335选择来自扫描链上的其它扫描存储电路的信号。信号enable_scan可以被认定,以使得预定数据经由信号scan-in被移入到扫描链中。扫描存储电路340和345响应于时钟信号c2的连续时钟触发事件而分别将在它们的输出处的预定数据存储为信号s1和s2。

接下来,信号enable_user和enable_scan可以被解除认定,以分别停止时钟信号c1和c2。信号unload可以被设置为‘1’,以使得多路复用器310和315分别选择来自扫描存储电路340和345的信号s1和s2作为信号d1和d2。

信号enable_user可以被认定,以用于时钟信号c1的一个触发事件。时钟信号c1的一个触发事件可以触发用户存储电路320a和320b以分别存储信号d1和d2。结果,用户存储电路320a和320b分别存储来自扫描存储电路340和345的预定数据。随后,信号unload可以被设置为‘0’以使得多路复用器310和315分别选择信号data-in_a和data-in_b作为信号d1和d2。信号enable_user可以随后被认定,以开始时钟信号c1,使得用户存储电路320a和320b在设计运行模式中操作。

如果期望的话,局部控制电路(例如,图2的局部控制电路220)可以控制扫描链。作为示例,局部控制电路可以控制信号load、unload和enable_scan。在图4中示出了具有控制扫描链的局部控制电路的扇区(例如,图2的扇区240)的说明性实施例。如图4所示,扇区400可以包括局部控制电路410、第一类型的电路块420(例如,图1中的lab110、dsp120、或ram130之一)、以及与第一类型的电路块420不同的第二类型的电路块430(例如,图1中的lab110、dsp120、或ram130中的不同的一个)。

局部控制电路410可以控制扫描链450,其可以源自于局部控制电路410中,在局部控制电路410处结束之前遍历电路块420a、430、…、和420b。扫描链450包括部分450a-450b。扫描链450包括扫描存储电路,诸如扫描存储电路340和345。在一些实施例中,扫描链450包括许多扫描存储电路。如果期望的话,扇区400可以包括多于一个扫描链。扇区400中的每个扫描链可以源自于并且结束于局部控制电路410中,并且局部控制电路410可以单独地控制扇区400中的每个扫描链。

如图4所示,局部控制电路410可以使用连接460和多路复用器440来控制扫描链450。例如,局部控制电路410可以引导多路复用器电路440选择来自在其第一多路复用输入处的电路块420a的扫描链部分450a上的信号,由此绕过来自在其第二多路复用输入处的电路块430的扫描链部分450b。

备选地,局部控制电路410可以使得多路复用器440选择在来自电路块430的扫描链部分450b上的信号。例如,考虑其中局部控制电路410测试扇区400中的所有存储电路的操作能力的情形。在该情形下,局部控制电路410可以引导多路复用器440选择来自在其第二多路复用输入处的扫描链部分450b上的信号。

作为另一示例,考虑其中用户想要使用扫描链450来探测存储在电路块420中的信号而非存储在电路块430中的信号的情形。在该情形下,局部控制电路410可以引导多路复用器440选择来自在其第一多路复用输入处的扫描链部分450a上的信号,绕过来自电路块430的扫描链部分450b。

如果期望的话,局部控制电路410可以被耦合到全局控制电路(例如所示的,图2的局部控制电路220通过网络230被耦合到全局控制电路210)。局部控制电路410可以包括滤波能力。该滤波能力可以例如允许局部控制电路410在第一时间段期间监测电路块420和430中的一个或多个电路块中的存储电路的子集,并且在第二时间段期间监测电路块420和430中的一个或多个电路块中的存储电路的另一子集。

在其中局部控制电路410包括处理器的实施例中,局部控制电路410中的处理器可以使用软件对所捕获的数据执行滤波。作为示例,局部控制电路410可以根据在处理器上运行的用户软件代码来去除状态的集合。作为另一示例,局部控制电路410可以编排来自存储电路的数据的快照并执行诊断测试,以确定数据的快照应当被放弃还是被保留。局部控制电路410可以例如一旦被测试的电路被确定为无错误,就放弃快照。

如果期望的话,局部控制电路410可以单独地取得存储在一个或多个存储电路中的数据、存储在被定位在一个或多个电路块中的一个或多个存储电路中的数据、或者存储在被耦合到扇区400中的一个或多个扫描链的一个或多个存储电路中的数据。局部控制电路410可以取得存储在被定位在扇区400中的自适应逻辑模块(alm)中的一个或多个存储电路中的数据、存储在被定位在扇区400中的逻辑阵列块(lab)中的一个或多个存储电路中的数据、存储在被定位在扇区400中的存储器元件中的一个或多个存储电路中的数据、和/或存储在被定位在扇区400中的数字信号处理器(dsp)块中的一个或多个存储电路中的数据。自适应逻辑模块(alm)包括组合逻辑(诸如查找表)。局部控制电路410可以缓存和/或处理所取得的数据。局部控制电路410可以经由网络230将取得的数据提供给全局控制电路210。全局控制电路210可以在外部经由用户界面250来封装所取得的数据并传送所封装的数据。

在某些实施例中,控制电路可以在第一模式中通过经由配置资源(诸如地址寄存器和数据寄存器)对配置存储器位进行编程来生成关于集成电路的电路设计实施方案,并且在第二模式中执行经由配置资源对存储电路的访问操作,其被图示在图5中。图5的电路可以包括控制电路510、数据寄存器540、地址寄存器550、变速器(gearbox)530、以及存储电路520。如所示的,存储电路520可以被布置在行和列的阵列中,其中地址寄存器550按行连接到存储电路520,并且数据寄存器540经由变速器530按列连接到存储电路520。

图5的电路仅仅是说明性的并且不旨在限制本发明的范围。如果期望的话,地址寄存器可以按列连接到存储电路,并且数据寄存器按行连接到存储电路,存储电路520可以以不同的方式来布置,等等。例如,电路可以具有在两行之间和/或在两列之间的不同数量的存储电路520,电路可以仅仅具有一行或仅仅一列,地址寄存器550可以被省略,变速器530可以被省略,等等。

如图5所示,控制电路510可以经由变速器530引导地址寄存器550和数据寄存器540读取存储电路520的状态和/或设置存储电路520的状态。在另一实施例中,控制电路510可以在绕过变速器530的情况下使用配置资源(诸如地址寄存器550和数据寄存器540)以通过对配置存储器位(未示出)进行编程来实施电路设计。

考虑其中控制电路510对配置存储器位进行编程来实施电路设计的情形。在该情形下,控制电路510可以接收请求对配置存储器位的帧以及配置数据和地址的写访问操作的数据包。控制电路510可以将配置数据移入到数据寄存器540中。数据寄存器540可以(例如,通过未示出在图5中的三状态缓冲器)直接驱动数据线,由此绕过变速器530。

控制电路510可以将地址移入到地址寄存器550中,由此选择要由配置数据编程的配置存储器位。地址寄存器550可以(例如,通过启用在数据线与存储器单元之间的传递晶体管)实现对所选择的配置存储器位的写访问操作,由此将经由数据线来自数据寄存器540的配置数据存储在配置存储器单元中。如果期望的话,控制电路510可以发送指示写访问操作的成功的响应数据包(例如,发送到处理器电路和/或全局控制电路,等等)。如果期望的话,控制电路510可以在响应数据包中指示其准备好接收另一数据包。

在一些实施例中,控制电路510可以接收写访问请求数据包,其包括针对具有为了对配置存储器位进行编程以实施电路设计的目的而选择的数据寄存器控制器(未示出)的地址的数据寄存器540的配置数据的帧。配置数据可以由片上网络接收器写入到数据寄存器控制器。数据寄存器控制器可以在每周期将数据包中的预定数量的位的配置数据移入到数据寄存器中。在接收到配置数据的最后的预定数量的位后,控制电路510可以基于用写访问请求数据包接收到的地址来引导地址寄存器550,以实现来自由数据寄存器540驱动的数据线的写访问操作。

考虑其中控制电路510经由变速器530引导地址寄存器550和数据寄存器540执行对存储电路520之一的写访问操作的情形。例如,控制电路510可以接收请求写访问操作的数据包。在该示例中,控制电路510可以准备数据寄存器540和/或地址寄存器550用于写访问操作。例如,控制电路510可以实现从控制电路510到变速器530的连接。如果期望的话,控制电路510可以发送响应数据包(例如,发送到处理器电路和/或全局控制电路、等等),该响应数据包指示数据寄存器540和/或地址寄存器550被成功地准备、和/或指示数据寄存器540和/或地址寄存器550准备好接收用户数据。

控制电路510可以接收请求对预定存储电路520的写访问操作的用户数据的数据包、以及接收指定预定存储电路520的用户数据和地址。作为示例,考虑其中存储电路520被布置在如图5所示的行和列的阵列中并且地址指示预定行和预定列的情形。在该情形下,控制电路510可以分析用户数据的数据包,并且基于该分析来引导地址寄存器550和/或数据寄存器540。例如,地址寄存器550可以认定实现对预定行中的所有存储电路520的写访问操作的启用信号。

控制电路510可以将用户数据的数据包的一部分发送到数据寄存器540,并且从那里发送到至少一个变速器530。接收用户数据的数据包的该部分的变速器可以确定预定列是否指定连接到变速器的存储电路的列。在预定地址指定连接到变速器的列并且由此指定变速器的情况下,所指定的变速器530可以认定合适的控制信号以实现对预定列中的存储电路520的写访问操作。如果期望的话,所指定的变速器530可以通过数据线将要被存储在预定存储电路520中的数据发送到预定列中的存储电路,使得数据被存储在预定存储电路520中。

作为示例,预定存储电路520可以包括存储位的二维阵列,并且写访问操作可以将数据写入到预定存储电路中的所有存储位。在该示例中,所指定的变速器530可以包括指示二维阵列中的存储位的行的地址计数器。在同步写操作的情况下,所指定的变速器530可以在第一地址处开始,将数据写入到与在时钟事件处的第一地址相对应的行,并且使地址计数器增一。所指定的变速器530可以随后针对存储电路520中的所有其它行重复这些步骤。

考虑其中控制电路510引导配置资源执行从存储电路520之一的读访问操作的情形。例如,控制电路510可以接收请求读访问操作的数据包。在该示例中,控制电路510可以准备数据寄存器540和/或地址寄存器550用于读访问操作。例如,控制电路510可以将数据寄存器540设置成移位模式,使得从存储电路中读取的信号被移入到数据寄存器中。如果期望的话,控制电路510可以发送响应数据包(例如,发送到处理器电路和/或全局控制电路、等等),该响应数据包指示数据寄存器540和/或地址寄存器550被成功地准备、和/或指示数据寄存器540和/或地址寄存器550准备好执行读访问操作。

控制电路510可以接收请求从预定存储电路520的读访问操作的数据包、以及接收指定预定存储电路520的地址。作为示例,考虑其中存储电路520被布置在如图5所示的行和列的阵列中并且地址指示预定行和预定列的情形。在该情形下,控制电路510可以分析数据包,并且基于该分析来引导地址寄存器550和/或数据寄存器540。例如,地址寄存器550可以认定实现对预定行中的所有存储电路520的读访问操作的启用信号。

控制电路510可以将数据包的一部分发送到数据寄存器540并且从那里发送到至少一个变速器530。接收数据包的该部分的变速器可以确定预定列是否指定连接到该变速器的存储电路的列。在预定地址指定连接到变速器的列并且由此指定变速器的情况下,所指定的变速器530可以认定合适的控制信号以实现对预定列中的存储电路520的读访问操作。

作为示例,预定存储电路520可以包括存储位的二维阵列,并且读访问操作可以从预定存储电路中的所有存储位中读取数据。在该示例中,所指定的变速器530可以包括指示二维阵列中的存储位的行的地址计数器。在同步读操作的情况下,所指定的变速器530可以在第一地址处开始,从与在时钟事件处的第一地址相对应的行中读取数据,并且使地址计数器增一。所指定的变速器530可以随后针对存储电路520中的所有其它行重复这些步骤。

作为示例,为了读取与第一地址相对应的行中的一个存储位的目的,所指定的变速器530可以将数据线预装载到预定存储电路520的列中的存储位,使得感测放大器可以检测存储在对应的存储位中的位值。

如果期望的话,所指定的变速器可以消除从预定存储电路520的存储位取得的位值。例如,考虑其中预定存储电路的行会存储多达40位的情形,其中八位被用于错误校正编码。在该情形下,所指定的变速器可以消除八个错误校正编码位并且仅仅将32个剩余的用户位移入到数据寄存器540中。

在某些实施例中,控制电路可以经由在运行应用期间使用的互连资源并且通过在控制电路与互连资源之间的接口来访问存储电路。图6是可以包括具有缓冲器612的控制电路610的说明性集成电路的示意图。控制电路610可以与处理器电路650进行通信,并且可以经由配置资源660和将控制电路610耦合到互连资源640的接口620执行对集成电路中的存储电路670的访问操作。

如图6所示,集成电路的一部分可以被划分成分区630。分区630可以包括存储电路670、运算电路680、附加的处理器电路690、等等。如果期望的话,分区630可以包括逻辑资源(诸如逻辑阵列块),仅举数例,其可以包括逻辑元件、可配置逻辑块、自适应逻辑模块。如果期望的话,控制电路610可以实施分区630中的电路设计。例如,控制电路610可以通过经由配置资源660对配置存储器位进行编程来生成分区630中的电路设计实施方案。

互连资源640可以耦合存储电路670、运算电路680、附加的处理器电路690、分区630中的逻辑资源、以及接口620。如果期望的话,互连资源640可以(例如,通过对实现在垂直接线与水平接线之间的连接的配置存储器位进行编程)提供可配置连接。例如,互连资源640可以由控制电路610配置为实施分区630中的电路设计。在一些实施例中,互连资源640可以提供在关于集成电路的电路设计实施方案的预定电路之间的固定连接。

在某些实施例中,接口620可以包括从控制电路610到互连资源640的桥接电路(诸如桥接622)。作为示例,桥接622可以实施存储器映射总线体系结构,其可以允许控制电路610中的主控装置(master)访问由分区630中的逻辑资源实施的从动装置(slave),由此访问互连资源640。如果期望的话,接口620可以包括并行输入输出(pio)部件(诸如pio625),其可以允许控制电路610访问分区630中的逻辑资源中的信号。主控装置可以通过读和写存储器映射寄存器来控制通过pio625的信号。pio625可以捕获在其输入上的数据并且将数据驱动到其输出。如果期望的话,控制电路610可以将pio625的输入输出端口编程为输入或输出。

在一些实施例中,接口620可以包括从互连资源640到控制电路610的桥接电路(诸如桥接628)。作为示例,桥接628可以实施存储器映射总线体系结构,其可以允许分区630中的逻辑资源为访问控制电路610中的从动装置的主控装置。如果期望的话,分区630中的逻辑资源可以以与控制电路610不同的时钟域进行操作,并且桥接628可以包括双时钟先进先出(fifo)核以将数据从一个时钟域传输到其它时钟域。

在一些情形下,可能期望通过接口620和互连资源640将信号从控制电路610发送到存储电路670。作为示例,考虑其中全局信号需要被发送到存储电路670的情形。这样的重置信号可能需要互连资源640的许多连接在电路设计实施方案中将生成重置信号的电路耦合到存储电路670。在一些实施例中,生成重置信号的电路可以将其发送到处理器电路650。响应于接收到重置信号,处理器电路650可以通过配置资源660将信号发送到控制电路610,并且控制电路610可以经由接口620和互连资源640将信号发送到存储电路670。存储电路670可以在接收到信号时进行重置。如果期望的话,处理器电路650和/或控制电路610可以通过时钟网络来校准时钟信号以实现在存储电路670处的局部同步重置去除。

仅举数例,其中控制电路610可以经由接口620和互连资源640将数据写入到存储电路670的其它情形包括电路的实例化、电路的参数化、电路的修改。在某些实施例中,控制电路(诸如图4的局部控制电路410)可以如图3所描述的为了以下的目的使用扫描链450将数据写入到寄存器:对电路进行实例化、对电路进行参数化、对电路进行修改、等等。

例如,运算电路680可以实施有限冲激响应(fir)滤波器,并且存储电路670可以存储fir滤波器的系数。在该示例中,控制电路610可以经由接口620和互连资源640将系数写入到存储电路670。在fir滤波器的操作期间,运算电路680可以经由互连资源640访问存储在存储电路670中的系数。

在另一示例中,处理器电路690可以使用存储电路670作为指令存储器。在该示例中,控制电路610可以经由接口620和互连资源640将指令写入到存储电路670,以对指令存储器进行初始化和/或更新处理器电路690的指令存储器。

在另一示例中,存储在存储电路中的数据可以在高速串行通信电路中在8位10位(8b/10b)编码与64位66位(64b/66b)编码之间进行选择。图6的控制电路610或图4的局部控制电路410可以执行对如图4和图6所描述的存储电路的写访问操作,由此对高速串行通信电路进行实例化并保存配置资源。

在另一示例中,存储电路670可以为实施只读存储器(rom)电路的随机访问存储器(ram)电路。在该示例中,控制电路610可以经由接口620和互连资源640将数据写入到存储电路670以对rom电路的内容进行初始化。

在另一示例中,存储电路670或寄存器320a和320b可以实施有限状态机(fsm)的状态。在该示例中,控制电路610可以经由接口620和互连资源640将数据写入到存储电路670以将有限状态机设置成初始状态。

在一些情形下,可能期望通过互连资源640和接口620从存储电路670中取得信号。作为示例,考虑其中集成电路的操作被监测以检测错误并且存储电路(诸如图3的寄存器320a和320b和/或图6的存储电路670)存储错误状况的情形。在一些应用中,可能期望取得存储在那些存储电路中的错误状况并且基于所观察到的错误状况来探测附加的信号。控制电路(诸如图4的局部控制电路410)可以经由如图3和图4所描述的扫描链执行对寄存器的读访问操作以取得出错状况。如果期望的话,图6的控制电路610可以经由接口620和互连资源640执行读访问操作以从存储电路670中取得出错状况。

在一些实施例中,追踪缓冲器可以存储从存储电路670中的一个或多个存储电路中取得的数据以允许在稍后时间点处的数据分析。控制电路610的缓冲器612可以实施追踪缓冲器。备选地,控制电路610可以将存储电路670配置为追踪缓冲器。缓冲器612和/或存储电路670可以存储数据直到处理器电路650请求该数据。在接收到这样的请求时,控制电路610可以通过配置资源660将该数据发送到处理器电路650。

如果期望的话,控制电路610可以执行在存储电路670处的读访问操作,并且经由互连资源640、接口620和配置资源660将取得的数据直接路由到处理器电路650,由此绕过缓冲器612。在某些实施例中,运算电路680可以实施计数器。计数器可以对观察的错误的数目、有限状态机(fsm)的给定状态的发生等等进行计数。控制电路610可以通过执行对运算电路680的读访问操作来取得存储在计数器中的数目。

控制电路(例如,图2的全局控制电路210、图4的局部控制电路410、图5的控制电路510、或图6的控制电路610)可以针对出错状况的出现监测电路设计实施方案。例如,控制电路可以接收指示出错状况的出现的信号。在检测到出错状况后,控制电路可以执行若干动作。例如,控制电路可以停止时钟信号并执行在基本上电路设计实施方案的所有存储电路处的读访问操作。控制电路可以停止写入到追踪缓冲器并且经由互连(例如,图2的通信网络230、图5的数据寄存器540、图6的配置资源660)将存储在追踪缓冲器中的数据提供到例如图2的用户界面250或图6的处理器电路650以用于进一步处理。如果期望的话,控制电路可以通知用户出错状况的出现。

在一些实施例中,控制电路(例如,图2的全局控制电路210、图4的局部控制电路410、图5的控制电路510、或图6的控制电路610)可以执行在存储电路(例如,图3的寄存器320a和320b、图4的电路块430中的存储电路、图5的存储电路520、或图6的存储电路670)处的写访问操作,以用于错误注入(例如,以对单粒子效应(seu)的效应进行建模和分析)。例如,控制电路可以中断电路设计实施方案的至少一部分的操作。控制电路可以执行在存储电路处的读访问操作以取得存储在存储电路中的位。控制电路可以使所取得的位的位值反相,执行在存储电路处的写访问操作以将经反相的位值存储在存储电路中,并重启电路设计实施方案的被中断的部分的操作。考虑其中集成电路是图1的可编程逻辑器件100并且电路设计实施方案是用户的电路设计到可编程逻辑器件100上的映射的情形,其中存储电路是电路设计实施方案中的用户寄存器。在该情形下,控制电路可以执行在用户寄存器处的写访问操作,并且使存储在用户寄存器中的位的位值反相。

可以在集成电路的输出处观察到注入的错误的效果。如果期望的话,两个相同的电路设计可以被实施在相同的集成电路中或者被实施在两个单独的集成电路中。两个电路设计实施方案可以接收相同的输入数据。控制电路可以将错误注入到两个电路设计实施方案之一中,并且在两个电路设计实施方案的输出处观察差别以监测注入的错误的效果。

图7是示出了用于经由集成电路中的配置资源(例如,图2的通信网络230、图5的数据寄存器540和地址寄存器550、图6的配置资源660)来执行对存储电路(例如,图2的扇区240中的存储电路、图5的存储电路520、或图6的存储电路670)的访问操作的说明性操作的流程图700。在操作710期间,处于第一模式中的控制电路可以通过经由配置资源对配置存储器位进行编程来生成关于集成电路的包括存储电路和访问电路的电路设计实施方案。控制电路可以在对配置存储器位的编程期间禁用时钟信号。如果期望的话,控制电路可以在不禁用时钟信号的情况下对配置存储器位进行编程。

例如,图2的全局控制电路210可以经由通信网络230将配置数据发送到局部控制电路220,其可以实施扇区240中的电路设计。作为另一示例,图5的控制电路510可以经由地址寄存器550和数据寄存器540对存储电路520进行配置。作为另一示例,图6的处理器电路650可以经由配置资源660将配置数据发送到控制电路610,其可以通过对配置存储器位进行编程来实施分区630中的电路设计。

在操作720期间,可以在用户模式中利用电路设计实施方案来操作集成电路,并且在操作730期间,可以利用访问电路来执行在存储电路处的第一访问操作。作为示例,运算电路680可以执行在存储电路670处的读访问操作,以取得用于有限冲激响应(fir)滤波器操作的系数。在一些实施例中,访问电路可以包括可以被配置为执行在存储电路处的访问操作的功能块(诸如图1的pld100的逻辑阵列块(lab)110、随机访问存储器(ram)块130、和/或数字信号处理(dsp)块120)。

在操作740期间,处于第二模式中的控制电路可以执行经由配置资源在存储电路处的第二访问操作。例如,控制电路610可以使用配置资源660来执行存储电路670的读访问操作和/或写访问操作。类似地,图2的全局控制电路210可以使用通信网络230来访问扇区240中的存储电路。此外,控制电路510可以使用数据寄存器540和地址寄存器550来访问存储电路520。

图8是示出了用于执行对集成电路中的电路设计实施方案的统计监测的说明性操作的流程图800。在操作810期间,处于第一模式中的控制电路可以对集成电路中的配置存储器位进行编程,由此生成在集成电路中包括寄存器的电路设计实施方案。在操作820期间,电路设计实施方案可以在操作集成电路时将信号存储在寄存器中。在操作830期间,处于第二模式中的控制电路可以探测存储在寄存器中的信号。例如,控制电路可以在第二模式中使用如本文参考图3和图4公开的一个或多个扫描链来探测存储在寄存器中的信号。作为具体示例,控制电路410可以使用如本文参考图4公开的扫描链450来探测存储在扇区400中的用户寄存器中的信号。作为另一具体示例,本地控制电路220可以使用如本文参考图3公开的包括存储电路340和345的扫描链345来探测存储在用户寄存器320a-320b中的信号。可以在操作840期间分析所探测的信号以执行对电路设计实施方案的统计监测(例如,对微处理器中的诸如溢出的出错状态的数目进行计数,对流量管理器电路中的损坏数据包进行计数,等等)。可以在操作840中分析所探测的信号以使用例如控制电路来执行统计监测。

本文描述的方法和装置可以被并入到任何适当的电子设备或电子设备的系统中。例如,该方法和装置可以被并入到许多类型的设备(诸如微处理器或其它集成电路(ic))中。仅举数例,示例性ic包括可编程阵列逻辑(pal)、可编程逻辑阵列(pla)、现场可编程逻辑阵列(fpla)、电可编程逻辑器件(epld)、电可擦可编程逻辑器件(eepld)、逻辑单元阵列(lca)、现场可编程门阵列(fpga)、粗粒度可编程逻辑阵列(cgpld)、粗粒度可配置阵列(cgra)、专用标准产品(assp)、专用集成电路(asic)、数字信号处理器(dsp)、图形处理单元(gpu)。

本文描述的集成电路可以为包括以下部件中的一个或多个部件的数据处理系统的一部分:处理器;存储器;i/o电路;以及外围设备。集成电路能够被使用在其中期望执行在存储电路处的读访问操作和/或写访问操作的优点的各种各样的应用中(诸如计算机网络、数据网络、仪表化、视频处理、数字信号处理、或任何适当的其它应用)。

尽管方法操作以特定顺序来描述,但是应当理解可以在所描述的操作之间执行其它操作,所描述的操作可以被调整使得它们在稍微不同的时间进行,或者所描述的操作可以被分布在只要交叠的操作的处理器以期望的方式来执行就允许以与处理相关联的各种间隔进行处理操作的系统中。

上文仅仅说明本发明的原理,并且本领域技术人员能够在不脱离本发明的范围和精神的情况下进行各种修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1