高级语法2——parameter
引入元件例化的语法,有很多好处。
然而,已有的模块设计语法,缺乏flexibility。
适用同一int和long l ong 的加法器,需要写两个。
为了使模块代码具有更高的复用性,引入参数 parameter。
module adder # (
parameter int N = 16,
parameter logic [31:0] W = 32'd100000,
parameter type element_t = logic[31:0]
)(
input logic[N-1:0] a,b,
output logic[N-1:0] c
);
assign c = a + b;
endmodule
logic [31:0] a,b,c;
adder #(.N(32), .element_t(logic[63:0])) adder_inst1(.a, .b, .c);
logic [15:0] d,e,f;
adder adder_inst2(.a(d), .b(e), .c(f));
end module
module top #(
parameter logic SIM = 1'b0;
)(input logic clk,resetn);
module sim();
top #(.SIM(1'b1)) top_inst(.clk,.resetn);
// -DDEBUG
endmodule
parameter也可用于全局常量声明。作为一句语句,它以分号结尾。
parameter logic[5:0] OP_ADDI = 6'b101010;
always_comb begin
unique case(op)
OP_ADDI: begin//6'b101010: begin
end
endcase
end