在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5638|回复: 7

[原创] 不可忽视的verilog零延迟

[复制链接]
发表于 2018-3-15 21:27:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
这是IC君的第25篇原创文章(同步于公众号 icstudy )

Verilog HDL 是目前中国IC设计里最流行的硬件描述语言,做这一行的或多或少都会接触过。


在数字IC设计里面,我们常用Verilog来做两类任务,一类是设计:用来描述能实现规范指定的电路功能,这类代码是可综合的verilog代码,最终目的是要综合成门级netlist,拿去做Layout,产出芯片;


另外就是用来验证电路的:建立电路仿真平台,用来验证我们设定的电路是否符合规范要求,比如产生电路激励信号、打印一些信息供debug等,即我们常说的testbench。


在testbench里面我们通常会加一些延迟来描述信号发生的先后顺序,但可综合的电路里面则通常不会加延迟。这些不加延迟的电路,在仿真的时候波形里显示的输出信号在输入信号发生变化时立即随之变化,没有任何的延迟。


但实际上所有可综合代码都是可以映射成门级电路,是有延迟的。只是在没有综合成实际电路之前,我们不知道延迟是多少而已。为了描述没有定义延迟的电路信号发生先后顺序,verilog HDL里面引入了0延迟的概念,如果写了#0就称之为显性0延迟,如果什么都没写则为隐性0延迟。


如果不了解verilog 0延迟的概念,在看时序电路的波形时,就容易搞不清楚信号的传输是否正确。比如下面图1,信号a_in是用clk 采样生成的,a_in被clk 采样后再得到信号b_out,

那么a_in 由0变为1时,A时刻clk 采到的a_in是0,还是1呢?

b_out正确的输出波形应该是图2还是图3呢?

图1 时序电路波形( b_out 是clk直接采样 a_in得到)

图1 时序电路波形( b_out 是clk直接采样 a_in得到)

图1 时序电路波形( b_out 是clk直接采样 a_in得到)


2.jpg

图2 时序电路波形 b_out 波形一

3.jpg

图3 时序电路波形 b_out 波形二


如果你有了解verilog 0延迟的概念,你就可以把这里的0想象成一个具体的概念,无限接近0但比0大的数,比如0.1或更小,这样你很快就可以画出类似图4的波形。

4.jpg

图4 带有延迟的时序电路波形

因为a_in 是经过clk采样的,在A时刻a_in 由0变1是发生在clk上升沿的后面,所以在A时刻clk抓到的是a_in的低电平,在B时刻抓到的是a_in的高电平。


0延迟的概念也适用组合电路,不过一般来说,组合电路不太容易被困扰到。


如果你已经了解了verilog 0延迟的概念,下面的testbench例子发生的错误也适用0延迟来解释。你知道如何修正吗?

5.jpg


以下是testbench:

6.jpg

发表于 2018-3-16 21:42:04 | 显示全部楼层
正在学习Verilog,自己感觉好难啊
发表于 2018-3-17 22:18:48 | 显示全部楼层
不好意思,我要泼冷水,这个所谓“0延迟”的概念简直是子虚乌有,或者说画蛇添足,a_in和b_out都同步于clk,其时序结果是显而易见的,这是数字电路中最基本的同步逻辑时序分析,如果这都搞不清楚,别说写可综合的代码了,应该回炉重造!
发表于 2018-3-17 23:51:10 | 显示全部楼层
同意 3#,建议楼主把SETUPHOLD也画图上
发表于 2018-3-18 22:59:31 | 显示全部楼层
thanks
发表于 2018-3-19 09:26:27 | 显示全部楼层
回复 3# glace12123

delta-delay显然是有意义的只要了解下event queue就不会这样讲了
注意:Verilog/SV不仅用于描述电路,还要能用软件正确的仿真/模拟硬件的并行特性
发表于 2018-3-19 22:04:13 | 显示全部楼层
回复 6# ID2007

我是从具备数字电路基础来谈写代码、分析时序,你是从纯仿真软件的思维来描述如何构成真实的数字电路逻辑,出发点不一致。而且在真实的同步数字电路中,楼主所描述的“0延迟”,是从clk边沿到Q端输出延迟,行业标准叫做Tco (delay time from clock edge to stable output),这个完全是根据触发器自身特性来的,也就是你所谓的“真实的硬件特性”,数字电路书上是有详细描述的,掌握了这个基本数字电路概念,难道还需要拿着所谓一些仿真软件概念去理解数字电路时序吗? 我个人觉得还是不要本末倒置。
发表于 7 天前 | 显示全部楼层
学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 07:00 , Processed in 0.020664 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表