From ab422c7666be08ebcecbbca6383f2020ee4f2bdd Mon Sep 17 00:00:00 2001 From: Scott Beamer Date: Thu, 4 Mar 2021 11:57:26 -0800 Subject: [PATCH] fix deprecation for migration to newer chisel --- src/main/scala/EssentBackend.scala | 19 ++++-------- src/main/scala/Launcher.scala | 50 +++++++++++++++--------------- 2 files changed, 31 insertions(+), 38 deletions(-) diff --git a/src/main/scala/EssentBackend.scala b/src/main/scala/EssentBackend.scala index 5687269..5777faa 100644 --- a/src/main/scala/EssentBackend.scala +++ b/src/main/scala/EssentBackend.scala @@ -13,22 +13,15 @@ import java.nio.file.{Files, Paths} object EssentBackend { val baseBuildAndTestDirName = "essent_run_dir" - def buildAndRun[T <: chisel3.Module](dutGen: () => T)(testerGen: T => PeekPokeTester[T]) = { - // emit firrtl - val circuit = chisel3.Driver.elaborate(dutGen) - // parse firrtl - val chirrtl = firrtl.Parser.parse(chisel3.Driver.emit(circuit)) - val dut = (circuit.components find (_.name == circuit.name)).get.id.asInstanceOf[T] - // make output directory - val dir = new File(baseBuildAndTestDirName + "/" + dut.getClass.getName) + def buildAndRun[T <: chisel3.Module](dutName: String)(dutGen: () => T)(testerGen: T => PeekPokeTester[T]) = { + // set up buildDir + val dir = new File(baseBuildAndTestDirName + "/" + dutName) dir.mkdirs() val buildDir = dir.getAbsolutePath - val dutName = chirrtl.main - // emit .fir file for essent to read in + // get firrtl + val cs = new chisel3.stage.ChiselStage() + val dutFirrtl = firrtl.Parser.parse(cs.emitFirrtl(dutGen(), Array("--target-dir", buildDir))) val firFile = new File(buildDir, s"$dutName.fir") - val firWriter = new FileWriter(firFile) - firWriter.write(chirrtl.serialize) - firWriter.close // copy over needed headers chisel3.iotesters.copyVerilatorHeaderFiles(buildDir) val commWrapResource = essent.Driver.getClass.getResourceAsStream("/comm_wrapper.h") diff --git a/src/main/scala/Launcher.scala b/src/main/scala/Launcher.scala index 45cb0e7..9439a5b 100644 --- a/src/main/scala/Launcher.scala +++ b/src/main/scala/Launcher.scala @@ -14,55 +14,55 @@ object Launcher { def testDUT(dutName: String): Boolean = dutName match { case "Accumulator" => - EssentBackend.buildAndRun(() => new Accumulator())(c => new AccumulatorTests(c)) + EssentBackend.buildAndRun(dutName)(() => new Accumulator())(c => new AccumulatorTests(c)) case "Adder" => - EssentBackend.buildAndRun(() => new Adder(16))(c => new AdderTests(c)) + EssentBackend.buildAndRun(dutName)(() => new Adder(16))(c => new AdderTests(c)) case "BigUInt" => - EssentBackend.buildAndRun(() => new BigUInt(128))(c => new BigUIntTests(c)) + EssentBackend.buildAndRun(dutName)(() => new BigUInt(128))(c => new BigUIntTests(c)) case "Counter" => - EssentBackend.buildAndRun(() => new Counter())(c => new CounterTests(c)) + EssentBackend.buildAndRun(dutName)(() => new Counter())(c => new CounterTests(c)) case "DynamicMemorySearch" => - EssentBackend.buildAndRun(() => new DynamicMemorySearch(32, 8))(c => new DynamicMemorySearchTests(c)) + EssentBackend.buildAndRun(dutName)(() => new DynamicMemorySearch(32, 8))(c => new DynamicMemorySearchTests(c)) case "Hello" => - EssentBackend.buildAndRun(() => new Hello())(c => new HelloTests(c)) + EssentBackend.buildAndRun(dutName)(() => new Hello())(c => new HelloTests(c)) case "LFSR16" => - EssentBackend.buildAndRun(() => new LFSR16())(c => new LFSR16Tests(c)) + EssentBackend.buildAndRun(dutName)(() => new LFSR16())(c => new LFSR16Tests(c)) case "Max2" => - EssentBackend.buildAndRun(() => new Max2())(c => new Max2Tests(c)) + EssentBackend.buildAndRun(dutName)(() => new Max2())(c => new Max2Tests(c)) case "MaxN" => - EssentBackend.buildAndRun(() => new MaxN(2, 12))(c => new MaxNTests(c)) + EssentBackend.buildAndRun(dutName)(() => new MaxN(2, 12))(c => new MaxNTests(c)) case "Memo" => - EssentBackend.buildAndRun(() => new Memo())(c => new MemoTests(c)) + EssentBackend.buildAndRun(dutName)(() => new Memo())(c => new MemoTests(c)) case "Mul" => - EssentBackend.buildAndRun(() => new Mul())(c => new MulTests(c)) + EssentBackend.buildAndRun(dutName)(() => new Mul())(c => new MulTests(c)) case "Mux2" => - EssentBackend.buildAndRun(() => new Mux2())(c => new Mux2Tests(c)) + EssentBackend.buildAndRun(dutName)(() => new Mux2())(c => new Mux2Tests(c)) case "Mux4" => - EssentBackend.buildAndRun(() => new Mux4())(c => new Mux4Tests(c)) + EssentBackend.buildAndRun(dutName)(() => new Mux4())(c => new Mux4Tests(c)) case "Mux8" => - EssentBackend.buildAndRun(() => new Mux8())(c => new Mux8Tests(c)) + EssentBackend.buildAndRun(dutName)(() => new Mux8())(c => new Mux8Tests(c)) // case "RealGCD" => - // EssentBackend.buildAndRun(() => new RealGCD())(c => new RealGCDTests(c)) + // EssentBackend.buildAndRun(dutName)(() => new RealGCD())(c => new RealGCDTests(c)) // case "RealGCD2" => - // EssentBackend.buildAndRun(() => new RealGCD2())(c => new GCDPeekPokeTester(c)) + // EssentBackend.buildAndRun(dutName)(() => new RealGCD2())(c => new GCDPeekPokeTester(c)) case "SingleEvenFilter" => - EssentBackend.buildAndRun(() => new SingleEvenFilter(UInt(16.W)))(c => new SingleEvenFilterTests(c)) + EssentBackend.buildAndRun(dutName)(() => new SingleEvenFilter(UInt(16.W)))(c => new SingleEvenFilterTests(c)) case "SIntLit" => - EssentBackend.buildAndRun(() => new SIntLit(16))(c => new SIntLitTests(c)) + EssentBackend.buildAndRun(dutName)(() => new SIntLit(16))(c => new SIntLitTests(c)) case "SoloReg" => - EssentBackend.buildAndRun(() => new SoloReg())(c => new SoloRegTests(c)) + EssentBackend.buildAndRun(dutName)(() => new SoloReg())(c => new SoloRegTests(c)) case "Stopper" => - EssentBackend.buildAndRun(() => new Stopper())(c => new StopperTests(c)) + EssentBackend.buildAndRun(dutName)(() => new Stopper())(c => new StopperTests(c)) case "VecShiftRegister" => - EssentBackend.buildAndRun(() => new VecShiftRegister())(c => new VecShiftRegisterTests(c)) + EssentBackend.buildAndRun(dutName)(() => new VecShiftRegister())(c => new VecShiftRegisterTests(c)) case "VecShiftRegisterParam" => - EssentBackend.buildAndRun(() => new VecShiftRegisterParam(8,8))(c => new VecShiftRegisterParamTests(c)) + EssentBackend.buildAndRun(dutName)(() => new VecShiftRegisterParam(8,8))(c => new VecShiftRegisterParamTests(c)) case "VecShiftRegisterSimple" => - EssentBackend.buildAndRun(() => new VecShiftRegisterSimple())(c => new VecShiftRegisterSimpleTests(c)) + EssentBackend.buildAndRun(dutName)(() => new VecShiftRegisterSimple())(c => new VecShiftRegisterSimpleTests(c)) case "VendingMachine" => - EssentBackend.buildAndRun(() => new VendingMachine())(c => new VendingMachineTests(c)) + EssentBackend.buildAndRun(dutName)(() => new VendingMachine())(c => new VendingMachineTests(c)) case "VendingMachineSwitch" => - EssentBackend.buildAndRun(() => new VendingMachineSwitch())(c => new VendingMachineSwitchTests(c)) + EssentBackend.buildAndRun(dutName)(() => new VendingMachineSwitch())(c => new VendingMachineSwitchTests(c)) case s: String => throw new Exception(s"Unknown testcase $s") }