# synth The _synth_ module is meant to be used to execute YOSYS synthesis. The module should guarantee the following outputs: * `eblif` * `fasm_extra` (can be empty) * `json` * `synth_json` * `synth_log` (on demand) For detailed information about these targets, please refer to `docs/common targets and variables.md` What files and how are they generated is dependent on TCL scripts executed withing YOSYS and the script vary depending on the target platform. Due to this design choice it is required for the author of the flow definition to parameterize the `synth` module in a way that will **GUARANTEE** the targets mentioned above will be generated upon a successful YOSYS run. The setup of the synth module follows the following specifications: ## Parameters The `params` section of a stage configuration may contain a `produces` list. The list should specify additional targets that will be generated (`?` qualifier is allowed). ## Values The `synth` module requires the following values: * `tcl_scripts` (string, required): A path to a directory containing `synth.tcl` and `conv.tcl` scripts that will be used by YOSYS. * `read_verilog_args` (list[string | number], optional) - If specified, the Verilog sources will be read using the `read_verilog` procedure with options contained in this value. * `yosys_tcl_env` (dict[string -> string | list[string], required) - A mapping that defines environmental variables that will be used within the TCL scripts. This should contain the references to module's inputs and outputs in order to guarantee the generation of the desired targets.