MultiPort remove random println
GenerateSpec fix so "generate top test" does not rely on side-effects of previous test GenerateTopSpec fix so it creates needed input file itself, does not rely on other tests to do that
This commit is contained in:
@@ -316,7 +316,6 @@ class SplitWidth_2rw_differentMasks extends MacroCompilerSpec with HasSRAMGenera
|
|||||||
lazy val memMaskGranB = 8 // these generators are run at constructor time
|
lazy val memMaskGranB = 8 // these generators are run at constructor time
|
||||||
|
|
||||||
override def generateMemSRAM() = {
|
override def generateMemSRAM() = {
|
||||||
println(memMaskGranB)
|
|
||||||
SRAMMacro(
|
SRAMMacro(
|
||||||
name = mem_name,
|
name = mem_name,
|
||||||
width = memWidth,
|
width = memWidth,
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import chisel3.stage.ChiselStage
|
|||||||
import firrtl.FileUtils
|
import firrtl.FileUtils
|
||||||
import org.scalatest.freespec.AnyFreeSpec
|
import org.scalatest.freespec.AnyFreeSpec
|
||||||
import org.scalatest.matchers.must.Matchers.be
|
import org.scalatest.matchers.must.Matchers.be
|
||||||
import org.scalatest.matchers.should.Matchers
|
|
||||||
import org.scalatest.matchers.should.Matchers.convertToAnyShouldWrapper
|
import org.scalatest.matchers.should.Matchers.convertToAnyShouldWrapper
|
||||||
|
|
||||||
import java.io.{File, PrintWriter}
|
import java.io.{File, PrintWriter}
|
||||||
@@ -60,34 +59,40 @@ class GenerateExampleTester extends MultiIOModule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class GenerateSpec extends AnyFreeSpec {
|
class GenerateSpec extends AnyFreeSpec {
|
||||||
"generate test data" in {
|
|
||||||
val targetDir = "test_run_dir/generate_spec_source"
|
def generateTestData(targetDir: String): Unit = {
|
||||||
FileUtils.makeDirectory(targetDir)
|
FileUtils.makeDirectory(targetDir)
|
||||||
|
|
||||||
(new ChiselStage()).emitFirrtl(new GenerateExampleTester, Array("--target-dir", targetDir))
|
new ChiselStage().emitFirrtl(new GenerateExampleTester, Array("--target-dir", targetDir))
|
||||||
|
|
||||||
val blackBoxInverterText = """
|
val blackBoxInverterText =
|
||||||
|module BlackBoxInverter(
|
"""
|
||||||
| input [0:0] in,
|
|module BlackBoxInverter(
|
||||||
| output [0:0] out
|
| input [0:0] in,
|
||||||
|);
|
| output [0:0] out
|
||||||
| assign out = !in;
|
|);
|
||||||
|endmodule
|
| assign out = !in;
|
||||||
|""".stripMargin
|
|endmodule
|
||||||
|
|""".stripMargin
|
||||||
|
|
||||||
val printWriter2 = new PrintWriter(new File(s"$targetDir/BlackBoxInverter.v"))
|
val printWriter2 = new PrintWriter(new File(s"$targetDir/BlackBoxInverter.v"))
|
||||||
printWriter2.write(blackBoxInverterText)
|
printWriter2.write(blackBoxInverterText)
|
||||||
printWriter2.close()
|
printWriter2.close()
|
||||||
|
}
|
||||||
|
|
||||||
new File(s"$targetDir/GenerateExampleTester.fir").exists() should be (true)
|
"generate test data" in {
|
||||||
|
val targetDir = "test_run_dir/generate_spec_source"
|
||||||
|
generateTestData(targetDir)
|
||||||
|
|
||||||
|
new File(s"$targetDir/GenerateExampleTester.fir").exists() should be(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
"generate top test" in {
|
"generate top test" in {
|
||||||
val sourceDir = "test_run_dir/generate_spec_source"
|
|
||||||
val targetDir = "test_run_dir/generate_spec"
|
val targetDir = "test_run_dir/generate_spec"
|
||||||
|
generateTestData(targetDir)
|
||||||
|
|
||||||
GenerateTop.main(Array(
|
GenerateTop.main(Array(
|
||||||
"-i", s"$sourceDir/GenerateExampleTester.fir",
|
"-i", s"$targetDir/GenerateExampleTester.fir",
|
||||||
"-o", s"$targetDir/GenerateExampleTester.v"
|
"-o", s"$targetDir/GenerateExampleTester.v"
|
||||||
))
|
))
|
||||||
new File(s"$targetDir/GenerateExampleTester.v").exists() should be (true)
|
new File(s"$targetDir/GenerateExampleTester.v").exists() should be (true)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
package barstools.tapeout.transforms
|
package barstools.tapeout.transforms
|
||||||
|
|
||||||
|
import chisel3.stage.ChiselStage
|
||||||
import firrtl.FileUtils
|
import firrtl.FileUtils
|
||||||
import org.scalatest.freespec.AnyFreeSpec
|
import org.scalatest.freespec.AnyFreeSpec
|
||||||
import org.scalatest.matchers.should.Matchers
|
import org.scalatest.matchers.should.Matchers
|
||||||
@@ -11,9 +12,18 @@ import java.io.{ByteArrayOutputStream, File, PrintStream, PrintWriter}
|
|||||||
class GenerateTopSpec extends AnyFreeSpec with Matchers {
|
class GenerateTopSpec extends AnyFreeSpec with Matchers {
|
||||||
"Generate top and harness" - {
|
"Generate top and harness" - {
|
||||||
"should include the following transforms" in {
|
"should include the following transforms" in {
|
||||||
|
val targetDir = "test_run_dir/generate_top_and_harness"
|
||||||
|
FileUtils.makeDirectory(targetDir)
|
||||||
|
(new ChiselStage).emitChirrtl(new ExampleModuleNeedsResetInverted, Array("--target-dir", targetDir))
|
||||||
|
|
||||||
val buffer = new ByteArrayOutputStream()
|
val buffer = new ByteArrayOutputStream()
|
||||||
Console.withOut(new PrintStream(buffer)) {
|
Console.withOut(new PrintStream(buffer)) {
|
||||||
GenerateTopAndHarness.main(Array("-i", "ExampleModuleNeedsResetInverted.fir", "-ll", "info"))
|
GenerateTopAndHarness.main(
|
||||||
|
Array(
|
||||||
|
"-i", s"$targetDir/ExampleModuleNeedsResetInverted.fir",
|
||||||
|
"-ll", "info"
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
val output = buffer.toString
|
val output = buffer.toString
|
||||||
output should include("barstools.tapeout.transforms.AddSuffixToModuleNames")
|
output should include("barstools.tapeout.transforms.AddSuffixToModuleNames")
|
||||||
|
|||||||
Reference in New Issue
Block a user