APP下载

数字集成电路仿真中不定态的消除方法

2014-05-25刘林海

计算机与网络 2014年2期
关键词:仿真器冒险时序

刘林海 张 勇 曾 明

(中国电子科技集团公司第五十四研究所 河北 石家庄 050081)

数字集成电路仿真中不定态的消除方法

刘林海 张 勇 曾 明

(中国电子科技集团公司第五十四研究所 河北 石家庄 050081)

为了解决在仿真时由于不定态的传播、扩散导致的仿真失败的情况,首先介绍了不定态产生的原因,之后分析了仿真器对不定态的传播,进而提出了在RTL级以及门级阶段消除不定态的方法,最后结合工程实践,介绍了利用VCS仿真工具在门级仿真过程中消除不定态的实现过程。实践结果表明,合理运用该方法,可以在保证电路工作正常的前提下,确保门级仿真的顺利进行,故具有重要的参考价值。

不定态 门级仿真 初始化 时序冒险

1 引言

硬件描述语言(HDL)定义一个信号至少具有4种状态,分别是0,1,x和z。其中x表示一种不确定状态[1](既可能为0,也可能为1)。在电路仿真尤其是门级仿真过程中,经常遇到不定态产生并传播和扩散,从而导致仿真失败的情况。为了在仿真时去除不定态,使仿真顺利进行,需要从不定态产生的实际电路机理入手,对仿真时不定态产生的原因以及传播机制进行分析,从而找到有效去除不定态的方法。

2 不定态产生的原因

硬件描述语言尽量描述数字电路的实际行为,其中1表示被电源直接驱动,0表示被地直接驱动,z表示没有驱动源,而x则表示状态不确定。产生不定态的原因[2,3]主要有3种:①多驱动源驱动同一节点;②时序器件(触发器,锁存器,随机存储器)未初始化;③仿真器检测到时序器件上的时序冒险。仿真中出现的不定态,主要由②和③两种情形构成。

数字集成电路中的时序器件主要有锁存器(latch)、触发器(filp-flop)和同步存储器(SRAM)组成,他们的核心单元都是双稳逻辑,在上电过程中存在竞争现象[4]。如图1所示,2个与非门哪一个先输出0是不确定的,而先输出0的与非门决定了另一个与非门的状态。因此未经过初始化的双稳逻辑在上电后其输出值是不确定的。

图1 双稳逻辑示意图

为模拟实际情况,仿真器在仿真初始时使所有时序器件的输出为不定态。通过初始化(复位触发器或者写RAM的所有单元),可以有效消除不定态,但是无法初始化的时序器件,将维持不定态直到电路开始工作,如果这些不定态被传播,将导致仿真失败。

时序冒险也可能导致不定态的产生[5]。当触发器或锁存器进行数据采样时,数据处于不稳定状态,就会发生时序冒险。时序冒险导致时序器件的输出端口出现亚稳态,而亚稳态受电源噪声的影响会发生衰变,随机的进入稳定状态。由于RTL较少使用时延和时序检查,所以RTL仿真时一般不存在时序冒险[6]。在门级仿真时采用反向标注时间信息的技术,可以在门级单元中引入精确延时和时序检查。如果在时序器件的采样时间窗口,输入数据发生翻转,仿真器即发出警告信息,并将时序器件的输出值置为不定态。同步电路中的时序违反,或2个异步时钟域之间的数据传递,都会导致时序冒险,从而在门级仿真过程中出现不定态[7]。

仿真器基于实际电路对不定态进行模拟。但是对于实际电路而言,无论是否是不定态,某一个节点在某一时刻的逻辑其实是确定的,就像落地后的硬币必然有确定的一面向上一样;而仿真器中的不定态描述的是该节点的逻辑可能性,就像是落地后的硬币某一面朝上的概率一样。因此,仿真器对不定态的模拟,一定是比实际更加悲观。

3 对仿真器传播不定态的分析

在RTL仿真时,采用抑制不定态的电路描述方式能够避免不定态的传播,可以使仿真顺利进行[3]。考虑以下RTL代码和其对应的真值表,当条件cond为不定态时,y值为b,如果b的值是确定的,那么cond的不定态就在传播中被消除了,RTL仿真的真值表如表1所示。

表1 RTL仿真的真值表

描述方法对应的实际电路如图2所示。实际电路在工作时,如果a不等于b,那么y的值为不确定(参见表2)。门级仿真则接近实际电路的行为,但是更加悲观。只有a=0,b=0时,门级仿真才能够阻止不定态的传播。

图2 与或门电路结构

表2 实际电路/门级仿真的真值表

因此,以2选1的逻辑为例,当选择端为不定态,而2个数据输入端为确定态时,实际电路输出不定态的概率为50%,RTL级仿真时为0%,门级仿真时为75%。

4 不定态的消除

在仿真时引入不定态,可以描述电路因初始态不确定或时序冒险导致的功能错误。RTL仿真消除了很大一部分不定态的传播,因此仿真往往能够顺利进行。门级仿真则因为悲观的传播方式而失败,因此必须要通过各种方法来消除掉仿真中的不定态[8]。

4.1 未初始化不定态的消除

如果不定态的产生是由未初始化的时序器件引起,那么最简单的办法是修改RTL代码,增加初始化逻辑。但是这样做不仅会导致设计周期的延长,并且使电路资源无法达到最优[9]。

另外的方法是去除仿真器中相对实际电路的悲观性,即强制仿真器不要模拟逻辑可能性,而是模拟某一次上电稳定后的状态,就从仿真器中消除了因为未初始化的时序器件导致的不定态。这样做的问题是需要确保验证完备性,模拟所有可能的初始状态。如果未初始化的时序逻辑单元有32个,那么仿真需要进行232=4,294,967,296次,显然是不现实的。一种修正的方法是分析未初始的时序逻辑及其下游逻辑是否为积分型逻辑,如图3所示。

图3 积分型逻辑示意图

对于确定的积分型逻辑,必须进行完备的仿真或是直接修改源代码,而对于非积分型电路逻辑,电路的状态只与当前输入有关,只要输入逻辑确定,电路的不定态自然就会消除,因此仿真时无需考虑初始状态的完备性,只要简单进行初始状态的仿真即可。

4.2 时序冒险不定态的消除

如果不定态由时序冒险产生,则首先判断产生点是否在时钟域边界。如果不是,而且仿真时的时钟频率又没有超过设计指标,就说明存在时序违反,应当重新优化电路[10]。

如果产生点处于时钟域边界,而且2个时钟是异步的,那么时序冒险必然产生。此时应当分析接收数据的时钟域是否使用了同步器,没有同步器会导致实际电路随机失效。这种情况下仿真器产生不定态就是合理的,唯一的解决方法就是修改电路。如果已经采用了同步器电路,那么时序冒险产生的亚稳态能够被同步器消除,无法继续传播,也就不会产生不定态,在仿真中是可以通过强制仿真器来消除不定态的[5]。

图4 同步器电路

总之,可以通过修改RTL设计或者强制仿真器消除不定态。资源不敏感的设计,应当尽量在设计阶段解决潜在问题,而使用强制仿真器处理未初始化时序器件的不定态,存在一定潜在的风险,但是能进一步优化资源。对于采用了同步器的异步时钟之间的时序冒险,则强制仿真器消除不定态是很好的方法。

5 消除不定态的工程实践

在某SoC设计中,使用了包括微处理器内核的大量复杂IP模块,并包含多个异步时钟。仿真工具使用Synopsys公司的VCS MX,AHB主机总线信号正常翻转,RTL仿真能够顺利进行;但是门级仿真进行到4.5 μs后,AHB主机的地址总线信号HADDR由0xfd8变为了不定态,没有进行正常的地址跳转,译码器及从机将无法获得正确的地址信息;字节选通信号HBRSTB由0xff变为不定态,从机将无法正常获取数据总线数据;突发类型信号HBURST由0x3变为不定态,从机将无法判定下一传输是否为突发传输;传输类型信号HTRANS则由0x2变为不定态,从机将无法判定下一传输是否连续、是否空闲;读写信号HWRITE也由低电平变为不定态,导致从机无法判断下一传输的读写类别;由于AHB总线的这些异常行为,AHB主机无法正常发起读写操作,从机也无法回应正常的响应信号,读数据总线HRDATA、传输完成信号HREADY和传输响应信号HRESP均转变为不定态,功能仿真无法继续进行,门级仿真失败。

经分析是AHB主机内部的一些触发器没有被复位,因此仿真开始时会输出一段不定态,随后才能够进入正常状态。由于门级仿真的悲观性,这些不定态在传播过程中扩散,导致全部电路处于不定态。而实际上,总线状态没有记忆效应,只与主机的当前状态有关,当主机进入正常状态时,总线上所有其他外设都应当正常工作,因此可以采用强制复位的方法消除不定态。

VCS MX中强制某仿真节点为特定值的指令为force,其选项-deposit用于设置信号为固定值直到该信号发生翻转。使用的部分force指令如下:

使用force deposit指令初始化寄存器后,AHB主机的总线信号在4.5 μs后均正常翻转,地址总线HADDR由0xfd8跳转到0x28;字节选通信号HBSTRB由0xff转变为0x0f;突发类型信号HBURST信号保持0x3不变;传输类型信号HTRANS由0x2变为0x3;读写信号HWRITE维持低电平,以上信息表明下一时刻总线将发起一次读传输;下一时钟周期的从机响应信号均正常翻转,传输完成信号HREADY维持高电平,读数据总线HRDATA数据为0xE1500005E2460C01和传输响应信号HRESP维持0x0不变,表明读传输正常完成,读数据为0x E2460C01,门级仿真顺利进行。

对于异步时钟,使用的部分force指令如下:

该SoC芯片目前已顺利通过实验室长期运行测试,峰值处理能力达到400 MIPS,在其上运行linux操作系统及视频解码,图像清晰流畅。

6 结束语

由于门级仿真的特点,在仿真中经常会产生不合理的不定态,使得仿真无法顺利进行,因此消除不合理的不定态是门级仿真中的重要步骤。深入了解不定态的产生、传播机理,有助于使用合理的方法消除不定态,使得仿真顺利进行。避免不合理不定态对仿真的干扰,才能够更加有效地通过仿真发现可能存在的真正问题,从而提高设计质量,并且能够有效地提高设计效率,缩短设计周期。

[1](美)UYEMURA J P.超大规模集成电路与系统导论[M].周润德,译.北京:电子工业出版社,2004.

[2](美)SHARMA A K.先进半导体存储器[M].曾莹等,译.北京:电子工业出版社,2005.

[3]MILLS D,CUMMINGS E C.RTL Coding Styles That Yield Simulation and Synthesis Mismatches[M].Boston SNUG,1999

[4]TURPIN M.The Dangers of Living with an X(bugs hidden in your Verilog)[M].ARM Ltd,2003.

[5]BENING L.A Two-State Methodology for RTL Logic Simulation[C]//In Proceeding of 36th Design Automation Conference(DAC),1999:672-677.

[6]KEATING M,BRICAUD P.Reuse Methodology Manual for System-On-Chip Design.[M].Academic Publishers,2000.

[7]FITZPATRICK T.Verilog Modeling Style Guide for the Cobra Cycle Simulator[J].Cadence Design Systems, Chelmsford,1998:11-12.

[8]MCGEER P C,MCMILLAN K L,SALDANHA A,et al.Fast Discrete Function Evaluation using Decision Diagrams[J].IEEE ICCAD-95,1995:402-407.

[9]YIM J S,HWANG Y H,PARK C J,et al.A C-based RTL Design Verification Methodology for Complex Microprocessor[C]//DAC'97 Proceedings of the 34th annual Design Automation Conference,1997:83-88.

[10]TAYLOR S,QUINN M,BROWN D,et al.Functional Verification of A Multiple-Issue out-of-Order,Superscalar Alpha Processor–the DEC Alpha 21264 microprocessor[C] //DAC'98 Proceedings of the 35th annual Design Automation Conference,1998:638-643.

Elimination Method of Uncertain State in Digital IC Simulation

LIU Lin-hai ZHANG Yong ZENG Ming
(The 54th Research Institute of CETC,Shijiazhuang Hebei 050081,China)

To resolve the simulation failure caused by the propagation of uncertain state,the reason of uncertain state is introduced firstly.And the method of eliminating uncertain state in the RTL simulation and gate-level simulation is put forward based on analysis of uncertain states propagation.Lastly,combining with the engineering practice,the detailed implementation of this approach by using VCS simulator is introduced.The experimental results show that this method can make the gate-level simulation be implemented successfully when the circuit operating normally and it has significant reference value.

uncertain state;gate-level simulation;initialization;timing risk

TP391

A

1008-1739(2014)02-58-4

定稿日期:2013-12-26

猜你喜欢

仿真器冒险时序
基于Sentinel-2时序NDVI的麦冬识别研究
AI仿真器将大大提高科学领域的仿真模拟速度
基于多用户无线仿真器系统的研究
基于FPGA 的时序信号光纤传输系统
在冒险中成长——《壁橱里的冒险》
一种毫米波放大器时序直流电源的设计
狡猾是一种冒险
等一下,冒险还没结束哦!
DPBUS时序及其设定方法
天文测量仿真器模拟星图精度分析