CN116893927A - 用于对时钟选通寄存器信号执行错误检测的方法和电路 - Google Patents

用于对时钟选通寄存器信号执行错误检测的方法和电路 Download PDF

Info

Publication number
CN116893927A
CN116893927A CN202310280321.0A CN202310280321A CN116893927A CN 116893927 A CN116893927 A CN 116893927A CN 202310280321 A CN202310280321 A CN 202310280321A CN 116893927 A CN116893927 A CN 116893927A
Authority
CN
China
Prior art keywords
register
error detection
signal
bit
check
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
Application number
CN202310280321.0A
Other languages
English (en)
Inventor
F·纳扎尔
K·洛维斯
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.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies 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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of CN116893927A publication Critical patent/CN116893927A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

本发明涉及用于对时钟选通寄存器信号执行错误检测的方法和电路。公开了一种用于对时钟选通寄存器信号执行循环冗余校验的错误检测电路和方法。错误检测电路包括第一寄存器、第二寄存器、第三寄存器和错误检测模块。第一寄存器是时钟选通寄存器并且被配置成响应于时钟使能信号而使用数据信号(x)来更新。第二寄存器被配置成基于数据信号(x)用校验位(c)来更新。校验位由校验位计算单元计算。第三寄存器被配置成使用时钟使能信号的当前值(b)来更新。错误检测模块被配置用于至少基于第一寄存器的输出、第二寄存器的输出和第三寄存器的输出来计算指示位I。

Description

用于对时钟选通寄存器信号执行错误检测的方法和电路
相关申请的交叉引用
本申请要求各自于2022年3月31日提交的英国专利申请2204690.8和2204692.4的优先权,该英国专利申请以全文引用方式并入本文中。
技术领域
本发明涉及用于对时钟选通寄存器信号执行错误检测的方法和电路。
背景技术
在现代数字世界中,所有数据传输和计算本质上都是数字的。各种电子和电气系统,诸如使用处理器(诸如CPU和GPU)的电信系统或计算系统,所有这些系统都以二进制格式(诸如定点格式或浮点格式)将数据处理为数字。数据通过有线或无线方式从一个设备传输到另一设备,或者从设备内的一个模块传输到另一模块。由于诸如噪声的许多因素的影响,所传输的数据容易出错。
数字数据中可能发生的错误中的一个错误是位损坏,即在发射期间1位翻转为0或者0位翻转为1。当涉及到诸如汽车、医疗装备等安全关键系统/设备的功能时,这些错误更加致命。因此,安全关键设备需要符合安全关键标准,以确保针对错误或硬件故障(诸如系统故障或随机故障)的安全性。例如,由于硅或电子器件老化导致短路,可能会发生随机硬件故障,并且这些故障被称为永久性故障。可替代地,由于我们世界中存在的自然辐射和设备的直接环境,可能会发生随机硬件故障,这类故障被称为软错误,并且也被称为瞬时故障。如所提及,所有这些硬件故障都可能引起数据错误或损坏。
有许多不同的方式来检测电子和电气系统/设备中的数据错误或损坏。然而,这些方式都不适合所有情形。
发明内容
提供本发明内容是为了以简化形式介绍下文在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用以限制所要求保护的主题的范围。
公开了一种用于对时钟选通寄存器信号执行循环冗余校验的错误检测电路和方法。错误检测电路包括第一寄存器、第二寄存器、第三寄存器和错误检测模块。第一寄存器是时钟选通寄存器并且被配置成响应于时钟使能信号而使用数据信号(x)来更新。第二寄存器被配置成基于数据信号(x)用校验位(c)来更新。校验位由校验位计算单元计算。第三寄存器被配置成使用时钟使能信号的当前值(b)来更新。错误检测模块被配置用于至少基于第一寄存器的输出、第二寄存器的输出和第三寄存器的输出来计算指示位I。
根据第一方面,提供了一种用于对时钟选通寄存器信号执行循环冗余校验的错误检测电路,该错误检测电路包括:第一寄存器、第二寄存器、第三寄存器和错误检测模块。第一寄存器是时钟选通寄存器并且被配置成响应于时钟使能信号而使用数据信号(x)来更新。第二寄存器被配置成基于数据信号(x)用校验位(c)来更新。校验位由校验位计算单元计算。第三寄存器被配置成使用时钟使能信号的当前值(b)来更新。错误检测模块被配置用于至少基于第一寄存器的输出、第二寄存器的输出和第三寄存器的输出来计算指示位I。
可选地,校验位计算单元被配置成通过对数据信号(x)的n个位执行XOR归约运算或nXOR归约运算来计算校验位。
可选地,校验位计算单元被配置成通过对数据信号(x)的n个位进行nXOR归约或XNOR归约来计算校验位。
可选地,所述校验位是偶校验位或奇校验位。
可选地,第一寄存器被配置成每当第一寄存器响应于时钟使能信号而被启用时,使用数据信号(x)来更新。
可选地,第二寄存器被配置成使用校验位(c)来更新,而与时钟使能信号无关。
可选地,第三寄存器不是时钟选通寄存器,并且被配置成当时钟使能信号为高时以1位更新,并且当时钟使能信号为低时以0位更新。
可选地,错误检测模块被配置成基于存储在第四寄存器中的有效信号来检测更新第一寄存器时的错误。
可选地,错误检测模块被配置成当指示位是高值时检测更新第一寄存器时的错误。
可选地,第三寄存器被配置成存储当前时钟使能信号的值,并且将输出提供给错误检测电路,从而消除连续的假阳性故障。
根据第二方面,提供了一种对时钟选通寄存器信号执行循环冗余校验的方法,所述方法包括:响应于时钟使能信号而使用数据信号(x)来更新第一寄存器;使用对应于数据信号(x)的校验位(c)来更新第二寄存器,其中校验位由校验位计算单元计算;使用时钟使能信号的当前值(b)来更新第三寄存器;以及基于从更新的第一寄存器、第二寄存器和第三寄存器接收的输出来计算指示位I。
可选地,通过对数据信号(x)的位进行XOR归约来执行校验位的计算,其中数据信号x具有‘n’位的位宽。
可选地,通过对数据信号(x)的位进行nXOR归约来执行校验位的计算,其中数据信号x具有‘n’位的位宽。
可选地,更新第一寄存器包括当第一寄存器响应于时钟使能信号而被启用时,使用数据信号(x)来更新。
可选地,更新第二寄存器包括使用所计算的校验位进行更新,而与时钟使能信号是高还是低无关。
可选地,执行更新第三寄存器,而与时钟使能信号是高还是低无关。
可选地,指示位的计算包括基于存储在第四寄存器中的有效信号来执行计算。
可选地,指示位的计算包括仅当第三寄存器的输出指示第一寄存器和第二寄存器被更新时才产生值。
可选地,当指示位是高值时检测到错误。
可选地,基于时钟使能信号的当前值计算指示位消除了连续时钟周期中的连续假阳性故障。
错误检测电路可以在集成电路上的硬件中体现。可提供一种在集成电路制造系统中制造错误检测电路的方法。可提供一种集成电路定义数据集,当在集成电路制造系统中被处理时,所述集成电路定义数据集将所述系统配置成制造错误检测电路。可提供一种非暂时性计算机可读存储介质,其上存储有错误检测电路的计算机可读描述,当在集成电路制造系统中被处理时,所述计算机可读描述使得所述集成电路制造系统制造体现错误检测电路的集成电路。
可提供一种集成电路制造系统,其包括:非暂时性计算机可读存储介质,其上存储有错误检测电路的计算机可读描述;布局处理系统,其被配置成处理所述计算机可读描述以便生成体现所述错误检测电路的集成电路的电路布局描述;以及集成电路生成系统,其被配置成根据所述电路布局描述来制造所述错误检测电路。
可提供用于执行本文中所描述的方法中的任一种方法的计算机程序代码。可提供非暂时性计算机可读存储介质,其上存储有计算机可读指令,当在计算机系统处执行时,所述计算机可读指令促使所述计算机系统执行本文中所描述的方法中的任一种方法。
如对本领域的技术人员将显而易见,上述特征可以适当地组合,并且可与本文中所描述的示例的各方面中的任一方面进行组合。
附图说明
现在将参考附图详细描述示例,在附图中:
图1A是奇偶校验生成器电路的示例的框图;
图1B是另一奇偶校验生成器电路的示例的框图;
图2A是奇偶校验器电路的示例的框图;
图2B是另一奇偶校验器电路的示例的框图;
图3A是用于对时钟选通寄存器信号执行循环冗余校验(CRC)的错误检测电路的框图;
图3B是解释对时钟选通寄存器信号执行CRC的方法的流程图;
图4A是图3A的错误检测电路的第一具体实现的框图;
图4B是解释使用图4A的错误检测电路的第一具体实现对时钟选通寄存器信号执行CRC的方法的流程图;
图5A是图3A的错误检测电路的第二具体实现的框图;
图5B是解释使用图5A的错误检测电路的第二具体实现对时钟选通寄存器信号执行CRC的方法的流程图;
图6A是用于对时钟选通寄存器信号执行CRC的另一错误检测电路的框图;
图6B是解释对时钟选通寄存器信号执行CRC的方法的流程图;
图6C是用于对时钟选通寄存器信号执行CRC的又另一错误检测电路的框图;
图7示出了计算机系统的框图;并且
图8示出了集成电路制造系统。
附图示出了各种示例。技术人员将了解,附图中所示出的元件边界(例如框、框的组,或其他形状)表示边界的一个示例。在一些示例中,情况可能是一个元件可以被设计为多个元件,或者多个元件可以被设计为一个元件。在适当的情况下,贯穿各附图使用共同的附图标记来指示类似的特征。
具体实施方式
借助于示例呈现以下描述,以使得本领域的技术人员能够制造和使用本发明。本发明不限于本文中所描述的实施方案,并且对所公开实施方案的各种修改对于本领域的技术人员将显而易见。
现在将仅借助于示例来描述实施方案。
如前文所提及,有各种错误检测技术来检查硬件中数据的正确性。在数字设备中,数据以呈浮点格式或固定数字格式的二进制数来表示。在诸如识别和消除需要功能安全的设备中的错误的许多场景下,检查硬件设备的各种部件的正确性是至关重要的。例如,在诸如神经网络加速器、GPU等硬件设备中,在对保存安全关键信息的寄存器进行更新时检测任何错误是很重要的。否则,所捕获的这些错误将会通过系统传播。有几种已知的在寄存器更新时检测错误的方法,诸如奇偶校验或循环冗余校验。
用于数据错误检测的最广泛使用的技术中的一种技术被称为奇偶校验技术。奇偶校验技术使用奇偶校验生成器电路和奇偶校验器电路。奇偶校验生成器电路是组合逻辑电路,该组合逻辑电路生成奇偶校验位,该奇偶校验位指示我们应预期数据中有偶数个还是奇数个高位(即1位)。另一方面,奇偶校验器电路是检查数据位和奇偶校验位以检测所接收到的数据中是否有错误的电路。在数字电路中使用奇偶校验生成器电路与奇偶校验器电路的组合来识别或检测由各种模块接收到的数据中的错误。奇偶校验生成技术一般用于识别由于数据中的单个位翻转而发生的错误,这将在下文详细地解释。为了可靠地识别由于数据中的多次位翻转引起的错误,可以使用被称为循环冗余校验(CRC)的技术。
奇偶校验技术可以宽泛地细分为偶数奇偶校验或奇数奇偶校验。该分类是基于我们应预期数据中有偶数个还是奇数个高位。奇偶校验位是被添加到数据中以便使1的数量为偶数或奇数的额外位。当使用偶数奇偶校验技术时,奇偶校验生成器电路生成奇偶校验位,该奇偶校验位使数据中1的总数为偶数。类似地,当使用奇数奇偶校验技术时,奇偶校验生成器电路生成奇偶校验位,该奇偶校验位使数据中1的总数为奇数。在任一种情况下,如果所校验的数据不具有预期数量的一(即偶数数量或奇数数量,这取决于所采用的技术),那么便知道发生了错误。这种奇偶校验位生成以及后续错误检测可以通过使用异或(Exclusive-OR)(XOR)门来实现。当一系列位中有偶数个1时,组合该一系列位的XOR门产生零输出,并且当一系列位中有奇数个1时,该XOR门产生一输出。为了产生两位组合,一个XOR门是足够的,而为了添加三位,需要两个XOR门,如图1A中所示出。图1A是在偶数奇偶校验技术中使用的奇偶校验生成器电路100的示例的框图。考虑将三个输入A、B和C提供给偶数奇偶校验生成器以获得奇偶校验位P。用于添加三位的奇偶校验生成器电路100包括两个XOR门。如果提供给逻辑门的输入不同,则XOR运算产生输出‘1’,并且如果提供给逻辑门的输入相同,则产生输出‘0’。第一XOR门102在前两个输入A与B之间执行XOR运算。第二XOR门104在第一XOR门的输出与第三输入C之间执行XOR运算,以生成奇偶校验位P。下表中提供了针对不同输入组合生成的奇偶校验位:
A B C P
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 1
一般来说,对于具有n位的数据,可以执行被称为n位XOR归约的运算以获得(偶数奇偶校验)奇偶校验位。为了引入这一点,我们可以首先将输入a和b上的XOR运算定义为:
XOR(异或)运算=a XOR b,如果a!=b,则为1,否则为0。
对于n位数据x,可以定义为x=(xn-1,…x1,x0),其中x0是最低有效位,x1是次高有效位,依此类推,直到最高有效位xn1。在该情况下,对x的逐位XOR归约运算可被定义为
XOR_reduce(x)=xn-1XOR…x1XORx0
因此,用于偶数奇偶校验技术的奇偶校验位P可如下获得
P=XOR_reduce(x)
可以基于所生成的奇偶校验位,使用奇偶校验器电路来检查数据是否含有错误。基于具体实现,奇偶校验器电路可以是偶数奇偶校验器或奇数奇偶校验器。实际数据连同所生成的奇偶校验位一起被提供给奇偶校验器电路以用于生成指示位。指示位可用于推断奇偶校验是否失败,并且由此推断输入数据中是否有错误。在这一点上,为了清楚起见,值得重复的是,通过奇偶校验并不一定意味着不存在错误(因为奇偶校验不能识别所有种类的错误的存在),但奇偶校验失败确实指示至少发生了一次位翻转(具体地说,一次或任何其他奇数次的单独位翻转)。
图2A是在偶数奇偶校验技术中使用的奇偶校验器电路的示例的框图。考虑来自偶数奇偶校验生成器100的四位输入A、B、C和P被提供给奇偶校验器电路200。奇偶校验器电路200校验所接收到的4位是否具有偶数个1。如果发生由奇数个位翻转组成的错误,则所接收到的4位将包括奇数个1。奇偶校验器电路200基于所接收到的输入中1的数量来生成输出。在此配置中,如果所接收到的输入中有错误,则奇偶校验器电路200产生输出‘1’,并且当所接收到的输入中没有错误时,该奇偶校验器电路产生输出‘0’。
用于校验4位的逻辑表达式可以使用三个XOR门来实现,并且可以认识到这构成了XOR归约运算。在图2A的示例中,第一XOR门202在前两个输入A与B之间执行XOR运算。第二XOR门204在后两个输入C与P之间执行XOR运算。第三XOR门206在第一XOR门的输出与第二XOR门的输出之间执行XOR运算,以生成指示在所接收到的输入中是否有错误的parity_check_output(PC)。应注意,XOR归约的特性是组合的次序不影响结果(例如输入A和P可以通过一次XOR运算来组合,而输入C和P通过另一次XOR运算并行组合,然后这两次XOR运算的输出随后被组合以得到总输出)。因此,还应注意,在其他示例中,三个XOR门可以更顺序地布置——例如输入A与B之间的XOR运算的结果与输入C一起作为输入被提供给XOR运算,并且该XOR运算的结果与其余输入P一起作为输入被提供给第三XOR运算。这些布置实现了相同的结果,但所示出的布置以最少的门延迟(即两个时间步长而不是三个时间步长)实现了该结果。下表中提供了几种不同输入组合的parity_check_output(PC):
A B C P 奇偶校验器输出(指示位)
0 1 0 1 0
0 1 1 0 0
0 1 1 1 1
1 0 0 0 1
1 0 0 1 0
一般来说,对于具有n位和附带的奇偶校验位P的原始数据,可执行n位与奇偶校验位P的XOR归约以获得奇偶校验输出位。这等效于对原始数据的n位和奇偶校验位p执行XOR归约运算。
对于n位数据x=(xn-1,…,x0),parity_check_output(PC)可如下获得
PC=XOR_reduce(x)XOR P
当PC的值=1时,检测到错误。
对于多个信号j,集体奇偶校验输出如下获得:
集体奇偶校验输出=OR_reduce(PC0,PC1,…PCj-1)
在前一等式中,“OR_reduce()”表示OR归约运算,并且不同的各个奇偶校验值PC由不同的下标表示。
图1B是在奇数奇偶校验技术中使用的奇偶校验生成器电路110的示例的框图。考虑将三个输入A、B和C提供给偶数奇偶校验生成器以获得奇偶校验位P。用于添加三位的奇偶校验生成器电路110包括两个XOR门112和114以及NOT门116。第一XOR门112在前两个输入A与B之间执行XOR运算。第二XOR门114在第一XOR门的输出与第三输入C之间执行XOR运算。第二XOR门的输出被馈送通过NOT门,以生成奇偶校验位P。下表中提供了针对不同输入组合生成的奇偶校验位:
A B C P
0 0 0 1
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 0
因此,对于如图1B中所示出那样实现的奇偶校验生成电路,奇偶校验位P如下获得:
P=NOT((A XOR B)XOR C)
因此,奇偶校验位P可通过执行XOR归约运算,随后执行NOT运算(被称为nXOR归约运算或更普遍地称为XNOR归约运算)来获得。一般来说,对于具有n位的数据,可以执行被称为nXOR归约的运算以获得(奇数奇偶校验)奇偶校验位。
因此,对于n位数据x=(xn-1,…,x0),用于奇数奇偶校验技术的奇偶校验位P可如下获得
p=nXOR_reduce(x)=NOT(xn-1XOR…XOR x0)
=xn-1XNOR xn-2…XNOR x0
可以使用如前文所讨论的奇偶校验器电路来检查数据中的错误。
图2B是奇数奇偶校验技术中的奇偶校验器电路210的示例的框图。考虑来自奇偶校验生成器电路110的四位输入A、B、C和P被提供给奇偶校验器电路210。奇偶校验器电路210校验所接收到的4位是否具有奇数个1。奇偶校验器电路210基于所接收到的输入中1的数量来生成输出。如果所接收到的输入中有错误,则奇偶校验器电路210产生输出‘1’,并且当所接收到的输入中没有错误时,该奇偶校验器电路产生输出‘0’。
用于校验4位的逻辑表达式可以使用三个XOR门和一个NOT门来实现。第一XOR门212在前两个输入A与B之间执行XOR运算。第二XOR门214在后两个输入C与P之间执行XOR运算。第三XOR门216在第一XOR门的输出与第二XOR门的输出之间执行XOR运算。第三XOR门的输出被馈送通过NOT门218,以生成指示在所接收到的输入中是否有错误的parity_check_output(PC)。下表中提供了几种不同输入组合的parity_check_output(PC):
A B C P 奇偶校验器输出
0 0 0 0 1
0 0 0 1 0
0 0 1 0 0
0 0 1 1 1
0 1 0 0 0
对于n位数据x=(xn-1,…,x0),parity_check_output(PC)如下获得
PC=NOT(XOR_reduce(x)XOR P)
对于许多信号,集体parity_check_output可如下获得:
集体奇偶校验输出=OR_reduce(PC),
数据信号(x)可以以位长度为n位的二进制数来表示。在具有n位的位长度时,数据信号可被提供给用于奇偶校验的电路。在一些其他示例中,数据信号(x)可被分成各自具有m位的位长度的不同部分,其中m<n,并且每个部分将作为输入被提供给电路。该部分的位长度越小,在接收数据信号时识别错误就越具体和准确。例如,考虑16位数据信号被分成8位长的两个部分。如果在两个部分中都存在位翻转,则错误检测电路将能够识别两个部分中的错误。然而,如果两个部分都被提供给错误检测电路,使得在输入数据信号中有两个位翻转,则错误检测电路可能不能够识别该错误。为了识别两个部分中的错误,需要实现两个电路,或者序列应被串行馈送。因此,可以以任何粒度实现奇偶校验,其中电路的粒度等于块x的大小。
如前文所讨论,检查硬件设备的正确操作在功能安全设备中至关重要。为了检查硬件设备中诸如寄存器的各种模块的正确性,可以执行循环冗余检查,并且可以针对需要检查的寄存器实现奇偶校验生成器和奇偶校验器电路。这可以称为寄存器奇偶校验。寄存器奇偶校验实现了奇偶校验生成器电路,以针对在寄存器处接收到的输入生成奇偶校验位,并且实现了奇偶校验器电路,以基于所生成的奇偶校验位来检测从寄存器检索到的数据中的奇偶校验错误。
用于执行寄存器奇偶校验的电路可包括用于保持输入数据信号的寄存器以及用于生成对应于数据信号的奇偶校验位的奇偶校验生成电路。此外,该电路可包括接收输入数据信号和所计算的奇偶校验位以检测错误的奇偶校验器电路。
添加奇偶校验生成器电路与奇偶校验器电路的逻辑组合可能对硬件的设计架构造成显著影响。其中一个主要影响是,添加这些逻辑可能会增加关键路径的长度(即,由于路径中部件数量的增加,可能会增加在生成输出时的延迟)。换句话说,与提供被存储在寄存器中的数据信号相比,在将所接收到的输入信号提供给奇偶校验器电路之前,奇偶校验生成单元可能需要一些时间来计算对应于所该输入信号的奇偶校验位。如果不加以考虑,则这可能导致不正确的错误检测,因为奇偶校验器电路可能同时接收输入数据而不是对应于输入数据的奇偶校验位。尤其是在用于存储数据信号的寄存器是时钟选通寄存器的情况下,即在仅当使用时钟使能信号启用寄存器时更新寄存器的情况下,更有可能发生这些种类的错误。在时钟选通寄存器的情况下,将这些额外的逻辑添加到现有设计中在确定修改后的设计是否仍然满足所需的时序(尤其是时钟频率)时至关重要。即使修改后的设计满足所需时序,更紧凑的关键路径也将导致满足该时序的面积和/或功率增大。
时钟选通寄存器包括被集成到寄存器设计中的内部时钟选通电路系统。时钟选通电路系统/逻辑可以以多种方式中的一种方式被添加到设计中。时钟选通逻辑可被编码到寄存器传输级(RTL)代码中,或者由设计人员手动插入到设计中,以将时钟选通到特定寄存器,或者可以通过自动时钟选通工具半自动地插入到RTL中。时钟选通电路系统与寄存器一起使用,以用于通过在不使用或不需要时移除时钟信号或禁用寄存器来减少功耗。然而,将用于时钟选通的额外逻辑添加到每个寄存器中还增加了电路的关键路径。
考虑时钟选通寄存器的内部时钟选通电路系统是使用逻辑电路设计的。内部时钟选通电路系统可接收时钟信号(clk)和时钟使能信号作为输入。使能信号控制或选通时钟信号,以向时钟选通寄存器提供/生成选通时钟信号,该时钟选通寄存器又激活或去激活时钟选通寄存器。也就是说,在一个示例中,时钟选通寄存器可被设计成当时钟使能信号为高时被激活(或者“使能”,使得可以更新寄存器的内容),并且当时钟使能信号为低时被去激活(或者“禁用”,使得可以不更新寄存器的内容)。在其他示例中,这可以在相反的条件下实现,使得时钟选通寄存器在时钟使能信号(在这类配置中通常被称为‘时钟选通信号’)为低时被激活,并且在时钟选通信号为高时被去激活。取决于内部时钟选通电路系统的设计或其在RTL中被编码的方式,提供给时钟选通寄存器以用于启用/禁用时钟选通寄存器的使能/选通信号可以为高或低。
因此,仅仅实现已知的奇偶校验电路不适用于检查时钟选通寄存器的正确性。假设普通奇偶校验电路,比如说一个奇偶校验生成器与时钟选通寄存器一起使用,以针对所接收到的数据信号生成奇偶校验位。如前文所讨论,奇偶校验生成器可针对所接收到的数据信号生成奇偶校验位,但取决于时钟使能信号,时钟选通寄存器可以或者可以不使用所接收到的数据信号进行更新。因此,当来自寄存器和奇偶校验生成器的输入被提供给奇偶校验时,由于寄存器在一些情况下可能不被更新,因而校验可能没有被正确地执行。
因此,寄存器的时钟选通提出了特殊的问题,因为必须确保奇偶校验位始终与寄存器中存储的数据保持一致。
发明人已经设计了执行时钟选通信号的错误检测或者实现奇偶校验同时允许寄存器更新的时钟选通的电路实现和方法。另外,这些电路实现被设计成在执行奇偶校验或循环冗余校验时保持功率和面积较低。这将使用以下附图进行详细解释。
图3A是用于对时钟选通寄存器信号执行循环冗余校验(CRC)的错误检测电路的框图。错误检测电路300包括第一寄存器302、第二寄存器304、校验位处理逻辑308和错误检测模块306。使用虚线绘制第一寄存器302以表示时钟选通寄存器。图3B是解释使用错误检测电路300对时钟选通寄存器信号执行错误检测的方法350的流程图。
第一寄存器302是时钟选通寄存器,即具有内部时钟选通电路系统/逻辑以用于基于特定使能条件将时钟信号选通到寄存器的寄存器。贯穿所有附图,虚线用于将寄存器表示为时钟选通寄存器。第一寄存器302被配置(在步骤352处)成响应于时钟使能信号而使用数据信号进行更新。第一寄存器可接收时钟信号(clk)和时钟使能信号作为第一寄存器的内部时钟选通电路系统的输入。当时钟使能信号启用第一寄存器302时,第一寄存器302使用在第一寄存器处作为输入被接收到的特定数据信号(x)进行更新。当时钟选通寄存器没有由时钟使能信号启用时,则第一寄存器302不被更新。相反,第一寄存器将继续保持数据信号(xr)(图中未示出),该数据信号在先前使用时钟使能信号启用第一寄存器时被更新。在此具体实现中,当时钟使能信号为高时,第一寄存器302使用在第一寄存器处作为输入被接收到的特定数据信号(x)进行更新。当时钟选通寄存器未被启用时,即当时钟使能信号为低时,则第一寄存器302不被更新,而是将继续保持数据信号(xr)(图中未示出),该数据信号在时钟使能信号先前为高时(即在前一时钟循环期间)被更新。
第二寄存器304是被配置成用于存储所计算的校验位的寄存器。第二寄存器304不是时钟选通寄存器,并且因此可被更新而不依赖于时钟使能信号(无论时钟选通是高还是低)。第二寄存器304使用从校验位处理逻辑308接收到的新计算的校验位进行更新。
校验位处理逻辑308计算校验位,并且输出所计算的校验位以更新第二寄存器304。校验位处理逻辑308响应于控制信号b而起作用。校验位处理逻辑308包括校验位计算单元和控制单元。校验位计算单元执行校验位的计算。作为输入被提供给第一寄存器302的数据信号(x)也作为输入被提供给校验位处理逻辑308。换句话说,数据信号(x)被分离,并且分离信号的一个部分被提供给第一寄存器302,并且分离信号的另一部分被提供给校验位处理逻辑308。因此,当基于该输入来计算校验位时,校验位计算单元基于被提供给第一寄存器302的信号来计算校验位。由此,校验位可用于检测作为将信号存储在第一寄存器302中的部分而出现的任何错误。控制单元响应于控制信号而控制从校验位处理逻辑中生成的输出。换句话说,控制信号控制校验位处理逻辑向第二寄存器304输出适当的校验位,使得校验位对应于被存储在第一寄存器302中的数据信号。控制第二寄存器更新的控制单元(在第二寄存器外部)的功能类似于在第一寄存器内部发生的选择,使得第一寄存器响应于时钟使能信号而使用新的数据值进行更新。控制信号b可以与时钟使能信号相同。可以向校验位处理逻辑308提供与被提供给第一寄存器302的时钟使能信号相同的时钟使能信号或者单独的相同信号作为控制信号b。
发明人设计出校验位处理逻辑可以以多种方式来实现,以实现保持校验位与第一寄存器中的数据同步的结果。取决于具体实现,可以响应于控制信号而执行新校验位的计算或者所计算的校验位的输出。一旦计算并输出了校验位,则校验位处理逻辑308的输出被提供给第二寄存器304,并且第二寄存器被更新。也就是说,即使第一寄存器没有更新,第二寄存器也会被更新,但第二寄存器中的值与第一寄存器中的数据保持同步(受任何瞬态错误影响)。换句话说,第二寄存器是普通寄存器(即,不是时钟选通寄存器),其更新与时钟使能信号无关,使得第二寄存器的值与第一寄存器中的数据保持同步。
时钟选通第二寄存器以存储所计算的校验位将是本领域技术人员考虑的默认选项。然而,使用第二寄存器(其为时钟选通寄存器)具有某些缺点。第一个缺点是,由校验位处理逻辑本身计算校验位会向关键路径增添延迟,并且因此使用时钟选通会向关键路径增添额外的延迟位。第二个缺点是,即使结果不会被寄存在第二寄存器中,校验位的计算也会消耗功率。
本文描述的使用基于控制信号而起作用的校验位处理逻辑而不是使用时钟选通的第二寄存器的方法具有以下优点。使用此方法,校验位的计算由校验位处理逻辑根据控制信号b来执行,因此节省了功率。此外,节省了由用于存储校验位的第二寄存器的时钟选通引起的延迟。然而,由于在校验位处理逻辑中存在mux,因而这对于关键路径中引起的延迟具有边际节省。因此,如果有足够的时间,即另一并行路径是关键的,则参照图3A和图3B解释的此方法是有用的。
校验位可以是奇偶校验位。在该情况下,可以通过对数据信号执行XOR归约函数或nXOR归约函数来计算校验位,如参照图1A和图1B所讨论。
如已经提及的,第二寄存器不是时钟选通的,并且使用来自校验位处理逻辑308的校验位进行更新,而不管时钟使能信号是低还是高。然而,第二寄存器304的更新响应于控制信号而发生,因为校验位处理逻辑的功能是基于控制信号的(步骤354)。
来自第一寄存器302的输出(y)以及来自第二寄存器304的输出(q)被提供给错误检测模块306。错误检测模块306至少基于第一寄存器302的输出和第二寄存器304的输出来计算指示位(I)(步骤356)。参照图4A和图5A详细解释了错误检测电路300的具体实现。
图4A是图3A的错误检测电路的具体实现的框图。错误检测电路400包括第一寄存器302、第二寄存器304和错误检测模块306,如参照图3A所讨论。如上文所讨论,第一寄存器302是时钟选通寄存器,并且响应于时钟使能信号而使用数据信号进行更新,该时钟使能信号可对应于被提供给第一控制单元402的控制信号b,如下文所讨论。更具体地说,如果使用时钟使能信号启用第一寄存器,则使用作为输入被接收到的数据信号(x)来更新第一寄存器302。如果第一寄存器没有由时钟使能信号启用,则第一寄存器302将继续保持已被存储在第一寄存器中的数据信号(xr)。数据信号(xr)是当时钟使能信号先前启用第一寄存器时被更新到第一寄存器302的信号。因此,来自第一寄存器302的输出y可以使用条件(三元)运算符被表示为:
y=b?x:xr
这意味着当b=1时,y=x,并且当b=0时,y=xr
电路400包括校验位处理逻辑,该校验位处理逻辑包括控制单元和校验位计算单元。在此第一具体实现中,为了与稍后讨论的第二具体实现相比清楚起见,控制单元可被称为第一控制单元402,并且校验位计算单元可被称为第一校验位计算单元404(为了避免疑问,第一具体实现和第二具体实现中的每一者仅包括单个控制单元和计算单元,如图中所示出)。
在第一具体实现中,响应于控制信号b而执行校验位的计算。第一控制单元402控制对第一校验位计算单元404的输入。第一控制单元402选择在第一寄存器处接收到的数据信号(x)和先前存储在第一寄存器302中的数据信号(xr)中的一者,并且将所选数据信号提供给第一校验位计算单元404。第一校验位计算单元404基于由第一控制单元402提供的所选数据信号来计算校验位(c)。也就是说,作为输入被提供给第一寄存器302的数据信号(x)也作为输入被提供给第一控制单元402。换句话说,数据信号(x)被分离,并且分离信号的一个部分被提供给第一寄存器302,并且分离信号的另一部分被提供给第一控制单元402。由第一寄存器输出的数据信号(xr)也作为输入被提供给第一控制单元402。将理解,第一寄存器302的输入和输出是不同的信号,根据情况,它们可以或可以不具有相同的值。第一控制单元402随后选择应将其输入中的哪个输入用于计算校验位。
第一控制单元402可以是具有作为控制信号b的控制信号(例如对应于控制第一寄存器302更新的时钟使能信号)以及作为第一输入的数据信号(x)和作为第二输入的数据信号(xr)的mux。因此,mux可被配置成使得每当控制信号变高时(即当b=1时),第一控制单元选择在第一寄存器302处接收到的数据信号(x),并且将该数据信号提供给第一校验位计算单元。第一校验位计算单元404随后基于数据信号(x)来计算校验位,并且将该校验位输出到第二寄存器。校验位可以是奇偶校验位。假设数据信号(x)具有n位的位长度。第一校验位计算单元404根据校验位计算单元被实现为执行偶数奇偶校验还是奇数奇偶校验,通过执行数据信号(x)的n位的XOR归约或nXOR归约,来计算校验位(c)(或奇偶校验位)。
当对数据信号(x)执行偶数奇偶校验时,由第一校验位计算单元计算的校验位(c)由以下等式表示:
c=XOR_reduce(x)
并且当对数据信号(x)执行奇数奇偶校验时,由第一校验位计算单元计算的校验位(c)由以下等式表示:
c=nXOR_reduce(x)
因此,当控制信号(时钟使能信号)变高时,使用所计算的校验位(c)更新第二寄存器304。此外,当时钟使能信号变高时,第一寄存器302也使用数据信号进行更新。
此外,如果控制信号为低(即当b=0时),则第一控制单元402被配置成选择先前存储在第一寄存器302中的数据信号(xr)。第一校验位计算单元404随后基于先前存储的数据信号(xr)来计算校验位(c),并且将该校验位输出到第二寄存器。假设先前存储的数据信号(xr)具有m位的位长度。第一校验位计算单元404根据校验位计算单元被实现为执行偶数奇偶校验还是奇数奇偶校验,通过对数据信号(xr)的m位进行XOR归约或者对数据信号(xr)的m位进行nXOR归约,来计算校验位(c)(或奇偶校验位)。
当对数据信号(xr)执行偶数奇偶校验时,由第一校验位计算单元计算的校验位(c)由以下等式表示:
c=XOR_reduce(xr)和
当对数据信号(xr)执行奇数奇偶校验时,由第一校验位计算单元计算的校验位(c)由以下等式表示:
c=nXOR_reduce(xr)
换句话说,当b=0时,基于与先前存储在第二寄存器304中的校验位(cr)相同的数据信号(xr),使用新计算的校验位(c)更新第二寄存器。当使用数据信号(xr)更新第一寄存器时(即当前一时钟循环中的时钟使能信号为高时),校验位(cr)是被更新到第二寄存器中的对应值。
因此,即使当控制信号(时钟使能信号)为低时,也使用所计算的校验位(c)更新第二寄存器304。相比之下,假设控制信号b对应于控制第一寄存器更新的时钟使能信号,当时钟使能信号b为低时,第一寄存器302不被更新,即当时钟使能信号b为低时,第一寄存器可继续保持先前存储的数据信号(xr)。换句话说,即使第一寄存器没有被更新,第二寄存器也会不断被更新,但第二寄存器的值与第一寄存器的内容保持同步。
因此,当执行偶数奇偶校验时,第二寄存器‘q’的输出可被表示为
q=b?XOR_reduce(x):XOR_reduce(xr)
这意味着当b=1时,q=XOR_reduce(x),并且当b=0时,q=cr=XOR_reduce(xr)。
类似地,当执行奇数奇偶校验时,第二寄存器‘q’的输出可被表示为
q=b?nXOR_reduce(x):nXOR_reduce(xr)
这意味着当b=1时,q=nXOR_reduce(x),并且当b=0时,q=cr,=nXOR_reduce(xr)。
因此,来自第一寄存器302和第二寄存器304的输出被提供给错误检测模块306。错误检测模块306至少基于第一寄存器302的输出(y)和第二寄存器304的输出(q)来计算指示位I。
此外,可选地,存储在第三寄存器(图中未示出)中的有效信号v可被提供给错误检测模块306。高有效信号指示第一寄存器中更新的值有效。如果有效信号为低,则第一寄存器中更新的数据被视为无效。例如,当设备在前一时钟循环中被复位时,存储在第一寄存器中的数据信号可能是无效信号。有效信号的使用消除了由于存储在第一寄存器中的无效信号引起的任何错误检测。
同样,错误检测模块对指示位的计算是基于是否完成了偶数奇偶校验以及奇数奇偶校验来执行的。指示位I可被表示为
对于偶数奇偶校验:
I=(XOR_reduce(y)XOR q)ANDv
其中当b=1时,y=x,并且q=c=XOR_reduce(x),当b=0时,y=xr,并且q=cr=XOR_reduce(xr).
对于奇数奇偶校验:
I=(nXOR_reduce(y)nXOR q)AND v
其中,当b=1时,y=x,并且q=c=XOR_reduce(x),并且当b=0时,y=xr,并且q=cr=XOR_reduce(xr)
因此,在两种情况下,对应数据信号的校验位与数据信号一起被提供给错误检测模块,从而确保当第一寄存器被更新时,指示位被正确计算。
图4B是解释使用图4A的错误检测电路的第一具体实现对时钟选通寄存器信号执行CRC的方法的流程图。
在步骤452处,该方法包括接收输入数据信号(x),以及响应于时钟使能信号而使用数据信号(x)更新第一寄存器。第一寄存器是具有内部时钟电路系统的时钟选通寄存器。因此,当第一寄存器被启用时,即当时钟使能信号(其可对应于被提供给第一控制单元402的控制信号b)为高(b=1)时,使用数据信号更新第一寄存器。当时钟使能信号为低(b=0)时,被禁用的第一寄存器将继续保持先前存储的数据信号(xr)。
在步骤454处,该方法包括响应于控制信号b而从数据信号(x)和先前存储的数据信号(xr)中的一者中选择数据信号。作为输入被接收到的数据信号(x)以及存储在第一寄存器中的先前存储的数据信号(xr)分别被提供给校验位处理逻辑,该校验位处理逻辑包括校验位计算单元和控制单元。所接收到的数据信号(x)作为第一输入被提供给控制单元,并且被存储在第一寄存器中的先前存储的数据信号(xr)作为第二输入被提供给控制单元。此外,控制信号b作为第三输入被提供给控制单元。控制信号b可以与时钟使能信号相同(例如对应于控制第一寄存器更新的时钟使能信号),并且控制单元可以是mux。
控制单元响应于控制信号b而选择数据信号(x)和先前存储的数据信号(xr)中的一者。当(选通)控制信号b为高时,控制单元选择数据信号(x)(即第一输入)。此外,当控制信号b为低时,控制单元选择先前存储的数据信号(xr)(即第二输入)。所选数据信号被提供给校验位计算单元。
因此,当控制信号为高时,校验位计算单元接收所选数据信号(x),并且基于数据信号(x)来计算校验位(c)。类似地,当控制信号为低时,校验位计算单元接收所选先前存储的数据信号(xr),并且基于数据信号(xr)来计算校验位(c)。在步骤456处,该方法包括基于所选数据信号来计算校验位。因此,由校验位计算单元响应于控制信号b而计算校验位(c)。校验位可以是奇偶校验位。校验位计算单元的输出被提供给第二寄存器。
一旦计算了校验位,则该方法包括:在步骤458处,响应于控制信号而使用所计算的校验位更新第二寄存器。第二寄存器不是时钟选通寄存器,并且因此可被更新,而不管控制信号是高还是低。
然而,如所讨论,第二寄存器响应于控制信号b而使用校验位进行更新。换句话说,当控制信号b为高时,由于校验位计算单元基于所选数据信号(x)来计算校验位(c),因而当控制信号b变高时,第二寄存器使用对应于数据信号(x)的校验位(c)进行更新。并且类似地,当控制信号b为低时,由于校验位计算单元基于所选先前存储的数据信号(xr)来计算校验位(c),因而当控制信号b变低时,第二寄存器使用对应于数据信号(xr)的校验位(c)进行更新。
在步骤460处,该方法包括至少基于第一寄存器(y)的输出和第二寄存器(q)的输出来计算指示位。指示位由错误检测模块进行计算。第一寄存器的输出作为第一输入被提供给错误检测模块,并且第二寄存器的输出作为第二输入被提供给错误检测模块。错误检测模块计算指示位,并且基于指示位来检测是否有错误。指示位可以是奇偶校验位或奇偶校验失败指示位。
因此,当时钟使能信号和对应控制信号b为高时,第一寄存器(y)的输出(其为所接收到的数据信号(x))和第二寄存器(q)的输出(其为基于数据信号(x)所计算的校验位(c))用于计算指示位I。
类似地,当时钟使能信号和对应控制信号b为低时,第一寄存器(y)的输出(其为先前存储的数据信号(xr))和第二寄存器(q)的输出(其为基于数据信号(xr)所计算的校验位(c))用于计算指示位I。
图5A是图3A的错误检测电路的第二具体实现的框图。图5A中的错误检测电路500包括第一寄存器302、第二寄存器304和错误检测模块306,如参照图3A所讨论。如上文所讨论,第一寄存器302响应于时钟使能信号(其可对应于被提供给第二控制单元502的控制信号b,如下文所讨论)而使用数据信号进行更新。更具体地说,如果第一寄存器响应于时钟使能信号而被启用(例如当时钟使能信号为高(b=1)时),则第一寄存器302使用作为输入被接收到的数据信号(x)进行更新。如果第一寄存器被禁用(即当时钟使能信号为低(即b=0)时),则第一寄存器302将继续保持在时钟使能信号先前为高时所更新的先前更新的数据信号(xr)。因此,来自第一寄存器302的输出y可以使用条件(三元)运算符被表示为:
y=b?x:xr
这意味着当b=1时,y=x,并且当b=0时,y=xr
电路500包括校验位处理逻辑,该校验位处理逻辑包括控制单元和校验位计算单元。在第二具体实现中,所述控制单元可被称为第二控制单元502,并且所述校验位计算单元可被称为第二校验位计算单元504。
作为第一寄存器302的输入被接收到的数据信号(x)也作为输入被提供给第二校验位计算单元504。也就是说,同一数据信号(x)作为输入被提供给第一寄存器302和第二校验位计算单元504两者。在接收到数据信号(x)时,第二校验位计算单元504基于数据信号(x)来计算校验位。校验位可以是奇偶校验位。假设数据信号(x)具有n位的位长度。第二校验位计算单元504根据校验位计算单元被实现为执行偶数奇偶校验还是奇数奇偶校验,通过对数据信号(x)的n位进行XOR归约或nXOR归约,来计算校验位(c)。由第二校验位计算单元计算的校验位(c)可被表示为
对于偶数奇偶校验:
c=XOR_reduce(x)或
对于奇数奇偶校验:
c=nXOR_reduce(x)
所计算的校验位作为第一输入被提供给第二控制单元502。第二控制单元502是mux。第二控制单元接收被存储在第二寄存器304中的先前计算的校验位(cr)作为第二输入。如将变得明显的,当使用先前存储的数据信号xr更新第一寄存器时(即当时钟选通信号最后为高时),先前计算的校验位(cr)由第二校验位计算单元504进行计算,并且随后被存储在第二寄存器中。此外,控制信号b作为第三输入被提供给控制单元502。
第二控制单元504基于控制信号b来选择所计算的校验位(c)和先前计算的校验位(cr)中的一者。因此,每当控制信号变高时(即当b=1时),第二控制单元502便基于数据信号(x)来选择所计算的校验位(c),并且将所计算的校验位(c)输出到第二寄存器304。因此,第二寄存器304响应于控制信号b而使用所计算的校验位(c)进行更新。
此外,当控制信号为低时(即当b=0时),第二控制单元502选择在控制信号先前为高时已经基于数据信号(xr)所计算的先前计算的校验位(cr)。由第二控制单元502选择的先前计算的校验位(cr)还被输出到第二寄存器。因此,当控制信号(时钟使能信号)为低时,使用所计算的校验位(cr)更新第二寄存器304。
因此,第二寄存器‘q’的输出可被表示为
q=b?c:cr
这意味着当b=1时,q=c,并且当b=0时q=cr
此外,第一寄存器(y)的输出和第二寄存器(q)的输出被提供给错误检测模块306以计算指示位I。因此,如果时钟使能信号和对应控制信号b变高,则错误检测模块306接收第一寄存器(y)的输出作为更新后的数据信号(x),并且接收第二寄存器q的输出作为基于数据信号(x)所计算的校验位(c)。类似地,当时钟使能信号和对应控制信号b变低时,错误检测模块306接收第一寄存器(y)的输出作为先前存储的数据信号(xr),并且接收第二寄存器q的输出作为基于数据信号(xr)所计算的校验位(cr)。此外,可选地,存储在第三寄存器(图中未示出)中的有效信号v可被提供给错误检测模块306。
错误检测模块306进一步基于如下表示的等式来计算指示位I:
对于偶数奇偶校验:
I=(XOR_reduce(y)XOR q)ANDv
对于奇数奇偶校验:
I=(nXOR_reduce(y)nXOR q)AND v
因此,在两种情况下,对应数据信号的校验位与数据信号一起被提供给错误检测模块,从而确保当第一寄存器被更新时,指示位被正确计算。
因此,对于第一具体实现,第二具体实现在每次接收到新的数据信号时更新第二寄存器,即使第一寄存器没有被更新,但第二寄存器的值也与第一寄存器的内容保持同步。在第二具体实现的情况下,总是基于当前数据信号来计算校验位,但该校验位不一定用于更新第二寄存器,并且可以使用先前计算的校验位来更新第二寄存器。相比之下,在第一具体实现中,每当有新的数据信号时,新计算的校验位便被用于更新第二寄存器,但所计算的校验位可以基于新的数据信号或者被存储在第一寄存器中的前一数据信号。因此,在第一具体实现中,当第一校验位计算单元的输入是被存储在第一寄存器中的前一数据信号时,没有额外的动态功率被消耗,因为没有位的切换。
图5B是解释使用图5A的错误检测电路的第二具体实现对时钟选通寄存器信号执行CRC的方法的流程图。
该方法在步骤552处包括接收输入数据信号(x),以及响应于时钟使能信号而使用数据信号(x)更新第一寄存器。第一寄存器是具有内部时钟电路系统的时钟选通寄存器。因此,当时钟使能信号启用第一寄存器时,使用输入数据信号(x)更新第一寄存器。当时钟使能信号禁用第一寄存器时,第一寄存器将继续保持先前存储的数据信号(xr),该先前存储的数据信号在第一寄存器上次被启用时被存储在第一寄存器中。
在步骤554处,该方法包括基于输入数据信号(x)来计算校验位。数据信号(x)被单独提供给校验位处理逻辑,该校验位处理逻辑包括校验位计算单元和控制单元。校验位计算单元计算对应于数据信号(x)的校验位(c)。校验位可以是奇偶校验位。
一旦计算了校验位,则该方法包括:在步骤556处,响应于控制信号而使用所计算的校验位(c)和先前存储的校验位(cr)中的一者更新第二寄存器。当控制信号最后为高时,先前存储的校验位(cr)由对应于数据信号(xr)的校验位计算单元进行计算,并且被存储到第二寄存器中。
因此,来自校验位计算单元的新计算的校验位和先前存储的校验位被提供给控制单元。控制单元可以是mux。控制单元从校验位计算单元接收所计算的校验位作为第一输入。控制单元还从第二寄存器接收先前存储的校验位(cr)作为第二输入。此外,控制单元接收控制信号b作为第三输入。此外,控制单元响应于控制信号而使用所计算的校验位(c)和先前存储的校验位(cr)中的一者来更新第二寄存器。控制单元被配置成当选通控制信号b为高时,使用所计算的校验位(c)(即第一输入)更新第二寄存器。此外,控制单元被配置成当控制信号b为低时,使用先前存储的校验位(cr)(即第二输入)更新第二寄存器。
在步骤558处,该方法包括至少基于第一寄存器的输出(y)和第二寄存器的输出(q)来计算指示位。指示位由错误检测模块进行计算。第一寄存器的输出作为第一输入被提供给错误检测模块,并且第二寄存器的输出作为第二输入被提供给错误检测模块。错误检测模块计算指示位,并且基于指示位来检测是否有错误。指示位可以是奇偶校验位或奇偶校验失败指示位。
因此,当第一寄存器响应于时钟使能信号而被启用时,作为时钟选通寄存器的第一寄存器使用所接收到的数据信号(x)进行更新,并且第二寄存器使用所计算的校验位(c)进行更新。错误检测模块接收数据信号(x)作为第一输入,并且接收校验位(c)作为第二输入,以用于计算指示位。
类似地,当第一寄存器响应于时钟使能信号而被禁用时,作为时钟选通信号的第一寄存器不使用所接收到的数据信号(x)进行更新,并且因此第一寄存器继续保持先前存储的数据信号(xr)。此外,使用先前存储在第二寄存器中的校验位(cr)更新第二寄存器。错误检测模块接收先前存储的数据信号(xr)和先前存储的校验位(cr)以用于计算指示位。
在电路300、400和500中,第一寄存器和第二寄存器所消耗的功率相对较少。这是因为作为时钟选通信号的第一寄存器与正常寄存器相比消耗更少的功率,因为寄存器更新仅在值改变时(即在时钟使能信号为高时)耗费功率。类似地,尽管第二寄存器是正常寄存器(即不是时钟选通寄存器),但由于第二寄存器响应于控制信号而被更新,因而第二寄存器的更新消耗较少的功率。这同样是因为寄存器更新仅在值改变时才耗费功率。也就是说,仅当控制信号为高并且校验位的值改变时,第二寄存器更新才汲取功率。相比之下,如果仅基于数据信号(x)直接更新第二寄存器,则当第一寄存器被时钟选通(并且因此不被更新)时,数据信号可能改变,从而导致新的校验位被计算和存储,这不仅会增加功耗,而且还意味着所存储的校验位不再对应于被存储在第一寄存器中的数据。此外,在这些电路具体实现中,不需要为了确保在检查时钟选通寄存器信号中的错误时的正确性而单独存储时钟使能信号,如果这样做的话,将花费更多的面积和功率。
基于图3A、图4A和图5A所讨论的错误检测电路300、400和500的不同具体实现使得当由于控制单元中发生的选择过程而使用数据值更新时钟选通寄存器时,能够准确地计算校验位和指示位。尽管上述具体实现确保了检测时钟选通信号中的错误时的正确性,但由于对控制单元(诸如mux)使用更大的电路逻辑,因而在面积和功率使用方面进行权衡。另外,mux的使用可能导致电路的这些具体实现在满足时间和面积计算方面具有额外的挑战性。
因此,电路300、400和500的具体实现可以更有效地用于检查特殊寄存器中的错误,诸如非时序关键的控制寄存器。由于控制寄存器往往不是时序关键的,所以具有额外控制单元(mux)的影响对于电路的整体时序来说不是问题。此外,在控制寄存器中,可以有几个信号,每个信号具有唯一的时钟使能信号。由于电路300的不同具体实现不需要寄存时钟使能信号,因而这些具体实现可优选地检查控制寄存器,因为可以预知由用于寄存时钟使能信号的额外寄存器引起的面积和功率使用。
然而,为了检查在更新时序关键的某些其他寄存器(诸如一些数据寄存器)时的错误,添加控制单元(mux)对满足现有的时序要求而言可能具有挑战性。因此,发明人设计了一种错误检测电路和方法,其用于在不使用单独的控制单元或mux的情况下对时钟选通寄存器信号执行错误检测。
图6C是用于对时钟选通寄存器信号执行CRC的错误检测电路的框图。图6B是解释对时钟选通寄存器信号执行CRC的方法的流程图。图6C中的错误检测电路601包括第一寄存器602、第二寄存器612、第三寄存器610、校验位处理逻辑608和错误检测模块606。
第一寄存器602(使用虚线绘制)是时钟选通寄存器,即具有内部时钟选通电路系统/逻辑以用于基于特定使能条件将时钟信号选通到寄存器的寄存器,如上文所描述。第一寄存器602被配置成接收数据信号(x),并且响应于时钟使能信号而使用数据信号(x)进行更新(在步骤652处)。为了简单起见,时钟使能信号在图6C中没有被示为第一寄存器(或第二寄存器)的输入,但时钟使能信号与在图6C中被示出为第三寄存器610的输入的信号b相同(或等同于信号b)(并且在下文进一步讨论)。因此,当时钟使能信号启用第一寄存器时,第一寄存器被更新。当第一寄存器602响应于时钟使能信号而被禁用时,第一寄存器不被更新。相反,第一寄存器将继续保持数据信号(xr),该数据信号在前一时钟使能信号期间被更新,如参照电路300至500所解释。因此,来自第一寄存器602的输出y可被表示为:
y=b?x:xr
这意味着当b=1时,y=x,并且当b=0时,y=xr
第二寄存器612是正常寄存器,即不是时钟选通寄存器,并且因此可被更新而与时钟使能信号无关(无论被提供给第一寄存器的时钟使能信号是高还是低)。第二寄存器612被配置成用于存储所计算的校验位(c)。因此,当第一寄存器使用新的数据值进行更新时,第二寄存器也同时使用新计算的校验位进行更新。也就是说,作为输入被提供给第一寄存器602的数据信号(x)也作为输入被提供给校验位处理逻辑608(其向第二寄存器612输出校验位)。换句话说,数据信号(x)被分离,并且分离信号的一个部分被提供给第一寄存器602,并且分离信号的另一部分被提供给校验位处理逻辑608。因此,当基于该输入来计算校验位时,校验位处理逻辑608基于被提供给第一寄存器602的信号来计算校验位。由此,校验位可用于检测作为将信号存储在第一寄存器602中的部分而出现的任何错误。
校验位(c)由校验位处理逻辑608进行计算。校验位处理逻辑608计算校验位,并且输出所计算的校验位以更新第二寄存器612。校验位处理逻辑608包括校验位计算单元。校验位计算单元总是基于数据信号(x)来执行校验位(c)的计算(在步骤654处)。校验位可以是奇偶校验位。可以通过对数据信号执行XOR归约函数或nXOR归约函数来计算校验位。由校验位计算单元计算的校验位(c)可被表示为
对于偶数奇偶校验:
c=XOR_reduce(x)或
对于奇数奇偶校验:
c=nXOR_reduce(x)
校验位处理逻辑608计算校验位,并且输出所计算的校验位以更新第二寄存器612(在步骤654处)。校验位的计算是无条件的,即不管控制信号b是高还是低都执行该计算。
第二寄存器612使用从校验位处理逻辑608接收到的新计算的校验位进行更新(在步骤656处)。在使用新计算的校验位更新第二寄存器612之前,第二寄存器612将继续保持基于先前存储的数据信号(xr)所计算的校验位(cr)。在图6C中,第二寄存器612是正常寄存器,并且因此第二寄存器使用新计算的校验位进行更新,而不管时钟使能信号是高还是低。因此,第二寄存器‘q’的输出可被表示为:
q=c
这意味着q总是被更新为新计算的c
此外,第三寄存器610被配置成用于保持时钟使能信号(b)的当前值(步骤658)。第三寄存器610也是正常寄存器,即不是时钟选通寄存器,并且因此可被更新而与时钟使能信号无关(无论时钟使能信号是高还是低)。
在图6C中的电路601中,用于存储时钟使能信号(如信号b)的第三寄存器对于确保在错误检测模块为每个时钟使能信号计算指示位时的正确性是必要的。这是因为仅当使用值b=1更新第三寄存器时才计算指示位,并且因此被存储在第三寄存器中的值使得能够确保在计算指示位时将对应于数据信号(当b=1时,该数据信号是在第一寄存器中新更新的)的适当校验位更新到第二寄存器612。因此,仅在b=1时计算校验位确保了在计算校验位时使用适当的值更新第一寄存器602和第二寄存器612。
因此,与在如电路300、400和500中所示出的错误检测电路中使用多路复用器电路相比,使用第二寄存器612与第三寄存器610的组合来存储时钟使能信号值使得能够准确计算指示位,同时确保满足时钟频率或时序。因此,错误检测电路601的优点在于,在错误检测电路601中,从关键路径中移除了时钟选通寄存器,从而消除了关键路径中时钟选通的延迟。
可选的有效信号可被存储在单独的寄存器(图中未示出)中,以用于通过指示所存储的数据信号是否有效来确保检查的正确性,如前文所讨论。
来自第一寄存器602、第二寄存器612和第三寄存器610的输出被提供给错误检测模块606。可选地,被存储在第四寄存器中的有效信号v也被提供给错误检测模块606。错误检测模块606至少基于第一寄存器602的输出、第二寄存器612的输出和第三寄存器610的输出来计算指示位(步骤660)。
因此,所计算的指示位I可被表示为
对于偶数奇偶校验:
I=(XOR_reduce(y)XOR q)AND v AND b
对于偶数奇偶校验:
I=(nXOR_reduce(y)nXOR q)AND v AND b
错误检测电路601可用于迭代地计算指示位。
此外,在一些不寻常的情形下,诸如当重置部件时,可能会将错误引入到指示位的计算中,如下文所讨论。例如,假设有存储有效信号的第四寄存器。当我们重置部件时,有效信号(在第四寄存器中)变低,并且当前在第一寄存器602中的数据被保持,但被被视为垃圾。随后考虑在重置之后第一次将有效数据发送到第四寄存器,并且时钟选通信号b为低。在此之后,指示位的计算完全取决于分别被存储在第一寄存器和第二寄存器中的先前存储的数据信号(y=xr)和先前存储的校验位(q=cr),它们将是复位后寄存器中的值,并且可以是不确定的。这可能在基于前一数据来计算指示位以生成=1的指示位时引入错误。因此,有必要在第三寄存器中使用时钟使能信号(如信号b)强制指示位的值为低。
在这类情形下,为了消除在计算指示位时的错误,可以使用时钟选通寄存器作为第二寄存器,从而确保仅当使用时钟使能信号启用第二寄存器时,才使用新计算的校验位来更新第二寄存器。如上文所讨论,此方法具有增加面积和功率的缺点。然而,该方法消除了几个时钟循环内的假阳性。下文参考图6A更详细地解释这一点。
图6A是用于对时钟选通寄存器信号执行CRC的另一错误检测电路的框图。错误检测电路600包括第一寄存器602、第二寄存器604、第三寄存器610、校验位处理逻辑608和错误检测模块606。
如参照图6C讨论(使用虚线绘制)的第一寄存器602是时钟选通寄存器,并且被配置成接收数据信号(x),并且响应于时钟使能信号而使用数据信号(x)进行更新(在步骤652处)。
第二寄存器604(也使用虚线绘制)也是时钟选通寄存器,即具有内部时钟选通电路系统/逻辑以用于基于特定使能条件将时钟信号选通到寄存器的寄存器。第二寄存器604被配置成响应于时钟使能信号而存储所计算的校验位(c)。被提供给第一寄存器602的同一时钟使能信号(相当于图6A中被示出为第三寄存器的输入的信号b)或者单独但相同的时钟使能信号可被提供给第二寄存器604。
因此,第二寄存器604不同于电路601中的第二寄存器612以及电路300、400和500中的第二寄存器304(其不为时钟选通寄存器)。在电路300、400和500中使用多路复用器来确保第二寄存器与第一寄存器的内容保持同步是在电路600中使用时钟选通寄存器而不是正常寄存器来实现的。将第二寄存器604用作时钟选通寄存器实现了对是否使用所计算的校验位更新第二寄存器的选择过程。如前文所提及,被提供给第一寄存器302的同一时钟使能信号或单独的相同时钟使能信号可被提供给第二寄存器604。换句话说,第一寄存器302和第二寄存器604在相同条件下进行更新。因此,当第一寄存器进行更新时,第二寄存器也同时使用新计算的校验位进行更新。
校验位(c)由校验位处理逻辑608进行计算。校验位处理逻辑608计算校验位,并且输出所计算的校验位以更新第二寄存器604,如上文参照图6C所讨论。校验位处理逻辑608包括校验位计算单元。校验位计算单元总是基于数据信号(x)来执行校验位(c)的计算(在步骤654处)。也就是说,作为输入被提供给第一寄存器602的同一数据信号(x)也作为输入被提供给校验位处理逻辑608(其向第二寄存器604输出校验位)。换句话说,数据信号(x)被分离,并且分离信号的一个部分被提供给第一寄存器602,并且分离信号的另一部分被提供给校验位处理逻辑608。因此,当基于该输入来计算校验位时,校验位处理逻辑608基于被提供给第一寄存器602的信号来计算校验位。由此,校验位可用于检测作为将信号存储在第一寄存器602中的部分而出现的任何错误。
第二寄存器604使用从校验位处理逻辑608接收到的新计算的校验位进行更新(在步骤656处)。在图6A中,当第二寄存器响应于时钟使能信号而被启用时,第二寄存器604使用新计算的校验位进行更新。当第二寄存器响应于时钟使能信号而被禁用时,则第二寄存器不被更新。相反,第二寄存器将继续保持基于先前存储的数据信号(xr)所计算的校验位(cr),该先前存储的数据信号在时钟使能信号最后为高时被更新。因此,第二寄存器‘q’的输出可被表示为(取b作为时钟使能信号):
q=b?c:cr
这意味着当b=1时,q=c,并且当b=0时,q=cr
此外,第三寄存器610被配置成用于保持时钟使能信号(如信号b)的当前值(步骤658),如上文参照图6C所讨论。第三寄存器610是正常寄存器,即不是时钟选通寄存器,并且因此可被更新而与时钟使能信号无关(无论时钟使能信号是高还是低)。
来自第一寄存器602、第二寄存器604和第三寄存器610的输出被提供给错误检测模块606。也就是说,来自第一寄存器602、第二寄存器604和第三寄存器610的输出作为输入被提供给错误检测模块606。可选地,被存储在第四寄存器中的有效信号v也被提供给错误检测模块606。错误检测模块606至少基于第一寄存器602的输出、第二寄存器604的输出和第三寄存器610的输出来计算指示位(步骤660),如上文参照图6C所讨论。
在电路600和601中,可以实现额外的错误检测层,从而也确保第三寄存器610更新的正确性。在该情况下,将需要实现额外单独的错误检测电路来检查时钟使能信号是否被正确更新。这类额外的错误检测层可以重复,以满足所需标准/保证水平。
此外,可能的情况是,对于特定数据寄存器,时钟使能信号已作为电路的一部分被存储(即在另外的寄存器中)。由此,此具体实现可以对这样存储的时钟使能信号/寄存器进行重用。例如,在数据寄存器中,我们可以使用同一时钟选通信号b对大量数据进行时钟选通。作为功能的部分,可能需要寄存时钟使能信号b。然而,如果现有电路设计已具有存储时钟使能信号的寄存器,则当实现错误检测电路600时,该现有寄存器可用作第三寄存器,该第三寄存器是电路600设计的部分。换句话说,不需要另一额外的寄存器来用作设计的第三寄存器,并且因此消除了另一寄存器的额外面积或功率成本。
此外,使用第二寄存器604(其为时钟选通寄存器)和第三寄存器610来存储时钟使能信号也将消除在计算指示位时的几个循环内出现的假阳性故障。假阳性故障是数据信号被正确更新,但校验位本身遭遇位翻转的情形。在先前段落中所描述的示例中,假设我们处于假阳性情形中,即第一寄存器602被正确更新,但第二寄存器604则不,那么在于第三和第四寄存器中b=1且v=1的情况下,指示位I被计算为1,这可能被解释为意味着在第一寄存器中所存储的数据中存在错误,而实际上是在所计算的校验位中存在错误。则可能出现两种可能的场景。在第一种场景下,有效信号v可在几个循环内保持为高,但第一、第二和第三寄存器不更新,则由于原始的假阳性,指示位在这几个循环内保持为高。
此外,在第二种场景下,接收新的数据信号。假设当时钟使能信号从1变为0并且在几个循环内保持为低,并且第四寄存器中的有效信号在几个循环内保持为高时,第三寄存器可使用值b=0进行更新。由于第一寄存器和第二寄存器是时钟选通寄存器,因而当时钟使能信号从1变为0时,第一和第二寄存器不被更新,但它们将继续保持存储在这些寄存器中的先前值。假设指示位为高(由于数据信号被不正确地更新)。在此情形下,如果存储在第三寄存器中的时钟使能信号的值没有用于指示位的计算,则指示位将在几个循环内保持为高=1,因此将在几个时钟循环内保持连续阳性。然而,现在我们已经使用b=0更新了第三寄存器610,指示位被计算为0,并且因此移除了连续阳性。
因此,如上文所讨论,使用错误检测电路600,有可能从设计的关键路径(即在信号寄存之前)中移除先前具体实现的更复杂的校验位处理逻辑,并且因此更容易将此方法应用于现有设计,而不会扰乱时序考虑。更具体地说,有可能从设计的关键路径中移除控制单元(诸如mux),并且因此更容易满足时序约束。与电路300相比,电路600更昂贵,因为将额外的时钟选通寄存器用作第二寄存器。然而,当控制单元被移除时存在权衡,并且因此设计的面积也被减小。
图7示出可实现本文中所描述的图形处理系统的计算机系统。计算机系统包括CPU702、GPU 704、存储器706和其他设备714,诸如显示器716、扬声器718和相机722。处理块710(对应于处理块300)以及神经网络加速器(NNA)711在GPU 704上实现。在其他示例中,处理块710可在CPU 702上或在NNA 711内实现。计算机系统的部件可经由通信总线720彼此进行通信。存储库712(对应于存储库712)被实施为存储器702的一部分。
虽然图7示出了图形处理系统的一种实现方式,但是应当理解,可以为人工智能加速器系统绘制类似的框图,例如,通过用神经网络加速器(NNA)711替换CPU 702或GPU 704,或者通过添加NNA作为单独的单元。在这类情况下,处理块710同样可在NNA中实现。
图3A至图6C的错误检测电路300和600被示出为包括多个功能块。这仅仅是示意性的,并且不旨在限定这类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应理解,本文中描述的由错误检测电路300和600形成的中间值不需要由错误检测电路300和600在任何地点物理地生成,并且可以仅表示逻辑值,该逻辑值方便地描述了由错误检测电路300和600在其输入与输出之间执行的处理。
本文中描述的错误检测电路300和600可在集成电路上的硬件中体现。本文中描述的错误检测电路300和600可被配置成执行本文中描述的方法中的任一种方法。一般来讲,上文所述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如,固定逻辑电路系统)或它们的任何组合中实施。本文中可以使用术语“模块”、“功能性”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或它们的任何组合。在软件实施方式的情况下,模块、功能性、部件、元件、单元、块或逻辑表示程序代码,当在处理器上被执行时,所述程序代码执行指定任务。本文中所描述的算法和方法可由执行代码的一个或多个处理器执行,所述代码促使处理器执行算法/方法。计算机可读存储介质的示例包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、闪存存储器、硬盘存储器,以及可使用磁性、光学和其他技术来存储指令或其他数据并且可由机器访问的其他存储器设备。
如本文中所使用的术语计算机程序代码和计算机可读指令是指用于处理器的任何种类的可执行代码,包括以机器语言、解译语言或脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(诸如硬件描述语言或网表),以及用诸如C、Java或OpenCL等编程语言代码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解译、编译、运行时,这些软件、固件、脚本、模块或库使得支持可执行代码的计算机系统的处理器执行由所述代码指定的任务。
处理器、计算机或计算机系统可以是任何种类的设备、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是或包括任何种类的通用或专用处理器,诸如CPU、GPU、NNA、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可包括一个或多个处理器。
本发明还意图涵盖限定如本文中所描述的硬件的配置的软件,诸如硬件描述语言(HDL)软件,用于设计集成电路或用于配置可编程芯片以执行所需功能。也就是说,可提供一种计算机可读存储介质,其上编码有呈集成电路定义数据集形式的计算机可读程序代码,当在集成电路制造系统中被处理(即运行)时,该计算机可读程序代码将该系统配置成制造被配置成执行本文中描述的方法中的任一种方法的错误检测电路300和600,或者制造包括本文中描述的任何装置的错误检测电路300和600。集成电路定义数据集可以是例如集成电路描述。
因此,可提供一种在集成电路制造系统处制造本文中描述的错误检测电路300和600的方法。此外,可提供集成电路定义数据集,当在集成电路制造系统中被处理时,该集成电路定义数据集使得制造错误检测电路300和600的方法得以执行。
集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包括作为寄存器传输级(RTL)代码,作为高级电路表示法(诸如Verilog或VHDL),以及作为低级电路表示法(诸如OASIS(RTM)和GDSII)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如RTL)可在计算机系统处进行处理,所述计算机系统被配置成用于在软件环境的上下文中产生集成电路的制造定义,所述软件环境包括电路元件的定义以及用于组合这些元件以便产生由所述表示法如此定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置为生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
现在将参照图8描述在集成电路制造系统处处理集成电路定义数据集以便将该系统配置成制造错误检测电路300和600的示例。
图8示出了集成电路(IC)制造系统802的示例,该集成电路制造系统被配置成制造如本文中的示例中的任一示例中所描述的错误检测电路300和600。具体地说,IC制造系统802包括布局处理系统804和集成电路生成系统806。IC制造系统802被配置成接收IC定义数据集(例如定义如本文中的示例中的任一示例中所描述的错误检测电路300和600),处理IC定义数据集,并且根据IC定义数据集生成IC(例如其体现如本文中的示例中的任一示例中所描述的错误检测电路300和600)。IC定义数据集的处理将IC制造系统1002配置成制造体现如本文中的示例中的任一示例中所描述的错误检测电路300和600的集成电路。
布局处理系统804被配置成接收和处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定要生成的电路的门级表示,例如就逻辑部件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统804确定了电路布局时,它可以将电路布局定义输出到IC生成系统806。电路布局定义可以是例如电路布局描述。
IC生成系统806根据如本领域已知的电路布局定义生成IC。例如,IC生成系统806可以实现生成IC的半导体器件制造工艺,其可以包括光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,其可以在光刻工艺中用于根据电路定义来生成IC。替代性地,提供至IC生成系统806的电路布局定义可以是计算机可读代码的形式,IC生成系统806可以使用该代码形成用于生成IC的适当掩模。
由IC制造系统802执行的不同处理可以全部在一个位置实现,例如,由一方。替代性地,IC制造系统802可以是分布式系统,使得过程中的一些可以在不同位置执行,且可以由不同各方执行。例如,以下阶段中的一些可以在不同位置以及/或者由不同方来执行:(i)合成表示IC定义数据集的RTL代码,以形成待生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩模;以及(iv)使用掩模来制造集成电路。
在其他示例中,在集成电路制造系统处对集成电路定义数据集的处理可以将系统配置成在不处理IC定义数据集以便确定电路布局的情况下制造错误检测电路300或600。例如,集成电路定义数据集可以定义可重新配置的处理器诸如FPGA的的配置,并且对该数据集进行的处理可以将IC制造系统配置成(例如通过将配置数据加载到FPGA)生成具有该定义配置的可重新配置的处理器。
在一些实施方案中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文中所描述的设备。例如,通过集成电路制造定义数据集,以上文参照图8所描述的方式对集成电路制造系统进行配置,可以制造出如本文中所描述的设备。
在一些示例中,集成电路定义数据集可包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图8中所示出的示例中,IC生成系统可由集成电路定义数据集进一步配置成在制造集成电路时根据在集成电路定义数据集处定义的程序代码将固件加载到该集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。
与已知的具体实现相比,在本申请中阐述的概念在设备、装置、模块和/或系统中(以及在本文中所实现的方法中)的具体实现可以引起性能改进。性能改进可包括计算性能提高、等待时间减少、吞吐量增大和/或功耗减小中的一者或多者。在制造这类设备、装置、模块和系统(例如在集成电路中)期间,可在性能提高与物理具体实现之间进行权衡,从而改进制造方法。例如,可在性能改进与布局面积之间进行权衡,从而匹配已知实施方式的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在设备、装置、模块和/或系统的元件之间共享功能块来完成。相反,本申请中所阐述的带来设备、装置、模块和系统的物理具体实现的改进(诸如硅面积减小)的概念可与性能提高进行权衡。这可以例如通过在预定义面积预算内制造模块的多个实例来完成。
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。

Claims (20)

1.一种用于对时钟选通寄存器信号执行循环冗余校验的错误检测电路,所述错误检测电路包括:
第一寄存器;
第二寄存器;
第三寄存器;
校验位计算单元;以及
错误检测模块;
其中所述第一寄存器和所述校验位计算单元被配置成接收同一数据信号(x);
所述第一寄存器是时钟选通寄存器,所述时钟选通寄存器被配置成响应于时钟使能信号而使用所述数据信号(x)来更新,
其中所述校验位计算单元被配置成基于所接收的数据信号(x)来计算校验位(c);
其中所述第二寄存器被配置成使用由所述校验位计算单元计算的所述校验位(c)来更新;
其中所述第三寄存器被配置成使用所述时钟使能信号的当前值(b)来更新;并且
其中所述错误检测模块被配置成接收所述第一寄存器的输出、所述第二寄存器的输出和所述第三寄存器的输出作为输入,并且被进一步配置成基于所述输入来计算指示位(I)。
2.根据权利要求1所述的错误检测电路,其中所述校验位计算单元被配置成通过对所述数据信号(x)的n个位执行XOR归约运算或nXOR归约运算来计算所述校验位。
3.根据权利要求1所述的错误检测电路,其中所述校验位计算单元被配置成通过对所述数据信号(x)的n个位进行nXOR归约或XNOR归约来计算所述校验位。
4.根据权利要求1至3所述的错误检测电路,其中所述校验位是偶校验位或奇校验位。
5.根据权利要求1至4所述的错误检测电路,其中所述第一寄存器被配置成每当所述第一寄存器响应于所述时钟使能信号而被启用时,使用数据信号(x)来更新。
6.根据权利要求1至5所述的错误检测电路,其中所述第二寄存器被配置成使用校验位(c)来更新,而与所述时钟使能信号无关。
7.根据权利要求1至6所述的错误检测电路,其中所述第三寄存器不是时钟选通寄存器,并且被配置成当所述时钟使能信号为高时以1位更新,并且当所述时钟使能信号为低时以0位更新。
8.根据权利要求1至7所述的错误检测电路,其中所述错误检测模块被配置成基于存储在第四寄存器中的有效信号来检测更新所述第一寄存器时的错误。
9.根据权利要求1至8所述的错误检测电路,其中所述错误检测模块被配置成当所述指示位(I)是高值时检测更新所述第一寄存器时的错误。
10.根据权利要求1至9所述的错误检测电路,其中第三寄存器被配置成存储所述当前时钟信号的所述值,并且向所述错误检测电路提供所述输出,从而消除连续假阳性故障。
11.一种对时钟选通寄存器信号执行循环冗余校验的方法,所述方法包括:
将同一数据信号(x)提供给第一寄存器和校验位计算单元;
响应于时钟使能信号而使用数据信号(x)来更新所述第一寄存器;
在所述校验位计算单元处,基于所接收的数据信号(x)来计算校验位(c);
使用由所述校验位计算单元计算的所述校验位(c)来更新第二寄存器;
使用所述时钟使能信号的当前值(b)来更新第三寄存器;以及
在错误检测模块处接收所述第一寄存器的输出、所述第二寄存器的输出和所述第三寄存器的输出作为输入,并且基于所述输入来计算指示位(I)。
12.根据权利要求11所述的方法,其中更新所述第二寄存器包括使用所计算的校验位进行更新,而与所述时钟使能信号是高还是低无关。
13.根据权利要求11或12所述的方法,其中执行更新所述第三寄存器,而与所述时钟使能信号是高还是低无关。
14.根据权利要求13所述的方法,其中所述指示位(I)的计算包括基于存储在第四寄存器中的有效信号来执行计算。
15.根据权利要求11至14所述的方法,其中所述指示位(I)的所述计算包括仅当所述第三寄存器的所述输出指示所述第一寄存器和所述第二寄存器被更新时才产生值。
16.一种方法,所述方法使用集成电路制造系统来制造如权利要求1至10中任一项所述的错误检测电路。
17.计算机可读代码,其被配置成使得在运行所述代码时执行如权利要求11至15中任一项所述的方法。
18.一种计算机可读存储介质,所述计算机可读存储介质上编码有根据权利要求17所述的计算机可读代码。
19.一种集成电路定义数据集,当在集成电路制造系统中被处理时,所述集成电路定义数据集将所述集成电路制造系统配置成制造根据权利要求1至10中任一项所述的错误检测电路。
20.一种非暂时性计算机可读存储介质,其上存储有如权利要求1至10中任一项所述的错误检测电路的计算机可读描述,当在集成电路制造系统中被处理时,所述计算机可读描述使得所述集成电路制造系统制造体现所述图形处理系统的集成电路。
CN202310280321.0A 2022-03-31 2023-03-21 用于对时钟选通寄存器信号执行错误检测的方法和电路 Pending CN116893927A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB2204692.4A GB2617177A (en) 2022-03-31 2022-03-31 Method and circuit for performing error detection on a clock gated register signal
GB2204692.4 2022-03-31
GB2204690.8 2022-03-31

Publications (1)

Publication Number Publication Date
CN116893927A true CN116893927A (zh) 2023-10-17

Family

ID=81580443

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310280321.0A Pending CN116893927A (zh) 2022-03-31 2023-03-21 用于对时钟选通寄存器信号执行错误检测的方法和电路

Country Status (2)

Country Link
CN (1) CN116893927A (zh)
GB (1) GB2617177A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117435426B (zh) * 2023-10-18 2024-05-07 成都观岩科技有限公司 一种芯片内串行数据溢出校验方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6701484B1 (en) * 2000-08-11 2004-03-02 International Business Machines Corporation Register file with delayed parity check
US8365049B2 (en) * 2008-12-15 2013-01-29 Lsi Corporation Soft-error detection for electronic-circuit registers

Also Published As

Publication number Publication date
GB202204692D0 (en) 2022-05-18
GB2617177A (en) 2023-10-04

Similar Documents

Publication Publication Date Title
US10230402B2 (en) Data processing apparatus
CN111275605B (zh) 缓冲器检查器
EP3239834B1 (en) Verification of hardware designs to implement floating point power functions
US11782806B2 (en) Workload repetition redundancy
US8516356B2 (en) Real-time error detection by inverse processing
GB2583333A (en) Verification of hardware design for an integrated circuit that implements a function that is polynomial in one or more input variables
US11829694B2 (en) Verification of hardware design for component that evaluates an algebraic expression using decomposition and recombination
CN116893927A (zh) 用于对时钟选通寄存器信号执行错误检测的方法和电路
US20230384374A1 (en) Method and circuit for performing error detection on a clock gated register signal
US11940866B2 (en) Verifying processing logic of a graphics processing unit
CN116893926A (zh) 用于对时钟选通寄存器信号执行错误检测的方法和电路
US20130297667A1 (en) OSBS subtractor Accelerator
US8539403B2 (en) Reducing observability of memory elements in circuits
Ichihara et al. State assignment for fault tolerant stochastic computing with linear finite state machines
US20240231981A1 (en) Verifying processing logic of a graphics processing unit
US11620178B1 (en) Fault detection
CN117811592A (zh) 针对触发器的单粒子翻转纠错方法、装置和设备
US9298420B2 (en) Identification of the bit position of a selected instance of a particular bit value in a binary bit string
GB2599929A (en) Verification of hardware design for an integrated circuit that implements a function that is polynomial in one or more sub-functions
Saha et al. A fault tolerant test hardware for L1 cache module in tile CMPs architecture
CN114625577A (zh) 在处理系统中处理任务
Garcia et al. RAPTOR-Design: Refactorable Architecture Processor to Optimize Recurrent Design

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication