blob: d4a846efc0a4b2ca71edcce834fe82a256dbceca [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
{
flow: syn
syn_root: "{proj_root}/hw/syn"
flow_makefile: "{syn_root}/tools/dvsim/syn.mk"
// TODO: the path below is used to refer to the foundry area which does not exist in the open
// repo. This forces the closed "foundry" repo to be placed in that area. This might be subject to
// change in future.
foundry_root: "{proj_root}/hw/foundry"
import_cfgs: [// common server configuration for results upload
// TODO: check whether this config file can be aligned such that it can
// be reused among different flow types
// "{proj_root}/hw/dv/tools/dvsim/fusesoc.hjson",
"{proj_root}/hw/data/common_project_cfg.hjson",
"{syn_root}/tools/dvsim/{tool}.hjson"]
// Default directory structure for the output
dut: "{name}"
params: ""
build_dir: "{scratch_path}/{build_mode}"
build_log: "{build_dir}/synthesis.log"
tool: "dc"
// We rely on Fusesoc to generate the file list for us
sv_flist_gen_cmd: "fusesoc"
fusesoc_core_: "{eval_cmd} echo \"{fusesoc_core}\" | tr ':' '_'"
// TODO: switch the tool to dc once the corresponding edalize backend is available
sv_flist_gen_opts: ["--cores-root {proj_root}",
"run"
"{sv_flist_gen_flags}",
"--target={flow}",
"--tool icarus",
"--build-root={build_dir}",
"--setup",
"{fusesoc_core}"]
sv_flist_gen_dir: "{build_dir}/syn-icarus"
sv_flist: "{sv_flist_gen_dir}/{fusesoc_core_}.scr"
sv_flist_gen_flags: ["--flag=fileset_{design_level}"]
// Can be used to hook in an additional post elab scripting step.
post_elab_script: ""
// By default we run full synthesis including ATP reporting.
// This can be overridden with either of the following
// values in order to terminate earlier (listed in order):
// - "analyze"
// - "elab"
// - "compile"
// - "reports"
// Every stage includes the prior stages, and the report parsing script
// will expect the associated reports to be available (otherwise an
// error will be generated and the flow will fail).
termination_stage: "reports"
// Common pass or fail patterns.
build_fail_patterns: [// FuseSoC build error
"^ERROR:.*$"]
exports: [
{ SYN_ROOT: "{syn_root}" },
{ FOUNDRY_ROOT: "{foundry_root}" },
{ BUILD_DIR: "{build_dir}" },
{ DUT: "{dut}" },
{ PARAMS: "{params}" },
{ SV_FLIST: "{sv_flist}" },
{ POST_ELAB_SCRIPT: "{post_elab_script}" }
{ TERMINATION_STAGE: "{termination_stage}" }
]
}