高兴书包

文章
5
资源
0
加入时间
3年0月9天

verilog中assign和always@(*)的区别和易忽略的点

今天在做IC的模块验证时,发现某个模块的输出信号为x态,一般遇到x态首先思考以下几种情况:变量未进行初始化 多个相同驱动强度的信号同时驱动1和0 代码中直接赋值的x态 如果是PAD电路上的X态,则另外考虑两个同类型的输入方向的PAD连接在一起,并且其中一个PAD为上拉,一个PAD为下拉但这个模块中既没有发现同时驱动1和0,也没有在代码中直接赋值x态,产生x态值的信号是在always(*)中赋值,赋值语句类似如下:module test;reg tmp0;reg tmp1;wire

always@(*)和assign的区别

always@()和assign的区别网上关于这个问题没有切中要害的。在仿真时,即在Testbetch时,最关键的是always@()描述组合逻辑时,begin和end之间是串行,一条一条语句执行。而用assign则是并行,相当于描述的是连线。但若在描述RTL级硬件逻辑时,二者没有任何区别,综合工具一般会按照一样的电路进行综合。转自:https://blog.csdn.net/sinat_25902709/article/details/79196284...