1 # This file is Copyright (c) 2017 Pierre-Olivier Vauboin <po@lambdaconcept>
2 # This file is Copyright (c) 2018 Florent Kermarrec <florent@enjoy-digital.fr>
8 def __init__(self
, default_clk
=None, timebase_ps
=1):
10 self
.default_clk
= default_clk
11 self
.timebase
= timebase_ps
13 self
.add_clocker(default_clk
)
15 def _format_interfaces(self
, interfaces
):
16 if not isinstance(interfaces
, list):
17 interfaces
= [interfaces
]
21 if isinstance(it
, tuple):
23 obj
= {"name": name
, "index": index
}
27 def _format_timebase(self
):
28 return {"timebase": int(self
.timebase
)}
30 def add_clocker(self
, clk
):
31 self
.add_module("clocker", [], clocks
=clk
, tickfirst
=True)
33 def add_module(self
, name
, interfaces
, clocks
=None, args
=None, tickfirst
=False):
34 interfaces
= self
._format
_interfaces
(interfaces
)
36 interfaces
+= self
._format
_interfaces
(clocks
)
38 interfaces
+= [self
.default_clk
]
41 "interface": interfaces
,
44 newmod
.update({"args": args
})
46 newmod
.update({"tickfirst": tickfirst
})
47 self
.modules
.append(newmod
)
49 def has_module(self
, name
):
50 for module
in self
.modules
:
51 if module
["module"] == name
:
56 config
= self
.modules
+ [self
._format
_timebase
()]
57 return json
.dumps(config
, indent
=4)