dv-flow-mgr 0.0.1.12672327205a1__py3-none-any.whl → 0.0.1.12703462647a1__py3-none-any.whl
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.
- dv_flow_mgr/fragment_def.py +2 -4
- dv_flow_mgr/package_def.py +27 -26
- dv_flow_mgr/package_import_spec.py +31 -0
- dv_flow_mgr/session.py +55 -13
- dv_flow_mgr/share/flow.json +8 -7
- dv_flow_mgr/task.py +3 -0
- dv_flow_mgr/task_def.py +1 -1
- dv_flow_mgr/tasklib/hdl/sim/mti_task_sim_image.py +3 -3
- dv_flow_mgr/tasklib/hdl/sim/vcs_pkg.py +14 -0
- dv_flow_mgr/tasklib/hdl/sim/vcs_task_sim_image.py +49 -0
- dv_flow_mgr/tasklib/hdl/sim/vcs_task_sim_run.py +45 -0
- dv_flow_mgr/tasklib/hdl/sim/vl_task_sim_image.py +2 -2
- dv_flow_mgr/tasklib/hdl/sim/vlt_task_sim_run.py +1 -1
- {dv_flow_mgr-0.0.1.12672327205a1.dist-info → dv_flow_mgr-0.0.1.12703462647a1.dist-info}/METADATA +2 -2
- {dv_flow_mgr-0.0.1.12672327205a1.dist-info → dv_flow_mgr-0.0.1.12703462647a1.dist-info}/RECORD +19 -15
- {dv_flow_mgr-0.0.1.12672327205a1.dist-info → dv_flow_mgr-0.0.1.12703462647a1.dist-info}/WHEEL +1 -1
- {dv_flow_mgr-0.0.1.12672327205a1.dist-info → dv_flow_mgr-0.0.1.12703462647a1.dist-info}/LICENSE +0 -0
- {dv_flow_mgr-0.0.1.12672327205a1.dist-info → dv_flow_mgr-0.0.1.12703462647a1.dist-info}/entry_points.txt +0 -0
- {dv_flow_mgr-0.0.1.12672327205a1.dist-info → dv_flow_mgr-0.0.1.12703462647a1.dist-info}/top_level.txt +0 -0
dv_flow_mgr/fragment_def.py
CHANGED
@@ -23,11 +23,9 @@ import pydantic.dataclasses as dc
|
|
23
23
|
import json
|
24
24
|
from pydantic import BaseModel
|
25
25
|
from typing import Any, Dict, List
|
26
|
-
from .flow import Flow
|
27
26
|
from .package import Package
|
28
|
-
from .
|
29
|
-
from .
|
30
|
-
from .task_def import TaskDef, TaskSpec
|
27
|
+
from .package_import_spec import PackageImportSpec
|
28
|
+
from .task_def import TaskDef
|
31
29
|
|
32
30
|
class FragmentDef(BaseModel):
|
33
31
|
tasks : List[TaskDef] = dc.Field(default_factory=list)
|
dv_flow_mgr/package_def.py
CHANGED
@@ -24,36 +24,12 @@ import json
|
|
24
24
|
from pydantic import BaseModel
|
25
25
|
from typing import Any, Dict, List
|
26
26
|
from .flow import Flow
|
27
|
+
from .fragment_def import FragmentDef
|
27
28
|
from .package import Package
|
29
|
+
from .package_import_spec import PackageImportSpec, PackageSpec
|
28
30
|
from .task import TaskParamCtor
|
29
31
|
from .task_def import TaskDef, TaskSpec
|
30
32
|
|
31
|
-
@dc.dataclass
|
32
|
-
class PackageSpec(object):
|
33
|
-
name : str
|
34
|
-
params : Dict[str,Any] = dc.Field(default_factory=dict)
|
35
|
-
_fullname : str = None
|
36
|
-
|
37
|
-
def get_fullname(self) -> str:
|
38
|
-
if self._fullname is None:
|
39
|
-
if len(self.params) != 0:
|
40
|
-
self._fullname = "%s%s}" % (
|
41
|
-
self.name,
|
42
|
-
json.dumps(self.params, separators=(',', ':')))
|
43
|
-
else:
|
44
|
-
self._fullname = self.name
|
45
|
-
return self._fullname
|
46
|
-
|
47
|
-
def __hash__(self):
|
48
|
-
return hash(self.get_fullname())
|
49
|
-
|
50
|
-
def __eq__(self, value):
|
51
|
-
return isinstance(value, PackageSpec) and value.get_fullname() == self.get_fullname()
|
52
|
-
|
53
|
-
@dc.dataclass
|
54
|
-
class PackageImportSpec(PackageSpec):
|
55
|
-
path : str = dc.Field(default=None, alias="from")
|
56
|
-
alias : str = dc.Field(default=None, alias="as")
|
57
33
|
|
58
34
|
class PackageDef(BaseModel):
|
59
35
|
name : str
|
@@ -63,6 +39,8 @@ class PackageDef(BaseModel):
|
|
63
39
|
imports : List[PackageImportSpec] = dc.Field(default_factory=list)
|
64
40
|
fragments: List[str] = dc.Field(default_factory=list)
|
65
41
|
|
42
|
+
fragment_l : List['FragmentDef'] = dc.Field(default_factory=list, exclude=True)
|
43
|
+
|
66
44
|
# import_m : Dict['PackageSpec','Package'] = dc.Field(default_factory=dict)
|
67
45
|
|
68
46
|
basedir : str = None
|
@@ -90,8 +68,31 @@ class PackageDef(BaseModel):
|
|
90
68
|
basedir=self.basedir,
|
91
69
|
depend_refs=task.depends)
|
92
70
|
else:
|
71
|
+
# We use the Null task from the std package
|
93
72
|
raise Exception("")
|
94
73
|
ret.tasks[task.name] = ctor_t
|
95
74
|
|
75
|
+
for frag in self.fragment_l:
|
76
|
+
for task in frag.tasks:
|
77
|
+
if task.type is not None:
|
78
|
+
# Find package (not package_def) that implements this task
|
79
|
+
# Insert an indirect reference to that tasks's constructor
|
80
|
+
|
81
|
+
# Only call getTaskCtor if the task is in a different package
|
82
|
+
task_t = task.type if isinstance(task.type, TaskSpec) else TaskSpec(task.type)
|
83
|
+
ctor_t = session.getTaskCtor(task_t, self)
|
84
|
+
|
85
|
+
ctor_t = TaskParamCtor(
|
86
|
+
base=ctor_t,
|
87
|
+
params=task.params,
|
88
|
+
basedir=frag.basedir,
|
89
|
+
depend_refs=task.depends)
|
90
|
+
else:
|
91
|
+
# We use the Null task from the std package
|
92
|
+
raise Exception("")
|
93
|
+
if task.name in ret.tasks:
|
94
|
+
raise Exception("Task %s already defined" % task.name)
|
95
|
+
ret.tasks[task.name] = ctor_t
|
96
|
+
|
96
97
|
return ret
|
97
98
|
|
@@ -0,0 +1,31 @@
|
|
1
|
+
|
2
|
+
import pydantic.dataclasses as dc
|
3
|
+
import json
|
4
|
+
from typing import Dict, Any
|
5
|
+
|
6
|
+
@dc.dataclass
|
7
|
+
class PackageSpec(object):
|
8
|
+
name : str
|
9
|
+
params : Dict[str,Any] = dc.Field(default_factory=dict)
|
10
|
+
_fullname : str = None
|
11
|
+
|
12
|
+
def get_fullname(self) -> str:
|
13
|
+
if self._fullname is None:
|
14
|
+
if len(self.params) != 0:
|
15
|
+
self._fullname = "%s%s}" % (
|
16
|
+
self.name,
|
17
|
+
json.dumps(self.params, separators=(',', ':')))
|
18
|
+
else:
|
19
|
+
self._fullname = self.name
|
20
|
+
return self._fullname
|
21
|
+
|
22
|
+
def __hash__(self):
|
23
|
+
return hash(self.get_fullname())
|
24
|
+
|
25
|
+
def __eq__(self, value):
|
26
|
+
return isinstance(value, PackageSpec) and value.get_fullname() == self.get_fullname()
|
27
|
+
|
28
|
+
@dc.dataclass
|
29
|
+
class PackageImportSpec(PackageSpec):
|
30
|
+
path : str = dc.Field(default=None, alias="from")
|
31
|
+
alias : str = dc.Field(default=None, alias="as")
|
dv_flow_mgr/session.py
CHANGED
@@ -24,6 +24,7 @@ import os
|
|
24
24
|
import yaml
|
25
25
|
import dataclasses as dc
|
26
26
|
from typing import Any, Callable, Dict, List
|
27
|
+
from .fragment_def import FragmentDef
|
27
28
|
from .package import Package
|
28
29
|
from .package_def import PackageDef, PackageSpec
|
29
30
|
from .task import Task,TaskSpec
|
@@ -47,14 +48,15 @@ class Session(object):
|
|
47
48
|
_task_list : List[Task] = dc.field(default_factory=list)
|
48
49
|
_task_m : Dict[TaskSpec,Task] = dc.field(default_factory=dict)
|
49
50
|
_task_id : int = 0
|
50
|
-
_rundir_s : List[str] = dc.field(default_factory=list)
|
51
51
|
|
52
52
|
def __post_init__(self):
|
53
53
|
from .tasklib.std.pkg_std import PackageStd
|
54
|
+
from .tasklib.hdl.sim.vcs_pkg import VcsPackage
|
54
55
|
from .tasklib.hdl.sim.vlt_pkg import VltPackage
|
55
56
|
from .tasklib.hdl.sim.mti_pkg import MtiPackage
|
56
57
|
self._pkg_m[PackageSpec("std")] = PackageStd("std")
|
57
58
|
self._pkg_m[PackageSpec("hdl.sim.mti")] = MtiPackage("hdl.sim.mti")
|
59
|
+
self._pkg_m[PackageSpec("hdl.sim.vcs")] = VcsPackage("hdl.sim.vcs")
|
58
60
|
self._pkg_m[PackageSpec("hdl.sim.vlt")] = VltPackage("hdl.sim.vlt")
|
59
61
|
|
60
62
|
def load(self, root : str):
|
@@ -73,27 +75,25 @@ class Session(object):
|
|
73
75
|
self._pkg_s.clear()
|
74
76
|
self._task_m.clear()
|
75
77
|
|
76
|
-
self.
|
77
|
-
self._rundir_s.append(self.rundir)
|
78
|
-
|
79
|
-
return self._mkTaskGraph(task)
|
78
|
+
return self._mkTaskGraph(task, self.rundir)
|
80
79
|
|
81
|
-
def _mkTaskGraph(self, task : str, params : dict = None) -> Task:
|
80
|
+
def _mkTaskGraph(self, task : str, parent_rundir : str, params : dict = None) -> Task:
|
82
81
|
|
83
82
|
elems = task.split(".")
|
84
83
|
|
85
84
|
pkg_name = ".".join(elems[0:-1])
|
86
85
|
task_name = elems[-1]
|
87
86
|
|
88
|
-
self._rundir_s.append(os.path.join(self._rundir_s[-1], pkg_name, task_name))
|
89
|
-
|
90
87
|
if pkg_name == "":
|
91
88
|
if len(self._pkg_spec_s) == 0:
|
92
89
|
raise Exception("No package context for %s" % task)
|
93
90
|
pkg_spec = self._pkg_spec_s[-1]
|
91
|
+
pkg_name = pkg_spec.name
|
94
92
|
else:
|
95
93
|
pkg_spec = PackageSpec(pkg_name)
|
96
94
|
|
95
|
+
rundir = os.path.join(parent_rundir, pkg_name, task_name)
|
96
|
+
|
97
97
|
self._pkg_spec_s.append(pkg_spec)
|
98
98
|
pkg = self.getPackage(pkg_spec)
|
99
99
|
|
@@ -115,20 +115,19 @@ class Session(object):
|
|
115
115
|
self,
|
116
116
|
params,
|
117
117
|
depends)
|
118
|
-
task.rundir =
|
118
|
+
task.rundir = rundir
|
119
119
|
|
120
120
|
for i,d in enumerate(task.depend_refs):
|
121
121
|
if d in self._task_m.keys():
|
122
122
|
task.depends.append(self._task_m[d])
|
123
123
|
else:
|
124
124
|
print("mkTaskGraph: %s" % d)
|
125
|
-
task.depends.append(self._mkTaskGraph(d))
|
125
|
+
task.depends.append(self._mkTaskGraph(d, parent_rundir))
|
126
126
|
|
127
127
|
self._task_m[task.name] = task
|
128
128
|
|
129
129
|
self._pkg_s.pop()
|
130
130
|
self._pkg_spec_s.pop()
|
131
|
-
self._rundir_s.pop()
|
132
131
|
|
133
132
|
return task
|
134
133
|
|
@@ -147,6 +146,7 @@ class Session(object):
|
|
147
146
|
file_s.append(root)
|
148
147
|
ret = None
|
149
148
|
with open(root, "r") as fp:
|
149
|
+
print("open %s" % root)
|
150
150
|
doc = yaml.load(fp, Loader=yaml.FullLoader)
|
151
151
|
if "package" not in doc.keys():
|
152
152
|
raise Exception("Missing 'package' key in %s" % root)
|
@@ -167,13 +167,55 @@ class Session(object):
|
|
167
167
|
self._pkg_spec_s.append(PackageSpec(pkg.name))
|
168
168
|
|
169
169
|
print("pkg: %s" % str(pkg))
|
170
|
-
|
171
|
-
|
170
|
+
|
171
|
+
print("fragments: %s" % str(pkg.fragments))
|
172
|
+
for spec in pkg.fragments:
|
173
|
+
self._load_fragment_spec(pkg, spec, file_s)
|
172
174
|
|
173
175
|
self._pkg_spec_s.pop()
|
174
176
|
file_s.pop()
|
175
177
|
|
176
178
|
return pkg
|
179
|
+
|
180
|
+
def _load_fragment_spec(self, pkg : PackageDef, spec : str, file_s : List[str]):
|
181
|
+
|
182
|
+
# We're either going to have:
|
183
|
+
# - File path
|
184
|
+
# - Directory path
|
185
|
+
|
186
|
+
if os.path.isfile(os.path.join(pkg.basedir, spec)):
|
187
|
+
self._load_fragment_file(pkg, spec, file_s)
|
188
|
+
elif os.path.isdir(os.path.join(pkg.basedir, spec)):
|
189
|
+
self._load_fragment_dir(pkg, os.path.join(pkg.basedir, spec), file_s)
|
190
|
+
else:
|
191
|
+
raise Exception("Fragment spec %s not found" % spec)
|
192
|
+
|
193
|
+
|
194
|
+
def _load_fragment_dir(self, pkg : PackageDef, dir : str, file_s : List[str]):
|
195
|
+
|
196
|
+
for file in os.listdir(dir):
|
197
|
+
if os.path.isdir(os.path.join(dir, file)):
|
198
|
+
self._load_fragment_dir(pkg, os.path.join(dir, file), file_s)
|
199
|
+
elif os.path.isfile(os.path.join(dir, file)):
|
200
|
+
self._load_fragment_file(pkg, os.path.join(dir, file), file_s)
|
201
|
+
|
202
|
+
def _load_fragment_file(self, pkg : PackageDef, file : str, file_s : List[str]):
|
203
|
+
|
204
|
+
if file in file_s:
|
205
|
+
raise Exception("Recursive file processing @ %s: %s" % (file, ",".join(self._file_s)))
|
206
|
+
file_s.append(file)
|
207
|
+
|
208
|
+
with open(file, "r") as fp:
|
209
|
+
doc = yaml.load(fp, Loader=yaml.FullLoader)
|
210
|
+
if "fragment" in doc.keys():
|
211
|
+
# Merge the package definition
|
212
|
+
frag = FragmentDef(**(doc["fragment"]))
|
213
|
+
frag.basedir = os.path.dirname(file)
|
214
|
+
pkg.fragment_l.append(frag)
|
215
|
+
else:
|
216
|
+
print("Warning: file %s is not a fragment" % file)
|
217
|
+
|
218
|
+
|
177
219
|
|
178
220
|
def getPackage(self, spec : PackageSpec) -> Package:
|
179
221
|
pkg_spec = self._pkg_spec_s[-1]
|
dv_flow_mgr/share/flow.json
CHANGED
@@ -23,7 +23,6 @@
|
|
23
23
|
}
|
24
24
|
],
|
25
25
|
"defs": {
|
26
|
-
|
27
26
|
"package-def": {
|
28
27
|
"title": "Package Definition",
|
29
28
|
"$$target": "#/defs/package-def",
|
@@ -156,21 +155,23 @@
|
|
156
155
|
"$ref": "#/defs/param"
|
157
156
|
}
|
158
157
|
},
|
159
|
-
"
|
160
|
-
|
161
|
-
{
|
158
|
+
"oneOf": [
|
159
|
+
{
|
160
|
+
"needs": {
|
162
161
|
"type": "array",
|
163
162
|
"items": {
|
164
163
|
"$ref": "#/defs/task-dep"
|
165
164
|
}
|
166
|
-
}
|
165
|
+
}
|
166
|
+
}, {
|
167
|
+
"needs": {
|
167
168
|
"type": "array",
|
168
169
|
"items": {
|
169
170
|
"type": "string"
|
170
171
|
}
|
171
172
|
}
|
172
|
-
|
173
|
-
|
173
|
+
}
|
174
|
+
]
|
174
175
|
}
|
175
176
|
}
|
176
177
|
}
|
dv_flow_mgr/task.py
CHANGED
@@ -143,6 +143,9 @@ class Task(object):
|
|
143
143
|
def setMemento(self, memento : TaskMemento):
|
144
144
|
self.memento = memento
|
145
145
|
|
146
|
+
async def isUpToDate(self, memento) -> bool:
|
147
|
+
return False
|
148
|
+
|
146
149
|
async def do_run(self) -> TaskData:
|
147
150
|
print("do_run: %s - %d depends" % (self.name, len(self.depends)))
|
148
151
|
if len(self.depends) > 0:
|
dv_flow_mgr/task_def.py
CHANGED
@@ -33,7 +33,7 @@ class TaskDef(BaseModel):
|
|
33
33
|
"""Holds definition information (ie the YAML view) for a task"""
|
34
34
|
name : str
|
35
35
|
type : (str|TaskSpec) = dc.Field(default_factory=list)
|
36
|
-
depends : List[(str|TaskSpec)] = dc.Field(default_factory=list)
|
36
|
+
depends : List[(str|TaskSpec)] = dc.Field(default_factory=list, alias="needs")
|
37
37
|
params: Dict[str,Any] = dc.Field(default_factory=dict, alias="with")
|
38
38
|
|
39
39
|
def copy(self) -> 'TaskDef':
|
@@ -15,10 +15,10 @@ from svdep import FileCollection, TaskCheckUpToDate, TaskBuildFileCollection
|
|
15
15
|
class TaskMtiSimImage(VlTaskSimImage):
|
16
16
|
|
17
17
|
def getRefTime(self):
|
18
|
-
if os.path.
|
18
|
+
if os.path.isfile(os.path.join(self.rundir, 'work.d')):
|
19
19
|
return os.path.getmtime(os.path.join(self.rundir, 'work.d'))
|
20
20
|
else:
|
21
|
-
raise Exception("work.d not found")
|
21
|
+
raise Exception("work.d not found (%s)")
|
22
22
|
|
23
23
|
async def build(self, files : List[str], incdirs : List[str]):
|
24
24
|
if not os.path.isdir(os.path.join(self.rundir, 'work')):
|
@@ -53,7 +53,7 @@ class TaskMtiSimImage(VlTaskSimImage):
|
|
53
53
|
await proc.wait()
|
54
54
|
|
55
55
|
with open(os.path.join(self.rundir, 'work.d'), "w") as fp:
|
56
|
-
|
56
|
+
fp.write("\n")
|
57
57
|
|
58
58
|
if proc.returncode != 0:
|
59
59
|
raise Exception("Questa opt failed")
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import dataclasses as dc
|
2
|
+
from .pkg_hdl_sim import PackageHdlSim
|
3
|
+
from .vcs_task_sim_image import TaskVcsSimImageCtor
|
4
|
+
from .vcs_task_sim_run import TaskVcsSimRunCtor
|
5
|
+
|
6
|
+
@dc.dataclass
|
7
|
+
class VcsPackage(PackageHdlSim):
|
8
|
+
|
9
|
+
def __post_init__(self):
|
10
|
+
print("PackageVcs::__post_init__", flush=True)
|
11
|
+
self.tasks["SimImage"] = TaskVcsSimImageCtor()
|
12
|
+
self.tasks["SimRun"] = TaskVcsSimRunCtor()
|
13
|
+
pass
|
14
|
+
|
@@ -0,0 +1,49 @@
|
|
1
|
+
import os
|
2
|
+
import fnmatch
|
3
|
+
import dataclasses as dc
|
4
|
+
from ....fileset import FileSet
|
5
|
+
from ....package import TaskCtor
|
6
|
+
from ....task import Task, TaskParams, TaskCtorT
|
7
|
+
from ....task_data import TaskData
|
8
|
+
from ....task_memento import TaskMemento
|
9
|
+
from .vl_task_sim_image import VlTaskSimImage, VlTaskSimImageParams, VlTaskSimImageMemento
|
10
|
+
from typing import List, Tuple
|
11
|
+
|
12
|
+
from svdep import FileCollection, TaskCheckUpToDate, TaskBuildFileCollection
|
13
|
+
|
14
|
+
@dc.dataclass
|
15
|
+
class TaskVcsSimImage(VlTaskSimImage):
|
16
|
+
|
17
|
+
def getRefTime(self):
|
18
|
+
if os.path.isdir(os.path.join(self.rundir, 'simv')):
|
19
|
+
return os.path.getmtime(os.path.join(self.rundir, 'simv'))
|
20
|
+
else:
|
21
|
+
raise Exception
|
22
|
+
|
23
|
+
async def build(self, files : List[str], incdirs : List[str]):
|
24
|
+
cmd = ['vcs', '-sverilog']
|
25
|
+
|
26
|
+
for incdir in incdirs:
|
27
|
+
cmd.append('+incdir+%s' % incdir)
|
28
|
+
|
29
|
+
cmd.extend(files)
|
30
|
+
|
31
|
+
if len(self.params.top):
|
32
|
+
cmd.extend(['-top', "+".join(self.params.top)])
|
33
|
+
|
34
|
+
proc = await self.session.create_subprocess(*cmd,
|
35
|
+
cwd=self.rundir)
|
36
|
+
await proc.wait()
|
37
|
+
|
38
|
+
if proc.returncode != 0:
|
39
|
+
raise Exception("VCS simv failed")
|
40
|
+
|
41
|
+
class TaskVcsSimImageParams(VlTaskSimImageParams):
|
42
|
+
pass
|
43
|
+
|
44
|
+
class TaskVcsSimImageMemento(VlTaskSimImageMemento):
|
45
|
+
pass
|
46
|
+
|
47
|
+
class TaskVcsSimImageCtor(TaskCtorT):
|
48
|
+
def __init__(self):
|
49
|
+
super().__init__(TaskVcsSimImageParams, TaskVcsSimImage)
|
@@ -0,0 +1,45 @@
|
|
1
|
+
import os
|
2
|
+
import fnmatch
|
3
|
+
import pydantic.dataclasses as dc
|
4
|
+
from ....fileset import FileSet
|
5
|
+
from ....package import TaskCtor
|
6
|
+
from ....task import Task, TaskParams, TaskCtorT
|
7
|
+
from ....task_data import TaskData
|
8
|
+
from ....task_memento import TaskMemento
|
9
|
+
from typing import List, Tuple
|
10
|
+
|
11
|
+
class TaskVcsSimRun(Task):
|
12
|
+
|
13
|
+
async def run(self, input : TaskData) -> TaskData:
|
14
|
+
vl_fileset = input.getFileSets("simBinary")
|
15
|
+
|
16
|
+
build_dir = vl_fileset[0].basedir
|
17
|
+
|
18
|
+
cmd = [
|
19
|
+
os.path.join(build_dir, 'simv'),
|
20
|
+
]
|
21
|
+
|
22
|
+
fp = open(os.path.join(self.rundir, 'sim.log'), "w")
|
23
|
+
proc = await self.session.create_subprocess(*cmd,
|
24
|
+
cwd=self.rundir,
|
25
|
+
stdout=fp)
|
26
|
+
|
27
|
+
await proc.wait()
|
28
|
+
|
29
|
+
fp.close()
|
30
|
+
|
31
|
+
output = TaskData()
|
32
|
+
output.addFileSet(FileSet(src=self.name, type="simRunDir", basedir=self.rundir))
|
33
|
+
|
34
|
+
return output
|
35
|
+
|
36
|
+
class TaskVcsSimRunParams(TaskParams):
|
37
|
+
pass
|
38
|
+
|
39
|
+
class TaskVcsSimRunMemento(TaskMemento):
|
40
|
+
pass
|
41
|
+
|
42
|
+
class TaskVcsSimRunCtor(TaskCtorT):
|
43
|
+
def __init__(self):
|
44
|
+
super().__init__(TaskVcsSimRunParams, TaskVcsSimRun)
|
45
|
+
|
@@ -41,7 +41,7 @@ class VlTaskSimImage(Task):
|
|
41
41
|
info = FileCollection.from_dict(ex_memento.svdeps)
|
42
42
|
in_changed = not TaskCheckUpToDate(files, incdirs).check(info, ref_mtime)
|
43
43
|
except Exception as e:
|
44
|
-
print("Unexpected output-directory format. Rebuilding")
|
44
|
+
print("Unexpected output-directory format (%s). Rebuilding" % str(e))
|
45
45
|
shutil.rmtree(self.rundir)
|
46
46
|
os.makedirs(self.rundir)
|
47
47
|
in_changed = True
|
@@ -56,7 +56,7 @@ class VlTaskSimImage(Task):
|
|
56
56
|
await self.build(files, incdirs)
|
57
57
|
|
58
58
|
output = TaskData()
|
59
|
-
output.addFileSet(FileSet(src=self.name, type="
|
59
|
+
output.addFileSet(FileSet(src=self.name, type="simDir", basedir=self.rundir))
|
60
60
|
output.changed = in_changed
|
61
61
|
|
62
62
|
self.setMemento(memento)
|
@@ -11,7 +11,7 @@ from typing import List, Tuple
|
|
11
11
|
class TaskVltSimRun(Task):
|
12
12
|
|
13
13
|
async def run(self, input : TaskData) -> TaskData:
|
14
|
-
vl_fileset = input.getFileSets("
|
14
|
+
vl_fileset = input.getFileSets("simBinary")
|
15
15
|
|
16
16
|
build_dir = vl_fileset[0].basedir
|
17
17
|
|
{dv_flow_mgr-0.0.1.12672327205a1.dist-info → dv_flow_mgr-0.0.1.12703462647a1.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.2
|
2
2
|
Name: dv-flow-mgr
|
3
|
-
Version: 0.0.1.
|
3
|
+
Version: 0.0.1.12703462647a1
|
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
|
{dv_flow_mgr-0.0.1.12672327205a1.dist-info → dv_flow_mgr-0.0.1.12703462647a1.dist-info}/RECORD
RENAMED
@@ -2,34 +2,38 @@ dv_flow_mgr/__init__.py,sha256=GLfYxZONxJNNUplfmlsXrcycJ2VhTc8gvXN6qdlH7kg,97
|
|
2
2
|
dv_flow_mgr/__main__.py,sha256=4xXA4XCqLELlIak6bs-H6rRHp2URucipHPvCiVdR01c,513
|
3
3
|
dv_flow_mgr/fileset.py,sha256=89knoTNsDF85QJwrctLiM6ryqHS1oxW25Gd5jgpX-IQ,1123
|
4
4
|
dv_flow_mgr/flow.py,sha256=UdgJOIqBS2wTRpO-sNWCCqO9oQFxDfGPGVD0r42aTrA,1562
|
5
|
-
dv_flow_mgr/fragment_def.py,sha256=
|
5
|
+
dv_flow_mgr/fragment_def.py,sha256=_c-mmfNjdKctSK6Omnm-3otx9-fIX8hw8yh06vSlozE,1540
|
6
6
|
dv_flow_mgr/package.py,sha256=jFhXgKDEYSRfs_VRUjKY4C7KScQfmrNLEXQgtWKaBfI,2767
|
7
|
-
dv_flow_mgr/package_def.py,sha256=
|
7
|
+
dv_flow_mgr/package_def.py,sha256=Js8bZj8bSmJQ6Wk9xAhIBJScNGJOHNbXNhw_zkDVU5w,3834
|
8
|
+
dv_flow_mgr/package_import_spec.py,sha256=bStPa727wAKMcixydVY1Ht6ylzXsSMy2K31HWPXhc9k,921
|
8
9
|
dv_flow_mgr/parameters.py,sha256=kUjRss5VtMMz5eL3-Z_M6BS-wFs7MhQu3ANXO54UPo0,896
|
9
|
-
dv_flow_mgr/session.py,sha256=
|
10
|
-
dv_flow_mgr/task.py,sha256=
|
10
|
+
dv_flow_mgr/session.py,sha256=M13VGMMrB9Eko0T4dEpqBuTHxsVpaKTNw5JhGRc2rTA,10726
|
11
|
+
dv_flow_mgr/task.py,sha256=Lx5eXIlP-m1yseVLh_1_p7Gy1dj36zU3dSH7LyE6JaY,7316
|
11
12
|
dv_flow_mgr/task_data.py,sha256=tIerZoe8yt1ig1m6IPQ6N64SI2rQlUoVY5oOjFYICws,2590
|
12
|
-
dv_flow_mgr/task_def.py,sha256=
|
13
|
+
dv_flow_mgr/task_def.py,sha256=qFB_koWGgziH_Uh96dqFjRI38dY6s2OTDpn-uEwYtUo,1515
|
13
14
|
dv_flow_mgr/task_memento.py,sha256=C7VTQpBhDEoYuDmE6YTM-6TLMLnqHp6Y0Vat1aTgtCs,1096
|
14
15
|
dv_flow_mgr/cmds/cmd_run.py,sha256=ii48_jdxCxh4MOJCeKKX66Cui4IvQQy_RrJEIixsph8,733
|
15
|
-
dv_flow_mgr/share/flow.json,sha256=
|
16
|
+
dv_flow_mgr/share/flow.json,sha256=lNmZex9NXkYbyb2aZseQfUOkV9CMyfH0iLODEI7EPBw,5096
|
16
17
|
dv_flow_mgr/tasklib/hdl/sim/mti_pkg.py,sha256=l_jerOEQrVSmxT6qJx0PlsorZsK037Y-arQvWzdm9No,348
|
17
|
-
dv_flow_mgr/tasklib/hdl/sim/mti_task_sim_image.py,sha256=
|
18
|
+
dv_flow_mgr/tasklib/hdl/sim/mti_task_sim_image.py,sha256=U1XADvEGaH412n_JujS1Maz08GJ07UL6mRT4B4qihZQ,2229
|
18
19
|
dv_flow_mgr/tasklib/hdl/sim/mti_task_sim_run.py,sha256=QkKYOs0OhQ42F5bUbfCsezE4L50TfiIm7lVflVY4On8,1290
|
19
20
|
dv_flow_mgr/tasklib/hdl/sim/pkg_hdl_sim.py,sha256=hPk5w7dN3Uq3mLRBNCEtE7jkLavi2MAczJlle_xGoQ8,166
|
20
21
|
dv_flow_mgr/tasklib/hdl/sim/task_sim_image.py,sha256=DOSxzH-0EZQZlm-EwSq1q7_nz_yru6al36Ji1Q6z5F4,375
|
21
|
-
dv_flow_mgr/tasklib/hdl/sim/
|
22
|
+
dv_flow_mgr/tasklib/hdl/sim/vcs_pkg.py,sha256=65W8NP54_EdtHo6lsmCejT8diPvizT9e3AjjTXJC_u0,413
|
23
|
+
dv_flow_mgr/tasklib/hdl/sim/vcs_task_sim_image.py,sha256=HlUMT185VQ_j70C6WTV1GXTXIGgIFb7xelU23jrTVj4,1492
|
24
|
+
dv_flow_mgr/tasklib/hdl/sim/vcs_task_sim_run.py,sha256=DDwq_iiv8TYpXMf59pZuttG75lI71CjbNKwAXbCAlBA,1194
|
25
|
+
dv_flow_mgr/tasklib/hdl/sim/vl_task_sim_image.py,sha256=2UD2IXSP9Kf-g4J7bMTSR2cgx761DtXzMVIkIPQpLdg,2268
|
22
26
|
dv_flow_mgr/tasklib/hdl/sim/vlt_pkg.py,sha256=Pu9mWAR93kiTNT8GZJrX-VDjMOfr9P5ddcSPt1BElQQ,413
|
23
27
|
dv_flow_mgr/tasklib/hdl/sim/vlt_task_sim_image.py,sha256=9RDJ3r37C4tA4PIa7tDUYYgRpIh19up-Y9HTOwKxr0I,1564
|
24
|
-
dv_flow_mgr/tasklib/hdl/sim/vlt_task_sim_run.py,sha256=
|
28
|
+
dv_flow_mgr/tasklib/hdl/sim/vlt_task_sim_run.py,sha256=Qhufu0NjzPLev-4BjWBftfgA0sogeXpTmygapRrk9VM,1202
|
25
29
|
dv_flow_mgr/tasklib/std/fileset.py,sha256=u88qjKQpIip_eETk0k6J1AGxk9blKlqAqYinHGKwco8,61
|
26
30
|
dv_flow_mgr/tasklib/std/pkg_std.py,sha256=ERDd515qtetQaldk9opUH19MyNwo8nP4-GLz-ke-5gE,370
|
27
31
|
dv_flow_mgr/tasklib/std/std.dfs,sha256=An2NUvvWaR9xI4U-kRQ4NN6U-GhX6GQmd3mNyRkW4NQ,68
|
28
32
|
dv_flow_mgr/tasklib/std/task_fileset.py,sha256=ISsI-g8v8bKYYQiGd1Ju2VlyEOxEziNgXtssEEmnu6s,3095
|
29
33
|
dv_flow_mgr/tasklib/std/task_null.py,sha256=bQH1HN4r-TtdUaJxfnmvoqKZSY4MWO48eK7z_yngdNU,599
|
30
|
-
dv_flow_mgr-0.0.1.
|
31
|
-
dv_flow_mgr-0.0.1.
|
32
|
-
dv_flow_mgr-0.0.1.
|
33
|
-
dv_flow_mgr-0.0.1.
|
34
|
-
dv_flow_mgr-0.0.1.
|
35
|
-
dv_flow_mgr-0.0.1.
|
34
|
+
dv_flow_mgr-0.0.1.12703462647a1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
35
|
+
dv_flow_mgr-0.0.1.12703462647a1.dist-info/METADATA,sha256=inlwQMpO8cBPHqz-NZoEYrmDDp2Sd57rkkz2hIBz68c,13252
|
36
|
+
dv_flow_mgr-0.0.1.12703462647a1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
37
|
+
dv_flow_mgr-0.0.1.12703462647a1.dist-info/entry_points.txt,sha256=VHxIon5AeHCtK73fYb1veDImAGwv76hrtBiuZePmzhI,51
|
38
|
+
dv_flow_mgr-0.0.1.12703462647a1.dist-info/top_level.txt,sha256=FGuhGIxN1FgD_YBkPcDq05fTxZcwaX9G_O8FFBvrTk4,12
|
39
|
+
dv_flow_mgr-0.0.1.12703462647a1.dist-info/RECORD,,
|
{dv_flow_mgr-0.0.1.12672327205a1.dist-info → dv_flow_mgr-0.0.1.12703462647a1.dist-info}/LICENSE
RENAMED
File without changes
|
File without changes
|
File without changes
|