组合逻辑always信号敏感列表对电路的影响

。_饼干妹妹 提交于 2019-11-27 12:13:01

在verilog编写组合逻辑电路的时候会遇到敏感列表的信号应该包含哪些的问题,因此做如下仿真来验证信号敏感列表对电路的影响。在两个仿真例中通过设定不同的信号敏感列表来对比综合出来的仿真结果从而验证 信号敏感列表不影响最终的电路

信号敏感列表不完整

module mod_test(
    rd,
    rst,
    outdata
    );
    input rd;
    input rst;
    output reg outdata;
    always@(rst)
    if(!rst)
        outdata = 1'b0;
    else
        outdata = rd;
endmodule

RTL视图
在这里插入图片描述
前仿真
在这里插入图片描述
后仿真
在这里插入图片描述

信号敏感列表完整

module mod_test(
    rd,
    rst,
    outdata
    );
    input rd;
    input rst;
    output reg outdata;
    
    always@(rst or rd)
    if(!rst)
        outdata = 1'b0;
    else
        outdata = rd;
endmodule

RTL视图
在这里插入图片描述
前仿真
在这里插入图片描述
后仿真
在这里插入图片描述

结论
always信号敏感列表是否完整对综合出来的RTL视图、门级仿真、最终电路没有影响,但是会影响行为级仿真,不在敏感信号列表里面的信号无法触发和该信号相关的仿真进程,也就得不到正确的仿真结果。在verilog_IEEE官方标准手册-2005_IEEE_P1364手册有如下表述。
在这里插入图片描述

强调应该将所有的相关输入信号与条件判断信号都包含在敏感列表,否则将影响行为级仿真。因此如果在设计中希望通过修改敏感信号列表来得到不同的逻辑只能影响行为级仿真无法影响最终综合得到的电路。所以个人认为在使用always构建逻辑电路时采用always@(*)更加保险。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!