aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorBenedikt Tutzer <e1225461@student.tuwien.ac.at>2018-08-01 10:08:23 +0200
committerBenedikt Tutzer <benedikt_tutzer@yahoo.de>2018-08-01 10:57:46 +0200
commit79d7e608cfcc7fe19647313521eed908f3784503 (patch)
tree3cfda6bee1e421b30f4966445ea27e6e10bb8093 /kernel
parent57d2197703da12750fb508736ccfaf59b847ea22 (diff)
downloadyosys-79d7e608cfcc7fe19647313521eed908f3784503.tar.gz
yosys-79d7e608cfcc7fe19647313521eed908f3784503.tar.bz2
yosys-79d7e608cfcc7fe19647313521eed908f3784503.zip
Setup is called automatically when the module is loaded, shutdown when python exits
Diffstat (limited to 'kernel')
-rw-r--r--kernel/python_wrappers.cc35
1 files changed, 19 insertions, 16 deletions
diff --git a/kernel/python_wrappers.cc b/kernel/python_wrappers.cc
index ba7be9106..718e3f5c1 100644
--- a/kernel/python_wrappers.cc
+++ b/kernel/python_wrappers.cc
@@ -15,25 +15,11 @@ namespace YOSYS_PYTHON {
struct Wire;
struct Monitor;
- void yosys_setup()
- {
- Yosys::log_streams.push_back(&std::cout);
- Yosys::log_error_stderr = true;
-
- Yosys::yosys_setup();
- Yosys::yosys_banner();
- }
-
void run(std::string command)
{
Yosys::run_pass(command);
}
- void yosys_shutdown()
- {
- Yosys::yosys_shutdown();
- }
-
struct Cell
{
unsigned int id;
@@ -292,10 +278,29 @@ namespace YOSYS_PYTHON {
return 0;
}
+ struct Initializer
+ {
+ Initializer() {
+ Yosys::log_streams.push_back(&std::cout);
+ Yosys::log_error_stderr = true;
+ Yosys::yosys_setup();
+ Yosys::yosys_banner();
+ }
+
+ Initializer(Initializer const &) {}
+
+ ~Initializer() {
+ Yosys::yosys_shutdown();
+ }
+ };
+
BOOST_PYTHON_MODULE(libyosys)
{
using namespace boost::python;
+ class_<Initializer>("Initializer");
+ scope().attr("_hidden") = new Initializer();
+
class_<Design>("Design", init<unsigned int>())
.def(boost::python::self_ns::str(boost::python::self_ns::self))
.def(boost::python::self_ns::repr(boost::python::self_ns::self))
@@ -329,10 +334,8 @@ namespace YOSYS_PYTHON {
.def("py_notify_blackout", &Monitor::py_notify_blackout, &MonitorWrap::default_py_notify_blackout)
;
- def("yosys_setup",yosys_setup);
def("run",run);
def("get_active_design_id",get_active_design_id);
- def("yosys_shutdown",yosys_shutdown);
}
}