Replies: 11 comments 20 replies
-
I have no Bazel experience but maybe @QuantamHD might? |
Beta Was this translation helpful? Give feedback.
-
Here is an idea on how to separate the concern of a executing a stage and checking dependencies. This requires a bit of copy and paste in the ORFS Makefile, but add targets such as the From Bazel, I can then run:
Although it is annoying to copy and paste the code, it is relatively simple to do. If ORFS agrees to support this, then a CI smoke-test stage could be added to check that it doesn't break too easily. NOTE!!! Invoking Floorplan is a single stage here, because it's convenient and it saves on the number of copies of .odb used in artifacts.
|
Beta Was this translation helpful? Give feedback.
-
@QuantamHD I'm curious. What is it about Ninja that makes it easier to use from Bazel than make? I'm in favour of the best solution to using Bazel on top of ORFS that is acceptable to ORFS in terms of maintenance burden... Whatever that is :-) |
Beta Was this translation helpful? Give feedback.
-
What is the main motivation for Bazel? I'm wondering if there are other ways to achieve it. |
Beta Was this translation helpful? Give feedback.
-
Most steps involve the running of a single script. I've considered switching from passing envars to treating the scripts as jinja templates and building evaluated copies instead. Would that enable you to write the Bazel rules on those scripts as they would be self-contained? |
Beta Was this translation helpful? Give feedback.
-
today we have
which require three envars to be passed in by make. If we generated a platform/design/variant specific script it might have for ng45/ariane133
Then Bazel could run this script without requiring the envars from make. |
Beta Was this translation helpful? Give feedback.
-
@QuantamHD would this be useful to you in terms of keeping up to date with flow changes? |
Beta Was this translation helpful? Give feedback.
-
@maliberty Another idea add a target to generate vars.sh, which sets up environment variables. This will make it possible to invoke openroad and with a .tcl script directly, without having to go via make. All the dependencies have to be expressed in Bazel carefully, but that's what we want anyway... See #1163 for a draft pull request as to what I have in mind. |
Beta Was this translation helpful? Give feedback.
-
@maliberty @QuantamHD With #1175, a step can be executed unconditonally without checking dependencies. Example:
Obviously dependencies have to be listed in Bazel. It is at least possible to list the dependencies from the makefile.
|
Beta Was this translation helpful? Give feedback.
-
ORFS now separates the action and checking dependencies and doing the action.
|
Beta Was this translation helpful? Give feedback.
-
For anyone googling, work continues here... hdl/bazel_rules_hdl#225 |
Beta Was this translation helpful? Give feedback.
-
We are writing a wafer thin Bazel layer on top of ORFS. This is because we want ORFS functionality, but Bazel artifacts and remote builds.
I'm aware that there are ground up Bazel implementations, but I want the ORFS scripts & flow, so that it is easier to report issues to ORFS and that I can use the latest version of ORFS.
This is going well, and when I have something, I will share it, but what would be helpful is to separate the concern of ORFS as a configuration and build flow system, from ORFS's use of make.
Example of what I mean:
make synth
, this generates some files. Bazel will put these files somewhere and restore them at some later point when downloaded as an artifactmake
, then there are no guarantees w.r.t. dates for the files restored as a synth artifact. To make things more interesting, Bazel also uses symlinks; symlinks and make do not work together(looong story).So what I need is the ability to move the dependency checking to Bazel, but to leave the command invocation to ORFS.
Any ideas on how this might that be achieved?
Beta Was this translation helpful? Give feedback.
All reactions