|
import chisel3._
class Encoder extends RawModule {
val io = IO(new Bundle() {
val a = Input(UInt(4.W))
val b = Output(UInt(2.W))
})
io.b := 0.U
when(io.a === 1.U) {
io.b := 0.U
} .elsewhen(io.a === 2.U) {
io.b := 1.U
} .elsewhen(io.a === 4.U) {
io.b := 2.U
} .otherwise {
io.b := 3.U
}
}
在main中:Driver.execute(Array("--target-dir","generated"),()=> new Encoder)
生成的verilog文件内容如下:
module Encoder(
input [3:0] io_a,
output [1:0] io_b
);
wire _T = io_a == 4'h1; // @[Encoder.scala 12:13]
wire _T_1 = io_a == 4'h2; // @[Encoder.scala 14:20]
wire _T_2 = io_a == 4'h4; // @[Encoder.scala 16:20]
wire [1:0] _GEN_0 = _T_2 ? 2'h2 : 2'h3; // @[Encoder.scala 16:29]
wire [1:0] _GEN_1 = _T_1 ? 2'h1 : _GEN_0; // @[Encoder.scala 14:29]
assign io_b = _T ? 2'h0 : _GEN_1; // @[Encoder.scala 10:8 Encoder.scala 13:10 Encoder.scala 15:10 Encoder.scala 17:10 Encoder.scala 19:10]
endmodule
|
|