79 m.doc() =
"CIRCT Python Native Extension";
81 llvm::sys::PrintStackTraceOnErrorSignal(
"");
82 LLVMEnablePrettyStackTrace();
86 [](nb::object capsule) {
88 auto wrappedCapsule = capsule.attr(MLIR_PYTHON_CAPI_PTR_ATTR);
89 MlirContext
context = mlirPythonCapsuleToContext(wrappedCapsule.ptr());
93 MlirDialectHandle
arc = mlirGetDialectHandle__arc__();
94 mlirDialectHandleRegisterDialect(
arc,
context);
97 MlirDialectHandle
comb = mlirGetDialectHandle__comb__();
101 MlirDialectHandle
debug = mlirGetDialectHandle__debug__();
105 MlirDialectHandle
emit = mlirGetDialectHandle__emit__();
109 MlirDialectHandle
esi = mlirGetDialectHandle__esi__();
110 mlirDialectHandleRegisterDialect(
esi,
context);
113 MlirDialectHandle
msft = mlirGetDialectHandle__msft__();
117 MlirDialectHandle
hw = mlirGetDialectHandle__hw__();
118 mlirDialectHandleRegisterDialect(
hw,
context);
119 mlirDialectHandleLoadDialect(
hw,
context);
121 MlirDialectHandle
hwarith = mlirGetDialectHandle__hwarith__();
125 MlirDialectHandle index = mlirGetDialectHandle__index__();
126 mlirDialectHandleRegisterDialect(index,
context);
127 mlirDialectHandleLoadDialect(index,
context);
129 MlirDialectHandle
llvm = mlirGetDialectHandle__llvm__();
136 MlirDialectHandle scf = mlirGetDialectHandle__scf__();
137 mlirDialectHandleRegisterDialect(scf,
context);
138 mlirDialectHandleLoadDialect(scf,
context);
140 MlirDialectHandle cf = mlirGetDialectHandle__cf__();
141 mlirDialectHandleRegisterDialect(cf,
context);
144 MlirDialectHandle func = mlirGetDialectHandle__func__();
145 mlirDialectHandleRegisterDialect(func,
context);
148 MlirDialectHandle
om = mlirGetDialectHandle__om__();
149 mlirDialectHandleRegisterDialect(
om,
context);
150 mlirDialectHandleLoadDialect(
om,
context);
152 MlirDialectHandle
pipeline = mlirGetDialectHandle__pipeline__();
156 MlirDialectHandle
rtg = mlirGetDialectHandle__rtg__();
157 mlirDialectHandleRegisterDialect(
rtg,
context);
160#ifdef CIRCT_INCLUDE_TESTS
161 MlirDialectHandle
rtgtest = mlirGetDialectHandle__rtgtest__();
166 MlirDialectHandle
seq = mlirGetDialectHandle__seq__();
167 mlirDialectHandleRegisterDialect(
seq,
context);
170 MlirDialectHandle
sim = mlirGetDialectHandle__sim__();
171 mlirDialectHandleRegisterDialect(
sim,
context);
174 MlirDialectHandle
sv = mlirGetDialectHandle__sv__();
175 mlirDialectHandleRegisterDialect(
sv,
context);
176 mlirDialectHandleLoadDialect(
sv,
context);
178 MlirDialectHandle
synth = mlirGetDialectHandle__synth__();
182 MlirDialectHandle
fsm = mlirGetDialectHandle__fsm__();
183 mlirDialectHandleRegisterDialect(
fsm,
context);
186 MlirDialectHandle
handshake = mlirGetDialectHandle__handshake__();
190 MlirDialectHandle kanagawa = mlirGetDialectHandle__kanagawa__();
191 mlirDialectHandleRegisterDialect(kanagawa,
context);
192 mlirDialectHandleLoadDialect(kanagawa,
context);
194 MlirDialectHandle
ltl = mlirGetDialectHandle__ltl__();
195 mlirDialectHandleRegisterDialect(
ltl,
context);
198 MlirDialectHandle
verif = mlirGetDialectHandle__verif__();
202 MlirDialectHandle smt = mlirGetDialectHandle__smt__();
203 mlirDialectHandleRegisterDialect(smt,
context);
204 mlirDialectHandleLoadDialect(smt,
context);
206 "Register CIRCT dialects on a PyMlirContext.");
208 m.def(
"export_verilog", [](MlirModule mod, nb::object fileObject) {
213 m.def(
"export_split_verilog", [](MlirModule mod, std::string directory) {
214 auto cDirectory = mlirStringRefCreateFromCString(directory.c_str());
218 m.def(
"export_llvm_ir", [](MlirModule mod, nb::object fileObject) {
223 nb::module_
arc = m.def_submodule(
"_arc",
"Arc API");
225 nb::module_
synth = m.def_submodule(
"_synth",
"synth API");
227 nb::module_
esi = m.def_submodule(
"_esi",
"ESI API");
229 nb::module_
msft = m.def_submodule(
"_msft",
"MSFT API");
231 nb::module_
hw = m.def_submodule(
"_hw",
"HW API");
233 nb::module_
seq = m.def_submodule(
"_seq",
"Seq API");
235 nb::module_
om = m.def_submodule(
"_om",
"OM API");
237 nb::module_
pipeline = m.def_submodule(
"_pipeline",
"Pipeline API");
239 nb::module_
rtg = m.def_submodule(
"_rtg",
"RTG API");
241#ifdef CIRCT_INCLUDE_TESTS
242 nb::module_
rtgtest = m.def_submodule(
"_rtgtest",
"RTGTest API");
243 circt::python::populateDialectRTGTestSubmodule(
rtgtest);
245 nb::module_
sv = m.def_submodule(
"_sv",
"SV API");
247 nb::module_ support = m.def_submodule(
"_support",
"CIRCT support");
static std::unique_ptr< Context > context