title: Verilog中定义信号为什么要区分wire和reg两种类型？
desc: Verilog 中，过程赋值语句要定义成 reg，连续赋值语句要定义成 wire，而且定义为 reg 不一定真的综合出register（也可能是纯组合逻辑），wire也不一定真的是 wire（也可能是 register）。既然如此，为何 Verilog 语法中要区分 wire 和 reg 呢？至今都没想明白有什么必要（除了制造出一些语法错误）。
topic: FPGA
content: 两者差别很大，完全不能取消。在Verilog中，wire永远是wire，就是相当于一条连线，用来连接电路，不能存储数据，无驱动能力，是组合逻辑，只能在assign左侧赋值，不能在always 中赋值 但reg可以综合成register，latch，甚至wire当其只是中间变量的时候，可以用于组合逻辑或者时序逻辑，能存储数据，有驱动能力，在always 模块表达式左侧被赋值。两个共同具有性质：都能用于assign与always 模块表达式的右侧。---------
answerer_tags: 回国找工作，求推荐。。/数字集成电路设计