diff --git a/edalize/flows/generic.py b/edalize/flows/generic.py index 9166d9a2d..76feb4a85 100644 --- a/edalize/flows/generic.py +++ b/edalize/flows/generic.py @@ -37,7 +37,7 @@ def get_tool_options(cls, flow_options): def configure_flow(self, flow_options): # Check for mandatory flow option "tool" - tool = self.flow_options.get("tool", "") + tool = self._require_flow_option(flow_options, "tool") # Apply flow-defined tool options if any fdto = self.FLOW_DEFINED_TOOL_OPTIONS.get(tool, {}) diff --git a/tests/flows/sim/Makefile b/tests/flows/sim/Makefile new file mode 100644 index 000000000..2cfd5f672 --- /dev/null +++ b/tests/flows/sim/Makefile @@ -0,0 +1,19 @@ +#Auto generated by Edalize + +all: post_build + +pre_build: + +design: sv_file.sv vlog_file.v vlog05_file.v vlog_incfile another_sv_file.sv design.scr | pre_build + $(EDALIZE_LAUNCHER) iverilog -stop_module -c design.scr -o design + +run: design + $(EDALIZE_LAUNCHER) vvp -n -M. design -fst $(EXTRA_OPTIONS) + +post_build: design + +pre_run: + +run: pre_run + +post_run: run diff --git a/tests/flows/sim/design.scr b/tests/flows/sim/design.scr new file mode 100644 index 000000000..ecd8d98ba --- /dev/null +++ b/tests/flows/sim/design.scr @@ -0,0 +1,11 @@ ++define+vlogdefine_bool=1 ++define+vlogdefine_int=42 ++define+vlogdefine_str=hello ++parameter+top_module.vlogparam_bool=1 ++parameter+top_module.vlogparam_int=42 ++parameter+top_module.vlogparam_str="hello" ++incdir+. +sv_file.sv +vlog_file.v +vlog05_file.v +another_sv_file.sv diff --git a/tests/test_flow_sim.py b/tests/test_flow_sim.py new file mode 100644 index 000000000..d1dd6d089 --- /dev/null +++ b/tests/test_flow_sim.py @@ -0,0 +1,22 @@ +import pytest +from .edalize_flow_common import flow_fixture + + +def test_sim_no_tool(flow_fixture): + flow_options = {} + with pytest.raises(RuntimeError) as e: + ff = flow_fixture("sim", flow_options=flow_options) + assert "Flow 'sim' requires flow option 'tool' to be set" in str(e.value) + + +def test_sim(flow_fixture): + flow_options = {"tool": "icarus"} + ff = flow_fixture("sim", flow_options=flow_options) + + ff.flow.configure() + ff.compare_config_files( + [ + "design.scr", + "Makefile", + ] + )