blob: 01da57a01ff56416901b9091879f805e48654cfa (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
// SPDX-License-Identifier: Apache-2.0
package firrtlTests.execution
import java.io.File
import firrtl._
import firrtl.ir._
import firrtl.stage.{FirrtlCircuitAnnotation, FirrtlStage}
import firrtl.options.TargetDirAnnotation
import firrtl.util.BackendCompilationUtilities._
/**
* Mixing in this trait causes a SimpleExecutionTest to be run in Verilog simulation.
*/
trait VerilogExecution extends TestExecution {
this: SimpleExecutionTest =>
/** can be overwritten to mix-in custom annotations */
val customAnnotations: AnnotationSeq = Seq()
def runEmittedDUT(c: Circuit, testDir: File): Unit = {
// Run FIRRTL, emit Verilog file
val cAnno = FirrtlCircuitAnnotation(c)
val tdAnno = TargetDirAnnotation(testDir.getAbsolutePath)
(new FirrtlStage).execute(Array.empty, AnnotationSeq(Seq(cAnno, tdAnno)) ++ customAnnotations)
// Copy harness resource to test directory
val harness = new File(testDir, s"top.cpp")
copyResourceToFile(cppHarnessResourceName, harness)
// Make and run Verilog simulation
verilogToCpp(c.main, testDir, Nil, harness) #&&
cppToExe(c.main, testDir) ! loggingProcessLogger
assert(executeExpectingSuccess(c.main, testDir))
}
}
|