Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hdl: remove yosys-report.txt #513

Merged
merged 1 commit into from
Aug 10, 2021
Merged

Conversation

proppy
Copy link
Collaborator

@proppy proppy commented Jul 29, 2021

  • set default shell to bash
  • add pipefail option

Fixes #412

@mithro mithro requested a review from umarcor July 29, 2021 16:15
Copy link
Collaborator

@umarcor umarcor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about using set -o pipefail so we can preserve having the report written to a file?

@proppy
Copy link
Collaborator Author

proppy commented Jul 30, 2021

@umarcor are we cool with tying the build process to bash?

@mithro
Copy link
Member

mithro commented Jul 30, 2021

@umarcor are we cool with tying the build process to bash?

I think I am.

@umarcor
Copy link
Collaborator

umarcor commented Jul 30, 2021

Honestly, I'd be good with tying it to Python only and leaving bash and Makefiles behind. It's 2021 already! So, I think requiring bash is ok, until we can actually provide a py solution.

@proppy
Copy link
Collaborator Author

proppy commented Jul 30, 2021

I'd be good with tying it to Python only

are you thinking of something like https://nox.thea.codes/en/stable/ to automate testing in various python environment, or just orchestrating the build in python?

@umarcor
Copy link
Collaborator

umarcor commented Jul 30, 2021

are you thinking of something like https://nox.thea.codes/en/stable/ to automate testing in various python environment, or just orchestrating the build in python?

Actually, my statement has several layers of complexity. I mean a modular project composed of various Python abstraction layers (classes) stacked on top of each other, which would allow existing HDL/EDA management tools to stop reinventing the wheel.

  1. Packaging and distribution of tools.
  2. Abstraction of a CLI program (independent of EDA tools, can also be Git).
  3. EDA tools and interaction with these incl. output filtering.
  4. Middle layer to translate projects into execution steps.
  5. Projects.
  6. Workflows.
  7. INI/YAML files.

See the thread in gitter.im/hdl/community?at=60f6b7d0c9f8852a97fa240b and umarcor.github.io/osvb/apis/tool.

The Makefiles in the hdl subdir of this workshop, as well as the ones in stnolting/neorv32: setups/osflow are the non-Python common ground I'm using as a reference. Whatever Python solution we build needs to support all the toolchain installation and execution patterms used in the CI of this workshop (linux static-toolchain, windows static-toolchain, macos static-toolchain, container all-in-one linux/windows/macos, container fine-grained linux/windows/macos, windows MSYS2) and others (conda, oss-cad-suite, brew, etc.).

The final solution is likely to have parts of pyIPCMI, Litex, PyFPGA, edalize, etc. Meanwhile, my naive approach is to replace Makefiles and bash with pydoit. That allows just a syntax change, with very low cognitive load for any reader used to makefiles. See, for instance, stnolting/neorv32#110.

I find nox very interesting, but similarly to tox the scope is not exactly the same. I/we are not explicitly insterested in creating multiple venvs with specific packages in them. We are focused in a single Python environment (which might be the system, a container, one specific venv or some venv created by Conda) and multiple EDA tools not written in Python. Nevertheless, I will note down the reference to nox, because it might be useful in some of the abstraction layers. Some of the tools that use nox, such as Hydra or Google's projects, do have some overlap with our scope.

@mithro
Copy link
Member

mithro commented Jul 30, 2021

One thing to think about is that we want to be as familiar as possible to existing software developers. While we do want a "unified solution" there are plenty of stubborn developers which will always want to start with "simple makefiles".

@mithro
Copy link
Member

mithro commented Jul 30, 2021

@umarcor
Copy link
Collaborator

umarcor commented Jul 30, 2021

One thing to think about is that we want to be as familiar as possible to existing software developers. While we do want a "unified solution" there are plenty of stubborn developers which will always want to start with "simple makefiles".

Agree. People need to be convinved about the need for a "fully-featured Python ecosystem" before using it. Those working on a limited number of boards, with an specific set of languages, or an specific sub-ecosystem will not need such solution. There will always be a place for makefiles. However, at some point of complexity, they are more painful than useful.

See also f4pga/f4pga-arch-defs#2225 and https://github.com/PyFPGA/symbiflow_cli

I need to do a writeup of the discussion in hdl/community and a meeting I had with Patrick and Kaleb. Then I will reply there.

@umarcor
Copy link
Collaborator

umarcor commented Aug 7, 2021

@proppy, do you mind using pipefail and adding Fixes #412 to your first message above?

All other CI failures should be fixed now (both doc and macos).

- set default shell to bash
- add pipefail option

Fixes im-tomu#412
@proppy
Copy link
Collaborator Author

proppy commented Aug 10, 2021

@proppy, do you mind using pipefail and adding Fixes #412 to your first message above?

PTAL

@umarcor umarcor added the enhancement New feature or request label Aug 10, 2021
@umarcor umarcor merged commit eda1671 into im-tomu:master Aug 10, 2021
@umarcor
Copy link
Collaborator

umarcor commented Aug 10, 2021

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

vhdl/blink/blink.json missing
3 participants