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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2188|回复: 6

[求助] spyglass lint 非阻塞赋值问题

[复制链接]
发表于 2021-8-23 13:17:30 | 显示全部楼层 |阅读模式

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

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

x
在lint检查的时候,如下示意RTL为什么不能查出问题:非阻塞赋值不能用于always组合逻辑
wire [1:0] A;
wire B_0;
reg B_s;

always @(*)  begin
    case (A[1:0])
        2'b0: B_s <= B_0;
        2'b1: B_s <= B_1;
        2'b2: B_s <= B_2;
        2'b3: B_s <= B_3;
    endcase
end




发表于 2021-8-23 13:43:48 | 显示全部楼层
你试着这段代码,把非阻塞改成阻塞
 楼主| 发表于 2021-8-23 18:16:32 | 显示全部楼层


puxiancheng 发表于 2021-8-23 13:43
你试着这段代码,把非阻塞改成阻塞


改成阻塞没有问题。
发表于 2021-8-23 22:32:42 | 显示全部楼层
不算错,<= 可以生成comb rtl,可以加自己的rule
发表于 2024-12-31 14:20:26 | 显示全部楼层
W414的rule应该可以解决
发表于 2025-3-31 16:38:01 | 显示全部楼层
对DC 综合来说来说你这个代码不会有任何问题,综合出来的东西,和=是一样的。  但是对验证来说,你这个是有重大问题。会在沿采沿 的仿真上出BUG 。   具体原理其实是 Verilog 是仿真语言。夹杂着一些东西
发表于 2025-4-18 11:43:41 | 显示全部楼层
本帖最后由 lolina 于 2025-4-18 11:45 编辑

没有那里规定了非阻塞不能always组合逻辑,对于综合工具而言,关键是靠always@(*)识别这是组合逻辑
对于仿真而言,阻塞和非阻塞有不同的行为,工具并不能知道你是不是故意的
你说的不能用只是代码风格的要求,之所以一般建议不能用,就是因为仿真行为会有差异,具体为啥需要理解verilog仿真队列模型

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

本版积分规则

关闭

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

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

GMT+8, 2025-5-11 16:13 , Processed in 0.022384 second(s), 9 queries , Gzip On, MemCached On.

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