parser = argparse.ArgumentParser(description="Generic LiteX SoC Simulation")
builder_args(parser)
soc_sdram_args(parser)
+ parser.add_argument("--threads", default=1,
+ help="set number of threads (default=1)")
parser.add_argument("--rom-init", default=None,
help="rom_init file")
parser.add_argument("--ram-init", default=None,
**soc_kwargs)
builder_kwargs["csr_csv"] = "csr.csv"
builder = Builder(soc, **builder_kwargs)
- vns = builder.build(run=False, sim_config=sim_config)
+ vns = builder.build(run=False, threads=args.threads, sim_config=sim_config)
if args.with_analyzer:
soc.analyzer.export_csv(vns, "analyzer.csv")
- builder.build(build=False, sim_config=sim_config)
+ builder.build(build=False, threads=args.threads, sim_config=sim_config)
if __name__ == "__main__":
tools.write_to_file("sim_config.js", content)
-def _build_sim(platform, build_name, verbose):
+def _build_sim(platform, build_name, threads, verbose):
makefile = os.path.join(core_directory, 'Makefile')
build_script_contents = """\
rm -rf obj_dir/
-make -C . -f {}
+make -C . -f {} THREADS={}
mkdir -p modules && cp obj_dir/*.so modules
-""".format(makefile)
+""".format(makefile, threads)
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, verbose=True,
- sim_config=None):
+ toolchain_path=None, serial="console", build=True, run=True, threads=1,
+ verbose=True, sim_config=None):
os.makedirs(build_dir, exist_ok=True)
os.chdir(build_dir)
if sim_config:
_generate_sim_config(sim_config)
- _build_sim(platform, build_name, verbose)
+ _build_sim(platform, build_name, threads, verbose)
if run:
_run_sim(build_name, as_root=sim_config.has_module("ethernet"))