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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7461|回复: 24

[求助] icg在pre_sim的网表仿真中出现x的原因?

[复制链接]
发表于 2021-12-19 15:18:08 | 显示全部楼层 |阅读模式
4资产
大家好,求助个问题,在仿真网表的时候,clock gate中有个latch,latch的所有输入没有x,而输出会有x,请问具体的深层原因是什么?请大神指教。

最佳答案

查看完整内容

初始的时候应该没有timing violation。应该是primitive latch的Verilog model有漏洞,造成了初始时G2内部latch信号int_res_iq变成X。 附上前面贴过的primitive latch Verilog model,和C家的比较一下,就比较容易看出问题了。第一列v对应的只有1或x, 没有0! 再结合前面贴过的waveform,一起分析一下。 在t=20 (100fs) 的时候,G2 int_res_prectrl 发生 0->1 变化, primitive latch的输入变为v=0, clk=1, d=0。 这个组合在pr ...
发表于 2021-12-19 15:18:09 | 显示全部楼层


赵旭东 发表于 2022-1-28 03:52
你好,它附近的代码是这样子的,如下面的几个图。


初始的时候应该没有timing violation。应该是primitive latch的Verilog model有漏洞,造成了初始时G2内部latch信号int_res_iq变成X。
附上前面贴过的primitive latch Verilog model,和C家的比较一下,就比较容易看出问题了。第一列v对应的只有1或x, 没有0!  
再结合前面贴过的waveform,一起分析一下。
在t=20 (100fs) 的时候,G2 int_res_prectrl 发生 0->1 变化, primitive latch的输入变为v=0, clk=1, d=0。 这个组合在primitive latch的表中是不存在的。 根据Verilog LRM (IEEE1364-2005, 109页),仿真时如果出现表中不存在的输入组合时,primitive的输出变为X。

Picture1.png
Picture2.png
Picture3.png
发表于 2021-12-19 22:43:31 | 显示全部楼层
初始状态是否时钟为高?这种状态下 ICG 处于未初始化状态,输出为 X
 楼主| 发表于 2021-12-22 18:28:48 | 显示全部楼层


jake 发表于 2021-12-19 22:43
初始状态是否时钟为高?这种状态下 ICG 处于未初始化状态,输出为 X


这个其实遇到的问题有两个:
1.初始状态的clock为低电平;我也怀疑过是初始化就为X;但是综合出的网表有多个latch,只有这个latch会出现x,其它的latch和这个latch相同的输入,其它的latch就不会出现x,我想了很长时间也没想出来;
2.这几个综合出的latch都在一个模块中,看具体的网表,这个出x的icg(latch)出的时钟控制后面的逻辑,后面的逻辑再返回来作为这个icg(latch)的输入的en,类似于一个圈,但是后面的逻辑是时序相关的,而且一开始后面的逻辑也没有时钟,前面这个没有时钟的这段时间确实会出现latch后的x,而其它的latch就不会有这个x,真是奇怪了,希望大神给与指导,特别感谢!!!

发表于 2021-12-22 22:19:02 | 显示全部楼层
"其它的latch和这个latch相同的输入,其它的latch就不会出现x" -- en, te, clk完全一样吗? 如果完全一样,为什么不合并成一个?感觉应该有细微差别。

“后面的逻辑再返回来作为这个icg(latch)的输入的en,类似于一个圈,但是后面的逻辑是时序相关的” -- 时钟为低,ICG latch 打开,ICG output = en & clk = 0, 后面逻辑里的 DFF 没有时钟,不会改变状态。如果没有 reset 过,DFF 的输出为X,返回到 ICG en = X。 时钟变高时,en = X 被锁进 ICG 的 latch,ICG output = latched en & clk,因为 latched_en = X,ICG output = X,后面逻辑的 DFF 得到的时钟为 X,DFF 的状态为 X,返回到 ICG en 依然为 X。

这个电路需要引入reset 初始化后面逻辑的 DFF
 楼主| 发表于 2022-1-2 10:27:16 | 显示全部楼层


jake 发表于 2021-12-22 22:19
"其它的latch和这个latch相同的输入,其它的latch就不会出现x" -- en, te, clk完全一样吗? 如果完全一样, ...


       你好,非常感谢您的分析,您说的情况确实是出现x的原因的一种。       但是现在我遇到的情况很奇怪,跟你描述的不太一致,也就是说尽管是个圈,但是在出现x之前所有的输入信号都是正常有数值的,没有x出现。  这个出现x的时刻的原因像您说的一样:这个icg里面有个latch,在从一开始到第一个时钟上升沿来这段时间,这个latch的输出一直是x(latch一直是通的状态),这个输出的x和输入的时钟经过与门输出,但因为之前一直是clk的低电平,与门有0出0,所以这段时间icg的输出一直为0,但当clk为高电平时与门把这个x输出了出去。看波形仿真分析是这样的。也就是这个x出现的时刻是可以这么解释的。
       现在最大的问题是综合出的网表有很多的icg,但是唯独这个icg的输出是x,为什么?
       看波形和代码比对了这个icg和其它icg的结构,没有差别,一摸一样。而其它对应的icg的输入输出时序和这个出x的icg一样,当然除了这个icg出x了,其它没有出。这是最让人头疼的现象。关键是为什么?    具体其它的icg内部的latch的输入和这个icg的内部的latch的输入一样,时序信息也一样:一开始输入的clk为低电平,按理说其它icg的内部的latch输出在clk为高电平前也应该是x(latch一直是通的状态),但是波形仿真现象是其它icg内部的latch就是正常,没有x。这个就是这个诡异的现象,请求大神指导。我想了好长时间也没有想出来。十分感谢。为了方便,我未来找机会把这个仿真对比的波形截屏出来放上来请大家帮忙看看。



 楼主| 发表于 2022-1-2 10:33:17 | 显示全部楼层


赵旭东 发表于 2022-1-2 10:27
你好,非常感谢您的分析,您说的情况确实是出现x的原因的一种。       但是现在我遇到的情况很奇 ...


"- en, te, clk完全一样吗? 如果完全一样,为什么不合并成一个?感觉应该有细微差别。"
    这个比对了,这个icg和其它的icg输入这个信号完全一摸一样,时序都一样,数值的变化也都一样。至于为什么不合并成一个,我个人理解的是这些个不同的icg对应于外部的不同的逻辑,比如这个icg外部的逻辑和其它icg外部的逻辑不一样。   细微的差别我也认为只有外部逻辑的不同,而对于这个icg和其它icg的比对,确实是代码和输入数值时序都是完全一样的,唯一不同的就是这个icg输出了x,其它的icg没有出x。很奇怪了,目前要解释为什么这个icg出了x,头大了。。。。。。
发表于 2022-1-2 11:51:57 | 显示全部楼层
本帖最后由 jake 于 2022-1-1 22:01 编辑


赵旭东 发表于 2022-1-1 20:27
你好,非常感谢您的分析,您说的情况确实是出现x的原因的一种。       但是现在我遇到的情况很奇 ...


但是现在我遇到的情况很奇怪,跟你描述的不太一致,也就是说尽管是个圈,但是在出现x之前所有的输入信号都是正常有数值的,没有x出现。  这个出现x的时刻的原因像您说的一样:这个icg里面有个latch,在从一开始到第一个时钟上升沿来这段时间,这个latch的输出一直是xlatch一直是通的状态),这个输出的x和输入的时钟经过与门输出,但因为之前一直是clk的低电平,与门有00,所以这段时间icg的输出一直为0,但当clk为高电平时与门把这个x输出了出去。看波形仿真分析是这样的。也就是这个x出现的时刻是可以这么解释的

1. 但是在出现x之前所有的输入信号都是正常有数值的,没有x出现
2. 这个icg里面有个latch,在从一开始到第一个时钟上升沿来这段时间,这个latch的输出一直是xlatch一直是通的状态)
如果latchclk低电平打开,那么从初始到到一个时钟上升沿这段时间,latch是打开的,latch的输出应该等于en。如果所有输入信号都是正常逻辑值(x)en也是正常逻辑值,这段时间latch的输出不可能是x
结论就是这个latch比较特殊,是clk高电平打开,而不是clk低电平打开。

下面是一个常用的ICG,这里的latch在低电平的时候是打开的。
有的库里有另一种ICGlatch接时钟的pin没有这个这个小圈圈,表示latch是高电平时候打开。出问题的ICG可能是这一种。

附上另一种ICG做参考,里面是一个高电平打开的latch + OR  


CLK low, latch open

CLK low, latch open

CLK high, latch open

CLK high, latch open
 楼主| 发表于 2022-1-6 19:18:36 | 显示全部楼层
本帖最后由 赵旭东 于 2022-1-6 22:43 编辑


jake 发表于 2022-1-2 11:51
“但是现在我遇到的情况很奇怪,跟你描述的不太一致,也就是说尽管是个圈,但是在出现x之前所有的输入信号 ...


感谢您的指导,您说的另一种latch的类型确实有可能是原因的一种,我仔细看一下,之后会复制波形图上来,感谢!!!

 楼主| 发表于 2022-1-7 12:02:23 | 显示全部楼层


赵旭东 发表于 2022-1-6 19:18
感谢您的指导,您说的另一种latch的类型确实有可能是原因的一种,我仔细看一下,之后会复制波形图上来,感 ...


按照您说的方法分别查看了两个latch的类型,确定了都是后面是与门的类型,也查看了两者是否调用的相同的latch primitive模型,确认了是一个,这就奇怪了一个出x,一个不出x。查看了latch的primitive语法如下,按照语法我理解的是两者应该都是x才对,怎么能一个出x,一个不出呢?。。。。。。

网表仿真不同的latch对比图片.jpg
primitive的描述.PNG
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-22 20:45 , Processed in 0.028990 second(s), 10 queries , Gzip On, Redis On.

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