集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 7646|回复: 8

这段verilog代码为什么会综合出锁存器

[复制链接]
longtim 发表于 2010-6-26 01:26:17 | 显示全部楼层 |阅读模式
本帖最后由 fpgaw 于 2010-7-13 13:38 编辑

代码是这样的:
//CPU read data from RX_BUF and SR register
always @(sfr_addr or sfr_rd or RX_BUF or SR)
begin
if ( sfr_addr[7:1]==7'b0011_000 )
  begin
  sfr_data_in = 8'h0;
  case ( {sfr_addr[0],sfr_rd} )
  2'b01 : sfr_data_in = RX_BUF ;
  2'b11 : sfr_data_in = SR ;
  default : sfr_data_in = 8'h0;
  endcase
  end
end

用DC综合时给出了这样的警告信息:DEFAULT branch of CASE statement cannot be reached.我想不明白这是为什么?请大家帮我看看吧
interi 发表于 2010-6-26 03:23:33 | 显示全部楼层
if 后面没有else就会综合成锁存器的吧
 楼主| longtim 发表于 2010-6-26 05:13:09 | 显示全部楼层
同意楼上的观点
       

       
interi 发表于 2010-6-26 06:54:39 | 显示全部楼层
被你们见笑了,一直没注意后面忘写else分支了,但有一点还是不明白,就是:DEFAULT branch of CASE statement cannot be reached,请大家帮我分析以下
FFT 发表于 2010-6-26 08:32:21 | 显示全部楼层
sfr_data_in = 8'h0; 这就是defaultcase了吧<br>
所以后面的这句&nbsp; &nbsp;default : sfr_data_in = 8'h0; 实际上是unreachable的
usb 发表于 2010-6-26 09:04:38 | 显示全部楼层
else 是多余的,或者去掉 sfr_data_in = 8'h0
ngtim 发表于 2010-6-26 10:04:40 | 显示全部楼层
就是default这个分支和前面的重叠了嘛。
CCIE 发表于 2010-6-26 10:55:01 | 显示全部楼层
学习了 ,不错
Sunlife 发表于 2015-6-24 10:45:16 | 显示全部楼层
if 后面没有else就会综合成锁存器的吧
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-5-6 16:55 , Processed in 0.069338 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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