这段verilog代码为什么会综合出锁存器
本帖最后由 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'b0011_000 )
begin
sfr_data_in = 8'h0;
case ( {sfr_addr,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.我想不明白这是为什么?请大家帮我看看吧 if 后面没有else就会综合成锁存器的吧 同意楼上的观点
http://bbs.vibesic.com/images/smilies/default/smile.gif
http://bbs.vibesic.com/images/smilies/default/smile.gif 被你们见笑了,一直没注意后面忘写else分支了,但有一点还是不明白,就是:DEFAULT branch of CASE statement cannot be reached,请大家帮我分析以下 sfr_data_in = 8'h0; 这就是defaultcase了吧<br>
所以后面的这句 default : sfr_data_in = 8'h0; 实际上是unreachable的 else 是多余的,或者去掉 sfr_data_in = 8'h0 就是default这个分支和前面的重叠了嘛。 学习了 ,不错 if 后面没有else就会综合成锁存器的吧
页:
[1]