145template <
typename CFG,
typename TYPES = master_types>
struct aw_axi {
146 typename TYPES::template m2s_full_t<sc_dt::sc_uint<CFG::IDWIDTH>> aw_id{
"aw_id"};
147 typename TYPES::template m2s_t<sc_dt::sc_uint<CFG::ADDRWIDTH>> aw_addr{
"aw_addr"};
148 typename TYPES::template s2m_t<bool> aw_ready{
"aw_ready"};
149 typename TYPES::template m2s_full_t<bool> aw_lock{
"aw_lock"};
150 typename TYPES::template m2s_t<bool> aw_valid{
"aw_valid"};
151 typename TYPES::template m2s_t<sc_dt::sc_uint<3>> aw_prot{
"aw_prot"};
152 typename TYPES::template m2s_full_t<sc_dt::sc_uint<3>> aw_size{
"aw_size"};
153 typename TYPES::template m2s_full_t<sc_dt::sc_uint<4>> aw_cache{
"aw_cache"};
154 typename TYPES::template m2s_full_t<sc_dt::sc_uint<2>> aw_burst{
"aw_burst"};
155 typename TYPES::template m2s_full_t<sc_dt::sc_uint<4>> aw_qos{
"aw_qos"};
156 typename TYPES::template m2s_full_t<sc_dt::sc_uint<4>> aw_region{
"aw_region"};
157 typename TYPES::template m2s_full_t<sc_dt::sc_uint<8>> aw_len{
"aw_len"};
158 typename TYPES::template m2s_opt_t<typename CFG::user_t> aw_user{
"aw_user"};
159 typename TYPES::template m2s_opt_t<sc_dt::sc_uint<6>> aw_atop{
"aw_atop"};
162 aw_axi(
const char* prefix)
163 : aw_id{concat(prefix,
"_id").c_str()}
164 , aw_addr{concat(prefix,
"_addr").c_str()}
165 , aw_ready{concat(prefix,
"_ready").c_str()}
166 , aw_lock{concat(prefix,
"_lock").c_str()}
167 , aw_valid{concat(prefix,
"_valid").c_str()}
168 , aw_prot{concat(prefix,
"_prot").c_str()}
169 , aw_size{concat(prefix,
"_size").c_str()}
170 , aw_cache{concat(prefix,
"_cache").c_str()}
171 , aw_burst{concat(prefix,
"_burst").c_str()}
172 , aw_qos{concat(prefix,
"_qos").c_str()}
173 , aw_region{concat(prefix,
"_region").c_str()}
174 , aw_len{concat(prefix,
"_len").c_str()}
175 , aw_atop{concat(prefix,
"_atop").c_str()}
176 , aw_user{concat(prefix,
"_user").c_str()} {}
178 template <
typename OTYPES>
void bind_aw(aw_axi<CFG, OTYPES>& o) {
180 aw_addr.bind(o.aw_addr);
181 aw_ready.bind(o.aw_ready);
182 aw_lock.bind(o.aw_lock);
183 aw_valid.bind(o.aw_valid);
184 aw_prot.bind(o.aw_prot);
185 aw_size.bind(o.aw_size);
186 aw_cache.bind(o.aw_cache);
187 aw_burst.bind(o.aw_burst);
188 aw_qos.bind(o.aw_qos);
189 aw_region.bind(o.aw_region);
190 aw_len.bind(o.aw_len);
191 aw_user.bind(o.aw_user);
192 aw_atop.bind(o.aw_atop);
199template <
typename CFG,
typename TYPES = master_types>
struct wdata_axi {
200 typename TYPES::template m2s_opt_t<sc_dt::sc_uint<CFG::IDWIDTH>> w_id{
"w_id"};
201 typename TYPES::template m2s_t<typename CFG::data_t> w_data{
"w_data"};
202 typename TYPES::template m2s_t<typename CFG::strb_t> w_strb{
"w_strb"};
203 typename TYPES::template m2s_full_t<bool> w_last{
"w_last"};
204 typename TYPES::template m2s_t<bool> w_valid{
"w_valid"};
205 typename TYPES::template s2m_t<bool> w_ready{
"w_ready"};
206 typename TYPES::template m2s_opt_t<typename CFG::user_t> w_user{
"w_user"};
207 typename TYPES::template m2s_full_t<bool> w_ack{
"w_ack"};
208 typename TYPES::template m2s_opt_t<bool> w_trace{
"w_trace"};
210 wdata_axi() =
default;
211 wdata_axi(
const char* prefix)
212 : w_id{concat(prefix,
"_id").c_str()}
213 , w_data{concat(prefix,
"_data").c_str()}
214 , w_strb{concat(prefix,
"_strb").c_str()}
215 , w_last{concat(prefix,
"_last").c_str()}
216 , w_valid{concat(prefix,
"_valid").c_str()}
217 , w_ready{concat(prefix,
"_ready").c_str()}
218 , w_user{concat(prefix,
"_user").c_str()}
219 , w_ack{concat(prefix,
"_ack").c_str()}
220 , w_trace{concat(prefix,
"_trace").c_str()} {}
222 template <
typename OTYPES>
void bind_w(wdata_axi<CFG, OTYPES>& o) {
224 w_data.bind(o.w_data);
225 w_strb.bind(o.w_strb);
226 w_last.bind(o.w_last);
227 w_valid.bind(o.w_valid);
228 w_ready.bind(o.w_ready);
229 w_user.bind(o.w_user);
231 w_trace.bind(o.w_trace);
233 template <
typename OTYPES>
void bind_wdata(wdata_axi<CFG, OTYPES>& o) { bind_w(o); }
270template <
typename CFG,
typename TYPES = master_types>
struct ar_axi {
271 typename TYPES::template m2s_full_t<sc_dt::sc_uint<CFG::IDWIDTH>> ar_id{
"ar_id"};
272 typename TYPES::template m2s_t<sc_dt::sc_uint<CFG::ADDRWIDTH>> ar_addr{
"ar_addr"};
273 typename TYPES::template m2s_full_t<sc_dt::sc_uint<8>> ar_len{
"ar_len"};
274 typename TYPES::template m2s_full_t<sc_dt::sc_uint<3>> ar_size{
"ar_size"};
275 typename TYPES::template m2s_full_t<sc_dt::sc_uint<2>> ar_burst{
"ar_burst"};
276 typename TYPES::template m2s_full_t<bool> ar_lock{
"ar_lock"};
277 typename TYPES::template m2s_full_t<sc_dt::sc_uint<4>> ar_cache{
"ar_cache"};
278 typename TYPES::template m2s_t<sc_dt::sc_uint<3>> ar_prot{
"ar_prot"};
279 typename TYPES::template m2s_full_t<sc_dt::sc_uint<4>> ar_qos{
"ar_qos"};
280 typename TYPES::template m2s_full_t<sc_dt::sc_uint<4>> ar_region{
"ar_region"};
281 typename TYPES::template m2s_t<bool> ar_valid{
"ar_valid"};
282 typename TYPES::template s2m_t<bool> ar_ready{
"ar_ready"};
283 typename TYPES::template m2s_opt_t<typename CFG::user_t> ar_user{
"ar_user"};
286 ar_axi(
const char* prefix)
287 : ar_id{concat(prefix,
"_id").c_str()}
288 , ar_addr{concat(prefix,
"_addr").c_str()}
289 , ar_len{concat(prefix,
"_len").c_str()}
290 , ar_size{concat(prefix,
"_size").c_str()}
291 , ar_burst{concat(prefix,
"_burst").c_str()}
292 , ar_lock{concat(prefix,
"_lock").c_str()}
293 , ar_cache{concat(prefix,
"_cache").c_str()}
294 , ar_prot{concat(prefix,
"_prot").c_str()}
295 , ar_qos{concat(prefix,
"_qos").c_str()}
296 , ar_region{concat(prefix,
"_region").c_str()}
297 , ar_valid{concat(prefix,
"_valid").c_str()}
298 , ar_ready{concat(prefix,
"_ready").c_str()}
299 , ar_user{concat(prefix,
"_user").c_str()} {}
301 template <
typename OTYPES>
void bind_ar(ar_axi<CFG, OTYPES>& o) {
303 ar_addr.bind(o.ar_addr);
304 ar_len.bind(o.ar_len);
305 ar_size.bind(o.ar_size);
306 ar_burst.bind(o.ar_burst);
307 ar_lock.bind(o.ar_lock);
308 ar_cache.bind(o.ar_cache);
309 ar_prot.bind(o.ar_prot);
310 ar_qos.bind(o.ar_qos);
311 ar_region.bind(o.ar_region);
312 ar_valid.bind(o.ar_valid);
313 ar_ready.bind(o.ar_ready);
314 ar_user.bind(o.ar_user);
321template <
typename CFG,
typename TYPES = master_types>
struct rresp_axi {
322 typename TYPES::template s2m_full_t<sc_dt::sc_uint<CFG::IDWIDTH>> r_id{
"r_id"};
323 typename TYPES::template s2m_t<typename CFG::data_t> r_data{
"r_data"};
324 typename TYPES::template s2m_t<sc_dt::sc_uint<2>> r_resp{
"r_resp"};
325 typename TYPES::template s2m_full_t<bool> r_last{
"r_last"};
326 typename TYPES::template s2m_t<bool> r_valid{
"r_valid"};
327 typename TYPES::template m2s_t<bool> r_ready{
"r_ready"};
328 typename TYPES::template s2m_opt_t<typename CFG::user_t> r_user{
"r_user"};
329 typename TYPES::template s2m_opt_t<bool> r_trace{
"r_trace"};
331 rresp_axi() =
default;
332 rresp_axi(
const char* prefix)
333 : r_id{concat(prefix,
"_id").c_str()}
334 , r_data{concat(prefix,
"_data").c_str()}
335 , r_resp{concat(prefix,
"_resp").c_str()}
336 , r_last{concat(prefix,
"_last").c_str()}
337 , r_valid{concat(prefix,
"_valid").c_str()}
338 , r_ready{concat(prefix,
"_ready").c_str()}
339 , r_user{concat(prefix,
"_user").c_str()}
340 , r_trace{concat(prefix,
"_trace").c_str()} {}
342 template <
typename OTYPES>
void bind_r(rresp_axi<CFG, OTYPES>& o) {
344 r_data.bind(o.r_data);
345 r_resp.bind(o.r_resp);
346 r_last.bind(o.r_last);
347 r_valid.bind(o.r_valid);
348 r_ready.bind(o.r_ready);
349 r_user.bind(o.r_user);
350 r_trace.bind(o.r_trace);
352 template <
typename OTYPES>
void bind_rresp(rresp_axi<CFG, OTYPES>& o) { bind_r(o); }
357template <
typename CFG,
typename TYPES = master_types>
struct rresp_ace {
358 typename TYPES::template s2m_full_t<sc_dt::sc_uint<CFG::IDWIDTH>> r_id{
"r_id"};
359 typename TYPES::template s2m_t<typename CFG::data_t> r_data{
"r_data"};
360 typename TYPES::template s2m_t<sc_dt::sc_uint<CFG::RESPWIDTH>> r_resp{
"r_resp"};
361 typename TYPES::template s2m_full_t<bool> r_last{
"r_last"};
362 typename TYPES::template s2m_t<bool> r_valid{
"r_valid"};
363 typename TYPES::template m2s_t<bool> r_ready{
"r_ready"};
364 typename TYPES::template s2m_opt_t<typename CFG::user_t> r_user{
"r_user"};
365 typename TYPES::template s2m_opt_t<bool> r_trace{
"r_trace"};
366 typename TYPES::template m2s_t<bool> r_ack{
"r_ack"};
368 rresp_ace() =
default;
369 rresp_ace(
const char* prefix)
370 : r_id{concat(prefix,
"_id").c_str()}
371 , r_data{concat(prefix,
"_data").c_str()}
372 , r_resp{concat(prefix,
"_resp").c_str()}
373 , r_last{concat(prefix,
"_last").c_str()}
374 , r_valid{concat(prefix,
"_valid").c_str()}
375 , r_ready{concat(prefix,
"_ready").c_str()}
376 , r_user{concat(prefix,
"_user").c_str()}
377 , r_trace{concat(prefix,
"_trace").c_str()}
378 , r_ack{concat(prefix,
"_ack").c_str()} {}
380 template <
typename OTYPES>
void bind_r(rresp_ace<CFG, OTYPES>& o) {
382 r_data.bind(o.r_data);
383 r_resp.bind(o.r_resp);
384 r_last.bind(o.r_last);
385 r_valid.bind(o.r_valid);
386 r_ready.bind(o.r_ready);
387 r_user.bind(o.r_user);
389 r_trace.bind(o.r_trace);
391 template <
typename OTYPES>
void bind_rresp(rresp_ace<CFG, OTYPES>& o) { bind_r(o); }
395template <
typename CFG,
typename TYPES>
struct aw_axi_lite {
396 typename TYPES::template m2s_t<sc_dt::sc_uint<CFG::ADDRWIDTH>> aw_addr{
"aw_addr"};
397 typename TYPES::template s2m_t<bool> aw_ready{
"aw_ready"};
398 typename TYPES::template m2s_t<bool> aw_valid{
"aw_valid"};
399 typename TYPES::template m2s_t<sc_dt::sc_uint<3>> aw_prot{
"aw_prot"};
401 aw_axi_lite() =
default;
402 aw_axi_lite(
const char* prefix)
403 : aw_addr{concat(prefix,
"_addr").c_str()}
404 , aw_ready{concat(prefix,
"_ready").c_str()}
405 , aw_valid{concat(prefix,
"_valid").c_str()}
406 , aw_prot{concat(prefix,
"_prot").c_str()} {}
409 aw_addr.bind(o.aw_addr);
410 aw_ready.bind(o.aw_ready);
411 aw_valid.bind(o.aw_valid);
412 aw_prot.bind(o.aw_prot);
458template <
typename CFG,
typename TYPES>
struct ar_axi_lite {
459 typename TYPES::template m2s_t<sc_dt::sc_uint<CFG::ADDRWIDTH>> ar_addr{
"ar_addr"};
460 typename TYPES::template m2s_t<sc_dt::sc_uint<3>> ar_prot{
"ar_prot"};
461 typename TYPES::template m2s_t<bool> ar_valid{
"ar_valid"};
462 typename TYPES::template s2m_t<bool> ar_ready{
"ar_ready"};
464 ar_axi_lite() =
default;
465 ar_axi_lite(
const char* prefix)
466 : ar_addr{concat(prefix,
"_addr").c_str()}
467 , ar_prot{concat(prefix,
"_prot").c_str()}
468 , ar_valid{concat(prefix,
"_valid").c_str()}
469 , ar_ready{concat(prefix,
"_ready").c_str()} {}
472 ar_addr.bind(o.ar_addr);
473 ar_prot.bind(o.ar_prot);
474 ar_valid.bind(o.ar_valid);
475 ar_ready.bind(o.ar_ready);
501template <
typename CFG,
typename TYPES = master_types>
struct ar_ace {
502 typename TYPES::template m2s_full_t<sc_dt::sc_uint<CFG::IDWIDTH>> ar_id{
"ar_id"};
503 typename TYPES::template m2s_t<sc_dt::sc_uint<CFG::ADDRWIDTH>> ar_addr{
"ar_addr"};
504 typename TYPES::template m2s_full_t<sc_dt::sc_uint<8>> ar_len{
"ar_len"};
505 typename TYPES::template m2s_full_t<sc_dt::sc_uint<3>> ar_size{
"ar_size"};
506 typename TYPES::template m2s_full_t<sc_dt::sc_uint<2>> ar_burst{
"ar_burst"};
507 typename TYPES::template m2s_t<bool> ar_lock{
"ar_lock"};
508 typename TYPES::template m2s_full_t<sc_dt::sc_uint<4>> ar_cache{
"ar_cache"};
509 typename TYPES::template m2s_t<sc_dt::sc_uint<3>> ar_prot{
"ar_prot"};
510 typename TYPES::template m2s_full_t<sc_dt::sc_uint<4>> ar_qos{
"ar_qos"};
511 typename TYPES::template m2s_full_t<sc_dt::sc_uint<4>> ar_region{
"ar_region"};
512 typename TYPES::template m2s_t<bool> ar_valid{
"ar_valid"};
513 typename TYPES::template s2m_t<bool> ar_ready{
"ar_ready"};
514 typename TYPES::template m2s_full_t<sc_dt::sc_uint<2>> ar_domain{
"ar_domain"};
515 typename TYPES::template m2s_full_t<sc_dt::sc_uint<4>> ar_snoop{
"ar_snoop"};
516 typename TYPES::template m2s_full_t<sc_dt::sc_uint<2>> ar_bar{
"ar_bar"};
517 typename TYPES::template m2s_opt_t<typename CFG::user_t> ar_user{
"ar_user"};
518 typename TYPES::template m2s_opt_t<bool> ar_trace{
"ar_trace"};
519 typename TYPES::template m2s_opt_t<sc_dt::sc_uint<4>> ar_vmidext{
"ar_vmidext"};
522 ar_ace(
const char* prefix)
523 : ar_id{concat(prefix,
"_id").c_str()}
524 , ar_addr{concat(prefix,
"_addr").c_str()}
525 , ar_len{concat(prefix,
"_len").c_str()}
526 , ar_size{concat(prefix,
"_size").c_str()}
527 , ar_burst{concat(prefix,
"_burst").c_str()}
528 , ar_lock{concat(prefix,
"_lock").c_str()}
529 , ar_cache{concat(prefix,
"_cache").c_str()}
530 , ar_prot{concat(prefix,
"_prot").c_str()}
531 , ar_qos{concat(prefix,
"_qos").c_str()}
532 , ar_region{concat(prefix,
"_region").c_str()}
533 , ar_valid{concat(prefix,
"_valid").c_str()}
534 , ar_ready{concat(prefix,
"_ready").c_str()}
535 , ar_domain{concat(prefix,
"_domain").c_str()}
536 , ar_snoop{concat(prefix,
"_snoop").c_str()}
537 , ar_bar{concat(prefix,
"_bar").c_str()}
538 , ar_user{concat(prefix,
"_user").c_str()}
539 , ar_trace{concat(prefix,
"_trace").c_str()}
540 , ar_vmidext{concat(prefix,
"_vmidext").c_str()} {}
542 template <
typename OTYPES>
void bind_ar(ar_ace<CFG, OTYPES>& o) {
544 ar_addr.bind(o.ar_addr);
545 ar_len.bind(o.ar_len);
546 ar_size.bind(o.ar_size);
547 ar_burst.bind(o.ar_burst);
548 ar_lock.bind(o.ar_lock);
549 ar_cache.bind(o.ar_cache);
550 ar_prot.bind(o.ar_prot);
551 ar_qos.bind(o.ar_qos);
552 ar_region.bind(o.ar_region);
553 ar_valid.bind(o.ar_valid);
554 ar_ready.bind(o.ar_ready);
555 ar_domain.bind(o.ar_domain);
556 ar_snoop.bind(o.ar_snoop);
557 ar_bar.bind(o.ar_bar);
558 ar_user.bind(o.ar_user);
559 ar_trace.bind(o.ar_trace);
563template <
typename CFG,
typename TYPES = master_types>
struct aw_ace {
564 typename TYPES::template m2s_full_t<sc_dt::sc_uint<CFG::IDWIDTH>> aw_id{
"aw_id"};
565 typename TYPES::template m2s_t<sc_dt::sc_uint<CFG::ADDRWIDTH>> aw_addr{
"aw_addr"};
566 typename TYPES::template s2m_t<bool> aw_ready{
"aw_ready"};
567 typename TYPES::template m2s_t<bool> aw_lock{
"aw_lock"};
568 typename TYPES::template m2s_t<bool> aw_valid{
"aw_valid"};
569 typename TYPES::template m2s_t<sc_dt::sc_uint<3>> aw_prot{
"aw_prot"};
570 typename TYPES::template m2s_full_t<sc_dt::sc_uint<3>> aw_size{
"aw_size"};
571 typename TYPES::template m2s_full_t<sc_dt::sc_uint<4>> aw_cache{
"aw_cache"};
572 typename TYPES::template m2s_full_t<sc_dt::sc_uint<2>> aw_burst{
"aw_burst"};
573 typename TYPES::template m2s_full_t<sc_dt::sc_uint<4>> aw_qos{
"aw_qos"};
574 typename TYPES::template m2s_full_t<sc_dt::sc_uint<4>> aw_region{
"aw_region"};
575 typename TYPES::template m2s_full_t<sc_dt::sc_uint<8>> aw_len{
"aw_len"};
576 typename TYPES::template m2s_full_t<sc_dt::sc_uint<2>> aw_domain{
"aw_domain"};
577 typename TYPES::template m2s_full_t<sc_dt::sc_uint<CFG::AWSNOOPWIDTH>> aw_snoop{
"aw_snoop"};
578 typename TYPES::template m2s_full_t<sc_dt::sc_uint<2>> aw_bar{
"aw_bar"};
579 typename TYPES::template m2s_t<bool> aw_unique{
"aw_unique"};
580 typename TYPES::template m2s_full_t<typename CFG::user_t> aw_user{
"aw_user"};
581 typename TYPES::template m2s_t<bool> aw_stashniden{
"aw_stashniden"};
582 typename TYPES::template m2s_full_t<sc_dt::sc_uint<11>> aw_stashnid{
"aw_stashnid"};
583 typename TYPES::template m2s_t<bool> aw_stashlpiden{
"aw_stashlpiden"};
584 typename TYPES::template m2s_full_t<sc_dt::sc_uint<5>> aw_stashlpid{
"aw_stashlpid"};
585 typename TYPES::template m2s_opt_t<sc_dt::sc_uint<6>> aw_atop{
"aw_atop"};
586 typename TYPES::template m2s_opt_t<bool> aw_trace{
"aw_trace"};
589 aw_ace(
const char* prefix)
590 : aw_id{concat(prefix,
"_id").c_str()}
591 , aw_addr{concat(prefix,
"_addr").c_str()}
592 , aw_ready{concat(prefix,
"_ready").c_str()}
593 , aw_lock{concat(prefix,
"_lock").c_str()}
594 , aw_valid{concat(prefix,
"_valid").c_str()}
595 , aw_prot{concat(prefix,
"_prot").c_str()}
596 , aw_size{concat(prefix,
"_size").c_str()}
597 , aw_cache{concat(prefix,
"_cache").c_str()}
598 , aw_burst{concat(prefix,
"_burst").c_str()}
599 , aw_qos{concat(prefix,
"_qos").c_str()}
600 , aw_region{concat(prefix,
"_region").c_str()}
601 , aw_len{concat(prefix,
"_len").c_str()}
602 , aw_domain{concat(prefix,
"_domain").c_str()}
603 , aw_snoop{concat(prefix,
"_snoop").c_str()}
604 , aw_bar{concat(prefix,
"_bar").c_str()}
605 , aw_unique{concat(prefix,
"_unique").c_str()}
606 , aw_user{concat(prefix,
"_user").c_str()}
607 , aw_stashniden{concat(prefix,
"_stashniden").c_str()}
608 , aw_stashnid{concat(prefix,
"_stashnid").c_str()}
609 , aw_stashlpiden{concat(prefix,
"_stashlpiden").c_str()}
610 , aw_stashlpid{concat(prefix,
"_stashlpid").c_str()}
611 , aw_atop{concat(prefix,
"_atop").c_str()}
612 , aw_trace{concat(prefix,
"_trace").c_str()} {}
614 template <
typename OTYPES>
void bind_aw(aw_ace<CFG, OTYPES>& o) {
616 aw_addr.bind(o.aw_addr);
617 aw_ready.bind(o.aw_ready);
618 aw_lock.bind(o.aw_lock);
619 aw_valid.bind(o.aw_valid);
620 aw_prot.bind(o.aw_prot);
621 aw_size.bind(o.aw_size);
622 aw_cache.bind(o.aw_cache);
623 aw_burst.bind(o.aw_burst);
624 aw_qos.bind(o.aw_qos);
625 aw_region.bind(o.aw_region);
626 aw_len.bind(o.aw_len);
627 aw_domain.bind(o.aw_domain);
628 aw_snoop.bind(o.aw_snoop);
629 aw_bar.bind(o.aw_bar);
630 aw_unique.bind(o.aw_unique);
631 aw_user.bind(o.aw_user);
632 aw_stashniden.bind(o.aw_stashniden);
633 aw_stashnid.bind(o.aw_stashnid);
634 aw_stashlpiden.bind(o.aw_stashlpiden);
635 aw_stashlpid.bind(o.aw_stashlpid);
636 aw_atop.bind(o.aw_atop);
637 aw_trace.bind(o.aw_trace);
642template <
typename CFG,
typename TYPES = master_types>
struct ac_ace {
643 typename TYPES::template s2m_t<bool> ac_valid{
"ac_valid"};
644 typename TYPES::template m2s_t<bool> ac_ready{
"ac_ready"};
645 typename TYPES::template s2m_t<sc_dt::sc_uint<CFG::ADDRWIDTH>> ac_addr{
"ac_addr"};
646 typename TYPES::template s2m_full_t<sc_dt::sc_uint<4>> ac_snoop{
"ac_snoop"};
647 typename TYPES::template s2m_full_t<sc_dt::sc_uint<3>> ac_prot{
"ac_prot"};
648 typename TYPES::template s2m_opt_t<sc_dt::sc_uint<4>> ac_vmidext{
"ac_vmidext"};
649 typename TYPES::template s2m_opt_t<bool> ac_trace{
"ac_trace"};
652 ac_ace(
const char* prefix)
653 : ac_valid{concat(prefix,
"_valid").c_str()}
654 , ac_ready{concat(prefix,
"_ready").c_str()}
655 , ac_addr{concat(prefix,
"_addr").c_str()}
656 , ac_snoop{concat(prefix,
"_snoop").c_str()}
657 , ac_prot{concat(prefix,
"_prot").c_str()}
658 , ac_vmidext{concat(prefix,
"avmidext").c_str()}
659 , ac_trace{concat(prefix,
"_trace").c_str()} {}
661 template <
typename OTYPES>
void bind_ac(ac_ace<CFG, OTYPES>& o) {
662 ac_valid.bind(o.ac_valid);
663 ac_ready.bind(o.ac_ready);
664 ac_addr.bind(o.ac_addr);
665 ac_snoop.bind(o.ac_snoop);
666 ac_prot.bind(o.ac_prot);
671template <
typename CFG,
typename TYPES = master_types>
struct cd_ace {
672 typename TYPES::template m2s_t<bool> cd_valid{
"cd_valid"};
673 typename TYPES::template s2m_t<bool> cd_ready{
"cd_ready"};
674 typename TYPES::template m2s_t<typename CFG::data_t> cd_data{
"cd_data"};
675 typename TYPES::template m2s_full_t<bool> cd_last{
"cd_last"};
678 cd_ace(
const char* prefix)
679 : cd_valid{concat(prefix,
"_valid").c_str()}
680 , cd_ready{concat(prefix,
"_ready").c_str()}
681 , cd_data{concat(prefix,
"_data").c_str()}
682 , cd_last{concat(prefix,
"_last").c_str()} {}
684 template <
typename OTYPES>
void bind_cd(cd_ace<CFG, OTYPES>& o) {
685 cd_valid.bind(o.cd_valid);
686 cd_ready.bind(o.cd_ready);
687 cd_data.bind(o.cd_data);
688 cd_last.bind(o.cd_last);
693template <
typename CFG,
typename TYPES = master_types>
struct cr_ace {
694 typename TYPES::template m2s_t<bool> cr_valid{
"cr_valid"};
695 typename TYPES::template s2m_t<bool> cr_ready{
"cr_ready"};
696 typename TYPES::template m2s_t<sc_dt::sc_uint<5>> cr_resp{
"cr_resp"};
697 typename TYPES::template m2s_opt_t<bool> cr_trace{
"cr_trace"};
700 cr_ace(
const char* prefix)
701 : cr_valid{concat(prefix,
"_valid").c_str()}
702 , cr_ready{concat(prefix,
"_ready").c_str()}
703 , cr_resp{concat(prefix,
"_resp").c_str()}
704 , cr_trace{concat(prefix,
"_trace").c_str()} {}
706 template <
typename OTYPES>
void bind_cr(cr_ace<CFG, OTYPES>& o) {
707 cr_valid.bind(o.cr_valid);
708 cr_ready.bind(o.cr_ready);
709 cr_resp.bind(o.cr_resp);