基于门级网表的硬件木马检测技术

在这里插入图片描述
在这里插入图片描述
功能修改类木马能够通过增加额外的逻辑电路(增加或减少晶体管、逻辑门等器件)改变芯片的功能。这种硬件木马是最具有威胁性的,对于修改晶体管类型的木马电路在版图提取电路时检测,修改逻辑门等单元的木马电路是本文的研究内容。

同时现在基于旁路分析的硬件木马检测方法也较为成熟,攻击者会尽可能地使硬件木马处于休眠状态,只有在特定条件或状态下才会被激活,也就是说木马电路都具有较大的隐秘性和低触发几率[44],木马通常会被设计为大部分时间里都是处于未激活状态的,相对于宿主有着较小的尺寸,且尽可能不对宿主的设计特性产生影响。上述因素表明,硬件木马有极大可能被连接到低可控性或者低可观察性的节点上,这些节点均被认为是可疑信号。

在这里插入图片描述
在版图图像重点检测对象为参数型的木马,这是因为在完成版图设计后芯片的核心利用率一般超过 95%,任何额外插入的电路都会对电路造成较大的影响[45]。在具有原版图的情况下,只需对两个版图的对比,不一致的地方就认为是可疑的,需要进行仔细分析;而在没有原版图时,可以借鉴芯片失效分析[46]和 DRC 检测的方法,对版图图像中金属线宽度、金属线的间距进行自动化的检测[45],不符合规则的地方则认为有可能是硬件木马。
在电路提取时根据是模拟模块还是数字模块分别完成晶体管级网表和门级网表的提取,一般模拟电路规模较小,可以由经验丰富的人员对整体电路的功能进行分析,确认电路中是否符合电路的原有功能,如果有可疑电路则可以通过进一步的仿真确认。
如果木马电路是在数字模块设计的 RTL阶段或门级网表上插入到 MCU、DSP、大量随机逻辑单元等模块中的,就只能在门级网表上进行检测,这就需要进一步对门级网表的特征进行分析,然后根据木马电路的特征,通过特征匹配的方式查找出门级网表中的可疑电路或信号,最后通过对可疑电路的分析、仿真等手段确认其是否为木马电路。
一般集成电路可以分为数据通路、控制通路、时钟网络和复位网络[47],时钟网络和复位网络相对独立,一般仅在网络的根节点(时序单元)会和数据通路或控制通路发生交汇,因此在对可疑电路结构检测时可以对时钟网络和复位网络单独进行,而数据通路和控制通路通常混合在一起,可以将这两者合并为一个逻辑网络进行检测。

时钟及复位网络逻辑操作电路

复位网络通常较简单,一般在物理设计会被插入反相器和缓冲器用于增加驱
动,很少有逻辑操作,除非芯片本身有特殊需要,因此如果复位网络中存在有任何的逻辑操作,都应认为是可疑的,并通过进一步分析确定其是否为木马电路。
时钟网络为了保证电路获得较小的时钟偏差,相对于复位网络会被插入更多的反相器和缓冲器,但其本身同样很少有逻辑操作,一般可能会存在门控时钟、时钟切换电路、分频电路等会对时钟产生逻辑操作,但其电路结构都相对简单,一般结构如图 3-1 所示,因此所有的对时钟网络的逻辑操作都认为是可疑的,均需要分析其是否符合原电路的设计。
在这里插入图片描述
在《芯片设计进阶之路——低功耗深入理解一》中我们介绍过,芯片功耗组成中,有高达40%甚至更多是由时钟树消耗掉的。这个结果的原因也很直观,因为这些时钟树在系统中具有最高的切换频率,而且有很多时钟buffer,而且为了最小化时钟延时,它们通常具有很高的驱动强度。此外,即使输入和输出保持不变,接收时钟的触发器也会消耗一定的功耗。而且这些功耗主要是动态功耗。

那么减少时钟网络的功耗消耗,最直接的办法就是如果不需要时钟的时候,就把时钟关掉。这种方法就是大家熟悉的门控时钟:clock gating。(大家电路图中看到的CG cell就是门控时钟了)。

参考:芯片设计进阶之路——门控时钟
基于门级网表的硬件木马检测技术研究

在这里插入图片描述
Propagation Delay(传播延迟)
在这里插入图片描述

Slew:在静态时序分析中,使用transition time来测量波形上升或下降的快慢(slew rate),也就是信号在两个电平之间转换所花费的时间。transition time是slew rate的倒数。
transition time的阈值设置也可以是20%80%或者10%90%。
在这里插入图片描述
Skew(偏移)
Skew是两个或多个时钟信号之间的时间差。 例如,如果时钟树有500个端(endpoints),并且Skew为50ps,则表示最长时钟路径和最短时钟路径之间的时间差为50ps。
在这里插入图片描述
时钟树的起点(beginning point)通常是时钟定义点。 时钟树的终点(end points)通常是同步元件,例如触发器的时钟端。Clock latency(时钟延迟)是从时钟源到终点的总时间。 Clock skew是时钟树到达不同终点的时间差。理想的时钟树(ideal clock tree)假设时钟源具有无限驱动(infinite drive)能力,也就是说,时钟可以无延迟地驱动无限多的单元。 另外,假定时钟树中存在的任何单元也具有零延迟。
在逻辑综合阶段, STA通常以理想的时钟路径执行,分析的重点放在数据路径上。在逻辑综合阶段, STA通常以理想的时钟路径执行,分析的重点放在数据路径上。

是否可以在clock tree 上 插入delay cell?

delay cell 不能用在时钟树上大概有以下的原因:
1> delay cell 的 rise transition time 和 fall transition time偏差较大。做CTS时skew不好控制,所以不用。rising和falling差的太远,所以clock的duty不好。对于有ddr接口的时钟,或者上沿下沿都要用的时钟,是非常不好的。
2> delay受工艺的影响比较大,会比较不好控制。但是并不是真的由于工艺的问题,主要是由于delay cell对于transition的容忍度很差,可以去看看delay cell的二维查找表就会发现,随着transitIon和output load的变化,整个delay的变化是很剧烈的。 所以如果用了delay cell,那么max和Min下,我们会发现很多路径setup和hold(同一条路径),算上ocv的话,很难收敛。因为clock path上的变化居然会很大。(所以我们会在做clock tree时候,禁用delay cell)
说道这里,有一句题外话,为什么会有clk buff和clk inv。因为我们需要的clock tree 网络的结果应该是这样的,高驱动,对transiton容忍度高。这样的好处是,不管你ocv以及transiton如何变化,只要范围比较小,那么我们会发现整个clock tree上的delay是差不太多的。这可以算是一个稳定的时钟树结构,所以我们可以观察一下clock buffer和clock inv的二维查找表,会发现,他是符合这些特征的。

对于一个新的设计,综合的网表送给后端之后,layout需要做的一个重要步骤就是CTS(clock tree 生成),对于简单的时钟,工具能够很容易应对,但如果时钟关系比较多,比如中间有很多gate clock,那么CTS生成的tree质量就不是那么好了,这时候比较容易产生hold,所以CTS之后都要检查clock的skew,如果太大只能重建CTS。

在进行STA分析的时候,一般是先解决setup问题,后解决hold问题,hold问题解决完的时候一般都是到了要tapout的时候了,最后一段时间如果发现有hold问题,一般会选择在满足setup的情况下将数据往后推,只有万不得已的情况下才会选择动时钟,因为时钟改变不仅影响本级DFF的时序,还会影响下一级DFF的时序。

回答你的一个问题,“难道library 里的Dff 都默认hold time < clk to Q delay ?”
这个答案一般是成立的,比如使用 standard cell搭建一个移位寄存器链,一般情况下,是不需要在两个DFF之间插入额外的cell来保证hold,只要CTS做的比较balance,就不会有问题。(有个别的厂家,e.g. UMC,提供的库是做不到这一点的,需要在DFF之间插入DEL cell将data推迟来保证hold,这样的并不多见)

STA分析

STA分析是基于同步电路设计模型的,在数据输入端,假设外部也是同时钟的寄存器的输出并且经过若干组合逻辑进入本级,而输出也被认为是驱动后一级的同时钟的寄存器。在不设置约束的情况下,纯组合逻辑的输入->输出不得超过一个T,否则也会被认为是Timing violation.

  1. Timing path
    Timing path就是时间线。Timing就是从起始位置的时间点到终点位置的时间点之间的时间长度。Path是指跟位置相关,即时间起始或终点的位置。Timing path就是某位置的某一时间点到另一位置的某个时间点。
    对于DFF来说,上升沿类似于一瞬间的脉冲,只有在这短短的一瞬间,数据才允许通过。对于DFF来说,有两个输入点:数据D和时钟CK,有一个输出点:数据Q。由于是时间比较,所以对于D和CK一定要有一个共同的起始时间点。
    在这里插入图片描述
    如上图中的A点出现clk上升沿的时刻。如下图,假设我们分析DFF2的数据和时钟到达的时间。二者共同的出发点是A的上升沿,因为A位于时钟通路上,FF1的时钟经过A点到达FF1-C点,在FF1-C上升沿打开FF1,然后数据才能从FF1-Q输出,进而传递到FF2-D。在A点, FF2的时钟沿经过clock tree,达到FF2-C点。所以数据走过的路程是:
    Data path: A->clk_tree_buf1->FF1-C -> FF1-Q -> Comb_logic -> B
    而对于FF2来说只要满足下个周期的上升沿能够采样即可,所以时钟到达FF2-C的路径是:
    Clk path: A -> clk_tree_buf2-> C.

  2. 什么是建立时间和保持时间?
    对于某个DFF来说,建立时间和保持时间可以认为是此器件固有的属性。有关DFF的内部结构及setup和hold时间对应的逻辑门会在其他文章中进行细致描述。
    在理想情况下,只要在时钟沿来临时,有效数据也来临(时钟沿之前或同时),则能够正确采集到数据;而在时钟沿之后(或同时),即使数据发生变化,也不会影响DFF的输出了。然而在实际中,上升沿打开开关需要时间,逻辑门的状态改变(电容充放电等)都需要时间,因此数据的采集是需要一定时间的,在这个时间内数据不能发生变化。上升沿时候开关关闭也需要时间,如果在这个时间段内数据有变化的话,那么新数据就有可能被传递到下一级,进而发生错误,所以数据必须保持一定时间不变。(细节部分可以参考DFF的内部结构)。
    总而言之在DFF的输入端口上看,
    在clk上升沿来之前,数据必须提前一个最小时间量“预先准备好”,这个最小时间量就是建立时间;
    在clk上升沿来之后,数据必须保持一个最小时间量“不能变化”,这个最小时间量就是保持时间。
    在这里插入图片描述
    3. 建立和保持时间要求、及其公式
    满足建立和保持时间要求,电路状态改变就是正确的,电路功能就不会发生错误;如果不满足,电容就没有足够的时间充放电,造输出点的电平可能既非0也非1,造成“亚稳态“输出。如果前级驱动够强劲,电路就能按照趋势变化下去,一定时间后该点的值就会变化为“正确值”,如果驱动不够强劲,电路就会恢复之前的值,最终得到何值是不可控的,所以我们要避免亚稳态。在使用DFF时,必须满足其建立时间和保持时间的要求。
    亚稳态是指触发器无法在某个规定的时间段内到达一个可以确认的状态。即:如果触发器的输入电压采样时间过短,则触发器需要花很长时间来实现输出逻辑达到标准电平,在这段时间里输出端在高低电平之间处于振荡状态,而不是等于理想输出值。也就是说,电路处于中间态的时间变长,使得电路“反应”迟钝,这就是“亚稳态”。(例如输入信号在时钟有效沿的建立时间和保持时间之间改变了,导致不满足触发器的建立时间或保持时间,导致输出有一段时间的不稳定态,就是亚稳态。)
    在这里插入图片描述
    所有的数字器件(如FPGA)中的寄存器都定义了一个信号时序要求,满足这一要求的寄存器才能在输入端捕获数据在输出端输出数据。为了确保可靠的操作,寄存器输入端的数据必须在时钟上升沿到来之间保持一个最小的稳定时间(寄存器的建立时间 tsu)以及在时钟沿之后保持一个最短时间(寄存器保持时间tH)。**寄存器在经过一定得时钟到输出延迟(tco)之后输出有效。**如果信号传输违反了tsu以及tH的要求,寄存器的输出很可能会进入亚稳态的状态。
    意思就是说触发器在时钟上升沿到来采样的时候数据必须在一个时间窗口内保持稳定,才能正确的被采样。如果违反就不能正常输出结果甚至不能输出一个确定的结果。

参考:STA概念浅析之Propagation delay、slew、skew和latency
老大们,请教问题(QUARTUS里面的Clock skew>data delay)
[求助] 请教关于clock tree为啥不能插入delay cell
[求助] 对老生常谈的话题hold time violation的个人理解还有疑惑
Setup 和Hold (建立时间和保持时间)解析
亚稳态的概念
亚稳态专题(亚稳态的概念、亚稳态的产生、亚稳态的后果、以及如何避免亚稳态)
跨时钟域同步,为什么两级寄存器结构能够降低亚稳态?

数字电路中的一些电路结构处理

参考:[求助] 关于施密特触发器的问题求助
为什么有的施密特触发器要在Mpf 和Mn 处加入一个电阻 如图所示。这个电阻有什么作用,一般设计的时候给多大的阻值?
这个电路是应用在IO中吗? 不是 就是reset中,
电流小,翻转迟滞的阈值应该小了esd限流

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值