|
楼主 |
发表于 2021-9-1 11:47:48
|
显示全部楼层
简单参数,主要是通过模块的主构造参数传递值,所以很简单。
生成的verilog文件内容如下:
module ParamAdder(
input [7:0] io_a,
input [7:0] io_b,
output [7:0] io_c
);
assign io_c = io_a + io_b; // @[ParamAdder.scala 10:8]
endmodule
module ParamAdder_1(
input [15:0] io_a,
input [15:0] io_b,
output [15:0] io_c
);
assign io_c = io_a + io_b; // @[ParamAdder.scala 10:8]
endmodule
module TestParamAdderModule(
input clock,
input reset,
input [7:0] io_a8,
input [7:0] io_b8,
output [7:0] io_out8,
input [15:0] io_a16,
input [15:0] io_b16,
output [15:0] io_out16
);
wire [7:0] add8_io_a; // @[ParamAdder.scala 21:20]
wire [7:0] add8_io_b; // @[ParamAdder.scala 21:20]
wire [7:0] add8_io_c; // @[ParamAdder.scala 21:20]
wire [15:0] add16_io_a; // @[ParamAdder.scala 22:21]
wire [15:0] add16_io_b; // @[ParamAdder.scala 22:21]
wire [15:0] add16_io_c; // @[ParamAdder.scala 22:21]
ParamAdder add8 ( // @[ParamAdder.scala 21:20]
.io_a(add8_io_a),
.io_b(add8_io_b),
.io_c(add8_io_c)
);
ParamAdder_1 add16 ( // @[ParamAdder.scala 22:21]
.io_a(add16_io_a),
.io_b(add16_io_b),
.io_c(add16_io_c)
);
assign io_out8 = add8_io_c; // @[ParamAdder.scala 26:11]
assign io_out16 = add16_io_c; // @[ParamAdder.scala 29:12]
assign add8_io_a = io_a8; // @[ParamAdder.scala 24:13]
assign add8_io_b = io_b8; // @[ParamAdder.scala 25:13]
assign add16_io_a = io_a16; // @[ParamAdder.scala 27:14]
assign add16_io_b = io_b16; // @[ParamAdder.scala 28:14]
endmodule
|
|