dut = new Vdut;
- litex_sim_init_tracer(dut, {},{});
+ litex_sim_init_tracer(dut, {}, {});
""".format(trace_start, trace_end)
for args in platform.sim_requested:
tools.write_to_file("sim_config.js", content)
-def _build_sim(build_name, sources, threads, coverage, opt_level="O3"):
+def _build_sim(build_name, sources, threads, coverage, opt_level="O3", trace_fst=False):
makefile = os.path.join(core_directory, 'Makefile')
cc_srcs = []
for filename, language, library in sources:
cc_srcs.append("--cc " + filename + " ")
build_script_contents = """\
rm -rf obj_dir/
-make -C . -f {} {} {} {} {}
-mkdir -p modules && cp obj_dir/*.so modules
+make -C . -f {} {} {} {} {} {}
""".format(makefile,
"CC_SRCS=\"{}\"".format("".join(cc_srcs)),
"THREADS={}".format(threads) if int(threads) > 1 else "",
"COVERAGE=1" if coverage else "",
"OPT_LEVEL={}".format(opt_level),
+ "TRACE_FST=1" if trace_fst else "",
)
build_script_file = "build_" + build_name + ".sh"
tools.write_to_file(build_script_file, build_script_contents, force_unix=True)
class SimVerilatorToolchain:
def build(self, platform, fragment, build_dir="build", build_name="dut",
- toolchain_path=None, serial="console", build=True, run=True, threads=1,
+ serial="console", build=True, run=True, threads=1,
verbose=True, sim_config=None, coverage=False, opt_level="O0",
- trace=False, trace_start=0, trace_end=-1):
+ trace=False, trace_fst=False, trace_start=0, trace_end=-1):
# create build directory
os.makedirs(build_dir, exist_ok=True)
_generate_sim_config(sim_config)
# build
- _build_sim(build_name, platform.sources, threads, coverage, opt_level)
+ _build_sim(build_name, platform.sources, threads, coverage, opt_level, trace_fst)
# run
if run:
os.chdir("../../")
if build:
- return top_output.ns
\ No newline at end of file
+ return top_output.ns