微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > 微电子学习交流 > verilog中begin_end块中有多个if语句

verilog中begin_end块中有多个if语句

时间:12-12 整理:3721RD 点击:
如果这些if语句的判断条件没有什么关系,既不互斥也不矛盾(描述的是不同变量的情况),这样写会不会有什么问题啊?(在实现功能和代码综合方面)比如:
alway@(a)
begin
if(b=1'b0) c=1'b0;
if(d=1'b0) e=1'b1;
end

这样写有问题,要将变量都放到敏感列表中:
always @* begin
if(b=1'b0) c=1'b0;
if(d=1'b0) e=1'b1;
end
这样等价于写两个always :
always @* begin
if(b=1'b0) c=1'b0;
end
always @* begin
if(d=1'b0) e=1'b1;
end

只要你真值表能得到唯一值就都没问题
综合工具基本都是基于真值表的

请问你是说这样写程序会综合出来锁存器么?

我猜他的意思应该是if后面没else会导致综合出latch,跟你说的多个变量没关系。
其实多个变量是可以放在一个always里的,只是要确保敏感列表要写全,其次是if不要缺else和case不要缺default。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top