63 m.doc() =
"CIRCT Python Native Extension";
65 llvm::sys::PrintStackTraceOnErrorSignal(
"");
66 LLVMEnablePrettyStackTrace();
70 [](nb::object capsule) {
72 auto wrappedCapsule = capsule.attr(MLIR_PYTHON_CAPI_PTR_ATTR);
73 MlirContext context = mlirPythonCapsuleToContext(wrappedCapsule.ptr());
76 MlirDialectHandle
comb = mlirGetDialectHandle__comb__();
77 mlirDialectHandleRegisterDialect(
comb, context);
78 mlirDialectHandleLoadDialect(
comb, context);
80 MlirDialectHandle
debug = mlirGetDialectHandle__debug__();
81 mlirDialectHandleRegisterDialect(
debug, context);
82 mlirDialectHandleLoadDialect(
debug, context);
84 MlirDialectHandle
emit = mlirGetDialectHandle__emit__();
85 mlirDialectHandleRegisterDialect(
emit, context);
86 mlirDialectHandleLoadDialect(
emit, context);
88 MlirDialectHandle
esi = mlirGetDialectHandle__esi__();
89 mlirDialectHandleRegisterDialect(
esi, context);
90 mlirDialectHandleLoadDialect(
esi, context);
92 MlirDialectHandle
msft = mlirGetDialectHandle__msft__();
93 mlirDialectHandleRegisterDialect(
msft, context);
94 mlirDialectHandleLoadDialect(
msft, context);
96 MlirDialectHandle
hw = mlirGetDialectHandle__hw__();
97 mlirDialectHandleRegisterDialect(
hw, context);
98 mlirDialectHandleLoadDialect(
hw, context);
100 MlirDialectHandle
hwarith = mlirGetDialectHandle__hwarith__();
101 mlirDialectHandleRegisterDialect(
hwarith, context);
102 mlirDialectHandleLoadDialect(
hwarith, context);
104 MlirDialectHandle
om = mlirGetDialectHandle__om__();
105 mlirDialectHandleRegisterDialect(
om, context);
106 mlirDialectHandleLoadDialect(
om, context);
108 MlirDialectHandle
rtg = mlirGetDialectHandle__rtg__();
109 mlirDialectHandleRegisterDialect(
rtg, context);
110 mlirDialectHandleLoadDialect(
rtg, context);
112#ifdef CIRCT_INCLUDE_TESTS
113 MlirDialectHandle
rtgtest = mlirGetDialectHandle__rtgtest__();
114 mlirDialectHandleRegisterDialect(
rtgtest, context);
115 mlirDialectHandleLoadDialect(
rtgtest, context);
118 MlirDialectHandle
seq = mlirGetDialectHandle__seq__();
119 mlirDialectHandleRegisterDialect(
seq, context);
120 mlirDialectHandleLoadDialect(
seq, context);
122 MlirDialectHandle
sv = mlirGetDialectHandle__sv__();
123 mlirDialectHandleRegisterDialect(
sv, context);
124 mlirDialectHandleLoadDialect(
sv, context);
126 MlirDialectHandle
fsm = mlirGetDialectHandle__fsm__();
127 mlirDialectHandleRegisterDialect(
fsm, context);
128 mlirDialectHandleLoadDialect(
fsm, context);
130 MlirDialectHandle
handshake = mlirGetDialectHandle__handshake__();
131 mlirDialectHandleRegisterDialect(
handshake, context);
132 mlirDialectHandleLoadDialect(
handshake, context);
134 MlirDialectHandle
ltl = mlirGetDialectHandle__ltl__();
135 mlirDialectHandleRegisterDialect(
ltl, context);
136 mlirDialectHandleLoadDialect(
ltl, context);
138 MlirDialectHandle
verif = mlirGetDialectHandle__verif__();
139 mlirDialectHandleRegisterDialect(
verif, context);
140 mlirDialectHandleLoadDialect(
verif, context);
142 MlirDialectHandle
smt = mlirGetDialectHandle__smt__();
143 mlirDialectHandleRegisterDialect(
smt, context);
144 mlirDialectHandleLoadDialect(
smt, context);
146 "Register CIRCT dialects on a PyMlirContext.");
148 m.def(
"export_verilog", [](MlirModule mod, nb::object fileObject) {
150 nb::gil_scoped_release();
154 m.def(
"export_split_verilog", [](MlirModule mod, std::string directory) {
155 auto cDirectory = mlirStringRefCreateFromCString(directory.c_str());
159 nb::module_
esi = m.def_submodule(
"_esi",
"ESI API");
161 nb::module_
msft = m.def_submodule(
"_msft",
"MSFT API");
163 nb::module_
hw = m.def_submodule(
"_hw",
"HW API");
165 nb::module_
seq = m.def_submodule(
"_seq",
"Seq API");
167 nb::module_
om = m.def_submodule(
"_om",
"OM API");
169 nb::module_
rtg = m.def_submodule(
"_rtg",
"RTG API");
171 nb::module_ rtgtool = m.def_submodule(
"_rtgtool",
"RTGTool API");
173#ifdef CIRCT_INCLUDE_TESTS
174 nb::module_
rtgtest = m.def_submodule(
"_rtgtest",
"RTGTest API");
175 circt::python::populateDialectRTGTestSubmodule(
rtgtest);
177 nb::module_
sv = m.def_submodule(
"_sv",
"SV API");
179 nb::module_ support = m.def_submodule(
"_support",
"CIRCT support");