Skip to content

Commit 3dbf94d

Browse files
committed
feat: decoder
1 parent dfe0520 commit 3dbf94d

3 files changed

Lines changed: 7 additions & 1 deletion

File tree

rtl/src/backend/decode/Decoder.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ class Decoder(decodeParameter: IDUParameter) extends Module {
113113
val uimm12 = inst(21, 10).asUInt.pad(32).asSInt
114114
val imm14 = Cat(inst(23, 10), 0.U(2.W)).asSInt.pad(32)
115115
val imm16 = Cat(inst(25, 10), 0.U(2.W)).asSInt.pad(32)
116+
val nimm16 = inst(25, 10).asSInt.pad(32)
116117
val imm20 = Cat(inst(24, 5), 0.U(12.W)).asSInt.pad(32)
117118
val imm21 = Cat(inst(4, 0), inst(25, 10)).asSInt.pad(32)
118119
val imm26 = Cat(inst(9, 0), inst(25, 10), 0.U(2.W)).asSInt.pad(32)
@@ -126,6 +127,7 @@ class Decoder(decodeParameter: IDUParameter) extends Module {
126127
ImmTpe.UImm12 -> uimm12,
127128
ImmTpe.Imm14 -> imm14,
128129
ImmTpe.Imm16 -> imm16,
130+
ImmTpe.NImm16 -> nimm16,
129131
ImmTpe.Imm20 -> imm20,
130132
ImmTpe.Imm21 -> imm21,
131133
ImmTpe.Imm26 -> imm26

rtl/src/backend/decode/InputPattern.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ object InstructionPattern {
3131
val ui12 = Field("????????????", Arg("ui12", 21, 10))
3232
val i14 = Field("??????????????", Arg("i14", 23, 10))
3333
val i16 = Field("????????????????", Arg("i16", 25, 10))
34+
val ni16 = Field("????????????????", Arg("ni16", 25, 10))
3435
val i20 = Field("????????????????????", Arg("i20", 24, 5))
3536
val i21h = Field("????????????????", Arg("i21h", 25, 10))
3637
val i21l = Field("?????", Arg("i21l", 4, 0))
@@ -53,6 +54,7 @@ object InstructionPattern {
5354
"2RUI12" -> Seq(Fields.ui12, Fields.rj, Fields.rd),
5455
"2RI14" -> Seq(Fields.i14, Fields.rj, Fields.rd),
5556
"2RI16" -> Seq(Fields.i16, Fields.rj, Fields.rd),
57+
"2RNI16" -> Seq(Fields.ni16, Fields.rj, Fields.rd),
5658
"1RI20" -> Seq(Fields.i20, Fields.rd),
5759
"1RI21" -> Seq(Fields.i21h, Fields.rj, Fields.i21l),
5860
"I26" -> Seq(Fields.i26h, Fields.i26l),
@@ -194,7 +196,7 @@ object PossibleInput {
194196
//CPUCFG
195197
InstructionPattern("CPUCFG", "0000000000000000011011", "2R"),
196198

197-
InstructionPattern("RRIWINZ", "111000", "2RI16"),
199+
InstructionPattern("RRIWINZ", "111000", "2RNI16"),
198200

199201
// format: on
200202
)

rtl/src/backend/decode/OutputField.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,7 @@ object ImmTpe extends ChiselEnum {
262262
val UImm12 = Value
263263
val Imm14 = Value
264264
val Imm16 = Value
265+
val NImm16 = Value
265266
val Imm20 = Value
266267
val Imm21 = Value
267268
val Imm26 = Value
@@ -278,6 +279,7 @@ object ImmType extends DecodeField[InstructionPattern, ImmTpe.Type] {
278279
case "2RUI12" => BitPat(ImmTpe.UImm12.asUInt)
279280
case "2RI14" => BitPat(ImmTpe.Imm14.asUInt)
280281
case "2RI16" => BitPat(ImmTpe.Imm16.asUInt)
282+
case "2RNI16" => BitPat(ImmTpe.NImm16.asUInt)
281283
case "1RI20" => BitPat(ImmTpe.Imm20.asUInt)
282284
case "1RI21" => BitPat(ImmTpe.Imm21.asUInt)
283285
case "I26" => BitPat(ImmTpe.Imm26.asUInt)

0 commit comments

Comments
 (0)