HAL
gate_type_components.cpp
Go to the documentation of this file.
11 
12 namespace hal
13 {
15  {
16  py::class_<GateTypeComponent, RawPtrWrapper<GateTypeComponent>> py_gate_type_component(m, "GateTypeComponent", R"(
17  A component defining additional functionality of a gate type.
18  )");
19 
20  py::enum_<GateTypeComponent::ComponentType>(py_gate_type_component, "ComponentType", R"(
21  The type of a gate type component.
22  )")
23  .value("lut", GateTypeComponent::ComponentType::lut, R"(LUT component type.)")
24  .value("ff", GateTypeComponent::ComponentType::ff, R"(Flip-flop component type.)")
25  .value("latch", GateTypeComponent::ComponentType::latch, R"(Latch component type.)")
26  .value("ram", GateTypeComponent::ComponentType::ram, R"(RAM component type.)")
27  .value("mac", GateTypeComponent::ComponentType::mac, R"(MAC component type.)")
28  .value("init", GateTypeComponent::ComponentType::init, R"(Initializiation component type.)")
29  .value("state", GateTypeComponent::ComponentType::state, R"(State component type.)")
30  .value("ram_port", GateTypeComponent::ComponentType::ram_port, R"(RAM port component type.)")
31  .export_values();
32 
33  py_gate_type_component.def_property_readonly("type", &GateTypeComponent::get_type, R"(
34  The type of the gate type component.
35 
36  :type: hal_py.GateTypeComponent.ComponentType
37  )");
38 
39  py_gate_type_component.def("get_type", &GateTypeComponent::get_type, R"(
40  Get the type of the gate type component.
41 
42  :returns: The type of the gate type component.
43  :rtype: hal_py.GateTypeComponent.ComponentType
44  )");
45 
46  py_gate_type_component.def_property_readonly("components", &GateTypeComponent::get_components, R"(
47  All components of the gate type component as a list.
48 
49  :type: list[hal_py.GateTypeComponent]
50  )");
51 
52  py_gate_type_component.def("get_components", &GateTypeComponent::get_components, py::arg("filter") = nullptr, R"(
53  Get all components matching the filter condition (if provided) as a list.
54  Returns an empty list if (i) the gate type does not contain any components or (ii) no component matches the filter condition.
55 
56  :param lambda filter: The filter applied to all candidate components, disabled by default.
57  :returns: The components.
58  :rtype: list[hal_py.GateTypeComponent]
59  )");
60 
61  py_gate_type_component.def("get_component", &GateTypeComponent::get_component, py::arg("filter") = nullptr, R"(
62  Get a single component matching the filter condition (if provided).
63  Returns None if (i) the gate type does not contain any components, (ii) multiple components match the filter condition, or (iii) no component matches the filter condition.
64 
65  :param lambda filter: The filter applied to all candidate components.
66  :returns: The component or None.
67  :rtype: hal_py.GateTypeComponent or None
68  )");
69 
70  py::class_<LUTComponent, GateTypeComponent, RawPtrWrapper<LUTComponent>> py_lut_component(m, "LUTComponent", R"(
71  A LUT component specifying the LUT gate type's functionality.
72  )");
73 
74  py_lut_component.def_static("is_class_of", &LUTComponent::is_class_of, py::arg("component"), R"(
75  Check whether a component is a LUTComponent.
76 
77  :param hal_py.GateTypeComponent component: The component to check.
78  :returns: True if component is a LUTComponent, False otherwise.
79  :rtype: bool
80  )");
81 
82  py_lut_component.def_property("init_ascending", &LUTComponent::is_init_ascending, &LUTComponent::set_init_ascending, R"(
83  The bit-order of the initialization string.
84  True if ascending, False otherwise.
85 
86  :type: bool
87  )");
88 
89  py_lut_component.def("is_init_ascending", &LUTComponent::is_init_ascending, R"(
90  Get the bit-order of the initialization string.
91 
92  :returns: True if ascending bit-order, False otherwise.
93  :rtype: bool
94  )");
95 
96  py_lut_component.def("set_init_ascending", &LUTComponent::set_init_ascending, py::arg("init_ascending") = true, R"(
97  Set the bit-order of the initialization string.
98 
99  :param bool init_ascending: True if ascending bit-order, False otherwise.
100  )");
101 
102  py::class_<FFComponent, GateTypeComponent, RawPtrWrapper<FFComponent>> py_ff_component(m, "FFComponent", R"(
103  A FF component specifying the FF gate type's functionality.
104  )");
105 
106  py_ff_component.def_static("is_class_of", &FFComponent::is_class_of, py::arg("component"), R"(
107  Check whether a component is a FFComponent.
108 
109  :param hal_py.GateTypeComponent component: The component to check.
110  :returns: True if component is a FFComponent, False otherwise.
111  :rtype: bool
112  )");
113 
114  py_ff_component.def_property("next_state_function", &FFComponent::get_next_state_function, &FFComponent::set_next_state_function, R"(
115  The Boolean function describing the next internal state of the flip-flop.
116  )");
117 
118  py_ff_component.def("get_next_state_function", &FFComponent::get_next_state_function, R"(
119  Get the Boolean function describing the next internal state of the flip-flop.
120 
121  :returns: The function describing the internal state.
122  :rtype: hal_py.BooleanFunction
123  )");
124 
125  py_ff_component.def("set_next_state_function", &FFComponent::set_next_state_function, py::arg("next_state_bf"), R"(
126  Set the Boolean function describing the next internal state of the flip-flop.
127 
128  :param hal_py.BooleanFunction next_state_bf: The function describing the internal state.
129  )");
130 
131  py_ff_component.def_property("clock_function", &FFComponent::get_clock_function, &FFComponent::set_clock_function, R"(
132  The Boolean function describing the clock input of the flip-flop.
133  )");
134 
135  py_ff_component.def("get_clock_function", &FFComponent::get_clock_function, R"(
136  Get the Boolean function describing the clock input of the flip-flop.
137 
138  :returns: The function describing the clock input.
139  :rtype: hal_py.BooleanFunction
140  )");
141 
142  py_ff_component.def("set_clock_function", &FFComponent::set_clock_function, py::arg("clock_bf"), R"(
143  Set the Boolean function describing the clock input of the flip-flop.
144 
145  :param hal_py.BooleanFunction clock_bf: The function describing the clock input.
146  )");
147 
148  py_ff_component.def_property("async_reset_function", &FFComponent::get_async_reset_function, &FFComponent::set_async_reset_function, R"(
149  The Boolean function describing the asynchronous reset behavior of the flip-flop.
150  Is an empty function if asynchronous reset is not supported by the flip-flop.
151  )");
152 
153  py_ff_component.def("get_async_reset_function", &FFComponent::get_async_reset_function, R"(
154  Get the Boolean function describing the asynchronous reset behavior of the flip-flop.
155  Returns an empty function if asynchronous reset is not supported by the flip-flop.
156 
157  :returns: The function describing the asynchronous reset behavior.
158  :rtype: hal_py.BooleanFunction
159  )");
160 
161  py_ff_component.def("set_async_reset_function", &FFComponent::set_async_reset_function, py::arg("async_reset_bf"), R"(
162  Set the Boolean function describing the asynchronous reset behavior of the flip-flop.
163 
164  :param hal_py.BooleanFunction async_reset_bf: The function describing the asynchronous reset behavior.
165  )");
166 
167  py_ff_component.def_property("async_set_function", &FFComponent::get_async_set_function, &FFComponent::set_async_set_function, R"(
168  The Boolean function describing the asynchronous set behavior of the flip-flop.
169  Is an empty function if asynchronous set is not supported by the flip-flop.
170  )");
171 
172  py_ff_component.def("get_async_set_function", &FFComponent::get_async_set_function, R"(
173  Get the Boolean function describing the asynchronous set behavior of the flip-flop.
174  Returns an empty function if asynchronous set is not supported by the flip-flop.
175 
176  :returns: The function describing the asynchronous set behavior.
177  :rtype: hal_py.BooleanFunction
178  )");
179 
180  py_ff_component.def("set_async_set_function", &FFComponent::set_async_set_function, py::arg("async_set_bf"), R"(
181  Set the Boolean function describing the asynchronous set behavior of the flip-flop.
182 
183  :param hal_py.BooleanFunction async_set_bf: The function describing the asynchronous set behavior.
184  )");
185 
186  py_ff_component.def("get_async_set_reset_behavior", &FFComponent::get_async_set_reset_behavior, R"(
187  Get the behavior of the internal state and the negated internal state when both asynchronous set and reset are active at the same time.
188 
189  :returns: The values specifying the behavior for the internal and negated internal state.
190  :rytpe: tuple(hal_py.AsyncSetResetBehavior, hal_py.AsyncSetResetBehavior)
191  )");
192 
193  py_ff_component.def("set_async_set_reset_behavior", &FFComponent::set_async_set_reset_behavior, py::arg("behav_state"), py::arg("behav_neg_state"), R"(
194  Set the behavior of the internal state and the negated internal state when both asynchronous set and reset are active at the same time.
195 
196  :param hal_py.AsyncSetResetBehavior behav_state: The behavior of the internal state.
197  :param hal_py.AsyncSetResetBehavior behav_neg_state: The behavior of the negated internal state.
198  )");
199 
200  py::class_<LatchComponent, GateTypeComponent, RawPtrWrapper<LatchComponent>> py_latch_component(m, "LatchComponent", R"(
201  A latch component specifying the latch gate type's functionality.
202  )");
203 
204  py_latch_component.def_static("is_class_of", &LatchComponent::is_class_of, py::arg("component"), R"(
205  Check whether a component is a LatchComponent.
206 
207  :param hal_py.GateTypeComponent component: The component to check.
208  :returns: True if component is a LatchComponent, False otherwise.
209  :rtype: bool
210  )");
211 
212  py_latch_component.def_property("data_in_function", &LatchComponent::get_data_in_function, &LatchComponent::set_data_in_function, R"(
213  The Boolean function describing the data input of the latch.
214  )");
215 
216  py_latch_component.def("get_data_in_function", &LatchComponent::get_data_in_function, R"(
217  Get the Boolean function describing the data input of the latch.
218 
219  :returns: The function describing the data input.
220  :rtype: hal_py.BooleanFunction
221  )");
222 
223  py_latch_component.def("set_data_in_function", &LatchComponent::set_data_in_function, py::arg("data_in_bf"), R"(
224  Set the Boolean function describing the data input of the latch.
225 
226  :param hal_py.BooleanFunction data_in_bf: The function describing the data input.
227  )");
228 
229  py_latch_component.def_property("enable_function", &LatchComponent::get_enable_function, &LatchComponent::set_enable_function, R"(
230  The Boolean function describing the enable behavior of the latch.
231  )");
232 
233  py_latch_component.def("get_enable_function", &LatchComponent::get_enable_function, R"(
234  Get the Boolean function describing the enable behavior of the latch.
235 
236  :returns: The function describing the enable behavior.
237  :rtype: hal_py.BooleanFunction
238  )");
239 
240  py_latch_component.def("set_enable_function", &LatchComponent::set_enable_function, py::arg("enable_bf"), R"(
241  Set the Boolean function describing the enable behavior of the latch.
242 
243  :param hal_py.BooleanFunction enable_bf: The function describing the enable behavior.
244  )");
245 
246  py_latch_component.def_property("async_reset_function", &LatchComponent::get_async_reset_function, &LatchComponent::set_async_reset_function, R"(
247  The Boolean function describing the asynchronous reset behavior of the latch.
248  Is an empty function if asynchronous reset is not supported by the latch.
249  )");
250 
251  py_latch_component.def("get_async_reset_function", &LatchComponent::get_async_reset_function, R"(
252  Get the Boolean function describing the asynchronous reset behavior of the latch.
253  Returns an empty function if asynchronous reset is not supported by the latch.
254 
255  :returns: The function describing the asynchronous reset behavior.
256  :rtype: hal_py.BooleanFunction
257  )");
258 
259  py_latch_component.def("set_async_reset_function", &LatchComponent::set_async_reset_function, py::arg("async_reset_bf"), R"(
260  Set the Boolean function describing the asynchronous reset behavior of the latch.
261 
262  :param hal_py.BooleanFunction async_reset_bf: The function describing the asynchronous reset behavior.
263  )");
264 
265  py_latch_component.def_property("async_set_function", &LatchComponent::get_async_set_function, &LatchComponent::set_async_set_function, R"(
266  The Boolean function describing the asynchronous set behavior of the latch.
267  Is an empty function if asynchronous set is not supported by the latch.
268  )");
269 
270  py_latch_component.def("get_async_set_function", &LatchComponent::get_async_set_function, R"(
271  Get the Boolean function describing the asynchronous set behavior of the latch.
272  Returns an empty function if asynchronous set is not supported by the latch.
273 
274  :returns: The function describing the asynchronous set behavior.
275  :rtype: hal_py.BooleanFunction
276  )");
277 
278  py_latch_component.def("set_async_set_function", &LatchComponent::set_async_set_function, py::arg("async_set_bf"), R"(
279  Set the Boolean function describing the asynchronous set behavior of the latch.
280 
281  :param hal_py.BooleanFunction async_set_bf: The function describing the asynchronous set behavior.
282  )");
283 
284  py_latch_component.def("get_async_set_reset_behavior", &LatchComponent::get_async_set_reset_behavior, R"(
285  Get the behavior of the internal state and the negated internal state when both asynchronous set and reset are active at the same time.
286 
287  :returns: The values specifying the behavior for the internal and negated internal state.
288  :rytpe: tuple(hal_py.AsyncSetResetBehavior, hal_py.AsyncSetResetBehavior)
289  )");
290 
291  py_latch_component.def("set_async_set_reset_behavior", &LatchComponent::set_async_set_reset_behavior, py::arg("behav_state"), py::arg("behav_neg_state"), R"(
292  Set the behavior of the internal state and the negated internal state when both asynchronous set and reset are active at the same time.
293 
294  :param hal_py.AsyncSetResetBehavior behav_state: The behavior of the internal state.
295  :param hal_py.AsyncSetResetBehavior behav_neg_state: The behavior of the negated internal state.
296  )");
297 
298  py::class_<RAMComponent, GateTypeComponent, RawPtrWrapper<RAMComponent>> py_ram_component(m, "RAMComponent", R"(
299  A RAM component specifying the RAM gate type's functionality.
300  )");
301 
302  py_ram_component.def_static("is_class_of", &RAMComponent::is_class_of, py::arg("component"), R"(
303  Check whether a component is a RAMComponent.
304 
305  :param hal_py.GateTypeComponent component: The component to check.
306  :returns: True if component is a RAMComponent, False otherwise.
307  :rtype: bool
308  )");
309 
310  py_ram_component.def_property("bit_size", &RAMComponent::get_bit_size, &RAMComponent::set_bit_size, R"(
311  The size of the RAM in bits.
312 
313  :type: int
314  )");
315 
316  py_ram_component.def("get_bit_size", &RAMComponent::get_bit_size, R"(
317  Get the size of the RAM in bits.
318 
319  :returns: The size of the RAM in bits.
320  )");
321 
322  py_ram_component.def("set_bit_size", &RAMComponent::set_bit_size, py::arg("bit_size"), R"(
323  Set the size of the RAM in bits.
324 
325  :param int bit_size: The size of the RAM in bits.
326  )");
327 
328  py::class_<MACComponent, GateTypeComponent, RawPtrWrapper<MACComponent>> py_mac_component(m, "MACComponent", R"(
329  A MAC component specifying the MAC gate type's functionality.
330  )");
331 
332  py_mac_component.def_static("is_class_of", &MACComponent::is_class_of, py::arg("component"), R"(
333  Check whether a component is a MACComponent.
334 
335  :param hal_py.GateTypeComponent component: The component to check.
336  :returns: True if component is a MACComponent, False otherwise.
337  :rtype: bool
338  )");
339 
340  py::class_<InitComponent, GateTypeComponent, RawPtrWrapper<InitComponent>> py_init_component(m, "InitComponent", R"(
341  An initialization component specifying the initialization behavior of a gate type.
342  )");
343 
344  py_init_component.def_static("is_class_of", &InitComponent::is_class_of, py::arg("component"), R"(
345  Check whether a component is an InitComponent.
346 
347  :param hal_py.GateTypeComponent component: The component to check.
348  :returns: True if component is a InitComponent, False otherwise.
349  :rtype: bool
350  )");
351 
352  py_init_component.def_property("init_category", &InitComponent::get_init_category, &InitComponent::set_init_category, R"(
353  The category in which to find the initialization data.
354 
355  :type: str
356  )");
357 
358  py_init_component.def("get_init_category", &InitComponent::get_init_category, R"(
359  Get the category in which to find the initialization data.
360 
361  :returns: The data category.
362  :rtype: str
363  )");
364 
365  py_init_component.def("set_init_category", &InitComponent::set_init_category, py::arg("init_category"), R"(
366  Set the category in which to find the initialization data.
367 
368  :param str init_category: The data category.
369  )");
370 
371  py_init_component.def_property("init_identifiers", &InitComponent::get_init_identifiers, &InitComponent::set_init_identifiers, R"(
372  The list of identifiers at which to find initialization data.
373 
374  :type: str
375  )");
376 
377  py_init_component.def("get_init_identifier", &InitComponent::get_init_identifiers, R"(
378  Get the list of identifiers at which to find the initialization data.
379 
380  :returns: The data identifiers.
381  :rtype: list[str]
382  )");
383 
384  py_init_component.def("set_init_identifier", &InitComponent::set_init_identifiers, py::arg("init_identifiers"), R"(
385  Set the list of identifiers at which to find the initialization data.
386 
387  :param list[str] init_identifiers: The data identifiers.
388  )");
389 
390  py::class_<StateComponent, GateTypeComponent, RawPtrWrapper<StateComponent>> py_state_component(m, "StateComponent", R"(
391  A StateComponent with given child component and the internal state identifiers.
392  )");
393 
394  py_state_component.def_static("is_class_of", &StateComponent::is_class_of, py::arg("component"), R"(
395  Check whether a component is an StateComponent.
396 
397  :param hal_py.GateTypeComponent component: The component to check.
398  :returns: True if component is a StateComponent, False otherwise.
399  :rtype: bool
400  )");
401 
402  py_state_component.def_property("state_identifier", &StateComponent::get_state_identifier, &StateComponent::set_state_identifier, R"(
403  The identifier of the internal state.
404 
405  :type: str
406  )");
407 
408  py_state_component.def("get_state_identifier", &StateComponent::get_state_identifier, R"(
409  Get the identifier of the internal state.
410 
411  :returns: The identifier of the internal state.
412  :rtype: str
413  )");
414 
415  py_state_component.def("set_state_identifier", &StateComponent::set_state_identifier, py::arg("state_identifier"), R"(
416  Set the identifier of the internal state.
417 
418  :param str state_identifier: The identifier of the internal state.
419  )");
420 
421  py_state_component.def_property("neg_state_identifier", &StateComponent::get_neg_state_identifier, &StateComponent::set_neg_state_identifier, R"(
422  The identifier of the negated internal state.
423 
424  :type: str
425  )");
426 
427  py_state_component.def("get_neg_state_identifier", &StateComponent::get_neg_state_identifier, R"(
428  Get the identifier of the negated internal state.
429 
430  :returns: The identifier of the negated internal state.
431  :rtype: str
432  )");
433 
434  py_state_component.def("set_neg_state_identifier", &StateComponent::set_neg_state_identifier, py::arg("neg_state_identifier"), R"(
435  Set the identifier of the negated internal state.
436 
437  :param str neg_state_identifier: The identifier of the negated internal state.
438  )");
439 
440  py::class_<RAMPortComponent, GateTypeComponent, RawPtrWrapper<RAMPortComponent>> py_ram_port_component(m, "RAMPortComponent", R"(
441  A RAM port component specifying the behavior of a port belonging to a RAM gate type.
442  )");
443 
444  py_ram_port_component.def_static("is_class_of", &RAMPortComponent::is_class_of, py::arg("component"), R"(
445  Check whether a component is a RAMPortComponent.
446 
447  :param hal_py.GateTypeComponent component: The component to check.
448  :returns: True if component is a RAMPortComponent, False otherwise.
449  :rtype: bool
450  )");
451 
452  py_ram_port_component.def_property("data_group", &RAMPortComponent::get_data_group, &RAMPortComponent::set_data_group, R"(
453  The name of the read or write data pin group.
454 
455  :type: str
456  )");
457 
458  py_ram_port_component.def("get_data_group", &RAMPortComponent::get_data_group, R"(
459  Get the name of the read or write data pin group.
460 
461  :returns: The name of the pin group.
462  :rtype: str
463  )");
464 
465  py_ram_port_component.def("set_data_group", &RAMPortComponent::set_data_group, py::arg("data_group"), R"(
466  Set the name of the read or write data pin group.
467 
468  :param str data_group: The name of the pin group.
469  )");
470 
471  py_ram_port_component.def_property("address_group", &RAMPortComponent::get_address_group, &RAMPortComponent::set_address_group, R"(
472  The name of the read or write address pin group.
473 
474  :type: str
475  )");
476 
477  py_ram_port_component.def("get_address_group", &RAMPortComponent::get_address_group, R"(
478  Get the name of the read or write address pin group.
479 
480  :returns: The name of the pin group.
481  :rtype: str
482  )");
483 
484  py_ram_port_component.def("set_address_group", &RAMPortComponent::set_address_group, py::arg("addr_group"), R"(
485  Set the name of the read or write address pin group.
486 
487  :param str addr_group: The name of the pin group.
488  )");
489 
490  py_ram_port_component.def_property("clock_function", &RAMPortComponent::get_clock_function, &RAMPortComponent::set_clock_function, R"(
491  The Boolean function determining the read or write clock.
492 
493  :type: hal_py.BooleanFunction
494  )");
495 
496  py_ram_port_component.def("get_clock_function", &RAMPortComponent::get_clock_function, R"(
497  Get the Boolean function determining the read or write clock.
498 
499  :returns: The Boolean function.
500  :rtype: hal_py.BooleanFunction
501  )");
502 
503  py_ram_port_component.def("set_clock_function", &RAMPortComponent::set_clock_function, py::arg("clock_bf"), R"(
504  Set the Boolean function determining the read or write clock.
505 
506  :param hal_py.BooleanFunction clock_bf: The Boolean function.
507  )");
508 
509  py_ram_port_component.def_property("enable_function", &RAMPortComponent::get_enable_function, &RAMPortComponent::set_enable_function, R"(
510  The Boolean function determining the read or write enable.
511 
512  :type: hal_py.BooleanFunction
513  )");
514 
515  py_ram_port_component.def("get_enable_function", &RAMPortComponent::get_enable_function, R"(
516  Get the Boolean function determining the read or write enable.
517 
518  :returns: The Boolean function.
519  :rtype: hal_py.BooleanFunction
520  )");
521 
522  py_ram_port_component.def("set_enable_function", &RAMPortComponent::set_enable_function, py::arg("enable_bf"), R"(
523  Set the Boolean function determining the read or write enable.
524 
525  :param hal_py.BooleanFunction enable_bf: The Boolean function.
526  )");
527 
528  py_ram_port_component.def_property("write_port", &RAMPortComponent::is_write_port, &RAMPortComponent::set_write_port, R"(
529  True if the port is a write port, false if it is a read port.
530 
531  :type: bool
532  )");
533 
534  py_ram_port_component.def("is_write_port", &RAMPortComponent::is_write_port, R"(
535  Check whether the port is a write or a read port.
536 
537  :returns: True if the port is a write port, false if it is a read port.
538  :rtype: bool
539  )");
540 
541  py_ram_port_component.def("set_write_port", &RAMPortComponent::set_write_port, py::arg("is_write"), R"(
542  Set the port to be a write or a read port.
543 
544  :param bool is_write: True if the port is a write port, false if it is a read port.
545  )");
546  }
547 } // namespace hal
void set_clock_function(const BooleanFunction &clock_bf)
void set_async_set_reset_behavior(const AsyncSetResetBehavior behav_state, const AsyncSetResetBehavior behav_neg_state)
void set_async_set_function(const BooleanFunction &async_set_bf)
BooleanFunction get_clock_function() const
const std::pair< AsyncSetResetBehavior, AsyncSetResetBehavior > & get_async_set_reset_behavior() const
BooleanFunction get_async_set_function() const
static bool is_class_of(const GateTypeComponent *component)
BooleanFunction get_async_reset_function() const
BooleanFunction get_next_state_function() const
void set_next_state_function(const BooleanFunction &next_state_bf)
void set_async_reset_function(const BooleanFunction &async_reset_bf)
virtual std::vector< GateTypeComponent * > get_components(const std::function< bool(const GateTypeComponent *)> &filter=nullptr) const =0
virtual ComponentType get_type() const =0
GateTypeComponent * get_component(const std::function< bool(const GateTypeComponent *)> &filter=nullptr) const
const std::string & get_init_category() const
static bool is_class_of(const GateTypeComponent *component)
void set_init_category(const std::string &init_category)
void set_init_identifiers(const std::vector< std::string > &init_identifiers)
const std::vector< std::string > & get_init_identifiers() const
void set_init_ascending(bool init_ascending=true)
bool is_init_ascending() const
static bool is_class_of(const GateTypeComponent *component)
BooleanFunction get_async_reset_function() const
void set_async_reset_function(const BooleanFunction &async_reset_bf)
void set_async_set_reset_behavior(AsyncSetResetBehavior behav_state, AsyncSetResetBehavior behav_neg_state)
static bool is_class_of(const GateTypeComponent *component)
const std::pair< AsyncSetResetBehavior, AsyncSetResetBehavior > & get_async_set_reset_behavior() const
void set_enable_function(const BooleanFunction &enable_bf)
void set_async_set_function(const BooleanFunction &async_set_bf)
BooleanFunction get_async_set_function() const
BooleanFunction get_enable_function() const
BooleanFunction get_data_in_function() const
void set_data_in_function(const BooleanFunction &data_in_bf)
static bool is_class_of(const GateTypeComponent *component)
static bool is_class_of(const GateTypeComponent *component)
u32 get_bit_size() const
void set_bit_size(const u32 bit_size)
void set_enable_function(const BooleanFunction &enable_bf)
void set_address_group(const std::string &addr_group)
void set_write_port(bool is_write)
const std::string & get_data_group() const
const BooleanFunction & get_enable_function() const
static bool is_class_of(const GateTypeComponent *component)
const BooleanFunction & get_clock_function() const
const std::string & get_address_group() const
void set_clock_function(const BooleanFunction &clock_bf)
void set_data_group(const std::string &data_group)
const std::string & get_state_identifier() const
void set_state_identifier(const std::string &state_identifier)
static bool is_class_of(const GateTypeComponent *component)
const std::string & get_neg_state_identifier() const
void set_neg_state_identifier(const std::string &neg_state_identifier)
void gate_type_components_init(py::module &m)
const Module * module(const Gate *g, const NodeBoxes &boxes)