72 m.doc() =
"CIRCT Python Native Extension";
74 llvm::sys::PrintStackTraceOnErrorSignal(
"");
75 LLVMEnablePrettyStackTrace();
79 [](nb::object capsule) {
81 auto wrappedCapsule = capsule.attr(MLIR_PYTHON_CAPI_PTR_ATTR);
82 MlirContext context = mlirPythonCapsuleToContext(wrappedCapsule.ptr());
85 MlirDialectHandle
aig = mlirGetDialectHandle__aig__();
86 mlirDialectHandleRegisterDialect(
aig, context);
87 mlirDialectHandleLoadDialect(
aig, context);
89 MlirDialectHandle
comb = mlirGetDialectHandle__comb__();
90 mlirDialectHandleRegisterDialect(
comb, context);
91 mlirDialectHandleLoadDialect(
comb, context);
93 MlirDialectHandle
debug = mlirGetDialectHandle__debug__();
94 mlirDialectHandleRegisterDialect(
debug, context);
95 mlirDialectHandleLoadDialect(
debug, context);
97 MlirDialectHandle
emit = mlirGetDialectHandle__emit__();
98 mlirDialectHandleRegisterDialect(
emit, context);
99 mlirDialectHandleLoadDialect(
emit, context);
101 MlirDialectHandle
esi = mlirGetDialectHandle__esi__();
102 mlirDialectHandleRegisterDialect(
esi, context);
103 mlirDialectHandleLoadDialect(
esi, context);
105 MlirDialectHandle
msft = mlirGetDialectHandle__msft__();
106 mlirDialectHandleRegisterDialect(
msft, context);
107 mlirDialectHandleLoadDialect(
msft, context);
109 MlirDialectHandle
hw = mlirGetDialectHandle__hw__();
110 mlirDialectHandleRegisterDialect(
hw, context);
111 mlirDialectHandleLoadDialect(
hw, context);
113 MlirDialectHandle
hwarith = mlirGetDialectHandle__hwarith__();
114 mlirDialectHandleRegisterDialect(
hwarith, context);
115 mlirDialectHandleLoadDialect(
hwarith, context);
117 MlirDialectHandle index = mlirGetDialectHandle__index__();
118 mlirDialectHandleRegisterDialect(index, context);
119 mlirDialectHandleLoadDialect(index, context);
121 MlirDialectHandle scf = mlirGetDialectHandle__scf__();
122 mlirDialectHandleRegisterDialect(scf, context);
123 mlirDialectHandleLoadDialect(scf, context);
125 MlirDialectHandle
om = mlirGetDialectHandle__om__();
126 mlirDialectHandleRegisterDialect(
om, context);
127 mlirDialectHandleLoadDialect(
om, context);
129 MlirDialectHandle pipeline = mlirGetDialectHandle__pipeline__();
130 mlirDialectHandleRegisterDialect(pipeline, context);
131 mlirDialectHandleLoadDialect(pipeline, context);
133 MlirDialectHandle
rtg = mlirGetDialectHandle__rtg__();
134 mlirDialectHandleRegisterDialect(
rtg, context);
135 mlirDialectHandleLoadDialect(
rtg, context);
137#ifdef CIRCT_INCLUDE_TESTS
138 MlirDialectHandle
rtgtest = mlirGetDialectHandle__rtgtest__();
139 mlirDialectHandleRegisterDialect(
rtgtest, context);
140 mlirDialectHandleLoadDialect(
rtgtest, context);
143 MlirDialectHandle
seq = mlirGetDialectHandle__seq__();
144 mlirDialectHandleRegisterDialect(
seq, context);
145 mlirDialectHandleLoadDialect(
seq, context);
147 MlirDialectHandle
sv = mlirGetDialectHandle__sv__();
148 mlirDialectHandleRegisterDialect(
sv, context);
149 mlirDialectHandleLoadDialect(
sv, context);
151 MlirDialectHandle
fsm = mlirGetDialectHandle__fsm__();
152 mlirDialectHandleRegisterDialect(
fsm, context);
153 mlirDialectHandleLoadDialect(
fsm, context);
155 MlirDialectHandle
handshake = mlirGetDialectHandle__handshake__();
156 mlirDialectHandleRegisterDialect(
handshake, context);
157 mlirDialectHandleLoadDialect(
handshake, context);
159 MlirDialectHandle kanagawa = mlirGetDialectHandle__kanagawa__();
160 mlirDialectHandleRegisterDialect(kanagawa, context);
161 mlirDialectHandleLoadDialect(kanagawa, context);
163 MlirDialectHandle
ltl = mlirGetDialectHandle__ltl__();
164 mlirDialectHandleRegisterDialect(
ltl, context);
165 mlirDialectHandleLoadDialect(
ltl, context);
167 MlirDialectHandle
verif = mlirGetDialectHandle__verif__();
168 mlirDialectHandleRegisterDialect(
verif, context);
169 mlirDialectHandleLoadDialect(
verif, context);
171 MlirDialectHandle smt = mlirGetDialectHandle__smt__();
172 mlirDialectHandleRegisterDialect(smt, context);
173 mlirDialectHandleLoadDialect(smt, context);
175 "Register CIRCT dialects on a PyMlirContext.");
177 m.def(
"export_verilog", [](MlirModule mod, nb::object fileObject) {
179 nb::gil_scoped_release();
183 m.def(
"export_split_verilog", [](MlirModule mod, std::string directory) {
184 auto cDirectory = mlirStringRefCreateFromCString(directory.c_str());
188 nb::module_
aig = m.def_submodule(
"_aig",
"AIG API");
190 nb::module_
esi = m.def_submodule(
"_esi",
"ESI API");
192 nb::module_
msft = m.def_submodule(
"_msft",
"MSFT API");
194 nb::module_
hw = m.def_submodule(
"_hw",
"HW API");
196 nb::module_
seq = m.def_submodule(
"_seq",
"Seq API");
198 nb::module_
om = m.def_submodule(
"_om",
"OM API");
200 nb::module_
rtg = m.def_submodule(
"_rtg",
"RTG API");
202 nb::module_ rtgtool = m.def_submodule(
"_rtgtool",
"RTGTool API");
204#ifdef CIRCT_INCLUDE_TESTS
205 nb::module_
rtgtest = m.def_submodule(
"_rtgtest",
"RTGTest API");
206 circt::python::populateDialectRTGTestSubmodule(
rtgtest);
208 nb::module_
sv = m.def_submodule(
"_sv",
"SV API");
210 nb::module_ support = m.def_submodule(
"_support",
"CIRCT support");