Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

Conversation

@ivanvig
Copy link
Contributor

@ivanvig ivanvig commented Nov 11, 2025

Fixes #479. The idea is to override the inherited build method so it properly accounts for the pnr option and appends the synth argument when is needed, basically mirroring how it’s handled in the Vivado tool code.

@mcarter-cyber
Copy link

Is this not caused by the build method in the vivado tool class?

def build(self):
logger.info("Building")
args = []
if "pnr" in self.tool_options:
if self.tool_options["pnr"] == "vivado":
pass
elif self.tool_options["pnr"] == "none":
args.append("synth")
return ("make", self.args, self.work_root)

"synth" is appended to args, but the method returns self.args

@olofk
Copy link
Owner

olofk commented Dec 19, 2025

Good catch. Does it work as expected if you just change args.append to self.args.append (or return args)?

@ivanvig
Copy link
Contributor Author

ivanvig commented Dec 19, 2025

afaik the vivado tool build method never gets called using the flow api.

This is the inherited build method from edaflow

def build(self):
(cmd, args) = self.build_runner.get_build_command()
self._run_tool(cmd, args=args, cwd=self.work_root)

It gets the build command (by default make) and the build args (which currently cant be set for the make builder #480 ). And then executes that with _run_tool() which is just a wrapper for subprocess.run()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Vivado flow ignores pnr=none

3 participants