[872] | 1 | #include <systemc> |
---|
| 2 | #include <vci_mem_cache.h> |
---|
| 3 | #include <dspin_memcache_cc_test.h> |
---|
| 4 | #include <int_tab.h> |
---|
| 5 | #include <mapping_table.h> |
---|
| 6 | |
---|
| 7 | /* |
---|
| 8 | * DSPIN parameters |
---|
| 9 | */ |
---|
| 10 | #define dspin_int_cmd_width 39 |
---|
| 11 | #define dspin_int_rsp_width 32 |
---|
| 12 | #define dspin_ram_cmd_width 64 |
---|
| 13 | #define dspin_ram_rsp_width 64 |
---|
| 14 | |
---|
| 15 | /* |
---|
| 16 | * VCI fields width |
---|
| 17 | */ |
---|
| 18 | #define vci_cell_width_int 4 |
---|
| 19 | #define vci_cell_width_ext 8 |
---|
| 20 | #define vci_plen_width 8 |
---|
| 21 | #define vci_address_width 40 |
---|
| 22 | #define vci_rerror_width 1 |
---|
| 23 | #define vci_clen_width 1 |
---|
| 24 | #define vci_rflag_width 1 |
---|
| 25 | #define vci_srcid_width 14 |
---|
| 26 | #define vci_pktid_width 4 |
---|
| 27 | #define vci_trdid_width 4 |
---|
| 28 | #define vci_wrplen_width 1 |
---|
| 29 | |
---|
| 30 | #define X_WIDTH 4 |
---|
| 31 | #define Y_WIDTH 4 |
---|
| 32 | |
---|
| 33 | int sc_main(int argc, char **argv) |
---|
| 34 | { |
---|
| 35 | using namespace soclib::caba; |
---|
| 36 | using namespace soclib::common; |
---|
| 37 | |
---|
| 38 | typedef VciParams<vci_cell_width_int, vci_plen_width, vci_address_width, |
---|
| 39 | vci_rerror_width, vci_clen_width, vci_rflag_width, vci_srcid_width, |
---|
| 40 | vci_pktid_width, vci_trdid_width, vci_wrplen_width> VciParamInt; |
---|
| 41 | |
---|
| 42 | typedef VciParams<vci_cell_width_ext, vci_plen_width, vci_address_width, |
---|
| 43 | vci_rerror_width, vci_clen_width, vci_rflag_width, vci_srcid_width, |
---|
| 44 | vci_pktid_width, vci_trdid_width, vci_wrplen_width> VciParamExt; |
---|
| 45 | |
---|
| 46 | typedef VciMemCache< VciParamInt, VciParamExt, dspin_int_rsp_width, |
---|
| 47 | dspin_int_cmd_width> VciMemCacheT; |
---|
| 48 | |
---|
| 49 | typedef DspinMemcacheCcTest<dspin_int_cmd_width, dspin_int_rsp_width> |
---|
| 50 | DspinMemcacheCcTestT; |
---|
| 51 | |
---|
| 52 | MappingTable mt_int( |
---|
| 53 | vci_address_width, |
---|
| 54 | IntTab(X_WIDTH + Y_WIDTH, 16 - X_WIDTH - Y_WIDTH), |
---|
| 55 | IntTab(X_WIDTH + Y_WIDTH, vci_srcid_width - X_WIDTH - Y_WIDTH), |
---|
| 56 | 0xF); |
---|
| 57 | |
---|
| 58 | mt_int.add(Segment("seg0", 0x0, 0x4000, IntTab(0, 0), false, false)); |
---|
| 59 | |
---|
| 60 | MappingTable mt_ext( |
---|
| 61 | vci_address_width, |
---|
| 62 | IntTab(X_WIDTH + Y_WIDTH, 16 - X_WIDTH - Y_WIDTH), |
---|
| 63 | IntTab(X_WIDTH + Y_WIDTH, vci_srcid_width - X_WIDTH - Y_WIDTH), |
---|
| 64 | 0xF); |
---|
| 65 | |
---|
| 66 | mt_ext.add(Segment("seg0", 0x0, 0x4000, IntTab(0, 0), false, false)); |
---|
| 67 | |
---|
| 68 | VciMemCacheT memc( |
---|
| 69 | "memc", mt_int, mt_ext, IntTab(0, 0), IntTab(0, 0), 4, 4, 4, 256, |
---|
| 70 | 16, 3, 4096, 8, 8, 8, 0, false); |
---|
| 71 | |
---|
| 72 | DspinMemcacheCcTestT memctest("memctest"); |
---|
| 73 | |
---|
| 74 | sc_clock signal_clk("clk"); |
---|
| 75 | sc_core::sc_signal<bool> signal_resetn("signal_resetn"); |
---|
| 76 | VciSignals<VciParamExt> signal_ext_vci_ini("signal_ext_vci_ini"); |
---|
| 77 | VciSignals<VciParamInt> signal_int_vci_tgt("signal_int_vci_tgt"); |
---|
| 78 | DspinSignals<dspin_int_rsp_width> signal_dspin_p2m("signal_dspin_p2m"); |
---|
| 79 | DspinSignals<dspin_int_cmd_width> signal_dspin_m2p("signal_dspin_m2p"); |
---|
| 80 | DspinSignals<dspin_int_cmd_width> signal_dspin_clack("signal_dspin_clack"); |
---|
| 81 | sc_core::sc_signal<bool> signal_irq("signal_irq"); |
---|
| 82 | |
---|
| 83 | memc.p_clk(signal_clk); |
---|
| 84 | memc.p_resetn(signal_resetn); |
---|
| 85 | memc.p_vci_ixr(signal_ext_vci_ini); |
---|
| 86 | memc.p_vci_tgt(signal_int_vci_tgt); |
---|
| 87 | memc.p_dspin_p2m(signal_dspin_p2m); |
---|
| 88 | memc.p_dspin_m2p(signal_dspin_m2p); |
---|
| 89 | memc.p_dspin_clack(signal_dspin_clack); |
---|
| 90 | memc.p_irq(signal_irq); |
---|
| 91 | |
---|
| 92 | memctest.p_clk(signal_clk); |
---|
| 93 | memctest.p_resetn(signal_resetn); |
---|
| 94 | memctest.p_dspin_p2m(signal_dspin_p2m); |
---|
| 95 | memctest.p_dspin_m2p(signal_dspin_m2p); |
---|
| 96 | memctest.p_dspin_clack(signal_dspin_clack); |
---|
| 97 | |
---|
| 98 | sc_start(sc_core::SC_ZERO_TIME); |
---|
| 99 | signal_resetn = 0; |
---|
| 100 | signal_int_vci_tgt.cmdval = 0; |
---|
| 101 | signal_int_vci_tgt.rspack = 1; |
---|
| 102 | signal_ext_vci_ini.cmdack = 1; |
---|
| 103 | signal_ext_vci_ini.rspval = 0; |
---|
| 104 | signal_irq = 0; |
---|
| 105 | sc_start(sc_core::sc_time(5, SC_NS)); |
---|
| 106 | signal_resetn = 1; |
---|
| 107 | sc_start(sc_core::sc_time(1000, SC_NS)); |
---|
| 108 | |
---|
| 109 | std::cout << "failure" << std::endl; |
---|
| 110 | |
---|
| 111 | return 0; |
---|
| 112 | } |
---|
| 113 | |
---|
| 114 | /* |
---|
| 115 | * vim: ts=4 : sw=4 : sts=4 : et |
---|
| 116 | */ |
---|