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

便捷登录,只需一步

找回密码

  登录   注册  

快捷导航
搜帖子
电子书下载:《避免仪器烧毁的四种方法》【奖励300信元及小米音箱】
查看: 277|回复: 4

[求助] 一个vcs仿真的时序先后判断问题

[复制链接]
发表于 2020-10-13 15:33:27 | 显示全部楼层 |阅读模式
100资产
最近的项目仿真遇到一个问题,lpc模块,在模块输出端,信号lfram在clk下跳变上升,并且lfram和clk同时输出到tb的设备模型中,但是设备模型在state跳变判断时,if条件在clk和lfram同时上升处判定为lfram==1成立,state状态出错,感觉这里非常奇怪。

lpc模块中
always@(posedge clk or negedge rst_n)
...
    if(lpc_start)
         lfram <= #`DLY 1'b1;
...

中间经过pad模块,整体延时0.1ns

lpc设备模型
always@(posedge clk or posedge i_rst)
...
    case(state)
    `IDLE:
    ...
    if(lfram) begin
         ...
         xx <= #`DLY_PH  1'b1;
         if(lad_i == 4'b0) begin
             state <= #`DLY_PH `START;
             ...
         end
    end
    else
          state <= #`DLY_PH `IDEL;
...


`DLY如果有值,这里模型能够正常工作。

我发现如果延时`DLY=0,则lpc设备模型中的xx信号会在lfram上升沿就跳变为1,即clk和lfram同为上升沿的时刻,vcs就判定lfram为1,这与一般信号随clk跳变存在先后的判断明显冲突,不知道哪位大神可以帮忙解释一下vcs仿真器在处理这种问题的工作机制。

同事说,中间的pad是组合逻辑,vcs的先后判断改变与它有关,不知道是否正确,是否能帮忙解释一下呢?

发表于 2020-10-13 17:05:39 | 显示全部楼层
本帖最后由 A1985 于 2020-10-13 17:08 编辑

这种问题都是仿真竞争,并行,顺序和EDA工具有关。干好lfrm在clock上升沿已经是1了,如果换个工具可能就不一样的结果
回复

使用道具 举报

 楼主| 发表于 2020-10-14 13:57:48 | 显示全部楼层


   
A1985 发表于 2020-10-13 17:05
这种问题都是仿真竞争,并行,顺序和EDA工具有关。干好lfrm在clock上升沿已经是1了,如果换个工具可能就不 ...


我的timescale设为1fs/1fs了,lfram和clk也是同时到来,结果还是一样的,vcs在判断中还是会改变沿到来时,逻辑上的先后顺序吗
回复

使用道具 举报

发表于 2020-10-14 14:27:55 | 显示全部楼层
本帖最后由 A1985 于 2020-10-14 14:29 编辑


   
nnnxxx1991 发表于 2020-10-14 13:57
我的timescale设为1fs/1fs了,lfram和clk也是同时到来,结果还是一样的,vcs在判断中还是会改变沿到来时 ...


和 timescale没有任何关系,和语义标准有关,这个是EDA工具tool-dependent,0延迟问题都会出现这样。线程先后顺序不可定。可能改变下代码的顺序,可能就变了。
回复

使用道具 举报

发表于 2020-10-16 19:24:29 | 显示全部楼层
两处延时不一样,一个是`DLY,另一处是 `DLY_PH,这样是不好的哦,如果改成一样的,不太可能有你说的那种问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2020-10-31 06:35 , Processed in 0.056647 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表