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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1797|回复: 9

[求助] 以下模块为什么不能被综合后或者和预想的不一致

[复制链接]
发表于 2019-3-21 13:31:32 | 显示全部楼层 |阅读模式

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

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

x
这个是verilog数字系统设计教程第8章的习题
下面的模块被生成后为什么是不被综合或者与设想的不一致?
always@(A or B)
        case(A)
                1'b0: F = B;
                1'b1: G = B;
                endcase
是因为存在竞争与冒险?

发表于 2019-3-21 15:33:32 | 显示全部楼层
你的问题我看不太懂啊……
这个电路是可以综合的。但是综合后会生成inferred latch,这在绝大多数代码风格中都是不被允许的。
发表于 2019-3-21 16:03:51 | 显示全部楼层
1楼说的对。其实是2个always block,对2个变量赋值。你就发现if-else没有写全了。
至于为什么是Latch,可以看如下课程,深入讲解数字设计的原理:
回答完,照例发个数字IC设计课程的广告,希望能让大家明白更多数字设计的原理,朝专家级迈进。
https://ke.qq.com/course/379407?tuin=64ce5e2a  (该课程已被国内大公司采用)
 楼主| 发表于 2019-3-21 16:29:24 | 显示全部楼层


orlye 发表于 2019-3-21 15:33
你的问题我看不太懂啊……
这个电路是可以综合的。但是综合后会生成inferred latch,这在绝大多数代码风格 ...


我也尝试综合了,用的ISE,但是并没有出现锁存器的警告。我觉得这个代码最大问题是A信号,即作为敏感信号,又作为CASE的表达式,这样会对下面赋值产生竞争,
我觉得产生锁存器的原因是不是没有写出F与G在其他状态的赋值
改一下:always@(A or B)
        case(A)
                1'b0: F = B;
                1'b1: G = B;        default begin
                   F=F;
                   G=G;
               end
             endcase
这样就应该没有锁存器了


 楼主| 发表于 2019-3-21 16:46:28 | 显示全部楼层


orlye 发表于 2019-3-21 15:33
你的问题我看不太懂啊……
这个电路是可以综合的。但是综合后会生成inferred latch,这在绝大多数代码风格 ...


方便看一下你的综合报告吗?我没有这边没看到LATCH
发表于 2019-3-22 14:18:02 | 显示全部楼层
always@(*)
    case(A)
        1'b0    : F = B     ;
        default : F = ''h0  ;
    endcase
   
   
always@(*)
    case(A)
        1'b1    : G = B     ;
        default : G = ''h0  ;
    endcase   
 楼主| 发表于 2019-3-24 08:57:01 | 显示全部楼层


chindis 发表于 2019-3-22 14:18
always@(*)
    case(A)
        1'b0    : F = B     ;


这样可以避免竞争冒险了吗?求解释
发表于 2019-3-24 21:41:56 | 显示全部楼层
The code mentioned will be synthesized as latch because value at pin F should be retained when signal A is 1. Similarly value at G should be retained when A is zero. In a system design presence of latch brings complexity in timing closure. Hence the coding style is portrayed as inconsistent.
发表于 2019-3-27 09:51:32 | 显示全部楼层


啵啵 发表于 2019-3-24 08:57
这样可以避免竞争冒险了吗?求解释


缺状态啊,当A是1的时候,你怎么办
发表于 2019-3-27 09:54:15 | 显示全部楼层


啵啵 发表于 2019-3-24 08:57
这样可以避免竞争冒险了吗?求解释


这样有latch,在状态机下,所有的状态都应该赋值!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-3-29 17:44 , Processed in 0.038210 second(s), 7 queries , Gzip On, Redis On.

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