Fix some build system problems.
1) Bump testchipip to include forgotten commit 2) Add some support for generating VCS files 3) Fix some makefile deps
This commit is contained in:
8
Makefrag
8
Makefrag
@@ -33,7 +33,7 @@ VERILOG_FILE ?=$(build_dir)/$(long_name).top.v
|
|||||||
HARNESS_FILE ?=$(build_dir)/$(long_name).harness.v
|
HARNESS_FILE ?=$(build_dir)/$(long_name).harness.v
|
||||||
SMEMS_FILE ?=$(build_dir)/$(long_name).mems.v
|
SMEMS_FILE ?=$(build_dir)/$(long_name).mems.v
|
||||||
SMEMS_CONF ?=$(build_dir)/$(long_name).mems.conf
|
SMEMS_CONF ?=$(build_dir)/$(long_name).mems.conf
|
||||||
verilator_dotf ?= $(build_dir)/verilator_files.f
|
sim_dotf ?= $(build_dir)/sim_files.f
|
||||||
|
|
||||||
REPL_SEQ_MEM = --repl-seq-mem -c:$(MODEL):-o:$(SMEMS_CONF)
|
REPL_SEQ_MEM = --repl-seq-mem -c:$(MODEL):-o:$(SMEMS_CONF)
|
||||||
|
|
||||||
@@ -54,10 +54,10 @@ $(MACROCOMPILER_JAR): $(call lookup_scala_srcs, $(base_dir)/barstools/macros/src
|
|||||||
.PHONY: jars
|
.PHONY: jars
|
||||||
jars: $(MACROCOMPILER_JAR) $(TAPEOUT_JAR)
|
jars: $(MACROCOMPILER_JAR) $(TAPEOUT_JAR)
|
||||||
|
|
||||||
$(verilator_dotf): $(SCALA_SOURCES)
|
$(sim_dotf): $(SCALA_SOURCES) $(FIRRTL_JAR)
|
||||||
cd $(base_dir) && $(SBT) "runMain example.GenerateSimFiles -td $(build_dir)"
|
cd $(base_dir) && $(SBT) "runMain example.GenerateSimFiles -td $(build_dir) -sim $(sim_name)"
|
||||||
|
|
||||||
$(FIRRTL_FILE) $(ANNO_FILE): $(SCALA_SOURCES) $(verilator_dotf)
|
$(FIRRTL_FILE) $(ANNO_FILE): $(SCALA_SOURCES) $(sim_dotf)
|
||||||
mkdir -p $(build_dir)
|
mkdir -p $(build_dir)
|
||||||
cd $(base_dir) && $(SBT) "runMain $(PROJECT).Generator $(CHISEL_ARGS) $(build_dir) $(PROJECT) $(MODEL) $(CFG_PROJECT) $(CONFIG)"
|
cd $(base_dir) && $(SBT) "runMain $(PROJECT).Generator $(CHISEL_ARGS) $(build_dir) $(PROJECT) $(MODEL) $(CFG_PROJECT) $(CONFIG)"
|
||||||
|
|
||||||
|
|||||||
@@ -4,13 +4,28 @@ import java.io.File
|
|||||||
|
|
||||||
case class GenerateSimConfig(
|
case class GenerateSimConfig(
|
||||||
targetDir: String = ".",
|
targetDir: String = ".",
|
||||||
dotFName: String = "verilator_files.f",
|
dotFName: String = "sim_files.f",
|
||||||
|
simulator: Simulator = VerilatorSimulator,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
sealed trait Simulator
|
||||||
|
object VerilatorSimulator extends Simulator
|
||||||
|
object VCSSimulator extends Simulator
|
||||||
|
|
||||||
trait HasGenerateSimConfig {
|
trait HasGenerateSimConfig {
|
||||||
val parser = new scopt.OptionParser[GenerateSimConfig]("GenerateSimFiles") {
|
val parser = new scopt.OptionParser[GenerateSimConfig]("GenerateSimFiles") {
|
||||||
head("GenerateSimFiles", "0.1")
|
head("GenerateSimFiles", "0.1")
|
||||||
|
|
||||||
|
opt[String]("simulator")
|
||||||
|
.abbr("sim")
|
||||||
|
.valueName("<simulator-name>")
|
||||||
|
.action((x, c) => x match {
|
||||||
|
case "verilator" => c.copy(simulator = VerilatorSimulator)
|
||||||
|
case "vcs" => c.copy(simulator = VCSSimulator)
|
||||||
|
case _ => throw new Exception(s"Unrecognized simulator $x")
|
||||||
|
})
|
||||||
|
.text("Name of simulator to generate files for (verilator, vcs)")
|
||||||
|
|
||||||
opt[String]("target-dir")
|
opt[String]("target-dir")
|
||||||
.abbr("td")
|
.abbr("td")
|
||||||
.valueName("<target-directory>")
|
.valueName("<target-directory>")
|
||||||
@@ -61,17 +76,21 @@ object GenerateSimFiles extends App with HasGenerateSimConfig {
|
|||||||
out.write(text)
|
out.write(text)
|
||||||
out.close()
|
out.close()
|
||||||
}
|
}
|
||||||
val resources = Seq(
|
def resources(sim: Simulator): Seq[String] = Seq(
|
||||||
// TODO(rigge): make conditional on if we are using verilator
|
|
||||||
"/project-template/csrc/emulator.cc",
|
|
||||||
"/csrc/SimDTM.cc",
|
"/csrc/SimDTM.cc",
|
||||||
"/csrc/SimJTAG.cc",
|
"/csrc/SimJTAG.cc",
|
||||||
"/csrc/remote_bitbang.h",
|
"/csrc/remote_bitbang.h",
|
||||||
"/csrc/remote_bitbang.cc",
|
"/csrc/remote_bitbang.cc",
|
||||||
"/csrc/verilator.h",
|
|
||||||
"/vsrc/EICG_wrapper.v",
|
"/vsrc/EICG_wrapper.v",
|
||||||
"/testchipip/bootrom/bootrom.rv64.img",
|
) ++ (sim match { // simulator specific files to include
|
||||||
)
|
case VerilatorSimulator => Seq(
|
||||||
|
"/project-template/csrc/emulator.cc",
|
||||||
|
"/csrc/verilator.h",
|
||||||
|
)
|
||||||
|
case VCSSimulator => Seq(
|
||||||
|
"/vsrc/TestDriver.v",
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
def writeBootrom(): Unit = {
|
def writeBootrom(): Unit = {
|
||||||
firrtl.FileUtils.makeDirectory("./bootrom/")
|
firrtl.FileUtils.makeDirectory("./bootrom/")
|
||||||
@@ -81,7 +100,7 @@ object GenerateSimFiles extends App with HasGenerateSimConfig {
|
|||||||
def writeFiles(cfg: GenerateSimConfig): Unit = {
|
def writeFiles(cfg: GenerateSimConfig): Unit = {
|
||||||
writeBootrom()
|
writeBootrom()
|
||||||
firrtl.FileUtils.makeDirectory(cfg.targetDir)
|
firrtl.FileUtils.makeDirectory(cfg.targetDir)
|
||||||
val files = resources.map { writeResource(_, cfg.targetDir) }
|
val files = resources(cfg.simulator).map { writeResource(_, cfg.targetDir) }
|
||||||
writeDotF(files.map(addOption), cfg)
|
writeDotF(files.map(addOption), cfg)
|
||||||
}
|
}
|
||||||
|
|
||||||
Submodule testchipip updated: 3b26a5c123...9a4ab7e23a
@@ -8,6 +8,8 @@ CFG_PROJECT ?= $(PROJECT)
|
|||||||
TB ?= TestDriver
|
TB ?= TestDriver
|
||||||
TOP ?= ExampleTop
|
TOP ?= ExampleTop
|
||||||
|
|
||||||
|
sim_name = verilator
|
||||||
|
|
||||||
sim = $(sim_dir)/simulator-$(PROJECT)-$(CONFIG)
|
sim = $(sim_dir)/simulator-$(PROJECT)-$(CONFIG)
|
||||||
sim_debug = $(sim_dir)/simulator-$(PROJECT)-$(CONFIG)-debug
|
sim_debug = $(sim_dir)/simulator-$(PROJECT)-$(CONFIG)-debug
|
||||||
|
|
||||||
@@ -40,11 +42,11 @@ model_header_debug = $(model_dir_debug)/V$(MODEL).h
|
|||||||
model_mk = $(model_dir)/V$(MODEL).mk
|
model_mk = $(model_dir)/V$(MODEL).mk
|
||||||
model_mk_debug = $(model_dir_debug)/V$(MODEL).mk
|
model_mk_debug = $(model_dir_debug)/V$(MODEL).mk
|
||||||
|
|
||||||
$(model_mk): $(sim_vsrcs) $(verilator_dotf) $(INSTALLED_VERILATOR)
|
$(model_mk): $(sim_vsrcs) $(sim_dotf) $(INSTALLED_VERILATOR)
|
||||||
rm -rf $(build_dir)/$(long_name)
|
rm -rf $(build_dir)/$(long_name)
|
||||||
mkdir -p $(build_dir)/$(long_name)
|
mkdir -p $(build_dir)/$(long_name)
|
||||||
$(VERILATOR) $(VERILATOR_FLAGS) -Mdir $(build_dir)/$(long_name) \
|
$(VERILATOR) $(VERILATOR_FLAGS) -Mdir $(build_dir)/$(long_name) \
|
||||||
-o $(sim) $(sim_vsrcs) -f $(verilator_dotf) -f $(sim_blackboxes) -LDFLAGS "$(LDFLAGS)" \
|
-o $(sim) $(sim_vsrcs) -f $(sim_dotf) -f $(sim_blackboxes) -LDFLAGS "$(LDFLAGS)" \
|
||||||
-CFLAGS "-I$(build_dir) -include $(build_dir)/$(long_name).plusArgs -include $(model_header)"
|
-CFLAGS "-I$(build_dir) -include $(build_dir)/$(long_name).plusArgs -include $(model_header)"
|
||||||
touch $@
|
touch $@
|
||||||
|
|
||||||
@@ -52,11 +54,11 @@ $(sim): $(model_mk)
|
|||||||
$(MAKE) VM_PARALLEL_BUILDS=1 -C $(build_dir)/$(long_name) -f V$(MODEL).mk
|
$(MAKE) VM_PARALLEL_BUILDS=1 -C $(build_dir)/$(long_name) -f V$(MODEL).mk
|
||||||
|
|
||||||
|
|
||||||
$(model_mk_debug): $(sim_vsrcs) $(verilator_dotf) $(INSTALLED_VERILATOR)
|
$(model_mk_debug): $(sim_vsrcs) $(sim_dotf) $(INSTALLED_VERILATOR)
|
||||||
rm -rf $(build_dir)/$(long_name)
|
rm -rf $(build_dir)/$(long_name)
|
||||||
mkdir -p $(build_dir)/$(long_name).debug
|
mkdir -p $(build_dir)/$(long_name).debug
|
||||||
$(VERILATOR) $(VERILATOR_FLAGS) -Mdir $(build_dir)/$(long_name).debug --trace \
|
$(VERILATOR) $(VERILATOR_FLAGS) -Mdir $(build_dir)/$(long_name).debug --trace \
|
||||||
-o $(sim_debug) $(sim_vsrcs) -f $(verilator_dotf) -f $(sim_blackboxes) -LDFLAGS "$(LDFLAGS)" \
|
-o $(sim_debug) $(sim_vsrcs) -f $(sim_dotf) -f $(sim_blackboxes) -LDFLAGS "$(LDFLAGS)" \
|
||||||
-CFLAGS "-I$(build_dir) -include $(build_dir)/$(long_name).plusArgs -include $(model_header_debug)"
|
-CFLAGS "-I$(build_dir) -include $(build_dir)/$(long_name).plusArgs -include $(model_header_debug)"
|
||||||
touch $@
|
touch $@
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ CFG_PROJECT ?= $(PROJECT)
|
|||||||
TB ?= TestDriver
|
TB ?= TestDriver
|
||||||
TOP ?= ExampleTop
|
TOP ?= ExampleTop
|
||||||
|
|
||||||
|
sim_name = vcs
|
||||||
|
|
||||||
simv = $(sim_dir)/simv-$(PROJECT)-$(CONFIG)
|
simv = $(sim_dir)/simv-$(PROJECT)-$(CONFIG)
|
||||||
simv_debug = $(sim_dir)/simv-$(PROJECT)-$(CONFIG)-debug
|
simv_debug = $(sim_dir)/simv-$(PROJECT)-$(CONFIG)-debug
|
||||||
|
|
||||||
@@ -17,28 +19,25 @@ debug: $(simv_debug)
|
|||||||
|
|
||||||
include $(base_dir)/Makefrag
|
include $(base_dir)/Makefrag
|
||||||
|
|
||||||
|
sim_blackboxes = \
|
||||||
|
$(build_dir)/firrtl_black_box_resource_files.f
|
||||||
|
|
||||||
rocketchip_vsrc_dir = $(ROCKETCHIP_DIR)/src/main/resources/vsrc
|
rocketchip_vsrc_dir = $(ROCKETCHIP_DIR)/src/main/resources/vsrc
|
||||||
|
|
||||||
sim_vsrcs = \
|
sim_vsrcs = \
|
||||||
$(VERILOG_FILE) \
|
$(VERILOG_FILE) \
|
||||||
$(HARNESS_FILE) \
|
$(HARNESS_FILE) \
|
||||||
$(SMEMS_FILE) \
|
$(SMEMS_FILE)
|
||||||
$(rocketchip_vsrc_dir)/TestDriver.v \
|
|
||||||
$(rocketchip_vsrc_dir)/AsyncResetReg.v \
|
|
||||||
$(rocketchip_vsrc_dir)/plusarg_reader.v \
|
|
||||||
$(testchip_vsrcs)
|
|
||||||
|
|
||||||
sim_csrcs = \
|
|
||||||
$(testchip_csrcs)
|
|
||||||
|
|
||||||
VCS = vcs -full64
|
VCS = vcs -full64
|
||||||
|
|
||||||
VCS_OPTS = -notice -line +lint=all,noVCDE,noONGS,noUI -error=PCWM-L -timescale=1ns/10ps -quiet \
|
VCS_OPTS = -notice -line +lint=all,noVCDE,noONGS,noUI -error=PCWM-L -timescale=1ns/10ps -quiet \
|
||||||
+rad +v2k +vcs+lic+wait \
|
+rad +v2k +vcs+lic+wait \
|
||||||
+vc+list -CC "-I$(VCS_HOME)/include" \
|
+vc+list -CC "-I$(VCS_HOME)/include" \
|
||||||
-CC "-I$(RISCV)/include -I$(base_dir)/testchipip/csrc" \
|
-CC "-I$(RISCV)/include" \
|
||||||
-CC "-std=c++11" \
|
-CC "-std=c++11" \
|
||||||
-CC "-Wl,-rpath,$(RISCV)/lib" \
|
-CC "-Wl,-rpath,$(RISCV)/lib" \
|
||||||
|
-f $(sim_blackboxes) -f $(sim_dotf) \
|
||||||
$(RISCV)/lib/libfesvr.so \
|
$(RISCV)/lib/libfesvr.so \
|
||||||
-sverilog \
|
-sverilog \
|
||||||
+incdir+$(generated_dir) \
|
+incdir+$(generated_dir) \
|
||||||
|
|||||||
Reference in New Issue
Block a user