IC验证中的EDA仿真(二)-Verilog HDL仿真中的时序

上一篇的文章中,我们介绍了作为一名前端IC设计人员,在日常工作中使用的EDA仿真工具的种类,以及要进行的功能仿真的类型。在文章中,我们讲到在RTL仿真阶段,认为数据是在一种理想状态下进行传输的,即信号在传输过程中没有延时,并且数字信号从0-1或者1-0的跳变过程,可以在瞬间完成。它的优点是仿真速度快,但是因为数据传输条件是理想状态,所以可靠性略差。但并不是说Verilog HDL仿真就完全无视时序的影响,今天我们就来聊一聊,Verilog HDL仿真过程中的时序。

IC验证中的EDA仿真(二)-Verilog HDL仿真中的时序

Verilog HDL仿真中的时序分类

在Verilog HDL仿真中,对于时序的描述,通常有以下两种方式:

  1. 直接的延时语句描述;
  2. 间接的条件语句描述。

直接的延时描述语句,是指可以使用“# delay”的结构进行描述。例如,如果要表示在1个时间单位之后,才能执行仿真中的语句,可以直接使用“#1”进行描述。这种描述方式,使用起来十分方便简单,但是功能性也较弱。

除了上面的描述方法之外,我们也可以使用"#min_delay:typical_delay:max_delay"的语句进行描述。语句中的min_delay表示最小延时,typical_delay表示典型延时,max_delay表示最大延时。当我们使用这种描述语句时,需要在仿真启动命令中,添加相应的类型选择命令,它们分别是 +mindelays,+typedelays,maxdelays(不同仿真器对应的命令可能略有差异)。例如,“#1:2:3”表示最小的延时是1个时间单位,典型延时是2个时间单位,最大的延时是3个延时单位。

需要解释的是,上面的延时都指的是多少个时间单位的延时,并不是真实的具体延时值。在Verilog HDL中,一般使用“timescale”来表示时间单位和时间精度。其使用语法为“`timescale time1/time2”,其中time1指的是时间单位,time2指的是时间精度。例如“`timescale 10ns/10ps”表示时间单位是10ns,计算时间的精度为10ps。

通常情况下,我们在仿真阶段设置的单位时间,是为了控制仿真的进程,并不表示仿真对象实际的运行时间。所以为了更好的控制仿真,需要在了解上面的参数和仿真频率之间关系的基础上,再完成设定。

IC验证中的EDA仿真(二)-Verilog HDL仿真中的时序

除了以上直接用数字表示延时的方式之外,经常使用的还包括间接的条件语句描述方式。

间接的条件语句描述方式是指使用“@触发条件”的方式,进行时序控制。常用的触发条件有以下三种:

  1. 某信号状态的翻转(0->1或者1->0);
  2. 某时钟信号的边沿翻转(包括正沿和负沿的翻转);
  3. 用Verilog HDL描述的一个较复杂的行为状态变化。

对于以上条件的理解,可以参照逻辑设计过程中的always@(敏感变量列表)语句,上面给出的触发条件都只是敏感变量列表的一种。例如在设计时序逻辑时常用的语句always@(posedge clk)等等。

需要解释的是,第三种触发条件的构造,本身有一定的复杂度,通常使用在debug的过程中。当我们已经知道问题的触发条件之后,可以自己构造出这样一个条件,来加快定位问题的速度。

IC验证中的EDA仿真(二)-Verilog HDL仿真中的时序

小结

今天我们介绍了仿真中添加时序的两种方式。两者之间,没有好坏之分,在使用的过程中,可以根据实际的需要,灵活选择使用。

在实际工作过程中,我们还经常遇到标准延时时序(SDF)以及晶体管时序等问题,它们的情况又是怎样的呢?请继续关注我后续的文章。

展开阅读全文

页面更新:2024-04-22

标签:时序   变量   精度   语句   最小   信号   敏感   典型   命令   状态   条件   单位   方式   时间   文章   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top