Verilog 阻塞和非阻塞分析 Verilog非阻塞赋值的仿真/综合问题 源文件作者:Clifford E. Cummings (Sunburst Design, Inc.) 原标题:Nonblocking Assignments in Verilog Synthesis, Coding Styles That Kill! ATTN:所有括号内“外注”为理解方便或有疑问的地方,原文里并没有。所有翻译都是为 遵循“共同进步”的理想但并没有去努力得到原作者的任何书面和其它方式许可, 所以仅供大家参考。本人英文和设计水平都极有限,所以不能保证与原文的精确 一致和正确(只能以“驽马十步”稍作安慰吧),惭愧之后还希望大家多指教! 在Verilog语言最难弄明白的结构中“非阻塞赋值”要算一个。甚至是一些很有经验的工程 师也不完全明白“非阻塞赋值”在仿真器(符合IEEE标准的)里是怎样被设定执行的,以 及什么时候该用“非阻塞赋值”。这篇文章将介绍怎样设定“非阻塞赋值”和“阻塞赋值”, 给出了重要的使得编码可以被正确地综合的编码指导方针,和避免仿真竞争的编码风格 细节。 1.0 介绍 众所周知的逻辑建模方针是: * 在always 块里用“阻塞赋值”产生组合逻辑。 * 在always 块里用“非阻塞赋值”产生时序逻辑。 但是为什么? (外注:在实现组合逻辑的assign结构中,当然采用阻塞赋 值语句否则的话编译工具会提醒你进行修改的。) 普通的回答是:那只……