Przeglądaj źródła

Some fixes

master
peteraa 6 lat temu
rodzic
commit
4e21e33d68
4 zmienionych plików z 15 dodań i 15 usunięć
  1. +2
    -1
      src/test/scala/Manifest.scala
  2. +1
    -2
      src/test/scala/RISCV/DataTypes.scala
  3. +2
    -4
      src/test/scala/RISCV/Parser.scala
  4. +10
    -8
      src/test/scala/RISCV/testRunner.scala

+ 2
- 1
src/test/scala/Manifest.scala Wyświetl plik

@@ -43,7 +43,8 @@ object Manifest {
printMergedTrace = false,
nopPadded = nopPadded,
breakPoints = Nil, // not implemented
testName = name)
testName = name,
maxSteps = 15000)

}



+ 1
- 2
src/test/scala/RISCV/DataTypes.scala Wyświetl plik

@@ -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 {


+ 2
- 4
src/test/scala/RISCV/Parser.scala Wyświetl plik

@@ -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) }
},




+ 10
- 8
src/test/scala/RISCV/testRunner.scala Wyświetl plik

@@ -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


Ładowanie…
Anuluj
Zapisz