75 m.doc() =
"CIRCT Python Native Extension";
77 llvm::sys::PrintStackTraceOnErrorSignal(
"");
78 LLVMEnablePrettyStackTrace();
82 [](nb::object capsule) {
84 auto wrappedCapsule = capsule.attr(MLIR_PYTHON_CAPI_PTR_ATTR);
85 MlirContext context = mlirPythonCapsuleToContext(wrappedCapsule.ptr());
88 MlirDialectHandle
aig = mlirGetDialectHandle__aig__();
89 mlirDialectHandleRegisterDialect(
aig, context);
90 mlirDialectHandleLoadDialect(
aig, context);
92 MlirDialectHandle
comb = mlirGetDialectHandle__comb__();
93 mlirDialectHandleRegisterDialect(
comb, context);
94 mlirDialectHandleLoadDialect(
comb, context);
96 MlirDialectHandle
debug = mlirGetDialectHandle__debug__();
97 mlirDialectHandleRegisterDialect(
debug, context);
98 mlirDialectHandleLoadDialect(
debug, context);
100 MlirDialectHandle
emit = mlirGetDialectHandle__emit__();
101 mlirDialectHandleRegisterDialect(
emit, context);
102 mlirDialectHandleLoadDialect(
emit, context);
104 MlirDialectHandle
esi = mlirGetDialectHandle__esi__();
105 mlirDialectHandleRegisterDialect(
esi, context);
106 mlirDialectHandleLoadDialect(
esi, context);
108 MlirDialectHandle
msft = mlirGetDialectHandle__msft__();
109 mlirDialectHandleRegisterDialect(
msft, context);
110 mlirDialectHandleLoadDialect(
msft, context);
112 MlirDialectHandle
hw = mlirGetDialectHandle__hw__();
113 mlirDialectHandleRegisterDialect(
hw, context);
114 mlirDialectHandleLoadDialect(
hw, context);
116 MlirDialectHandle
hwarith = mlirGetDialectHandle__hwarith__();
117 mlirDialectHandleRegisterDialect(
hwarith, context);
118 mlirDialectHandleLoadDialect(
hwarith, context);
120 MlirDialectHandle index = mlirGetDialectHandle__index__();
121 mlirDialectHandleRegisterDialect(index, context);
122 mlirDialectHandleLoadDialect(index, context);
124 MlirDialectHandle scf = mlirGetDialectHandle__scf__();
125 mlirDialectHandleRegisterDialect(scf, context);
126 mlirDialectHandleLoadDialect(scf, context);
128 MlirDialectHandle
om = mlirGetDialectHandle__om__();
129 mlirDialectHandleRegisterDialect(
om, context);
130 mlirDialectHandleLoadDialect(
om, context);
132 MlirDialectHandle pipeline = mlirGetDialectHandle__pipeline__();
133 mlirDialectHandleRegisterDialect(pipeline, context);
134 mlirDialectHandleLoadDialect(pipeline, context);
136 MlirDialectHandle
rtg = mlirGetDialectHandle__rtg__();
137 mlirDialectHandleRegisterDialect(
rtg, context);
138 mlirDialectHandleLoadDialect(
rtg, context);
140#ifdef CIRCT_INCLUDE_TESTS
141 MlirDialectHandle
rtgtest = mlirGetDialectHandle__rtgtest__();
142 mlirDialectHandleRegisterDialect(
rtgtest, context);
143 mlirDialectHandleLoadDialect(
rtgtest, context);
146 MlirDialectHandle
seq = mlirGetDialectHandle__seq__();
147 mlirDialectHandleRegisterDialect(
seq, context);
148 mlirDialectHandleLoadDialect(
seq, context);
150 MlirDialectHandle
sv = mlirGetDialectHandle__sv__();
151 mlirDialectHandleRegisterDialect(
sv, context);
152 mlirDialectHandleLoadDialect(
sv, context);
154 MlirDialectHandle
fsm = mlirGetDialectHandle__fsm__();
155 mlirDialectHandleRegisterDialect(
fsm, context);
156 mlirDialectHandleLoadDialect(
fsm, context);
158 MlirDialectHandle
handshake = mlirGetDialectHandle__handshake__();
159 mlirDialectHandleRegisterDialect(
handshake, context);
160 mlirDialectHandleLoadDialect(
handshake, context);
162 MlirDialectHandle kanagawa = mlirGetDialectHandle__kanagawa__();
163 mlirDialectHandleRegisterDialect(kanagawa, context);
164 mlirDialectHandleLoadDialect(kanagawa, context);
166 MlirDialectHandle
ltl = mlirGetDialectHandle__ltl__();
167 mlirDialectHandleRegisterDialect(
ltl, context);
168 mlirDialectHandleLoadDialect(
ltl, context);
170 MlirDialectHandle
verif = mlirGetDialectHandle__verif__();
171 mlirDialectHandleRegisterDialect(
verif, context);
172 mlirDialectHandleLoadDialect(
verif, context);
174 MlirDialectHandle smt = mlirGetDialectHandle__smt__();
175 mlirDialectHandleRegisterDialect(smt, context);
176 mlirDialectHandleLoadDialect(smt, context);
178 "Register CIRCT dialects on a PyMlirContext.");
180 m.def(
"export_verilog", [](MlirModule mod, nb::object fileObject) {
182 nb::gil_scoped_release();
186 m.def(
"export_split_verilog", [](MlirModule mod, std::string directory) {
187 auto cDirectory = mlirStringRefCreateFromCString(directory.c_str());
191 nb::module_
aig = m.def_submodule(
"_aig",
"AIG API");
193 nb::module_
esi = m.def_submodule(
"_esi",
"ESI API");
195 nb::module_
msft = m.def_submodule(
"_msft",
"MSFT API");
197 nb::module_
hw = m.def_submodule(
"_hw",
"HW API");
199 nb::module_
seq = m.def_submodule(
"_seq",
"Seq API");
201 nb::module_
om = m.def_submodule(
"_om",
"OM API");
203 nb::module_
rtg = m.def_submodule(
"_rtg",
"RTG API");
205#ifdef CIRCT_INCLUDE_TESTS
206 nb::module_
rtgtest = m.def_submodule(
"_rtgtest",
"RTGTest API");
207 circt::python::populateDialectRTGTestSubmodule(
rtgtest);
209 nb::module_
sv = m.def_submodule(
"_sv",
"SV API");
211 nb::module_ support = m.def_submodule(
"_support",
"CIRCT support");