65 m.doc() =
"CIRCT Python Native Extension";
67 llvm::sys::PrintStackTraceOnErrorSignal(
"");
68 LLVMEnablePrettyStackTrace();
72 [](nb::object capsule) {
74 auto wrappedCapsule = capsule.attr(MLIR_PYTHON_CAPI_PTR_ATTR);
75 MlirContext context = mlirPythonCapsuleToContext(wrappedCapsule.ptr());
78 MlirDialectHandle
comb = mlirGetDialectHandle__comb__();
79 mlirDialectHandleRegisterDialect(
comb, context);
80 mlirDialectHandleLoadDialect(
comb, context);
82 MlirDialectHandle
debug = mlirGetDialectHandle__debug__();
83 mlirDialectHandleRegisterDialect(
debug, context);
84 mlirDialectHandleLoadDialect(
debug, context);
86 MlirDialectHandle
emit = mlirGetDialectHandle__emit__();
87 mlirDialectHandleRegisterDialect(
emit, context);
88 mlirDialectHandleLoadDialect(
emit, context);
90 MlirDialectHandle
esi = mlirGetDialectHandle__esi__();
91 mlirDialectHandleRegisterDialect(
esi, context);
92 mlirDialectHandleLoadDialect(
esi, context);
94 MlirDialectHandle
msft = mlirGetDialectHandle__msft__();
95 mlirDialectHandleRegisterDialect(
msft, context);
96 mlirDialectHandleLoadDialect(
msft, context);
98 MlirDialectHandle
hw = mlirGetDialectHandle__hw__();
99 mlirDialectHandleRegisterDialect(
hw, context);
100 mlirDialectHandleLoadDialect(
hw, context);
102 MlirDialectHandle
hwarith = mlirGetDialectHandle__hwarith__();
103 mlirDialectHandleRegisterDialect(
hwarith, context);
104 mlirDialectHandleLoadDialect(
hwarith, context);
106 MlirDialectHandle index = mlirGetDialectHandle__index__();
107 mlirDialectHandleRegisterDialect(index, context);
108 mlirDialectHandleLoadDialect(index, context);
110 MlirDialectHandle scf = mlirGetDialectHandle__scf__();
111 mlirDialectHandleRegisterDialect(scf, context);
112 mlirDialectHandleLoadDialect(scf, context);
114 MlirDialectHandle
om = mlirGetDialectHandle__om__();
115 mlirDialectHandleRegisterDialect(
om, context);
116 mlirDialectHandleLoadDialect(
om, context);
118 MlirDialectHandle
rtg = mlirGetDialectHandle__rtg__();
119 mlirDialectHandleRegisterDialect(
rtg, context);
120 mlirDialectHandleLoadDialect(
rtg, context);
122#ifdef CIRCT_INCLUDE_TESTS
123 MlirDialectHandle
rtgtest = mlirGetDialectHandle__rtgtest__();
124 mlirDialectHandleRegisterDialect(
rtgtest, context);
125 mlirDialectHandleLoadDialect(
rtgtest, context);
128 MlirDialectHandle
seq = mlirGetDialectHandle__seq__();
129 mlirDialectHandleRegisterDialect(
seq, context);
130 mlirDialectHandleLoadDialect(
seq, context);
132 MlirDialectHandle
sv = mlirGetDialectHandle__sv__();
133 mlirDialectHandleRegisterDialect(
sv, context);
134 mlirDialectHandleLoadDialect(
sv, context);
136 MlirDialectHandle
fsm = mlirGetDialectHandle__fsm__();
137 mlirDialectHandleRegisterDialect(
fsm, context);
138 mlirDialectHandleLoadDialect(
fsm, context);
140 MlirDialectHandle
handshake = mlirGetDialectHandle__handshake__();
141 mlirDialectHandleRegisterDialect(
handshake, context);
142 mlirDialectHandleLoadDialect(
handshake, context);
144 MlirDialectHandle
ltl = mlirGetDialectHandle__ltl__();
145 mlirDialectHandleRegisterDialect(
ltl, context);
146 mlirDialectHandleLoadDialect(
ltl, context);
148 MlirDialectHandle
verif = mlirGetDialectHandle__verif__();
149 mlirDialectHandleRegisterDialect(
verif, context);
150 mlirDialectHandleLoadDialect(
verif, context);
152 MlirDialectHandle smt = mlirGetDialectHandle__smt__();
153 mlirDialectHandleRegisterDialect(smt, context);
154 mlirDialectHandleLoadDialect(smt, context);
156 "Register CIRCT dialects on a PyMlirContext.");
158 m.def(
"export_verilog", [](MlirModule mod, nb::object fileObject) {
160 nb::gil_scoped_release();
164 m.def(
"export_split_verilog", [](MlirModule mod, std::string directory) {
165 auto cDirectory = mlirStringRefCreateFromCString(directory.c_str());
169 nb::module_
esi = m.def_submodule(
"_esi",
"ESI API");
171 nb::module_
msft = m.def_submodule(
"_msft",
"MSFT API");
173 nb::module_
hw = m.def_submodule(
"_hw",
"HW API");
175 nb::module_
seq = m.def_submodule(
"_seq",
"Seq API");
177 nb::module_
om = m.def_submodule(
"_om",
"OM API");
179 nb::module_
rtg = m.def_submodule(
"_rtg",
"RTG API");
181 nb::module_ rtgtool = m.def_submodule(
"_rtgtool",
"RTGTool API");
183#ifdef CIRCT_INCLUDE_TESTS
184 nb::module_
rtgtest = m.def_submodule(
"_rtgtest",
"RTGTest API");
185 circt::python::populateDialectRTGTestSubmodule(
rtgtest);
187 nb::module_
sv = m.def_submodule(
"_sv",
"SV API");
189 nb::module_ support = m.def_submodule(
"_support",
"CIRCT support");