先给结论,不同写法在相同编译工具RTL结果完全一致。对于很多编码规范都会加以区别对待,笔者认为可能是古老的编译工具存在的问题,新版本工具已经优化了此类算法。有兴趣可以用早期版本尝试一下。
module rst_test(input rst_n,input mclk,input data_i,output reg data_o);always @(posedge mclk or negedge rst_n)beginif(!rst_n)data_o <= 1'b0;elsedata_o <= data_i;end
endmodule
!rst_n
vivado 19.2编译结果
ise 14.7编译结果
synplify 2016.9编译结果
~rst_n
同上
Rst_n == 1’b0
同上