[dvsim] Keep dependencies list

This set of changes is aimed at retaining the dependency order across
targets, even if the dependency is not scheduled to be run. The
Deploy::dependencies list once constructed, remains untouched. We
instead change the way the FlowCfg::deploy list is created - if targets
are not required to run (for example, when --build-only or --run-only
switch is passed), then they are not added to the deploy list. This
means that the deploy list needs to be constructed correctly - the
scheduler relies on it to know what to run.

The scheduler previously recursively went through the dependencies to
determine what all needed to be run - this required the FlowCfg to
delete dependencies after the fact, if flow modifier switches were
passed. This is no longer needed because we now explicitly provide it
the list of things to run instead. This also means when checking an
item's eligibility to be enqueued based on its dependencies' statuses,
it needs to ignore the deps that were not a part of the original deploy
list.

The reason for this change is our internal Google Cloud based launching
system, which runs each job (input -> process -> output) in an isolated
VM instance. The job's input and output are tarballs that flit between
the user's workstation, Google Cloud storage, and the VM instance. To
support --run-only for example, in our environment, the run deploy
object needs to be able to provide a pointer to its build dependency
(which would have run in the past) so that the built simulation
executable can be tarballed and uploaded as the run-job's input.

Signed-off-by: Srikrishna Iyer <sriyer@google.com>
3 files changed
tree: e3f4f33e0fb964e4f69f6062aef3af8da34aa1b0
  1. .github/
  2. ci/
  3. doc/
  4. hw/
  5. site/
  6. sw/
  7. test/
  8. util/
  9. .clang-format
  10. .dockerignore
  11. .flake8
  12. .gitignore
  13. .style.yapf
  14. .svlint.toml
  15. .svls.toml
  16. _index.md
  17. apt-requirements.txt
  18. azure-pipelines.yml
  19. check_tool_requirements.core
  20. CLA
  21. COMMITTERS
  22. CONTRIBUTING.md
  23. LICENSE
  24. meson.build
  25. meson_init.sh
  26. meson_options.txt
  27. python-requirements.txt
  28. README.md
  29. tool_requirements.py
  30. toolchain.txt
  31. topgen-generator.core
  32. topgen-reg-only.core
  33. topgen.core
  34. yum-requirements.txt
README.md

OpenTitan

OpenTitan logo

About the project

OpenTitan is an open source silicon Root of Trust (RoT) project. OpenTitan will make the silicon RoT design and implementation more transparent, trustworthy, and secure for enterprises, platform providers, and chip manufacturers. OpenTitan is administered by lowRISC CIC as a collaborative project to produce high quality, open IP for instantiation as a full-featured product. See the OpenTitan site and OpenTitan docs for more information about the project.

About this repository

This repository contains hardware, software and utilities written as part of the OpenTitan project. It is structured as monolithic repository, or “monorepo”, where all components live in one repository. It exists to enable collaboration across partners participating in the OpenTitan project.

Documentation

The project contains comprehensive documentation of all IPs and tools. You can access it online at docs.opentitan.org.

How to contribute

Have a look at CONTRIBUTING for guidelines on how to contribute code to this repository.

Licensing

Unless otherwise noted, everything in this repository is covered by the Apache License, Version 2.0 (see LICENSE for full text).