verilog阻塞赋值非阻塞赋值和组合时序逻辑

发布时间 2023-08-16 22:22:27作者: yhish

阻塞赋值=

非阻塞赋值<=

 

具体可参考https://blog.csdn.net/Times_poem/article/details/52032890

基本原则:

1.时序逻辑一定要用非阻塞赋值<=,且敏感列表中有posedge就用<=

2.组合逻辑一定要用阻塞赋值=,敏感列表没有posedge就用=,有assign就用=

3.时序逻辑和组合逻辑必须分成不同的模块,即一个always中只能有=和<=中的一种

 

部分报错信息(参考 https://www.bilibili.com/read/cv12437719)

[Synth 8-2576] procedural assignment to a non-register Data is not permitted 

    always 块中出现了wire型,改正即可。
[Synth 8-2442] non-net port Data cannot be of mode input

    reg不能作为输入 改为wire型(?)。

[8-2442],一般来说,在设计中,你不清楚输入信号是组合逻辑输出或者是寄存器型输出,所以一般默认为线性-wire,而输出不同,输出则是有自己确定(),这样就可明确到底是输出了reg型还是net()