From 4e21e33d68fefa471dcc7a2cf3d605dd68e93a76 Mon Sep 17 00:00:00 2001 From: peteraa Date: Thu, 17 Oct 2019 16:47:21 +0200 Subject: [PATCH] Some fixes --- src/test/scala/Manifest.scala | 3 ++- src/test/scala/RISCV/DataTypes.scala | 3 +-- src/test/scala/RISCV/Parser.scala | 6 ++---- src/test/scala/RISCV/testRunner.scala | 18 ++++++++++-------- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/test/scala/Manifest.scala b/src/test/scala/Manifest.scala index 4d08552..f5352fa 100644 --- a/src/test/scala/Manifest.scala +++ b/src/test/scala/Manifest.scala @@ -43,7 +43,8 @@ object Manifest { printMergedTrace = false, nopPadded = nopPadded, breakPoints = Nil, // not implemented - testName = name) + testName = name, + maxSteps = 15000) } diff --git a/src/test/scala/RISCV/DataTypes.scala b/src/test/scala/RISCV/DataTypes.scala index 4cd7c61..5627015 100644 --- a/src/test/scala/RISCV/DataTypes.scala +++ b/src/test/scala/RISCV/DataTypes.scala @@ -236,7 +236,6 @@ object Data { ops : List[SourceInfo[Op]], settings : List[TestSetting], labelMap : Map[Label, Addr], - maxSteps : Int = 5000 ){ def imem: Map[Addr, Op] = @@ -272,7 +271,7 @@ object Data { /** * Returns the binary code and the execution trace or an error for convenient error checking. */ - def validate: Either[String, (Map[Addr, Int], ExecutionTrace[VM])] = machineCode.flatMap{ binary => + def validate(maxSteps: Int): Either[String, (Map[Addr, Int], ExecutionTrace[VM])] = machineCode.flatMap{ binary => val uk = "UNKNOWN" val (finish, trace) = VM.run(maxSteps, vm) finish match { diff --git a/src/test/scala/RISCV/Parser.scala b/src/test/scala/RISCV/Parser.scala index 37773d9..d0cb41c 100644 --- a/src/test/scala/RISCV/Parser.scala +++ b/src/test/scala/RISCV/Parser.scala @@ -66,6 +66,7 @@ object Parser { stringWs("sra") ~> arith.mapN{Arith.sra}, stringWs("slt") ~> arith.mapN{Arith.slt}, + stringWs("sgt") ~> arith.mapN{ case(x,y,z) => Arith.slt(x,z,y)}, stringWs("sltu") ~> arith.mapN{Arith.sltu}, // pseudos @@ -99,10 +100,7 @@ object Parser { stringWs("seqz") ~> (reg <~ sep, reg, ok(1)).mapN{ArithImm.sltu}, stringWs("li") ~> (reg ~ sep ~ (hex | int)).collect{ - case((a, b), c) if (c.nBitsS <= 12) => { - say(s"for c: $c, nBitsS was ${c.nBitsS}") - ArithImm.add(a, 0, c) - } + case((a, b), c) if (c.nBitsS <= 12) => { ArithImm.add(a, 0, c) } }, diff --git a/src/test/scala/RISCV/testRunner.scala b/src/test/scala/RISCV/testRunner.scala index d51128f..aa53791 100644 --- a/src/test/scala/RISCV/testRunner.scala +++ b/src/test/scala/RISCV/testRunner.scala @@ -25,7 +25,8 @@ case class TestOptions( printMergedTrace : Boolean, nopPadded : Boolean, breakPoints : List[Int], // Not implemented - testName : String + testName : String, + maxSteps : Int ) case class TestResult( @@ -44,12 +45,12 @@ object TestRunner { val testResults = for { lines <- fileUtils.readTest(testOptions) program <- FiveStage.Parser.parseProgram(lines, testOptions) - (binary, (trace, finalVM)) <- program.validate.map(x => (x._1, x._2.run)) + (binary, (trace, finalVM)) <- program.validate(testOptions.maxSteps).map(x => (x._1, x._2.run)) (termitationCause, chiselTrace) <- ChiselTestRunner( - binary.toList.sortBy(_._1.value).map(_._2), - program.settings, - finalVM.pc, - 15000) + binary.toList.sortBy(_._1.value).map(_._2), + program.settings, + finalVM.pc, + testOptions.maxSteps) } yield { val traces = mergeTraces(trace, chiselTrace).map(x => printMergedTraces((x), program)) @@ -106,7 +107,7 @@ object TestRunner { val testResults = for { lines <- fileUtils.readTest(testOptions) program <- FiveStage.Parser.parseProgram(lines, testOptions) - (binary, (trace, finalVM)) <- program.validate.map(x => (x._1, x._2.run)) + (binary, (trace, finalVM)) <- program.validate(testOptions.maxSteps).map(x => (x._1, x._2.run)) } yield { sealed trait BranchEvent @@ -164,6 +165,7 @@ object TestRunner { say(OneBitInfiniteSlots(events)) } + true } @@ -173,7 +175,7 @@ object TestRunner { val testResults = for { lines <- fileUtils.readTest(testOptions) program <- FiveStage.Parser.parseProgram(lines, testOptions) - (binary, (trace, finalVM)) <- program.validate.map(x => (x._1, x._2.run)) + (binary, (trace, finalVM)) <- program.validate(testOptions.maxSteps).map(x => (x._1, x._2.run)) } yield { sealed trait MemoryEvent