07a2be57403a881092ccaf30d5a14ee6fe4e2270
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):
10 self
.default_clk
= default_clk
12 self
.add_clocker(default_clk
)
14 def _format_interfaces(self
, interfaces
):
15 if not isinstance(interfaces
, list):
16 interfaces
= [interfaces
]
20 if isinstance(it
, tuple):
22 obj
= {"name": name
, "index": index
}
26 def add_clocker(self
, clk
):
27 self
.add_module("clocker", [], clocks
=clk
, tickfirst
=True)
29 def add_module(self
, name
, interfaces
, clocks
=None, args
=None, tickfirst
=False):
30 interfaces
= self
._format
_interfaces
(interfaces
)
32 interfaces
+= self
._format
_interfaces
(clocks
)
34 interfaces
+= [self
.default_clk
]
37 "interface": interfaces
,
40 newmod
.update({"args": args
})
42 newmod
.update({"tickfirst": tickfirst
})
43 self
.modules
.append(newmod
)
45 def has_module(self
, name
):
46 for module
in self
.modules
:
47 if module
["module"] == name
:
52 return json
.dumps(self
.modules
, indent
=4)