15 #ifndef DT_PROCESS_CONSTRUCTORS_HPP 16 #define DT_PROCESS_CONSTRUCTORS_HPP 44 template <
typename T0,
typename T1>
52 typedef std::function<void(T0&,const T1&)>
functype;
61 ) :
dt_process(_name), iport1(
"iport1"), oport1(
"oport1"),
62 _func(_func), invoke(false)
64 #ifdef FORSYDE_INTROSPECTION 65 std::string func_name = std::string(basename());
66 func_name = func_name.substr(0, func_name.find_last_not_of(
"0123456789")+1);
67 arg_vec.push_back(std::make_tuple(
"_func",func_name+std::string(
"_func")));
94 auto tval1 = iport1.read();
95 if (is_present(tval1))
107 _func(*tval, unsafe_from_abst_ext(*ival1));
108 set_val(*oval, *tval);
117 WRITE_MULTIPORT(oport1, *oval)
126 #ifdef FORSYDE_INTROSPECTION 129 boundInChans.resize(1);
130 boundInChans[0].port = &iport1;
131 boundOutChans.resize(1);
132 boundOutChans[0].port = &oport1;
140 template <
typename T0,
typename T1,
typename T2>
149 typedef std::function<void(T0&, const T1&, const T2&)>
functype;
158 ) :
dt_process(_name), iport1(
"iport1"), iport2(
"iport2"), oport1(
"oport1"),
161 #ifdef FORSYDE_INTROSPECTION 162 std::string func_name = std::string(basename());
163 func_name = func_name.substr(0, func_name.find_last_not_of(
"0123456789")+1);
164 arg_vec.push_back(std::make_tuple(
"_func",func_name+std::string(
"_func")));
193 auto tval1 = iport1.read();
194 if (is_present(tval1))
199 auto tval2 = iport2.read();
200 if (is_present(tval2))
212 _func(*tval, unsafe_from_abst_ext(*ival1), unsafe_from_abst_ext(*ival2));
213 set_val(*oval, *tval);
222 WRITE_MULTIPORT(oport1, *oval)
232 #ifdef FORSYDE_INTROSPECTION 235 boundInChans.resize(2);
236 boundInChans[0].port = &iport1;
237 boundInChans[1].port = &iport2;
238 boundOutChans.resize(1);
239 boundOutChans[0].port = &oport1;
247 template <
typename T0,
typename T1,
typename T2,
typename T3>
257 typedef std::function<void(T0&, const T1&, const T2&, const T3&)>
functype;
267 ) :
dt_process(_name), iport1(
"iport1"), iport2(
"iport2"), iport3(
"iport3"),
268 oport1(
"oport1"), _func(_func)
270 #ifdef FORSYDE_INTROSPECTION 271 std::string func_name = std::string(basename());
272 func_name = func_name.substr(0, func_name.find_last_not_of(
"0123456789")+1);
273 arg_vec.push_back(std::make_tuple(
"_func",func_name+std::string(
"_func")));
304 auto tval1 = iport1.read();
305 if (is_present(tval1))
310 auto tval2 = iport2.read();
311 if (is_present(tval2))
316 auto tval3 = iport3.read();
317 if (is_present(tval3))
329 _func(*tval, unsafe_from_abst_ext(*ival1), unsafe_from_abst_ext(*ival2),
330 unsafe_from_abst_ext(*ival3));
331 set_val(*oval, *tval);
340 WRITE_MULTIPORT(oport1, *oval)
351 #ifdef FORSYDE_INTROSPECTION 354 boundInChans.resize(3);
355 boundInChans[0].port = &iport1;
356 boundInChans[1].port = &iport2;
357 boundInChans[2].port = &iport3;
358 boundOutChans.resize(1);
359 boundOutChans[0].port = &oport1;
367 template <
typename T0,
typename T1,
typename T2,
typename T3,
typename T4>
378 typedef std::function<void(T0&, const T1&, const T2&, const T3&, const T4&)>
functype;
386 ) :
dt_process(_name), iport1(
"iport1"), iport2(
"iport2"),
387 iport3(
"iport3"), iport4(
"iport4"), _func(_func)
389 #ifdef FORSYDE_INTROSPECTION 390 std::string func_name = std::string(basename());
391 func_name = func_name.substr(0, func_name.find_last_not_of(
"0123456789")+1);
392 arg_vec.push_back(std::make_tuple(
"_func",func_name+std::string(
"_func")));
425 auto tval1 = iport1.read();
426 if (is_present(tval1))
431 auto tval2 = iport2.read();
432 if (is_present(tval2))
437 auto tval3 = iport3.read();
438 if (is_present(tval3))
443 auto tval4 = iport4.read();
444 if (is_present(tval4))
456 _func(*tval, unsafe_from_abst_ext(*ival1), unsafe_from_abst_ext(*ival2),
457 unsafe_from_abst_ext(*ival3), unsafe_from_abst_ext(*ival4));
458 set_val(*oval, *tval);
467 WRITE_MULTIPORT(oport1, *oval)
479 #ifdef FORSYDE_INTROSPECTION 482 boundInChans.resize(4);
483 boundInChans[0].port = &iport1;
484 boundInChans[1].port = &iport2;
485 boundInChans[2].port = &iport3;
486 boundInChans[3].port = &iport4;
487 boundOutChans.resize(1);
488 boundOutChans[0].port = &oport1;
517 ) :
dt_process(_name), iport1(
"iport1"), oport1(
"oport1"),
520 #ifdef FORSYDE_INTROSPECTION 521 std::stringstream ss;
523 arg_vec.push_back(std::make_tuple(
"init_val", ss.str()));
541 WRITE_MULTIPORT(oport1, init_val)
546 *val = iport1.read();
553 WRITE_MULTIPORT(oport1, *val)
560 #ifdef FORSYDE_INTROSPECTION 563 boundInChans.resize(1);
564 boundInChans[0].port = &iport1;
565 boundOutChans.resize(1);
566 boundOutChans[0].port = &oport1;
594 ) :
dt_process(_name), iport1(
"iport1"), oport1(
"oport1"),
595 init_val(init_val), ns(ns)
597 #ifdef FORSYDE_INTROSPECTION 598 std::stringstream ss;
600 arg_vec.push_back(std::make_tuple(
"init_val", ss.str()));
601 arg_vec.push_back(std::make_tuple(
"ns", std::to_string(ns)));
620 for (
unsigned int i=0; i<ns; i++)
626 *val = iport1.read();
633 WRITE_MULTIPORT(oport1, *val)
640 #ifdef FORSYDE_INTROSPECTION 643 boundInChans.resize(1);
644 boundInChans[0].port = &iport1;
645 boundOutChans.resize(1);
646 boundOutChans[0].port = &oport1;
656 template <
class IT,
class ST,
class OT>
664 typedef std::function<void(unsigned int&, const ST&)>
p_functype;
667 typedef std::function<void(ST&,
672 typedef std::function<void(std::vector<abst_ext<OT>>&,
683 ns_functype _ns_func,
686 ) :
dt_process(_name), gamma(gamma), _ns_func(_ns_func),
687 _od_func(_od_func), init_st(init_st)
689 #ifdef FORSYDE_INTROSPECTION 690 std::string func_name = std::string(basename());
691 func_name = func_name.substr(0, func_name.find_last_not_of(
"0123456789")+1);
692 arg_vec.push_back(std::make_tuple(
"gamma",func_name+std::string(
"_gamma")));
693 arg_vec.push_back(std::make_tuple(
"_ns_func",func_name+std::string(
"_ns_func")));
694 arg_vec.push_back(std::make_tuple(
"_od_func",func_name+std::string(
"_od_func")));
695 std::stringstream ss;
697 arg_vec.push_back(std::make_tuple(
"init_st",ss.str()));
707 ns_functype _ns_func;
714 std::vector<abst_ext<IT>> ivals;
717 std::vector<abst_ext<OT>> ovals;
725 unsigned long ti1, to1;
738 gamma(itoks, *stval);
739 for (
unsigned int i=0; i<itoks; i++)
740 ivals.push_back(iport1.read());
746 _ns_func(*nsval, *stval, ivals);
747 _od_func(ovals, *stval, ivals);
754 for (
unsigned int i=0; i<ti1-to1-1; i++)
758 WRITE_VEC_MULTIPORT(oport1, ovals)
770 #ifdef FORSYDE_INTROSPECTION 773 boundInChans.resize(1);
774 boundInChans[0].port = &iport1;
775 boundOutChans.resize(1);
776 boundOutChans[0].port = &oport1;
799 unsigned long long take=0
801 init_val(init_val), take(take)
804 #ifdef FORSYDE_INTROSPECTION 805 std::stringstream ss;
807 arg_vec.push_back(std::make_tuple(
"init_val", ss.str()));
810 arg_vec.push_back(std::make_tuple(
"take", ss.str()));
819 unsigned long long take;
821 unsigned long long tok_cnt;
827 if (take==0) infinite =
true;
837 if (tok_cnt++ < take || infinite)
838 WRITE_MULTIPORT(oport1, init_val)
844 #ifdef FORSYDE_INTROSPECTION 847 boundOutChans.resize(1);
848 boundOutChans[0].port = &oport1;
849 boundOutChans[0].portType =
typeid(T).name();
876 unsigned long long take=0
878 init_st(init_val), take(take), _func(_func)
880 #ifdef FORSYDE_INTROSPECTION 881 std::string func_name = std::string(basename());
882 func_name = func_name.substr(0, func_name.find_last_not_of(
"0123456789")+1);
883 arg_vec.push_back(std::make_tuple(
"_func",func_name+std::string(
"_func")));
884 std::stringstream ss;
886 arg_vec.push_back(std::make_tuple(
"init_val", ss.str()));
889 arg_vec.push_back(std::make_tuple(
"take", ss.str()));
898 unsigned long long take;
901 unsigned long long tok_cnt;
912 WRITE_MULTIPORT(oport1, *cur_st)
913 if (take==0) infinite =
true;
921 _func(*cur_st, *cur_st);
926 if (tok_cnt++ < take || infinite)
927 WRITE_MULTIPORT(oport1, *cur_st)
936 #ifdef FORSYDE_INTROSPECTION 939 boundOutChans.resize(1);
940 boundOutChans[0].port = &oport1;
941 boundOutChans[0].portType =
typeid(T).name();
963 const std::vector<std::tuple<unsigned int,T>>& in_vec
966 #ifdef FORSYDE_INTROSPECTION 967 std::stringstream ss;
969 arg_vec.push_back(std::make_tuple(
"in_vec", ss.str()));
977 std::vector<std::tuple<unsigned int,T>> in_vec;
979 typename std::vector<std::tuple<unsigned int,T>>::iterator it;
980 unsigned int local_time;
995 if (std::get<0>(*it) > local_time)
999 WRITE_MULTIPORT(oport1, std::get<1>(*it))
1000 if (it != in_vec.end()-1) it++;
else wait();
1008 #ifdef FORSYDE_INTROSPECTION 1011 boundOutChans.resize(1);
1012 boundOutChans[0].port = &oport1;
1029 typedef std::function<void(const abst_ext<T>&)>
functype;
1037 ) :
dt_process(_name), iport1(
"iport1"), _func(_func)
1040 #ifdef FORSYDE_INTROSPECTION 1041 std::string func_name = std::string(basename());
1042 func_name = func_name.substr(0, func_name.find_last_not_of(
"0123456789")+1);
1043 arg_vec.push_back(std::make_tuple(
"_func",func_name+std::string(
"_func")));
1064 *val = iport1.read();
1079 #ifdef FORSYDE_INTROSPECTION 1082 boundInChans.resize(1);
1083 boundInChans[0].port = &iport1;
1084 boundInChans[0].portType =
typeid(T).name();
1096 template <
class ITYP>
1119 for (
int i=0;i<iport.size();i++)
1120 std::cout <<
" " << name() <<
"(" << i <<
")";
1121 std::cout << std::endl;
1123 ITYP in_val[iport.size()];
1126 for (
int i=0;i<iport.size();i++)
1127 in_val[i] = iport[i]->read();
1129 for (
int i=0;i<iport.size();i++)
1130 std::cout <<
" " << in_val[i];
1131 std::cout << std::endl;
1139 template <
class T1,
class T2>
1152 :
dt_process(_name), iport1(
"iport1"), iport2(
"iport2"), oport1(
"oport1")
1171 *ival1 = iport1.read();
1172 *ival2 = iport2.read();
1186 WRITE_MULTIPORT(oport1,std::make_tuple(ival1,ival2))
1196 #ifdef FORSYDE_INTROSPECTION 1199 boundInChans.resize(2);
1200 boundInChans[0].port = &iport1;
1201 boundInChans[0].portType =
typeid(T1).name();
1202 boundInChans[1].port = &iport2;
1203 boundInChans[1].portType =
typeid(T2).name();
1204 boundOutChans.resize(1);
1205 boundOutChans[0].port = &oport1;
1206 boundOutChans[0].portType =
typeid(std::tuple<T1,T2>).name();
1214 template <
class... ITYPs>
1218 std::tuple <sc_fifo_in<ITYPs>...>
iport;
1231 SC_HAS_PROCESS(
zipN);
1236 std::tuple<ITYPs...> in_vals;
1239 in_vals = sc_fifo_tuple_read<ITYPs...>(iport);
1240 WRITE_MULTIPORT(oport1,in_vals)
1244 template<
size_t N,
class R,
class T>
1245 struct fifo_read_helper
1247 static void read(R& ret, T& t)
1249 fifo_read_helper<N-1,R,T>::read(ret,t);
1250 std::get<N>(ret) = std::get<N>(t).read();
1254 template<
class R,
class T>
1255 struct fifo_read_helper<0,R,T>
1257 static void read(R& ret, T& t)
1259 std::get<0>(ret) = std::get<0>(t).read();
1263 template<
class... T>
1264 std::tuple<T...> sc_fifo_tuple_read(std::tuple<sc_fifo_in<T>...>& ports)
1266 std::tuple<T...> ret;
1267 fifo_read_helper<
sizeof...(T)-1,
1269 std::tuple<sc_fifo_in<T>...>>::read(ret,ports);
1278 template <
class T1,
class T2>
1291 :
dt_process(_name), iport1(
"iport1"), oport1(
"oport1"), oport2(
"oport2")
1307 *in_val = iport1.read();
1331 #ifdef FORSYDE_INTROSPECTION 1334 boundInChans.resize(1);
1335 boundInChans[0].port = &iport1;
1336 boundInChans[0].portType =
typeid(std::tuple<T1,T2>).name();
1337 boundOutChans.resize(2);
1338 boundOutChans[0].port = &oport1;
1339 boundOutChans[0].portType =
typeid(T1).name();
1340 boundOutChans[1].port = &oport2;
1341 boundOutChans[1].portType =
typeid(T2).name();
1349 template <
class... Ts>
1377 *in_val = iport1.read();
1384 if (in_val->is_absent())
1386 std::tuple<abst_ext<Ts>...> all_abs;
1387 fifo_tuple_write<Ts...>(all_abs, oport);
1391 fifo_tuple_write<Ts...>(in_val->unsafe_from_abst_ext(), oport);
1400 template<
size_t N,
class R,
class T>
1401 struct fifo_write_helper
1403 static void write(
const R& vals, T& t)
1405 fifo_write_helper<N-1,R,T>::write(vals,t);
1406 std::get<N>(t).write(std::get<N>(vals));
1410 template<
class R,
class T>
1411 struct fifo_write_helper<0,R,T>
1413 static void write(
const R& vals, T& t)
1415 std::get<0>(t).write(std::get<0>(vals));
1419 template<
class... T>
1420 void fifo_tuple_write(
const std::tuple<
abst_ext<T>...>& vals,
1423 fifo_write_helper<
sizeof...(T)-1,
1425 std::tuple<
DT_out<T>...>>::write(vals,ports);
1428 #ifdef FORSYDE_INTROSPECTION 1431 boundInChans.resize(1);
1432 boundInChans[0].port = &iport1;
1433 boundInChans[0].portType =
typeid(int).name();
1434 boundOutChans.resize(
sizeof...(Ts));
1435 register_ports(boundOutChans, oport);
1438 template<
size_t N,
class T>
1439 struct register_ports_helper
1441 static void reg_port(std::vector<PortInfo>& boundChans, T& t)
1443 register_ports_helper<N-1,T>::reg_port(boundChans,t);
1444 boundChans[N].port = &std::get<N>(t);
1449 struct register_ports_helper<0,T>
1451 static void reg_port(std::vector<PortInfo>& boundChans, T& t)
1453 boundChans[0].port = &std::get<0>(t);
1457 template<
class... T>
1458 void register_ports(std::vector<PortInfo>& boundChans,
1461 register_ports_helper<
sizeof...(T)-1,
1462 std::tuple<
DT_out<T>...>&>::reg_port(boundChans,ports);
1507 *val = iport1.read();
1514 WRITE_MULTIPORT(oport1, *val)
1521 #ifdef FORSYDE_INTROSPECTION 1524 boundInChans.resize(1);
1525 boundInChans[0].port = &iport1;
1526 boundInChans[0].portType =
typeid(T).name();
1527 boundOutChans.resize(1);
1528 boundOutChans[0].port = &oport1;
1529 boundOutChans[0].portType =
typeid(T).name();
DT_in< T2 > iport2
port for the input channel 2
Definition: dt_process_constructors.hpp:252
std::string forsyde_kind() const
Specifying from which process constructor is the module built.
Definition: dt_process_constructors.hpp:1156
std::string forsyde_kind() const
Specifying from which process constructor is the module built.
Definition: dt_process_constructors.hpp:278
DT_in< T1 > iport1
port for the input channel 1
Definition: dt_process_constructors.hpp:144
std::string forsyde_kind() const
Specifying from which process constructor is the module built.
Definition: dt_process_constructors.hpp:702
unzip(sc_module_name _name)
The constructor requires the module name.
Definition: dt_process_constructors.hpp:1290
mealyT(sc_module_name _name, p_functype gamma, ns_functype _ns_func, od_functype _od_func, ST init_st)
The constructor requires the module name.
Definition: dt_process_constructors.hpp:681
T unsafe_from_abst_ext() const
Unsafely converts a value from an extended value assuming it is present.
Definition: abst_ext.hpp:54
DT_out< T > oport1
port for the output channel
Definition: dt_process_constructors.hpp:508
The zip process with two inputs and one output.
Definition: dt_process_constructors.hpp:1140
std::function< void(T0 &, const T1 &, const T2 &, const T3 &, const T4 &)> functype
Type of the function to be passed to the process constructor.
Definition: dt_process_constructors.hpp:378
DT_in< T1 > iport1
port for the input channel 1
Definition: dt_process_constructors.hpp:1143
DT_in< T3 > iport3
port for the input channel 3
Definition: dt_process_constructors.hpp:253
std::function< void(T0 &, const T1 &, const T2 &, const T3 &)> functype
Type of the function to be passed to the process constructor.
Definition: dt_process_constructors.hpp:257
std::function< void(const abst_ext< T > &)> functype
Type of the function to be passed to the process constructor.
Definition: dt_process_constructors.hpp:1029
DT_in< T1 > iport1
port for the input channel 1
Definition: dt_process_constructors.hpp:371
std::string forsyde_kind() const
Specifying from which process constructor is the module built.
Definition: dt_process_constructors.hpp:1365
Process constructor for a combinational process with four inputs and one output.
Definition: dt_process_constructors.hpp:368
The namespace for ForSyDe.
Definition: abssemantics.hpp:30
Process constructor for a sink process.
Definition: dt_process_constructors.hpp:1023
std::string forsyde_kind() const
Specifying from which process constructor is the module built.
Definition: dt_process_constructors.hpp:1295
printSigs(sc_module_name _name)
The constructor requires the module name.
Definition: dt_process_constructors.hpp:1106
Process constructor for a source process.
Definition: dt_process_constructors.hpp:861
DT_out< T > oport1
port for the output channel
Definition: dt_process_constructors.hpp:956
Implements the Absent-extended values.
Process constructor for a n-delay element.
Definition: dt_process_constructors.hpp:580
Process constructor for a combinational process with one input and one output.
Definition: dt_process_constructors.hpp:45
zip(sc_module_name _name)
The constructor requires the module name.
Definition: dt_process_constructors.hpp:1151
DT_in< T1 > iport1
port for the input channel
Definition: dt_process_constructors.hpp:48
std::function< void(T0 &, const T1 &, const T2 &)> functype
Type of the function to be passed to the process constructor.
Definition: dt_process_constructors.hpp:149
Process constructor for a multi-input print process.
Definition: dt_process_constructors.hpp:1097
DT_out< T0 > oport1
port for the output channel
Definition: dt_process_constructors.hpp:375
comb2(sc_module_name _name, functype _func)
The constructor requires the module name.
Definition: dt_process_constructors.hpp:156
Process constructor for a constant source process.
Definition: dt_process_constructors.hpp:788
DT_out< T0 > oport1
port for the output channel
Definition: dt_process_constructors.hpp:146
std::function< void(abst_ext< T > &, const abst_ext< T > &)> functype
Type of the function to be passed to the process constructor.
Definition: dt_process_constructors.hpp:867
Process constructor for a fan-out process with one input and one output.
Definition: dt_process_constructors.hpp:1479
DT_in< T4 > iport4
port for the input channel 4
Definition: dt_process_constructors.hpp:374
DT_out< T > oport1
port for the output channel
Definition: dt_process_constructors.hpp:584
zipN(sc_module_name _name)
The constructor requires the module name.
Definition: dt_process_constructors.hpp:1225
std::string forsyde_kind() const
Specifying from which process constructor is the module built.
Definition: dt_process_constructors.hpp:528
Process constructor for a combinational process with three inputs and one output. ...
Definition: dt_process_constructors.hpp:248
DT_in< std::tuple< abst_ext< Ts >... > > iport1
port for the input channel
Definition: dt_process_constructors.hpp:1353
comb(sc_module_name _name, functype _func)
The constructor requires the module name.
Definition: dt_process_constructors.hpp:59
std::string forsyde_kind() const
Specifying from which process constructor is the module built.
Definition: dt_process_constructors.hpp:815
DT_in< T2 > iport2
port for the input channel 2
Definition: dt_process_constructors.hpp:372
std::string forsyde_kind() const
Specifying from which process constructor is the module built.
Definition: dt_process_constructors.hpp:974
DT_in< std::tuple< abst_ext< T1 >, abst_ext< T2 > > > iport1
port for the input channel
Definition: dt_process_constructors.hpp:1282
DT_out< T2 > oport2
port for the output channel 2
Definition: dt_process_constructors.hpp:1284
Process constructor for a combinational process with two inputs and one output.
Definition: dt_process_constructors.hpp:141
std::function< void(std::vector< abst_ext< OT >> &, const ST &, const std::vector< abst_ext< IT >> &)> od_functype
Type of the output-decoding function to be passed to the process constructor.
Definition: dt_process_constructors.hpp:674
sink(sc_module_name _name, functype _func)
The constructor requires the module name.
Definition: dt_process_constructors.hpp:1035
DT_out< OT > oport1
port for the output channel
Definition: dt_process_constructors.hpp:661
DT_in< T > iport1
port for the input channel
Definition: dt_process_constructors.hpp:507
std::string forsyde_kind() const
Specifying from which process constructor is the module built.
Definition: dt_process_constructors.hpp:894
source(sc_module_name _name, functype _func, abst_ext< T > init_val, unsigned long long take=0)
The constructor requires the module name.
Definition: dt_process_constructors.hpp:873
DT_in< T > iport1
port for the input channel
Definition: dt_process_constructors.hpp:1026
delay(sc_module_name _name, abst_ext< T > init_val)
The constructor requires the module name.
Definition: dt_process_constructors.hpp:515
bool is_absent() const
Checks for the absence of a value.
Definition: abst_ext.hpp:79
DT_out< T > oport1
port for the output channel
Definition: dt_process_constructors.hpp:1483
DT_out< T0 > oport1
port for the output channel
Definition: dt_process_constructors.hpp:254
Implements the abstract process in the DT Model of Computation.
DT_out< T > oport1
port for the output channel
Definition: dt_process_constructors.hpp:864
The zip process with variable number of inputs and one output.
Definition: dt_process_constructors.hpp:1215
std::string forsyde_kind() const
Specifying from which process constructor is the module built.
Definition: dt_process_constructors.hpp:397
Process constructor for a source process with vector input.
Definition: dt_process_constructors.hpp:953
The process constructor which defines the abstract semantics of execution.
Definition: abssemantics.hpp:212
std::function< void(unsigned int &, const ST &)> p_functype
Type of the partitioning function to be passed to the process constructor.
Definition: dt_process_constructors.hpp:664
std::tuple< sc_fifo_in< ITYPs >... > iport
tuple of ports for the input channels
Definition: dt_process_constructors.hpp:1218
Process constructor for a MealyT machine.
Definition: dt_process_constructors.hpp:657
DT_out< T0 > oport1
port for the output channel
Definition: dt_process_constructors.hpp:49
std::tuple< DT_out< Ts >... > oport
tuple of ports for the output channels
Definition: dt_process_constructors.hpp:1354
DT_in< T1 > iport1
port for the input channel 1
Definition: dt_process_constructors.hpp:251
std::string forsyde_kind() const
Specifying from which process constructor is the module built.
Definition: dt_process_constructors.hpp:72
comb4(sc_module_name _name, functype _func)
The constructor requires the module name.
Definition: dt_process_constructors.hpp:384
DT_out< T1 > oport1
port for the output channel 1
Definition: dt_process_constructors.hpp:1283
Process constructor for a delay element.
Definition: dt_process_constructors.hpp:504
DT_in< IT > iport1
port for the input channel
Definition: dt_process_constructors.hpp:660
vsource(sc_module_name _name, const std::vector< std::tuple< unsigned int, T >> &in_vec)
The constructor requires the module name.
Definition: dt_process_constructors.hpp:962
DT_in< T2 > iport2
port for the input channel 2
Definition: dt_process_constructors.hpp:145
The unzip process with one input and two outputs.
Definition: dt_process_constructors.hpp:1279
DT_in< T > iport1
port for the input channel
Definition: dt_process_constructors.hpp:583
std::string forsyde_kind() const
Specifying from which process constructor is the module built.
Definition: dt_process_constructors.hpp:169
std::string forsyde_kind() const
Specifying from which process constructor is the module built.
Definition: dt_process_constructors.hpp:1048
DT_in< T3 > iport3
port for the input channel 3
Definition: dt_process_constructors.hpp:373
DT_out< T > oport1
port for the output channel
Definition: dt_process_constructors.hpp:791
DT_in< T2 > iport2
port for the input channel 2
Definition: dt_process_constructors.hpp:1144
std::string forsyde_kind() const
Specifying from which process constructor is the module built.
Definition: dt_process_constructors.hpp:1493
unzipN(sc_module_name _name)
The constructor requires the module name.
Definition: dt_process_constructors.hpp:1360
std::function< void(T0 &, const T1 &)> functype
Type of the function to be passed to the process constructor.
Definition: dt_process_constructors.hpp:52
DT_out< std::tuple< abst_ext< T1 >, abst_ext< T2 > > > oport1
port for the output channel
Definition: dt_process_constructors.hpp:1145
The unzip process with one input and variable number of outputs.
Definition: dt_process_constructors.hpp:1350
DT_in< T > iport1
port for the input channel
Definition: dt_process_constructors.hpp:1482
fanout(sc_module_name _name)
The constructor requires the module name.
Definition: dt_process_constructors.hpp:1489
sc_fifo_in< ITYP > iport
multi-port for the input channel
Definition: dt_process_constructors.hpp:1100
sc_fifo_out< std::tuple< ITYPs... > > oport1
port for the output channel
Definition: dt_process_constructors.hpp:1219
delayn(sc_module_name _name, abst_ext< T > init_val, unsigned int ns)
The constructor requires the module name.
Definition: dt_process_constructors.hpp:591
constant(sc_module_name _name, abst_ext< T > init_val, unsigned long long take=0)
The constructor requires the module name.
Definition: dt_process_constructors.hpp:797
std::string forsyde_kind() const
Specifying from which process constructor is the module built.
Definition: dt_process_constructors.hpp:606
comb3(sc_module_name _name, functype _func)
The constructor requires the module name.
Definition: dt_process_constructors.hpp:265
std::function< void(ST &, const ST &, const std::vector< abst_ext< IT >> &)> ns_functype
Type of the next-state function to be passed to the process constructor.
Definition: dt_process_constructors.hpp:669