64 m.doc() =
"CIRCT Python Native Extension";
66 llvm::sys::PrintStackTraceOnErrorSignal(
"");
67 LLVMEnablePrettyStackTrace();
71 [](nb::object capsule) {
73 auto wrappedCapsule = capsule.attr(MLIR_PYTHON_CAPI_PTR_ATTR);
74 MlirContext context = mlirPythonCapsuleToContext(wrappedCapsule.ptr());
77 MlirDialectHandle
comb = mlirGetDialectHandle__comb__();
78 mlirDialectHandleRegisterDialect(
comb, context);
79 mlirDialectHandleLoadDialect(
comb, context);
81 MlirDialectHandle
debug = mlirGetDialectHandle__debug__();
82 mlirDialectHandleRegisterDialect(
debug, context);
83 mlirDialectHandleLoadDialect(
debug, context);
85 MlirDialectHandle
emit = mlirGetDialectHandle__emit__();
86 mlirDialectHandleRegisterDialect(
emit, context);
87 mlirDialectHandleLoadDialect(
emit, context);
89 MlirDialectHandle
esi = mlirGetDialectHandle__esi__();
90 mlirDialectHandleRegisterDialect(
esi, context);
91 mlirDialectHandleLoadDialect(
esi, context);
93 MlirDialectHandle
msft = mlirGetDialectHandle__msft__();
94 mlirDialectHandleRegisterDialect(
msft, context);
95 mlirDialectHandleLoadDialect(
msft, context);
97 MlirDialectHandle
hw = mlirGetDialectHandle__hw__();
98 mlirDialectHandleRegisterDialect(
hw, context);
99 mlirDialectHandleLoadDialect(
hw, context);
101 MlirDialectHandle
hwarith = mlirGetDialectHandle__hwarith__();
102 mlirDialectHandleRegisterDialect(
hwarith, context);
103 mlirDialectHandleLoadDialect(
hwarith, context);
105 MlirDialectHandle index = mlirGetDialectHandle__index__();
106 mlirDialectHandleRegisterDialect(index, context);
107 mlirDialectHandleLoadDialect(index, context);
109 MlirDialectHandle
om = mlirGetDialectHandle__om__();
110 mlirDialectHandleRegisterDialect(
om, context);
111 mlirDialectHandleLoadDialect(
om, context);
113 MlirDialectHandle
rtg = mlirGetDialectHandle__rtg__();
114 mlirDialectHandleRegisterDialect(
rtg, context);
115 mlirDialectHandleLoadDialect(
rtg, context);
117#ifdef CIRCT_INCLUDE_TESTS
118 MlirDialectHandle
rtgtest = mlirGetDialectHandle__rtgtest__();
119 mlirDialectHandleRegisterDialect(
rtgtest, context);
120 mlirDialectHandleLoadDialect(
rtgtest, context);
123 MlirDialectHandle
seq = mlirGetDialectHandle__seq__();
124 mlirDialectHandleRegisterDialect(
seq, context);
125 mlirDialectHandleLoadDialect(
seq, context);
127 MlirDialectHandle
sv = mlirGetDialectHandle__sv__();
128 mlirDialectHandleRegisterDialect(
sv, context);
129 mlirDialectHandleLoadDialect(
sv, context);
131 MlirDialectHandle
fsm = mlirGetDialectHandle__fsm__();
132 mlirDialectHandleRegisterDialect(
fsm, context);
133 mlirDialectHandleLoadDialect(
fsm, context);
135 MlirDialectHandle
handshake = mlirGetDialectHandle__handshake__();
136 mlirDialectHandleRegisterDialect(
handshake, context);
137 mlirDialectHandleLoadDialect(
handshake, context);
139 MlirDialectHandle
ltl = mlirGetDialectHandle__ltl__();
140 mlirDialectHandleRegisterDialect(
ltl, context);
141 mlirDialectHandleLoadDialect(
ltl, context);
143 MlirDialectHandle
verif = mlirGetDialectHandle__verif__();
144 mlirDialectHandleRegisterDialect(
verif, context);
145 mlirDialectHandleLoadDialect(
verif, context);
147 MlirDialectHandle
smt = mlirGetDialectHandle__smt__();
148 mlirDialectHandleRegisterDialect(
smt, context);
149 mlirDialectHandleLoadDialect(
smt, context);
151 "Register CIRCT dialects on a PyMlirContext.");
153 m.def(
"export_verilog", [](MlirModule mod, nb::object fileObject) {
155 nb::gil_scoped_release();
159 m.def(
"export_split_verilog", [](MlirModule mod, std::string directory) {
160 auto cDirectory = mlirStringRefCreateFromCString(directory.c_str());
164 nb::module_
esi = m.def_submodule(
"_esi",
"ESI API");
166 nb::module_
msft = m.def_submodule(
"_msft",
"MSFT API");
168 nb::module_
hw = m.def_submodule(
"_hw",
"HW API");
170 nb::module_
seq = m.def_submodule(
"_seq",
"Seq API");
172 nb::module_
om = m.def_submodule(
"_om",
"OM API");
174 nb::module_
rtg = m.def_submodule(
"_rtg",
"RTG API");
176 nb::module_ rtgtool = m.def_submodule(
"_rtgtool",
"RTGTool API");
178#ifdef CIRCT_INCLUDE_TESTS
179 nb::module_
rtgtest = m.def_submodule(
"_rtgtest",
"RTGTest API");
180 circt::python::populateDialectRTGTestSubmodule(
rtgtest);
182 nb::module_
sv = m.def_submodule(
"_sv",
"SV API");
184 nb::module_ support = m.def_submodule(
"_support",
"CIRCT support");