dv-flow-mgr 0.0.2.14149088756a1__tar.gz → 0.0.2.14149347362a1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/PKG-INFO +1 -1
  2. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/pyproject.toml +1 -1
  3. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/__init__.py +1 -0
  4. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/task_node.py +1 -1
  5. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/task_node_leaf.py +2 -2
  6. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/task_run_ctxt.py +14 -1
  7. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow_mgr.egg-info/PKG-INFO +1 -1
  8. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/.github/workflows/ci.yml +0 -0
  9. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/.gitignore +0 -0
  10. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/.vscode/settings.json +0 -0
  11. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/LICENSE +0 -0
  12. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/README.md +0 -0
  13. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/docs/ChangeLog.md +0 -0
  14. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/docs/KeyArchitecture.md +0 -0
  15. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/docs/Makefile +0 -0
  16. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/docs/Notes.md +0 -0
  17. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/docs/Roadmap.md +0 -0
  18. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/docs/RundirLayout.md +0 -0
  19. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/docs/Stages.md +0 -0
  20. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/docs/Steps.md +0 -0
  21. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/docs/Tasks.md +0 -0
  22. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/docs/TypesAndDefs.md +0 -0
  23. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/docs/Usecases.md +0 -0
  24. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/docs/cmdref.rst +0 -0
  25. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/docs/conf.py +0 -0
  26. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/docs/index.rst +0 -0
  27. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/docs/pytask_api.rst +0 -0
  28. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/docs/quickstart.rst +0 -0
  29. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/fwperiph_dma.pss +0 -0
  30. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/ivpm.yaml +0 -0
  31. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/setup.cfg +0 -0
  32. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/__main__.py +0 -0
  33. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/cmds/cmd_graph.py +0 -0
  34. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/cmds/cmd_run.py +0 -0
  35. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/cmds/cmd_show.py +0 -0
  36. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/eval_jq.py +0 -0
  37. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/expr_eval.py +0 -0
  38. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/expr_parser.py +0 -0
  39. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/fileset.py +0 -0
  40. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/fragment_def.py +0 -0
  41. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/out +0 -0
  42. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/package.py +0 -0
  43. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/package_def.py +0 -0
  44. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/package_import_spec.py +0 -0
  45. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/param.py +0 -0
  46. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/param_def.py +0 -0
  47. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/param_ref_eval.py +0 -0
  48. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/parsetab.py +0 -0
  49. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/pkg_rgy.py +0 -0
  50. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/share/flow.json +0 -0
  51. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/std/create_file.py +0 -0
  52. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/std/exec.py +0 -0
  53. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/std/fileset.py +0 -0
  54. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/std/flow.dv +0 -0
  55. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/std/message.py +0 -0
  56. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/std/task_null.py +0 -0
  57. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/task_data.py +0 -0
  58. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/task_def.py +0 -0
  59. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/task_graph_builder.py +0 -0
  60. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/task_graph_dot_writer.py +0 -0
  61. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/task_listener_log.py +0 -0
  62. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/task_node_compound.py +0 -0
  63. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/task_node_ctor.py +0 -0
  64. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/task_node_ctor_compound.py +0 -0
  65. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/task_node_ctor_compound_proxy.py +0 -0
  66. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/task_node_ctor_def_base.py +0 -0
  67. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/task_node_ctor_proxy.py +0 -0
  68. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/task_node_ctor_task.py +0 -0
  69. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/task_node_ctor_wrapper.py +0 -0
  70. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/task_output.py +0 -0
  71. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/task_params_ctor.py +0 -0
  72. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/task_runner.py +0 -0
  73. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/type.py +0 -0
  74. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/type_def.py +0 -0
  75. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/util/__init__.py +0 -0
  76. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/util/__main__.py +0 -0
  77. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/util/cmds/__init__.py +0 -0
  78. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/util/cmds/cmd_schema.py +0 -0
  79. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow/mgr/util/util.py +0 -0
  80. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow_mgr.egg-info/SOURCES.txt +0 -0
  81. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow_mgr.egg-info/dependency_links.txt +0 -0
  82. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow_mgr.egg-info/entry_points.txt +0 -0
  83. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow_mgr.egg-info/requires.txt +0 -0
  84. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/src/dv_flow_mgr.egg-info/top_level.txt +0 -0
  85. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/examples/example1/example1.flow +0 -0
  86. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/system/test_depends.py +0 -0
  87. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/system/test_pkg_discovery.py +0 -0
  88. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/system/test_stdlib.py +0 -0
  89. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/__init__.py +0 -0
  90. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/data/fileset/test1/files1/file1_1.sv +0 -0
  91. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/data/fileset/test1/files1/file1_2.sv +0 -0
  92. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/data/fileset/test1/files2/file2_1.sv +0 -0
  93. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/data/fileset/test1/files2/file2_2.sv +0 -0
  94. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/data/fileset/test1/flow.dv +0 -0
  95. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/data/fileset/test1 copy/files1/file1_1.sv +0 -0
  96. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/data/fileset/test1 copy/files1/file1_2.sv +0 -0
  97. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/data/fileset/test1 copy/files2/file2_1.sv +0 -0
  98. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/data/fileset/test1 copy/files2/file2_2.sv +0 -0
  99. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/data/fileset/test1 copy/test1.dfs +0 -0
  100. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/data/proj1/proj1.dfs +0 -0
  101. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/data/proj2/proj2.dfs +0 -0
  102. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/data/proj3/proj3.dfs +0 -0
  103. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/test_compound_task.py +0 -0
  104. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/test_data_merge.py +0 -0
  105. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/test_dataflow.py +0 -0
  106. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/test_expr_eval.py +0 -0
  107. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/test_expr_parser.py +0 -0
  108. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/test_fileset.py +0 -0
  109. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/test_imports.py +0 -0
  110. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/test_markers.py +0 -0
  111. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/test_parse.py +0 -0
  112. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/test_pyclass.py +0 -0
  113. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/test_pytask_smoke.py +0 -0
  114. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/test_smoke copy.sav +0 -0
  115. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/test_smoke.py +0 -0
  116. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14149347362a1}/tests/unit/test_stdlib.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-flow-mgr
3
- Version: 0.0.2.14149088756a1
3
+ Version: 0.0.2.14149347362a1
4
4
  Summary: DV Flow Manager is a build system for silicon design
5
5
  Author-email: Matthew Ballance <matt.ballance@gmail.com>
6
6
  License: Apache License
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
 
6
6
  [project]
7
7
  name = "dv-flow-mgr"
8
- version = "0.0.2.14149088756a1"
8
+ version = "0.0.2.14149347362a1"
9
9
  dependencies = [
10
10
  'jq',
11
11
  'pydantic',
@@ -24,6 +24,7 @@ from .pkg_rgy import PkgRgy
24
24
  from .task_data import *
25
25
  from .task_def import *
26
26
  from .task_graph_builder import TaskGraphBuilder
27
+ from .task_run_ctxt import TaskRunCtxt
27
28
  from .task_runner import TaskRunner
28
29
  from .task_node_ctor_wrapper import task
29
30
  from .task_runner import TaskSetRunner
@@ -111,7 +111,7 @@ class TaskNode(object):
111
111
  "rundir": rundir,
112
112
  "input": input.model_dump(warnings=False),
113
113
  "needs": [need[0].name for need in self.needs],
114
- "commands": [cmd.dump_model() for cmd in ctxt._exec_info],
114
+ "commands": [cmd.model_dump() for cmd in ctxt._exec_info],
115
115
  "result": {
116
116
  "status": self.result.status,
117
117
  "changed": self.result.changed,
@@ -116,10 +116,10 @@ class TaskNodeLeaf(TaskNode):
116
116
  inputs=inputs,
117
117
  memento=memento)
118
118
 
119
- ctxt = TaskRunCtxt(runner=self, rundir=input.rundir)
119
+ ctxt = TaskRunCtxt(runner=runner, rundir=input.rundir)
120
120
 
121
121
  self._log.debug("--> Call task method %s" % str(self.task))
122
- self.result : TaskDataResult = await self.task(self, input)
122
+ self.result : TaskDataResult = await self.task(ctxt, input)
123
123
  self._log.debug("<-- Call task method %s" % str(self.task))
124
124
 
125
125
  self.result.markers.extend(ctxt._markers)
@@ -40,7 +40,20 @@ class TaskRunCtxt(object):
40
40
  self._exec_info.append(ExecInfo(cmd=cmd, status=status))
41
41
 
42
42
  if status != 0:
43
- self.error_marker("Command failed: %s" % " ".join(cmd))
43
+ self.error("Command failed: %s" % " ".join(cmd))
44
+
45
+ return status
46
+
47
+ def create(self, path, content):
48
+ if not os.path.isabs(path):
49
+ path = os.path.join(self.rundir, path)
50
+
51
+ if not os.path.isdir(os.path.dirname(path)):
52
+ os.makedirs(os.path.dirname(path))
53
+
54
+ with open(path, "w") as fp:
55
+ fp.write(content)
56
+
44
57
 
45
58
  def marker(self, msg : str, severity : SeverityE, loc : TaskMarkerLoc=None):
46
59
  if loc is not None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-flow-mgr
3
- Version: 0.0.2.14149088756a1
3
+ Version: 0.0.2.14149347362a1
4
4
  Summary: DV Flow Manager is a build system for silicon design
5
5
  Author-email: Matthew Ballance <matt.ballance@gmail.com>
6
6
  License: Apache License