DC娱乐网

Verilog:信号是否必须先定义后使用?分场景讲清楚 先给结论:模块内部自

Verilog:信号是否必须先定义后使用?分场景讲清楚

先给结论:模块内部自定义的 wire / reg 必须先声明,才能使用;端口信号不需要提前内部定义;模块可以先调用再定义(前向引用)

一、线网wire、寄存器reg:严格「先定义,后使用」

这是硬性语法规则,和C语言变量一样。
错误写法:

verilog

assign c = a & b; // a,b没提前声明,直接使用,编译报错
wire a,b;
 

正确顺序:

verilog

wire a,b; // 1.先声明信号类型与位宽
assign c = a & b; // 2.再使用
 

reg 同理,必须在always赋值之前,先在模块开头定义位宽:

verilog

reg [25:0] cnt; // 先定义
always @(posedge clk) begin
cnt