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

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 2386|回复: 8

[求助] 请教各位大佬关于case语句的问题

[复制链接]
发表于 2021-7-10 16:53:47 | 显示全部楼层 |阅读模式

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

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

×
`timescale 1ns / 1ps

module case_cl(
    input sel,
    input in,
    output reg out
    );

    always @(sel)
    begin
        case(sel)
        0ut=out;
        1ut=in;
        endcase
    end
endmodule

=============分割线==============
上述的这段代码中,在vivado中的仿真结果如下
image.png
从vivado的仿真结果可以看到,sel变化时,case语句被执行了一次,类似于触发器

然后将上述代码DC综合后,通过ncverilog加载sdf文件再仿真,结果如下
image.png
可以看到ncverilog的仿真结果是综合出锁存器的结果
请问各位大佬,vivado和ncverilog的仿真结果,针对这段代码而言,哪个仿真结果更合理呢


 楼主| 发表于 2021-7-10 16:54:40 | 显示全部楼层
我更倾向于综合出锁存器的结果
回复 支持 反对

使用道具 举报

发表于 2021-7-10 18:20:31 | 显示全部楼层
alwasy @*
回复 支持 反对

使用道具 举报

发表于 2021-7-10 18:55:57 | 显示全部楼层
综合组合逻辑的时候在敏感列表里最好用*, 这样避免综合出latch. 你现在的敏感列表只有sel可以触发, 所以in改变时, out并不改变就成了latch. 这些东西基本的verilog书里都有介绍
回复 支持 反对

使用道具 举报

发表于 2021-7-10 20:28:31 | 显示全部楼层
敏感信号列表不全,会综合出latch,建议看一下DC综合的log。最好使用always @(*) 或者 SV的always_comb 。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-11 14:00:24 | 显示全部楼层


   
quantus 发表于 2021-7-10 18:55
综合组合逻辑的时候在敏感列表里最好用*, 这样避免综合出latch. 你现在的敏感列表只有sel可以触发, 所以in ...


我明白您说的,但我只想sel作为敏感列表,所以只添加了sel。
实现的功能是,sel切换时,out才发生改变。
我想知道这样写出来的语句,仿真结果应该是vivado的合理还是ncverilog的合理。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-11 14:01:11 | 显示全部楼层


我明白您说的,但我只想sel作为敏感列表,所以只添加了sel。
实现的功能是,sel切换时,out才发生改变。
我想知道这样写出来的语句,仿真结果应该是vivado的合理还是ncverilog的合理。

回复 支持 反对

使用道具 举报

发表于 2021-7-13 15:18:35 | 显示全部楼层
comb logic不支持这样干呀。 换seq logic吧。
回复 支持 反对

使用道具 举报

发表于 2021-7-13 16:05:11 | 显示全部楼层
做IC设计不是搞软件,你需要知道自己想得到什么电路才写code,而不是写了code,电路变成啥样全靠综合工具
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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


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

GMT+8, 2025-8-22 11:34 , Processed in 0.018256 second(s), 4 queries , Gzip On, Redis On.

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