Changeset 1002 for trunk/platforms/tsar_generic_iob
- Timestamp:
- Jul 2, 2015, 3:17:14 PM (9 years ago)
- Location:
- trunk/platforms/tsar_generic_iob
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/platforms/tsar_generic_iob/arch.py
r979 r1002 27 27 # - nb_ttys : number of TTY channels 28 28 # - fbf_width : frame_buffer width = frame_buffer heigth 29 # - ioc_type : can be 'BDV','HBA','SDC', but not 'RDK'29 # - ioc_type : can be 'BDV','HBA','SDC', 'SPI' but not 'RDK' 30 30 # 31 31 # … … 76 76 irq_per_proc = 4 77 77 peri_increment = 0x10000 78 mwr_type = ' GCD'78 mwr_type = 'CPY' 79 79 80 80 ### constructor parameters checking … … 93 93 ((x_io == x_size-1) and (y_io == y_size-1)) ) 94 94 95 assert( ioc_type in [ 'BDV' , 'HBA' , 'SDC' ] )95 assert( ioc_type in [ 'BDV' , 'HBA' , 'SDC' , 'SPI' ] ) 96 96 97 97 assert( mwr_type in [ 'GCD' , 'DCT' , 'CPY' , 'NONE' ] ) … … 294 294 if ( ioc_type == 'HBA' ): isr_ioc = 'ISR_HBA' 295 295 if ( ioc_type == 'SDC' ): isr_ioc = 'ISR_SDC' 296 if ( ioc_type == 'SPI' ): isr_ioc = 'ISR_SPI' 296 297 297 298 mapping.addIrq( pic, index = 8, src = ioc, -
trunk/platforms/tsar_generic_iob/top.cpp
r982 r1002 141 141 #include "vci_multi_ahci.h" 142 142 #include "vci_block_device_tsar.h" 143 #include "vci_ahci_sdc.h" 144 #include "sd_card.h" 143 145 #include "vci_framebuffer.h" 144 146 #include "vci_iox_network.h" … … 856 858 VciSignals<vci_param_ext> signal_vci_tgt_iopi("signal_vci_tgt_iopi"); 857 859 858 // Horizontal inter-clusters INT network DSPIN 859 DspinSignals<dspin_int_cmd_width>*** signal_dspin_int_cmd_h_inc = 860 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_h_inc", XMAX-1, YMAX, 3); 861 DspinSignals<dspin_int_cmd_width>*** signal_dspin_int_cmd_h_dec = 862 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_h_dec", XMAX-1, YMAX, 3); 863 DspinSignals<dspin_int_rsp_width>*** signal_dspin_int_rsp_h_inc = 864 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_h_inc", XMAX-1, YMAX, 2); 865 DspinSignals<dspin_int_rsp_width>*** signal_dspin_int_rsp_h_dec = 866 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_h_dec", XMAX-1, YMAX, 2); 867 868 // Vertical inter-clusters INT network DSPIN 869 DspinSignals<dspin_int_cmd_width>*** signal_dspin_int_cmd_v_inc = 870 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_v_inc", XMAX, YMAX-1, 3); 871 DspinSignals<dspin_int_cmd_width>*** signal_dspin_int_cmd_v_dec = 872 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_v_dec", XMAX, YMAX-1, 3); 873 DspinSignals<dspin_int_rsp_width>*** signal_dspin_int_rsp_v_inc = 874 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_v_inc", XMAX, YMAX-1, 2); 875 DspinSignals<dspin_int_rsp_width>*** signal_dspin_int_rsp_v_dec = 876 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_v_dec", XMAX, YMAX-1, 2); 877 878 // Mesh boundaries INT network DSPIN 879 DspinSignals<dspin_int_cmd_width>**** signal_dspin_false_int_cmd_in = 880 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_false_int_cmd_in", XMAX, YMAX, 4, 3); 881 DspinSignals<dspin_int_cmd_width>**** signal_dspin_false_int_cmd_out = 882 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_false_int_cmd_out", XMAX, YMAX, 4, 3); 883 DspinSignals<dspin_int_rsp_width>**** signal_dspin_false_int_rsp_in = 884 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_false_int_rsp_in", XMAX, YMAX, 4, 2); 885 DspinSignals<dspin_int_rsp_width>**** signal_dspin_false_int_rsp_out = 886 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_false_int_rsp_out", XMAX, YMAX, 4, 2); 887 888 889 // Horizontal inter-clusters RAM network DSPIN 860 // Horizontal inter-clusters INT_CMD DSPIN 861 DspinSignals<dspin_int_cmd_width>** signal_dspin_int_cmd_h_inc = 862 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_h_inc", XMAX-1, YMAX); 863 DspinSignals<dspin_int_cmd_width>** signal_dspin_int_cmd_h_dec = 864 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_h_dec", XMAX-1, YMAX); 865 866 // Horizontal inter-clusters INT_RSP DSPIN 867 DspinSignals<dspin_int_rsp_width>** signal_dspin_int_rsp_h_inc = 868 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_h_inc", XMAX-1, YMAX); 869 DspinSignals<dspin_int_rsp_width>** signal_dspin_int_rsp_h_dec = 870 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_h_dec", XMAX-1, YMAX); 871 872 // Horizontal inter-clusters INT_M2P DSPIN 873 DspinSignals<dspin_int_cmd_width>** signal_dspin_int_m2p_h_inc = 874 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_m2p_h_inc", XMAX-1, YMAX); 875 DspinSignals<dspin_int_cmd_width>** signal_dspin_int_m2p_h_dec = 876 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_m2p_h_dec", XMAX-1, YMAX); 877 878 // Horizontal inter-clusters INT_P2M DSPIN 879 DspinSignals<dspin_int_rsp_width>** signal_dspin_int_p2m_h_inc = 880 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_p2m_h_inc", XMAX-1, YMAX); 881 DspinSignals<dspin_int_rsp_width>** signal_dspin_int_p2m_h_dec = 882 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_p2m_h_dec", XMAX-1, YMAX); 883 884 // Horizontal inter-clusters INT_CLA DSPIN 885 DspinSignals<dspin_int_cmd_width>** signal_dspin_int_cla_h_inc = 886 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cla_h_inc", XMAX-1, YMAX); 887 DspinSignals<dspin_int_cmd_width>** signal_dspin_int_cla_h_dec = 888 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cla_h_dec", XMAX-1, YMAX); 889 890 891 // Vertical inter-clusters INT_CMD DSPIN 892 DspinSignals<dspin_int_cmd_width>** signal_dspin_int_cmd_v_inc = 893 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_v_inc", XMAX, YMAX-1); 894 DspinSignals<dspin_int_cmd_width>** signal_dspin_int_cmd_v_dec = 895 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cmd_v_dec", XMAX, YMAX-1); 896 897 // Vertical inter-clusters INT_RSP DSPIN 898 DspinSignals<dspin_int_rsp_width>** signal_dspin_int_rsp_v_inc = 899 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_v_inc", XMAX, YMAX-1); 900 DspinSignals<dspin_int_rsp_width>** signal_dspin_int_rsp_v_dec = 901 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_rsp_v_dec", XMAX, YMAX-1); 902 903 // Vertical inter-clusters INT_M2P DSPIN 904 DspinSignals<dspin_int_cmd_width>** signal_dspin_int_m2p_v_inc = 905 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_m2p_v_inc", XMAX, YMAX-1); 906 DspinSignals<dspin_int_cmd_width>** signal_dspin_int_m2p_v_dec = 907 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_m2p_v_dec", XMAX, YMAX-1); 908 909 // Vertical inter-clusters INT_P2M DSPIN 910 DspinSignals<dspin_int_rsp_width>** signal_dspin_int_p2m_v_inc = 911 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_p2m_v_inc", XMAX, YMAX-1); 912 DspinSignals<dspin_int_rsp_width>** signal_dspin_int_p2m_v_dec = 913 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_int_p2m_v_dec", XMAX, YMAX-1); 914 915 // Vertical inter-clusters INT_CLA DSPIN 916 DspinSignals<dspin_int_cmd_width>** signal_dspin_int_cla_v_inc = 917 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cla_v_inc", XMAX, YMAX-1); 918 DspinSignals<dspin_int_cmd_width>** signal_dspin_int_cla_v_dec = 919 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_int_cla_v_dec", XMAX, YMAX-1); 920 921 922 // Mesh boundaries INT_CMD DSPIN 923 DspinSignals<dspin_int_cmd_width>*** signal_dspin_false_int_cmd_in = 924 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_false_int_cmd_in", XMAX, YMAX, 4); 925 DspinSignals<dspin_int_cmd_width>*** signal_dspin_false_int_cmd_out = 926 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_false_int_cmd_out", XMAX, YMAX, 4); 927 928 // Mesh boundaries INT_RSP DSPIN 929 DspinSignals<dspin_int_rsp_width>*** signal_dspin_false_int_rsp_in = 930 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_false_int_rsp_in", XMAX, YMAX, 4); 931 DspinSignals<dspin_int_rsp_width>*** signal_dspin_false_int_rsp_out = 932 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_false_int_rsp_out", XMAX, YMAX, 4); 933 934 // Mesh boundaries INT_M2P DSPIN 935 DspinSignals<dspin_int_cmd_width>*** signal_dspin_false_int_m2p_in = 936 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_false_int_m2p_in", XMAX, YMAX, 4); 937 DspinSignals<dspin_int_cmd_width>*** signal_dspin_false_int_m2p_out = 938 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_false_int_m2P_out", XMAX, YMAX, 4); 939 940 // Mesh boundaries INT_P2M DSPIN 941 DspinSignals<dspin_int_rsp_width>*** signal_dspin_false_int_p2m_in = 942 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_false_int_p2m_in", XMAX, YMAX, 4); 943 DspinSignals<dspin_int_rsp_width>*** signal_dspin_false_int_p2m_out = 944 alloc_elems<DspinSignals<dspin_int_rsp_width> >("signal_dspin_false_int_p2m_out", XMAX, YMAX, 4); 945 946 // Mesh boundaries INT_CLA DSPIN 947 DspinSignals<dspin_int_cmd_width>*** signal_dspin_false_int_cla_in = 948 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_false_int_cla_in", XMAX, YMAX, 4); 949 DspinSignals<dspin_int_cmd_width>*** signal_dspin_false_int_cla_out = 950 alloc_elems<DspinSignals<dspin_int_cmd_width> >("signal_dspin_false_int_cla_out", XMAX, YMAX, 4); 951 952 953 // Horizontal inter-clusters RAM_CMD DSPIN 890 954 DspinSignals<dspin_ram_cmd_width>** signal_dspin_ram_cmd_h_inc = 891 955 alloc_elems<DspinSignals<dspin_ram_cmd_width> >("signal_dspin_ram_cmd_h_inc", XMAX-1, YMAX); 892 956 DspinSignals<dspin_ram_cmd_width>** signal_dspin_ram_cmd_h_dec = 893 957 alloc_elems<DspinSignals<dspin_ram_cmd_width> >("signal_dspin_ram_cmd_h_dec", XMAX-1, YMAX); 958 959 // Horizontal inter-clusters RAM_RSP DSPIN 894 960 DspinSignals<dspin_ram_rsp_width>** signal_dspin_ram_rsp_h_inc = 895 961 alloc_elems<DspinSignals<dspin_ram_rsp_width> >("signal_dspin_ram_rsp_h_inc", XMAX-1, YMAX); … … 897 963 alloc_elems<DspinSignals<dspin_ram_rsp_width> >("signal_dspin_ram_rsp_h_dec", XMAX-1, YMAX); 898 964 899 // Vertical inter-clusters RAM networkDSPIN965 // Vertical inter-clusters RAM_CMD DSPIN 900 966 DspinSignals<dspin_ram_cmd_width>** signal_dspin_ram_cmd_v_inc = 901 967 alloc_elems<DspinSignals<dspin_ram_cmd_width> >("signal_dspin_ram_cmd_v_inc", XMAX, YMAX-1); 902 968 DspinSignals<dspin_ram_cmd_width>** signal_dspin_ram_cmd_v_dec = 903 969 alloc_elems<DspinSignals<dspin_ram_cmd_width> >("signal_dspin_ram_cmd_v_dec", XMAX, YMAX-1); 970 971 // Vertical inter-clusters RAM_RSP DSPIN 904 972 DspinSignals<dspin_ram_rsp_width>** signal_dspin_ram_rsp_v_inc = 905 973 alloc_elems<DspinSignals<dspin_ram_rsp_width> >("signal_dspin_ram_rsp_v_inc", XMAX, YMAX-1); … … 907 975 alloc_elems<DspinSignals<dspin_ram_rsp_width> >("signal_dspin_ram_rsp_v_dec", XMAX, YMAX-1); 908 976 909 // Mesh boundaries RAM networkDSPIN977 // Mesh boundaries RAM_CMD DSPIN 910 978 DspinSignals<dspin_ram_cmd_width>*** signal_dspin_false_ram_cmd_in = 911 979 alloc_elems<DspinSignals<dspin_ram_cmd_width> >("signal_dspin_false_ram_cmd_in", XMAX, YMAX, 4); 912 980 DspinSignals<dspin_ram_cmd_width>*** signal_dspin_false_ram_cmd_out = 913 981 alloc_elems<DspinSignals<dspin_ram_cmd_width> >("signal_dspin_false_ram_cmd_out", XMAX, YMAX, 4); 982 983 // Mesh boundaries RAM_RSP DSPIN 914 984 DspinSignals<dspin_ram_rsp_width>*** signal_dspin_false_ram_rsp_in = 915 985 alloc_elems<DspinSignals<dspin_ram_rsp_width> >("signal_dspin_false_ram_rsp_in", XMAX, YMAX, 4); 916 986 DspinSignals<dspin_ram_rsp_width>*** signal_dspin_false_ram_rsp_out = 917 987 alloc_elems<DspinSignals<dspin_ram_rsp_width> >("signal_dspin_false_ram_rsp_out", XMAX, YMAX, 4); 988 989 // SD card signals 990 sc_signal<bool> signal_sdc_clk; 991 sc_signal<bool> signal_sdc_cmd_enable_to_card; 992 sc_signal<bool> signal_sdc_cmd_value_to_card; 993 sc_signal<bool> signal_sdc_dat_enable_to_card; 994 sc_signal<bool> signal_sdc_dat_value_to_card[4]; 995 sc_signal<bool> signal_sdc_cmd_enable_from_card; 996 sc_signal<bool> signal_sdc_cmd_value_from_card; 997 sc_signal<bool> signal_sdc_dat_enable_from_card; 998 sc_signal<bool> signal_sdc_dat_value_from_card[4]; 918 999 919 1000 //////////////////////////// … … 985 1066 64, // burst size (bytes) 986 1067 0 ); // disk latency 987 #elif ( USE_IOC_BDV or USE_IOC_SDC)1068 #elif ( USE_IOC_BDV ) 988 1069 989 1070 VciBlockDeviceTsar<vci_param_ext>* disk; … … 996 1077 64, // burst size (bytes) 997 1078 0 ); // disk latency 1079 #elif ( USE_IOC_SDC ) 1080 1081 VciAhciSdc<vci_param_ext>* disk; 1082 disk = new VciAhciSdc<vci_param_ext>( "disk", 1083 maptab_iox, 1084 IntTab(0, DISK_LOCAL_SRCID), 1085 IntTab(0, IOX_DISK_TGT_ID), 1086 64 ); // burst size (bytes) 1087 SdCard* card; 1088 card = new SdCard( "card", 1089 disk_name, 1090 10, // RX one block latency 1091 10 ); // TX one block latency 998 1092 #endif 999 1093 … … 1175 1269 1176 1270 // DISK connexion 1271 1272 #if ( USE_IOC_HBA ) 1273 1177 1274 disk->p_clk (signal_clk); 1178 1275 disk->p_resetn (signal_resetn); 1179 1276 disk->p_vci_target (signal_vci_tgt_disk); 1180 1277 disk->p_vci_initiator (signal_vci_ini_disk); 1181 #if ( USE_IOC_HBA )1182 1278 disk->p_channel_irq[0] (signal_irq_disk); 1183 #else 1279 1280 #elif ( USE_IOC_BDV ) 1281 1282 disk->p_clk (signal_clk); 1283 disk->p_resetn (signal_resetn); 1284 disk->p_vci_target (signal_vci_tgt_disk); 1285 disk->p_vci_initiator (signal_vci_ini_disk); 1184 1286 disk->p_irq (signal_irq_disk); 1287 1288 #elif ( USE_IOC_SDC ) 1289 1290 disk->p_clk (signal_clk); 1291 disk->p_resetn (signal_resetn); 1292 disk->p_vci_target (signal_vci_tgt_disk); 1293 disk->p_vci_initiator (signal_vci_ini_disk); 1294 disk->p_irq (signal_irq_disk); 1295 1296 disk->p_sdc_clk (signal_sdc_clk); 1297 disk->p_sdc_cmd_enable_out (signal_sdc_cmd_enable_to_card); 1298 disk->p_sdc_cmd_value_out (signal_sdc_cmd_value_to_card); 1299 disk->p_sdc_cmd_enable_in (signal_sdc_cmd_enable_from_card); 1300 disk->p_sdc_cmd_value_in (signal_sdc_cmd_value_from_card); 1301 disk->p_sdc_dat_enable_out (signal_sdc_dat_enable_to_card); 1302 disk->p_sdc_dat_value_out[0] (signal_sdc_dat_value_to_card[0]); 1303 disk->p_sdc_dat_value_out[1] (signal_sdc_dat_value_to_card[1]); 1304 disk->p_sdc_dat_value_out[2] (signal_sdc_dat_value_to_card[2]); 1305 disk->p_sdc_dat_value_out[3] (signal_sdc_dat_value_to_card[3]); 1306 disk->p_sdc_dat_enable_in (signal_sdc_dat_enable_from_card); 1307 disk->p_sdc_dat_value_in[0] (signal_sdc_dat_value_from_card[0]); 1308 disk->p_sdc_dat_value_in[1] (signal_sdc_dat_value_from_card[1]); 1309 disk->p_sdc_dat_value_in[2] (signal_sdc_dat_value_from_card[2]); 1310 disk->p_sdc_dat_value_in[3] (signal_sdc_dat_value_from_card[3]); 1311 1312 card->p_clk (signal_clk); 1313 card->p_resetn (signal_resetn); 1314 1315 card->p_sdc_clk (signal_sdc_clk); 1316 card->p_sdc_cmd_enable_out (signal_sdc_cmd_enable_from_card); 1317 card->p_sdc_cmd_value_out (signal_sdc_cmd_value_from_card); 1318 card->p_sdc_cmd_enable_in (signal_sdc_cmd_enable_to_card); 1319 card->p_sdc_cmd_value_in (signal_sdc_cmd_value_to_card); 1320 card->p_sdc_dat_enable_out (signal_sdc_dat_enable_from_card); 1321 card->p_sdc_dat_value_out[0] (signal_sdc_dat_value_from_card[0]); 1322 card->p_sdc_dat_value_out[1] (signal_sdc_dat_value_from_card[1]); 1323 card->p_sdc_dat_value_out[2] (signal_sdc_dat_value_from_card[2]); 1324 card->p_sdc_dat_value_out[3] (signal_sdc_dat_value_from_card[3]); 1325 card->p_sdc_dat_enable_in (signal_sdc_dat_enable_to_card); 1326 card->p_sdc_dat_value_in[0] (signal_sdc_dat_value_to_card[0]); 1327 card->p_sdc_dat_value_in[1] (signal_sdc_dat_value_to_card[1]); 1328 card->p_sdc_dat_value_in[2] (signal_sdc_dat_value_to_card[2]); 1329 card->p_sdc_dat_value_in[3] (signal_sdc_dat_value_to_card[3]); 1330 1185 1331 #endif 1186 1332 … … 1286 1432 for (size_t y = 0; y < YMAX; y++) 1287 1433 { 1288 for (size_t k = 0; k < 3; k++) 1289 { 1290 clusters[x][y]->p_dspin_int_cmd_out[EAST][k] (signal_dspin_int_cmd_h_inc[x][y][k]); 1291 clusters[x+1][y]->p_dspin_int_cmd_in[WEST][k] (signal_dspin_int_cmd_h_inc[x][y][k]); 1292 clusters[x][y]->p_dspin_int_cmd_in[EAST][k] (signal_dspin_int_cmd_h_dec[x][y][k]); 1293 clusters[x+1][y]->p_dspin_int_cmd_out[WEST][k] (signal_dspin_int_cmd_h_dec[x][y][k]); 1294 } 1295 1296 for (size_t k = 0; k < 2; k++) 1297 { 1298 clusters[x][y]->p_dspin_int_rsp_out[EAST][k] (signal_dspin_int_rsp_h_inc[x][y][k]); 1299 clusters[x+1][y]->p_dspin_int_rsp_in[WEST][k] (signal_dspin_int_rsp_h_inc[x][y][k]); 1300 clusters[x][y]->p_dspin_int_rsp_in[EAST][k] (signal_dspin_int_rsp_h_dec[x][y][k]); 1301 clusters[x+1][y]->p_dspin_int_rsp_out[WEST][k] (signal_dspin_int_rsp_h_dec[x][y][k]); 1302 } 1434 clusters[x][y]->p_dspin_int_cmd_out[EAST] (signal_dspin_int_cmd_h_inc[x][y]); 1435 clusters[x+1][y]->p_dspin_int_cmd_in[WEST] (signal_dspin_int_cmd_h_inc[x][y]); 1436 clusters[x][y]->p_dspin_int_cmd_in[EAST] (signal_dspin_int_cmd_h_dec[x][y]); 1437 clusters[x+1][y]->p_dspin_int_cmd_out[WEST] (signal_dspin_int_cmd_h_dec[x][y]); 1438 1439 clusters[x][y]->p_dspin_int_rsp_out[EAST] (signal_dspin_int_rsp_h_inc[x][y]); 1440 clusters[x+1][y]->p_dspin_int_rsp_in[WEST] (signal_dspin_int_rsp_h_inc[x][y]); 1441 clusters[x][y]->p_dspin_int_rsp_in[EAST] (signal_dspin_int_rsp_h_dec[x][y]); 1442 clusters[x+1][y]->p_dspin_int_rsp_out[WEST] (signal_dspin_int_rsp_h_dec[x][y]); 1443 1444 clusters[x][y]->p_dspin_int_m2p_out[EAST] (signal_dspin_int_m2p_h_inc[x][y]); 1445 clusters[x+1][y]->p_dspin_int_m2p_in[WEST] (signal_dspin_int_m2p_h_inc[x][y]); 1446 clusters[x][y]->p_dspin_int_m2p_in[EAST] (signal_dspin_int_m2p_h_dec[x][y]); 1447 clusters[x+1][y]->p_dspin_int_m2p_out[WEST] (signal_dspin_int_m2p_h_dec[x][y]); 1448 1449 clusters[x][y]->p_dspin_int_p2m_out[EAST] (signal_dspin_int_p2m_h_inc[x][y]); 1450 clusters[x+1][y]->p_dspin_int_p2m_in[WEST] (signal_dspin_int_p2m_h_inc[x][y]); 1451 clusters[x][y]->p_dspin_int_p2m_in[EAST] (signal_dspin_int_p2m_h_dec[x][y]); 1452 clusters[x+1][y]->p_dspin_int_p2m_out[WEST] (signal_dspin_int_p2m_h_dec[x][y]); 1453 1454 clusters[x][y]->p_dspin_int_cla_out[EAST] (signal_dspin_int_cla_h_inc[x][y]); 1455 clusters[x+1][y]->p_dspin_int_cla_in[WEST] (signal_dspin_int_cla_h_inc[x][y]); 1456 clusters[x][y]->p_dspin_int_cla_in[EAST] (signal_dspin_int_cla_h_dec[x][y]); 1457 clusters[x+1][y]->p_dspin_int_cla_out[WEST] (signal_dspin_int_cla_h_dec[x][y]); 1303 1458 1304 1459 clusters[x][y]->p_dspin_ram_cmd_out[EAST] (signal_dspin_ram_cmd_h_inc[x][y]); … … 1306 1461 clusters[x][y]->p_dspin_ram_cmd_in[EAST] (signal_dspin_ram_cmd_h_dec[x][y]); 1307 1462 clusters[x+1][y]->p_dspin_ram_cmd_out[WEST] (signal_dspin_ram_cmd_h_dec[x][y]); 1463 1308 1464 clusters[x][y]->p_dspin_ram_rsp_out[EAST] (signal_dspin_ram_rsp_h_inc[x][y]); 1309 1465 clusters[x+1][y]->p_dspin_ram_rsp_in[WEST] (signal_dspin_ram_rsp_h_inc[x][y]); … … 1323 1479 for (size_t x = 0; x < XMAX; x++) 1324 1480 { 1325 for (size_t k = 0; k < 3; k++) 1326 { 1327 clusters[x][y]->p_dspin_int_cmd_out[NORTH][k] (signal_dspin_int_cmd_v_inc[x][y][k]); 1328 clusters[x][y+1]->p_dspin_int_cmd_in[SOUTH][k] (signal_dspin_int_cmd_v_inc[x][y][k]); 1329 clusters[x][y]->p_dspin_int_cmd_in[NORTH][k] (signal_dspin_int_cmd_v_dec[x][y][k]); 1330 clusters[x][y+1]->p_dspin_int_cmd_out[SOUTH][k] (signal_dspin_int_cmd_v_dec[x][y][k]); 1331 } 1332 1333 for (size_t k = 0; k < 2; k++) 1334 { 1335 clusters[x][y]->p_dspin_int_rsp_out[NORTH][k] (signal_dspin_int_rsp_v_inc[x][y][k]); 1336 clusters[x][y+1]->p_dspin_int_rsp_in[SOUTH][k] (signal_dspin_int_rsp_v_inc[x][y][k]); 1337 clusters[x][y]->p_dspin_int_rsp_in[NORTH][k] (signal_dspin_int_rsp_v_dec[x][y][k]); 1338 clusters[x][y+1]->p_dspin_int_rsp_out[SOUTH][k] (signal_dspin_int_rsp_v_dec[x][y][k]); 1339 } 1481 clusters[x][y]->p_dspin_int_cmd_out[NORTH] (signal_dspin_int_cmd_v_inc[x][y]); 1482 clusters[x][y+1]->p_dspin_int_cmd_in[SOUTH] (signal_dspin_int_cmd_v_inc[x][y]); 1483 clusters[x][y]->p_dspin_int_cmd_in[NORTH] (signal_dspin_int_cmd_v_dec[x][y]); 1484 clusters[x][y+1]->p_dspin_int_cmd_out[SOUTH] (signal_dspin_int_cmd_v_dec[x][y]); 1485 1486 clusters[x][y]->p_dspin_int_rsp_out[NORTH] (signal_dspin_int_rsp_v_inc[x][y]); 1487 clusters[x][y+1]->p_dspin_int_rsp_in[SOUTH] (signal_dspin_int_rsp_v_inc[x][y]); 1488 clusters[x][y]->p_dspin_int_rsp_in[NORTH] (signal_dspin_int_rsp_v_dec[x][y]); 1489 clusters[x][y+1]->p_dspin_int_rsp_out[SOUTH] (signal_dspin_int_rsp_v_dec[x][y]); 1490 1491 clusters[x][y]->p_dspin_int_m2p_out[NORTH] (signal_dspin_int_m2p_v_inc[x][y]); 1492 clusters[x][y+1]->p_dspin_int_m2p_in[SOUTH] (signal_dspin_int_m2p_v_inc[x][y]); 1493 clusters[x][y]->p_dspin_int_m2p_in[NORTH] (signal_dspin_int_m2p_v_dec[x][y]); 1494 clusters[x][y+1]->p_dspin_int_m2p_out[SOUTH] (signal_dspin_int_m2p_v_dec[x][y]); 1495 1496 clusters[x][y]->p_dspin_int_p2m_out[NORTH] (signal_dspin_int_p2m_v_inc[x][y]); 1497 clusters[x][y+1]->p_dspin_int_p2m_in[SOUTH] (signal_dspin_int_p2m_v_inc[x][y]); 1498 clusters[x][y]->p_dspin_int_p2m_in[NORTH] (signal_dspin_int_p2m_v_dec[x][y]); 1499 clusters[x][y+1]->p_dspin_int_p2m_out[SOUTH] (signal_dspin_int_p2m_v_dec[x][y]); 1500 1501 clusters[x][y]->p_dspin_int_cla_out[NORTH] (signal_dspin_int_cla_v_inc[x][y]); 1502 clusters[x][y+1]->p_dspin_int_cla_in[SOUTH] (signal_dspin_int_cla_v_inc[x][y]); 1503 clusters[x][y]->p_dspin_int_cla_in[NORTH] (signal_dspin_int_cla_v_dec[x][y]); 1504 clusters[x][y+1]->p_dspin_int_cla_out[SOUTH] (signal_dspin_int_cla_v_dec[x][y]); 1340 1505 1341 1506 clusters[x][y]->p_dspin_ram_cmd_out[NORTH] (signal_dspin_ram_cmd_v_inc[x][y]); … … 1343 1508 clusters[x][y]->p_dspin_ram_cmd_in[NORTH] (signal_dspin_ram_cmd_v_dec[x][y]); 1344 1509 clusters[x][y+1]->p_dspin_ram_cmd_out[SOUTH] (signal_dspin_ram_cmd_v_dec[x][y]); 1510 1345 1511 clusters[x][y]->p_dspin_ram_rsp_out[NORTH] (signal_dspin_ram_rsp_v_inc[x][y]); 1346 1512 clusters[x][y+1]->p_dspin_ram_rsp_in[SOUTH] (signal_dspin_ram_rsp_v_inc[x][y]); … … 1356 1522 for (size_t y = 0; y < YMAX; y++) 1357 1523 { 1358 for (size_t k = 0; k < 3; k++) 1359 { 1360 clusters[0][y]->p_dspin_int_cmd_in[WEST][k] (signal_dspin_false_int_cmd_in[0][y][WEST][k]); 1361 clusters[0][y]->p_dspin_int_cmd_out[WEST][k] (signal_dspin_false_int_cmd_out[0][y][WEST][k]); 1362 clusters[XMAX-1][y]->p_dspin_int_cmd_in[EAST][k] (signal_dspin_false_int_cmd_in[XMAX-1][y][EAST][k]); 1363 clusters[XMAX-1][y]->p_dspin_int_cmd_out[EAST][k] (signal_dspin_false_int_cmd_out[XMAX-1][y][EAST][k]); 1364 } 1365 1366 for (size_t k = 0; k < 2; k++) 1367 { 1368 clusters[0][y]->p_dspin_int_rsp_in[WEST][k] (signal_dspin_false_int_rsp_in[0][y][WEST][k]); 1369 clusters[0][y]->p_dspin_int_rsp_out[WEST][k] (signal_dspin_false_int_rsp_out[0][y][WEST][k]); 1370 clusters[XMAX-1][y]->p_dspin_int_rsp_in[EAST][k] (signal_dspin_false_int_rsp_in[XMAX-1][y][EAST][k]); 1371 clusters[XMAX-1][y]->p_dspin_int_rsp_out[EAST][k] (signal_dspin_false_int_rsp_out[XMAX-1][y][EAST][k]); 1372 } 1373 1374 clusters[0][y]->p_dspin_ram_cmd_in[WEST] (signal_dspin_false_ram_cmd_in[0][y][WEST]); 1375 clusters[0][y]->p_dspin_ram_cmd_out[WEST] (signal_dspin_false_ram_cmd_out[0][y][WEST]); 1376 clusters[0][y]->p_dspin_ram_rsp_in[WEST] (signal_dspin_false_ram_rsp_in[0][y][WEST]); 1377 clusters[0][y]->p_dspin_ram_rsp_out[WEST] (signal_dspin_false_ram_rsp_out[0][y][WEST]); 1378 1379 clusters[XMAX-1][y]->p_dspin_ram_cmd_in[EAST] (signal_dspin_false_ram_cmd_in[XMAX-1][y][EAST]); 1380 clusters[XMAX-1][y]->p_dspin_ram_cmd_out[EAST] (signal_dspin_false_ram_cmd_out[XMAX-1][y][EAST]); 1381 clusters[XMAX-1][y]->p_dspin_ram_rsp_in[EAST] (signal_dspin_false_ram_rsp_in[XMAX-1][y][EAST]); 1382 clusters[XMAX-1][y]->p_dspin_ram_rsp_out[EAST] (signal_dspin_false_ram_rsp_out[XMAX-1][y][EAST]); 1524 clusters[0][y]->p_dspin_int_cmd_in[WEST] (signal_dspin_false_int_cmd_in[0][y][WEST]); 1525 clusters[0][y]->p_dspin_int_cmd_out[WEST] (signal_dspin_false_int_cmd_out[0][y][WEST]); 1526 clusters[XMAX-1][y]->p_dspin_int_cmd_in[EAST] (signal_dspin_false_int_cmd_in[XMAX-1][y][EAST]); 1527 clusters[XMAX-1][y]->p_dspin_int_cmd_out[EAST] (signal_dspin_false_int_cmd_out[XMAX-1][y][EAST]); 1528 1529 clusters[0][y]->p_dspin_int_rsp_in[WEST] (signal_dspin_false_int_rsp_in[0][y][WEST]); 1530 clusters[0][y]->p_dspin_int_rsp_out[WEST] (signal_dspin_false_int_rsp_out[0][y][WEST]); 1531 clusters[XMAX-1][y]->p_dspin_int_rsp_in[EAST] (signal_dspin_false_int_rsp_in[XMAX-1][y][EAST]); 1532 clusters[XMAX-1][y]->p_dspin_int_rsp_out[EAST] (signal_dspin_false_int_rsp_out[XMAX-1][y][EAST]); 1533 1534 clusters[0][y]->p_dspin_int_m2p_in[WEST] (signal_dspin_false_int_m2p_in[0][y][WEST]); 1535 clusters[0][y]->p_dspin_int_m2p_out[WEST] (signal_dspin_false_int_m2p_out[0][y][WEST]); 1536 clusters[XMAX-1][y]->p_dspin_int_m2p_in[EAST] (signal_dspin_false_int_m2p_in[XMAX-1][y][EAST]); 1537 clusters[XMAX-1][y]->p_dspin_int_m2p_out[EAST] (signal_dspin_false_int_m2p_out[XMAX-1][y][EAST]); 1538 1539 clusters[0][y]->p_dspin_int_p2m_in[WEST] (signal_dspin_false_int_p2m_in[0][y][WEST]); 1540 clusters[0][y]->p_dspin_int_p2m_out[WEST] (signal_dspin_false_int_p2m_out[0][y][WEST]); 1541 clusters[XMAX-1][y]->p_dspin_int_p2m_in[EAST] (signal_dspin_false_int_p2m_in[XMAX-1][y][EAST]); 1542 clusters[XMAX-1][y]->p_dspin_int_p2m_out[EAST] (signal_dspin_false_int_p2m_out[XMAX-1][y][EAST]); 1543 1544 clusters[0][y]->p_dspin_int_cla_in[WEST] (signal_dspin_false_int_cla_in[0][y][WEST]); 1545 clusters[0][y]->p_dspin_int_cla_out[WEST] (signal_dspin_false_int_cla_out[0][y][WEST]); 1546 clusters[XMAX-1][y]->p_dspin_int_cla_in[EAST] (signal_dspin_false_int_cla_in[XMAX-1][y][EAST]); 1547 clusters[XMAX-1][y]->p_dspin_int_cla_out[EAST] (signal_dspin_false_int_cla_out[XMAX-1][y][EAST]); 1548 1549 clusters[0][y]->p_dspin_ram_cmd_in[WEST] (signal_dspin_false_ram_cmd_in[0][y][WEST]); 1550 clusters[0][y]->p_dspin_ram_cmd_out[WEST] (signal_dspin_false_ram_cmd_out[0][y][WEST]); 1551 clusters[XMAX-1][y]->p_dspin_ram_cmd_in[EAST] (signal_dspin_false_ram_cmd_in[XMAX-1][y][EAST]); 1552 clusters[XMAX-1][y]->p_dspin_ram_cmd_out[EAST] (signal_dspin_false_ram_cmd_out[XMAX-1][y][EAST]); 1553 1554 clusters[0][y]->p_dspin_ram_rsp_in[WEST] (signal_dspin_false_ram_rsp_in[0][y][WEST]); 1555 clusters[0][y]->p_dspin_ram_rsp_out[WEST] (signal_dspin_false_ram_rsp_out[0][y][WEST]); 1556 clusters[XMAX-1][y]->p_dspin_ram_rsp_in[EAST] (signal_dspin_false_ram_rsp_in[XMAX-1][y][EAST]); 1557 clusters[XMAX-1][y]->p_dspin_ram_rsp_out[EAST] (signal_dspin_false_ram_rsp_out[XMAX-1][y][EAST]); 1383 1558 } 1384 1559 … … 1388 1563 for (size_t x = 0; x < XMAX; x++) 1389 1564 { 1390 for (size_t k = 0; k < 3; k++) 1391 { 1392 clusters[x][0]->p_dspin_int_cmd_in[SOUTH][k] (signal_dspin_false_int_cmd_in[x][0][SOUTH][k]); 1393 clusters[x][0]->p_dspin_int_cmd_out[SOUTH][k] (signal_dspin_false_int_cmd_out[x][0][SOUTH][k]); 1394 clusters[x][YMAX-1]->p_dspin_int_cmd_in[NORTH][k] (signal_dspin_false_int_cmd_in[x][YMAX-1][NORTH][k]); 1395 clusters[x][YMAX-1]->p_dspin_int_cmd_out[NORTH][k] (signal_dspin_false_int_cmd_out[x][YMAX-1][NORTH][k]); 1396 } 1397 1398 for (size_t k = 0; k < 2; k++) 1399 { 1400 clusters[x][0]->p_dspin_int_rsp_in[SOUTH][k] (signal_dspin_false_int_rsp_in[x][0][SOUTH][k]); 1401 clusters[x][0]->p_dspin_int_rsp_out[SOUTH][k] (signal_dspin_false_int_rsp_out[x][0][SOUTH][k]); 1402 clusters[x][YMAX-1]->p_dspin_int_rsp_in[NORTH][k] (signal_dspin_false_int_rsp_in[x][YMAX-1][NORTH][k]); 1403 clusters[x][YMAX-1]->p_dspin_int_rsp_out[NORTH][k] (signal_dspin_false_int_rsp_out[x][YMAX-1][NORTH][k]); 1404 } 1405 1406 clusters[x][0]->p_dspin_ram_cmd_in[SOUTH] (signal_dspin_false_ram_cmd_in[x][0][SOUTH]); 1407 clusters[x][0]->p_dspin_ram_cmd_out[SOUTH] (signal_dspin_false_ram_cmd_out[x][0][SOUTH]); 1408 clusters[x][0]->p_dspin_ram_rsp_in[SOUTH] (signal_dspin_false_ram_rsp_in[x][0][SOUTH]); 1409 clusters[x][0]->p_dspin_ram_rsp_out[SOUTH] (signal_dspin_false_ram_rsp_out[x][0][SOUTH]); 1410 1411 clusters[x][YMAX-1]->p_dspin_ram_cmd_in[NORTH] (signal_dspin_false_ram_cmd_in[x][YMAX-1][NORTH]); 1412 clusters[x][YMAX-1]->p_dspin_ram_cmd_out[NORTH] (signal_dspin_false_ram_cmd_out[x][YMAX-1][NORTH]); 1413 clusters[x][YMAX-1]->p_dspin_ram_rsp_in[NORTH] (signal_dspin_false_ram_rsp_in[x][YMAX-1][NORTH]); 1414 clusters[x][YMAX-1]->p_dspin_ram_rsp_out[NORTH] (signal_dspin_false_ram_rsp_out[x][YMAX-1][NORTH]); 1565 clusters[x][0]->p_dspin_int_cmd_in[SOUTH] (signal_dspin_false_int_cmd_in[x][0][SOUTH]); 1566 clusters[x][0]->p_dspin_int_cmd_out[SOUTH] (signal_dspin_false_int_cmd_out[x][0][SOUTH]); 1567 clusters[x][YMAX-1]->p_dspin_int_cmd_in[NORTH] (signal_dspin_false_int_cmd_in[x][YMAX-1][NORTH]); 1568 clusters[x][YMAX-1]->p_dspin_int_cmd_out[NORTH] (signal_dspin_false_int_cmd_out[x][YMAX-1][NORTH]); 1569 1570 clusters[x][0]->p_dspin_int_rsp_in[SOUTH] (signal_dspin_false_int_rsp_in[x][0][SOUTH]); 1571 clusters[x][0]->p_dspin_int_rsp_out[SOUTH] (signal_dspin_false_int_rsp_out[x][0][SOUTH]); 1572 clusters[x][YMAX-1]->p_dspin_int_rsp_in[NORTH] (signal_dspin_false_int_rsp_in[x][YMAX-1][NORTH]); 1573 clusters[x][YMAX-1]->p_dspin_int_rsp_out[NORTH] (signal_dspin_false_int_rsp_out[x][YMAX-1][NORTH]); 1574 1575 clusters[x][0]->p_dspin_int_m2p_in[SOUTH] (signal_dspin_false_int_m2p_in[x][0][SOUTH]); 1576 clusters[x][0]->p_dspin_int_m2p_out[SOUTH] (signal_dspin_false_int_m2p_out[x][0][SOUTH]); 1577 clusters[x][YMAX-1]->p_dspin_int_m2p_in[NORTH] (signal_dspin_false_int_m2p_in[x][YMAX-1][NORTH]); 1578 clusters[x][YMAX-1]->p_dspin_int_m2p_out[NORTH] (signal_dspin_false_int_m2p_out[x][YMAX-1][NORTH]); 1579 1580 clusters[x][0]->p_dspin_int_p2m_in[SOUTH] (signal_dspin_false_int_p2m_in[x][0][SOUTH]); 1581 clusters[x][0]->p_dspin_int_p2m_out[SOUTH] (signal_dspin_false_int_p2m_out[x][0][SOUTH]); 1582 clusters[x][YMAX-1]->p_dspin_int_p2m_in[NORTH] (signal_dspin_false_int_p2m_in[x][YMAX-1][NORTH]); 1583 clusters[x][YMAX-1]->p_dspin_int_p2m_out[NORTH] (signal_dspin_false_int_p2m_out[x][YMAX-1][NORTH]); 1584 1585 clusters[x][0]->p_dspin_int_cla_in[SOUTH] (signal_dspin_false_int_cla_in[x][0][SOUTH]); 1586 clusters[x][0]->p_dspin_int_cla_out[SOUTH] (signal_dspin_false_int_cla_out[x][0][SOUTH]); 1587 clusters[x][YMAX-1]->p_dspin_int_cla_in[NORTH] (signal_dspin_false_int_cla_in[x][YMAX-1][NORTH]); 1588 clusters[x][YMAX-1]->p_dspin_int_cla_out[NORTH] (signal_dspin_false_int_cla_out[x][YMAX-1][NORTH]); 1589 1590 clusters[x][0]->p_dspin_ram_cmd_in[SOUTH] (signal_dspin_false_ram_cmd_in[x][0][SOUTH]); 1591 clusters[x][0]->p_dspin_ram_cmd_out[SOUTH] (signal_dspin_false_ram_cmd_out[x][0][SOUTH]); 1592 clusters[x][YMAX-1]->p_dspin_ram_cmd_in[NORTH] (signal_dspin_false_ram_cmd_in[x][YMAX-1][NORTH]); 1593 clusters[x][YMAX-1]->p_dspin_ram_cmd_out[NORTH] (signal_dspin_false_ram_cmd_out[x][YMAX-1][NORTH]); 1594 1595 clusters[x][0]->p_dspin_ram_rsp_in[SOUTH] (signal_dspin_false_ram_rsp_in[x][0][SOUTH]); 1596 clusters[x][0]->p_dspin_ram_rsp_out[SOUTH] (signal_dspin_false_ram_rsp_out[x][0][SOUTH]); 1597 clusters[x][YMAX-1]->p_dspin_ram_rsp_in[NORTH] (signal_dspin_false_ram_rsp_in[x][YMAX-1][NORTH]); 1598 clusters[x][YMAX-1]->p_dspin_ram_rsp_out[NORTH] (signal_dspin_false_ram_rsp_out[x][YMAX-1][NORTH]); 1415 1599 } 1416 1600 … … 1433 1617 for (size_t a = 0; a < 4; a++) 1434 1618 { 1435 for (size_t k = 0; k < 3; k++) 1436 { 1437 signal_dspin_false_int_cmd_in[x][y][a][k].write = false; 1438 signal_dspin_false_int_cmd_in[x][y][a][k].read = true; 1439 signal_dspin_false_int_cmd_out[x][y][a][k].write = false; 1440 signal_dspin_false_int_cmd_out[x][y][a][k].read = true; 1441 } 1442 1443 for (size_t k = 0; k < 2; k++) 1444 { 1445 signal_dspin_false_int_rsp_in[x][y][a][k].write = false; 1446 signal_dspin_false_int_rsp_in[x][y][a][k].read = true; 1447 signal_dspin_false_int_rsp_out[x][y][a][k].write = false; 1448 signal_dspin_false_int_rsp_out[x][y][a][k].read = true; 1449 } 1619 signal_dspin_false_int_cmd_in[x][y][a].write = false; 1620 signal_dspin_false_int_cmd_in[x][y][a].read = true; 1621 signal_dspin_false_int_cmd_out[x][y][a].write = false; 1622 signal_dspin_false_int_cmd_out[x][y][a].read = true; 1623 1624 signal_dspin_false_int_rsp_in[x][y][a].write = false; 1625 signal_dspin_false_int_rsp_in[x][y][a].read = true; 1626 signal_dspin_false_int_rsp_out[x][y][a].write = false; 1627 signal_dspin_false_int_rsp_out[x][y][a].read = true; 1628 1629 signal_dspin_false_int_m2p_in[x][y][a].write = false; 1630 signal_dspin_false_int_m2p_in[x][y][a].read = true; 1631 signal_dspin_false_int_m2p_out[x][y][a].write = false; 1632 signal_dspin_false_int_m2p_out[x][y][a].read = true; 1633 1634 signal_dspin_false_int_p2m_in[x][y][a].write = false; 1635 signal_dspin_false_int_p2m_in[x][y][a].read = true; 1636 signal_dspin_false_int_p2m_out[x][y][a].write = false; 1637 signal_dspin_false_int_p2m_out[x][y][a].read = true; 1638 1639 signal_dspin_false_int_cla_in[x][y][a].write = false; 1640 signal_dspin_false_int_cla_in[x][y][a].read = true; 1641 signal_dspin_false_int_cla_out[x][y][a].write = false; 1642 signal_dspin_false_int_cla_out[x][y][a].read = true; 1450 1643 1451 1644 signal_dspin_false_ram_cmd_in[x][y][a].write = false; … … 1493 1686 // clusters[0][0]->proc[0]->cache_monitor(0x800080ULL); 1494 1687 1495 // Monitor a specific address for one L2 cache 1496 // clusters[0][0]->memc->cache_monitor( 0x 800080ULL, false ); // full line1688 // Monitor a specific address for one L2 cache (single word if second argument true) 1689 // clusters[0][0]->memc->cache_monitor( 0x00FF8000ULL, false ); 1497 1690 1498 1691 // Monitor a specific address for one XRAM … … 1523 1716 1524 1717 // coprocessor in cluster(x,y) 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1718 // clusters[x][y]->mwmr->print_trace(); 1719 // std::ostringstream mwmr_tgt_signame; 1720 // mwmr_tgt_signame << "[SIG]MWMR_TGT_" << x << "_" << y; 1721 // clusters[x][y]->signal_int_vci_tgt_mwmr.print_trace(mwmr_tgt_signame.str()); 1722 // std::ostringstream mwmr_ini_signame; 1723 // mwmr_ini_signame << "[SIG]MWMR_INI_" << x << "_" << y; 1724 // clusters[x][y]->signal_int_vci_ini_mwmr.print_trace(mwmr_ini_signame.str()); 1725 // if ( USE_MWR_CPY ) clusters[x][y]->cpy->print_trace(); 1726 // if ( USE_MWR_DCT ) clusters[x][y]->dct->print_trace(); 1727 // if ( USE_MWR_GCD ) clusters[x][y]->gcd->print_trace(); 1535 1728 1536 1729 // local interrupts in cluster(x,y) … … 1597 1790 // signal_vci_tgt_iob0.print_trace("[SIG]IOB0_IOX_TGT"); 1598 1791 1599 1600 1601 1792 // cdma->print_trace(); 1793 // signal_vci_tgt_cdma.print_trace("[SIG]CDMA_TGT"); 1794 // signal_vci_ini_cdma.print_trace("[SIG]CDMA_INI"); 1602 1795 1603 1796 // brom->print_trace(); … … 1607 1800 // signal_vci_tgt_mtty.print_trace("[SIG]MTTY_TGT"); 1608 1801 1609 // disk->print_trace(); 1610 // signal_vci_tgt_disk.print_trace("[SIG]DISK_TGT"); 1611 // signal_vci_ini_disk.print_trace("[SIG]DISK_INI"); 1612 1613 mnic->print_trace( 0x000 ); 1614 signal_vci_tgt_mnic.print_trace("[SIG]MNIC_TGT"); 1802 disk->print_trace(); 1803 signal_vci_tgt_disk.print_trace("[SIG]DISK_TGT"); 1804 signal_vci_ini_disk.print_trace("[SIG]DISK_INI"); 1805 1806 #if ( USE_IOC_SDC ) 1807 card->print_trace(); 1808 #endif 1809 1810 // mnic->print_trace( 0x000 ); 1811 // signal_vci_tgt_mnic.print_trace("[SIG]MNIC_TGT"); 1615 1812 1616 1813 // fbuf->print_trace(); … … 1624 1821 1625 1822 // interrupts 1626 if (signal_irq_disk) std::cout << "### IRQ_DISK ACTIVE" << std::endl; 1627 if (signal_irq_mtty_rx[0]) std::cout << "### IRQ_MTTY_RX[0] ACTIVE" << std::endl; 1628 if (signal_irq_mnic_rx[0]) std::cout << "### IRQ_MNIC_RX[0] ACTIVE" << std::endl; 1629 if (signal_irq_mnic_rx[1]) std::cout << "### IRQ_MNIC_RX[1] ACTIVE" << std::endl; 1630 if (signal_irq_mnic_tx[0]) std::cout << "### IRQ_MNIC_TX[0] ACTIVE" << std::endl; 1631 if (signal_irq_mnic_tx[1]) std::cout << "### IRQ_MNIC_TX[1] ACTIVE" << std::endl; 1823 if ( signal_irq_disk.read() ) 1824 std::cout << "### IRQ_DISK ACTIVE" << std::endl; 1825 1826 if ( signal_irq_mtty_rx[0].read() ) 1827 std::cout << "### IRQ_MTTY_RX[0] ACTIVE" << std::endl; 1828 1829 if ( signal_irq_mnic_rx[0].read() ) 1830 std::cout << "### IRQ_MNIC_RX[0] ACTIVE" << std::endl; 1831 1832 if ( signal_irq_mnic_tx[0].read() ) 1833 std::cout << "### IRQ_MNIC_TX[0] ACTIVE" << std::endl; 1632 1834 } 1633 1835 } -
trunk/platforms/tsar_generic_iob/top.desc
r965 r1002 55 55 cell_size = vci_cell_size_ext), 56 56 57 Uses('caba:vci_ahci_sdc', 58 cell_size = vci_cell_size_ext), 59 60 Uses('caba:sd_card'), 61 57 62 # NIC 58 63 Uses('caba:vci_multi_nic', -
trunk/platforms/tsar_generic_iob/tsar_iob_cluster/caba/metadata/tsar_iob_cluster.sd
r972 r1002 80 80 dspin_rsp_width = parameter.Reference('dspin_int_rsp_width')), 81 81 82 Uses('caba: virtual_dspin_router',82 Uses('caba:dspin_router', 83 83 flit_width = parameter.Reference('dspin_int_cmd_width')), 84 84 85 Uses('caba: virtual_dspin_router',85 Uses('caba:dspin_router', 86 86 flit_width = parameter.Reference('dspin_int_rsp_width')), 87 87 -
trunk/platforms/tsar_generic_iob/tsar_iob_cluster/caba/source/include/tsar_iob_cluster.h
r972 r1002 27 27 #include "vci_dspin_target_wrapper.h" 28 28 #include "dspin_router.h" 29 #include "virtual_dspin_router.h"30 29 #include "vci_mwmr_dma.h" 31 30 #include "vci_mem_cache.h" … … 62 61 63 62 // These arrays of ports are used to connect the INT & RAM networks in top cell 64 soclib::caba::DspinOutput<dspin_int_cmd_width>** p_dspin_int_cmd_out; 65 soclib::caba::DspinInput<dspin_int_cmd_width>** p_dspin_int_cmd_in; 66 soclib::caba::DspinOutput<dspin_int_rsp_width>** p_dspin_int_rsp_out; 67 soclib::caba::DspinInput<dspin_int_rsp_width>** p_dspin_int_rsp_in; 63 soclib::caba::DspinOutput<dspin_int_cmd_width>* p_dspin_int_cmd_out; 64 soclib::caba::DspinInput<dspin_int_cmd_width>* p_dspin_int_cmd_in; 65 soclib::caba::DspinOutput<dspin_int_rsp_width>* p_dspin_int_rsp_out; 66 soclib::caba::DspinInput<dspin_int_rsp_width>* p_dspin_int_rsp_in; 67 soclib::caba::DspinOutput<dspin_int_cmd_width>* p_dspin_int_m2p_out; 68 soclib::caba::DspinInput<dspin_int_cmd_width>* p_dspin_int_m2p_in; 69 soclib::caba::DspinOutput<dspin_int_rsp_width>* p_dspin_int_p2m_out; 70 soclib::caba::DspinInput<dspin_int_rsp_width>* p_dspin_int_p2m_in; 71 soclib::caba::DspinOutput<dspin_int_cmd_width>* p_dspin_int_cla_out; 72 soclib::caba::DspinInput<dspin_int_cmd_width>* p_dspin_int_cla_in; 68 73 69 74 soclib::caba::DspinOutput<dspin_ram_cmd_width>* p_dspin_ram_cmd_out; … … 87 92 DspinSignals<dspin_int_cmd_width> signal_int_dspin_cmd_l2g_d; 88 93 DspinSignals<dspin_int_cmd_width> signal_int_dspin_cmd_g2l_d; 94 95 DspinSignals<dspin_int_rsp_width> signal_int_dspin_rsp_l2g_d; 96 DspinSignals<dspin_int_rsp_width> signal_int_dspin_rsp_g2l_d; 97 89 98 DspinSignals<dspin_int_cmd_width> signal_int_dspin_m2p_l2g_c; 90 99 DspinSignals<dspin_int_cmd_width> signal_int_dspin_m2p_g2l_c; 91 DspinSignals<dspin_int_cmd_width> signal_int_dspin_clack_l2g_c; 92 DspinSignals<dspin_int_cmd_width> signal_int_dspin_clack_g2l_c; 93 DspinSignals<dspin_int_rsp_width> signal_int_dspin_rsp_l2g_d; 94 DspinSignals<dspin_int_rsp_width> signal_int_dspin_rsp_g2l_d; 100 95 101 DspinSignals<dspin_int_rsp_width> signal_int_dspin_p2m_l2g_c; 96 102 DspinSignals<dspin_int_rsp_width> signal_int_dspin_p2m_g2l_c; 103 104 DspinSignals<dspin_int_cmd_width> signal_int_dspin_cla_l2g_c; 105 DspinSignals<dspin_int_cmd_width> signal_int_dspin_cla_g2l_c; 97 106 98 107 // INT network VCI signals between VCI components and VCI local crossbar … … 111 120 // Coherence DSPIN signals between DSPIN local crossbars and CC components 112 121 DspinSignals<dspin_int_cmd_width> signal_int_dspin_m2p_memc; 113 DspinSignals<dspin_int_cmd_width> signal_int_dspin_cla ck_memc;122 DspinSignals<dspin_int_cmd_width> signal_int_dspin_cla_memc; 114 123 DspinSignals<dspin_int_rsp_width> signal_int_dspin_p2m_memc; 115 124 DspinSignals<dspin_int_cmd_width> signal_int_dspin_m2p_proc[8]; 116 DspinSignals<dspin_int_cmd_width> signal_int_dspin_cla ck_proc[8];125 DspinSignals<dspin_int_cmd_width> signal_int_dspin_cla_proc[8]; 117 126 DspinSignals<dspin_int_rsp_width> signal_int_dspin_p2m_proc[8]; 118 127 … … 174 183 DspinLocalCrossbar<dspin_int_cmd_width>* int_xbar_clack_c; 175 184 176 VirtualDspinRouter<dspin_int_cmd_width>* int_router_cmd; 177 VirtualDspinRouter<dspin_int_rsp_width>* int_router_rsp; 185 DspinRouter<dspin_int_cmd_width>* int_router_cmd; 186 DspinRouter<dspin_int_rsp_width>* int_router_rsp; 187 DspinRouter<dspin_int_cmd_width>* int_router_m2p; 188 DspinRouter<dspin_int_rsp_width>* int_router_p2m; 189 DspinRouter<dspin_int_cmd_width>* int_router_cla; 178 190 179 191 VciSimpleRam<vci_param_ext>* xram; -
trunk/platforms/tsar_generic_iob/tsar_iob_cluster/caba/source/src/tsar_iob_cluster.cpp
r972 r1002 97 97 98 98 // Vectors of DSPIN ports for inter-cluster communications 99 p_dspin_int_cmd_in = alloc_elems<DspinInput<dspin_int_cmd_width> >("p_int_cmd_in", 4, 3); 100 p_dspin_int_cmd_out = alloc_elems<DspinOutput<dspin_int_cmd_width> >("p_int_cmd_out", 4, 3); 101 p_dspin_int_rsp_in = alloc_elems<DspinInput<dspin_int_rsp_width> >("p_int_rsp_in", 4, 2); 102 p_dspin_int_rsp_out = alloc_elems<DspinOutput<dspin_int_rsp_width> >("p_int_rsp_out", 4, 2); 99 p_dspin_int_cmd_in = alloc_elems<DspinInput<dspin_int_cmd_width> >("p_int_cmd_in", 4); 100 p_dspin_int_cmd_out = alloc_elems<DspinOutput<dspin_int_cmd_width> >("p_int_cmd_out", 4); 101 102 p_dspin_int_rsp_in = alloc_elems<DspinInput<dspin_int_rsp_width> >("p_int_rsp_in", 4); 103 p_dspin_int_rsp_out = alloc_elems<DspinOutput<dspin_int_rsp_width> >("p_int_rsp_out", 4); 104 105 p_dspin_int_m2p_in = alloc_elems<DspinInput<dspin_int_cmd_width> >("p_int_m2p_in", 4); 106 p_dspin_int_m2p_out = alloc_elems<DspinOutput<dspin_int_cmd_width> >("p_int_m2p_out", 4); 107 108 p_dspin_int_p2m_in = alloc_elems<DspinInput<dspin_int_rsp_width> >("p_int_p2m_in", 4); 109 p_dspin_int_p2m_out = alloc_elems<DspinOutput<dspin_int_rsp_width> >("p_int_p2m_out", 4); 110 111 p_dspin_int_cla_in = alloc_elems<DspinInput<dspin_int_cmd_width> >("p_int_cla_in", 4); 112 p_dspin_int_cla_out = alloc_elems<DspinOutput<dspin_int_cmd_width> >("p_int_cla_out", 4); 103 113 104 114 p_dspin_ram_cmd_in = alloc_elems<DspinInput<dspin_ram_cmd_width> >("p_ext_cmd_in", 4); 105 115 p_dspin_ram_cmd_out = alloc_elems<DspinOutput<dspin_ram_cmd_width> >("p_ext_cmd_out", 4); 116 106 117 p_dspin_ram_rsp_in = alloc_elems<DspinInput<dspin_ram_rsp_width> >("p_ext_rsp_in", 4); 107 118 p_dspin_ram_rsp_out = alloc_elems<DspinOutput<dspin_ram_rsp_width> >("p_ext_rsp_out", 4); … … 114 125 } 115 126 116 ///////////////////////////////////////////////////////////////////////////// 127 ////////////////////////////////////////////////////////////////////////////////// 117 128 // Hardware components 118 ///////////////////////////////////////////////////////////////////////////// 119 120 //////////// PROCS 129 ////////////////////////////////////////////////////////////////////////////////// 130 131 //////////// PROCS ///////////////////////////////////////////////////////////// 121 132 for (size_t p = 0; p < nb_procs; p++) 122 133 { … … 147 158 } 148 159 149 /////////// MEMC160 //////////// MEMC ///////////////////////////////////////////////////////////// 150 161 std::ostringstream s_memc; 151 162 s_memc << "memc_" << x_id << "_" << y_id; … … 178 189 x_width + y_width + l_width); 179 190 180 /////////// XICU 191 /////////// XICU ////////////////////////////////////////////////////////////// 181 192 std::ostringstream s_xicu; 182 193 s_xicu << "xicu_" << x_id << "_" << y_id; … … 190 201 xcu_nb_out); // number of output IRQs 191 202 192 //////////// MWMR controller and coprocessor203 //////////// MWMR controller and COPROC //////////////////////////////////////// 193 204 std::ostringstream s_mwmr; 194 205 std::ostringstream s_copro; … … 244 255 } 245 256 246 /////////// Direct LOCAL_XBAR(S)257 /////////// VCI INT_CMD/RSP LOCAL_XBAR ////////////////////////////////////// 247 258 size_t nb_direct_initiators = is_io ? nb_procs + 2 : nb_procs + 1; 248 259 size_t nb_direct_targets = is_io ? 4 : 3; … … 276 287 x_width + y_width + l_width); 277 288 278 //////////// Coherence LOCAL_XBAR(S)289 //////////// DSPIN INT_M2P LOCAL_XBAR //////////////////////////////////////// 279 290 std::ostringstream s_int_xbar_m2p_c; 280 291 s_int_xbar_m2p_c << "int_xbar_m2p_c_" << x_id << "_" << y_id; … … 291 302 true ); // broacast 292 303 304 //////////// DSPIN INT_P2M LOCAL_XBAR //////////////////////////////////////// 293 305 std::ostringstream s_int_xbar_p2m_c; 294 306 s_int_xbar_p2m_c << "int_xbar_p2m_c_" << x_id << "_" << y_id; … … 305 317 false ); // no broacast 306 318 319 //////////// DSPIN INT_CLA LOCAL_XBAR //////////////////////////////////////// 307 320 std::ostringstream s_int_xbar_clack_c; 308 321 s_int_xbar_clack_c << "int_xbar_clack_c_" << x_id << "_" << y_id; … … 319 332 false); // broadcast 320 333 321 //////////// // INT ROUTER(S)334 //////////// DSPIN INT_CMD ROUTER //////////////////////////////////////////// 322 335 std::ostringstream s_int_router_cmd; 323 s_int_router_cmd << " router_cmd_" << x_id << "_" << y_id;324 int_router_cmd = new VirtualDspinRouter<dspin_int_cmd_width>(336 s_int_router_cmd << "int_router_cmd_" << x_id << "_" << y_id; 337 int_router_cmd = new DspinRouter<dspin_int_cmd_width>( 325 338 s_int_router_cmd.str().c_str(), 326 339 x_id,y_id, // coordinate in the mesh 327 340 x_width, y_width, // x & y fields width 328 3, // nb virtual channels329 341 4,4); // input & output fifo depths 330 342 343 //////////// DSPIN INT_RSP ROUTER //////////////////////////////////////////// 331 344 std::ostringstream s_int_router_rsp; 332 s_int_router_rsp << " router_rsp_" << x_id << "_" << y_id;333 int_router_rsp = new VirtualDspinRouter<dspin_int_rsp_width>(345 s_int_router_rsp << "int_router_rsp_" << x_id << "_" << y_id; 346 int_router_rsp = new DspinRouter<dspin_int_rsp_width>( 334 347 s_int_router_rsp.str().c_str(), 335 x_id,y_id, // routercoordinates in mesh348 x_id,y_id, // coordinates in mesh 336 349 x_width, y_width, // x & y fields width 337 2, // nb virtual channels338 350 4,4); // input & output fifo depths 339 351 340 ////////////// XRAM 352 //////////// DSPIN INT_M2P ROUTER //////////////////////////////////////////// 353 std::ostringstream s_int_router_m2p; 354 s_int_router_m2p << "int_router_m2p_" << x_id << "_" << y_id; 355 int_router_m2p = new DspinRouter<dspin_int_cmd_width>( 356 s_int_router_m2p.str().c_str(), 357 x_id,y_id, // coordinate in the mesh 358 x_width, y_width, // x & y fields width 359 4,4, // input & output fifo depths 360 true); // broadcast supported 361 362 //////////// DSPIN INT_P2M ROUTER //////////////////////////////////////////// 363 std::ostringstream s_int_router_p2m; 364 s_int_router_p2m << "int_router_p2m_" << x_id << "_" << y_id; 365 int_router_p2m = new DspinRouter<dspin_int_rsp_width>( 366 s_int_router_p2m.str().c_str(), 367 x_id,y_id, // coordinates in mesh 368 x_width, y_width, // x & y fields width 369 4,4); // input & output fifo depths 370 371 //////////// DSPIN INT_CLA ROUTER //////////////////////////////////////////// 372 std::ostringstream s_int_router_cla; 373 s_int_router_cla << "int_router_cla_" << x_id << "_" << y_id; 374 int_router_cla = new DspinRouter<dspin_int_cmd_width>( 375 s_int_router_cla.str().c_str(), 376 x_id,y_id, // coordinate in the mesh 377 x_width, y_width, // x & y fields width 378 4,4); // input & output fifo depths 379 380 ////////////// XRAM ///////////////////////////////////////////////////////// 341 381 std::ostringstream s_xram; 342 382 s_xram << "xram_" << x_id << "_" << y_id; … … 356 396 x_width + y_width + l_width); 357 397 358 //////////// / RAM ROUTER(S)398 //////////// DSPIN RAM_CMD ROUTER /////////////////////////////////////////// 359 399 std::ostringstream s_ram_router_cmd; 360 400 s_ram_router_cmd << "ram_router_cmd_" << x_id << "_" << y_id; … … 366 406 4, 4); // input & output fifo depths 367 407 408 //////////// DSPIN RAM_RSP ROUTER /////////////////////////////////////////// 368 409 std::ostringstream s_ram_router_rsp; 369 410 s_ram_router_rsp << "ram_router_rsp_" << x_id << "_" << y_id; … … 376 417 377 418 378 ////////////////////// I/O CLUSTER ONLY /////////////////////// 419 ////////////////////// I/O CLUSTER ONLY /////////////////////////////////// 379 420 if ( is_io ) 380 421 { 381 /////////// IO_BRIDGE 422 /////////// IO_BRIDGE //////////////////////////////////////////////////// 382 423 std::ostringstream s_iob; 383 424 s_iob << "iob_" << x_id << "_" << y_id; … … 406 447 vci_param_int::S); 407 448 449 //////////// DSPIN RAM_CMD LOCAL_XBAR /////////////////////////////////// 408 450 std::ostringstream s_ram_xbar_cmd; 409 451 s_ram_xbar_cmd << "s_ram_xbar_cmd_" << x_id << "_" << y_id; … … 419 461 false); // support broadcast ? 420 462 463 //////////// DSPIN RAM_RSP LOCAL_XBAR /////////////////////////////////// 421 464 std::ostringstream s_ram_xbar_rsp; 422 465 s_ram_xbar_rsp << "s_ram_xbar_rsp_" << x_id << "_" << y_id; … … 431 474 true, // use routing table ? 432 475 false); // support broadcast ? 476 433 477 } // end if IO 434 478 … … 440 484 // : local srcid[memc] = nb_procs 441 485 442 //////////////////////// internal CMD & RSP routers443 int_router_cmd->p_clk (this->p_clk);444 int_router_cmd->p_resetn (this->p_resetn);445 int_router_rsp->p_clk (this->p_clk);446 int_router_rsp->p_resetn (this->p_resetn);447 448 for (int i = 0; i < 4; i++)449 {450 for(int k = 0; k < 3; k++)451 {452 int_router_cmd->p_out[i][k] (this->p_dspin_int_cmd_out[i][k]);453 int_router_cmd->p_in[i][k] (this->p_dspin_int_cmd_in[i][k]);454 }455 456 for(int k = 0; k < 2; k++)457 {458 int_router_rsp->p_out[i][k] (this->p_dspin_int_rsp_out[i][k]);459 int_router_rsp->p_in[i][k] (this->p_dspin_int_rsp_in[i][k]);460 }461 }462 463 // local ports464 int_router_cmd->p_out[4][0] (signal_int_dspin_cmd_g2l_d);465 int_router_cmd->p_out[4][1] (signal_int_dspin_m2p_g2l_c);466 int_router_cmd->p_out[4][2] (signal_int_dspin_clack_g2l_c);467 int_router_cmd->p_in[4][0] (signal_int_dspin_cmd_l2g_d);468 int_router_cmd->p_in[4][1] (signal_int_dspin_m2p_l2g_c);469 int_router_cmd->p_in[4][2] (signal_int_dspin_clack_l2g_c);470 471 int_router_rsp->p_out[4][0] (signal_int_dspin_rsp_g2l_d);472 int_router_rsp->p_out[4][1] (signal_int_dspin_p2m_g2l_c);473 int_router_rsp->p_in[4][0] (signal_int_dspin_rsp_l2g_d);474 int_router_rsp->p_in[4][1] (signal_int_dspin_p2m_l2g_c);475 476 ///////////////////// CMD DSPIN local crossbar direct477 int_xbar_d->p_clk (this->p_clk);478 int_xbar_d->p_resetn (this->p_resetn);479 int_xbar_d->p_initiator_to_up (signal_int_vci_l2g);480 int_xbar_d->p_target_to_up (signal_int_vci_g2l);481 482 int_xbar_d->p_to_target[int_memc_tgt_id] (signal_int_vci_tgt_memc);483 int_xbar_d->p_to_target[int_xicu_tgt_id] (signal_int_vci_tgt_xicu);484 int_xbar_d->p_to_target[int_mwmr_tgt_id] (signal_int_vci_tgt_mwmr);485 int_xbar_d->p_to_initiator[int_mwmr_ini_id] (signal_int_vci_ini_mwmr);486 for (size_t p = 0; p < nb_procs; p++)487 int_xbar_d->p_to_initiator[int_proc_ini_id + p] (signal_int_vci_ini_proc[p]);488 489 if ( is_io )490 {491 int_xbar_d->p_to_target[int_iobx_tgt_id] (signal_int_vci_tgt_iobx);492 int_xbar_d->p_to_initiator[int_iobx_ini_id] (signal_int_vci_ini_iobx);493 }494 495 int_wi_gate_d->p_clk (this->p_clk);496 int_wi_gate_d->p_resetn (this->p_resetn);497 int_wi_gate_d->p_vci (signal_int_vci_l2g);498 int_wi_gate_d->p_dspin_cmd (signal_int_dspin_cmd_l2g_d);499 int_wi_gate_d->p_dspin_rsp (signal_int_dspin_rsp_g2l_d);500 501 int_wt_gate_d->p_clk (this->p_clk);502 int_wt_gate_d->p_resetn (this->p_resetn);503 int_wt_gate_d->p_vci (signal_int_vci_g2l);504 int_wt_gate_d->p_dspin_cmd (signal_int_dspin_cmd_g2l_d);505 int_wt_gate_d->p_dspin_rsp (signal_int_dspin_rsp_l2g_d);506 507 ////////////////////// M2P DSPIN local crossbar coherence508 int_xbar_m2p_c->p_clk (this->p_clk);509 int_xbar_m2p_c->p_resetn (this->p_resetn);510 int_xbar_m2p_c->p_global_out (signal_int_dspin_m2p_l2g_c);511 int_xbar_m2p_c->p_global_in (signal_int_dspin_m2p_g2l_c);512 int_xbar_m2p_c->p_local_in[0] (signal_int_dspin_m2p_memc);513 for (size_t p = 0; p < nb_procs; p++)514 int_xbar_m2p_c->p_local_out[p] (signal_int_dspin_m2p_proc[p]);515 516 ////////////////////////// P2M DSPIN local crossbar coherence517 int_xbar_p2m_c->p_clk (this->p_clk);518 int_xbar_p2m_c->p_resetn (this->p_resetn);519 int_xbar_p2m_c->p_global_out (signal_int_dspin_p2m_l2g_c);520 int_xbar_p2m_c->p_global_in (signal_int_dspin_p2m_g2l_c);521 int_xbar_p2m_c->p_local_out[0] (signal_int_dspin_p2m_memc);522 for (size_t p = 0; p < nb_procs; p++)523 int_xbar_p2m_c->p_local_in[p] (signal_int_dspin_p2m_proc[p]);524 525 ////////////////////// CLACK DSPIN local crossbar coherence526 int_xbar_clack_c->p_clk (this->p_clk);527 int_xbar_clack_c->p_resetn (this->p_resetn);528 int_xbar_clack_c->p_global_out (signal_int_dspin_clack_l2g_c);529 int_xbar_clack_c->p_global_in (signal_int_dspin_clack_g2l_c);530 int_xbar_clack_c->p_local_in[0] (signal_int_dspin_clack_memc);531 for (size_t p = 0; p < nb_procs; p++)532 int_xbar_clack_c->p_local_out[p] (signal_int_dspin_clack_proc[p]);533 534 486 //////////////////////////////////// Processors 535 487 for (size_t p = 0; p < nb_procs; p++) … … 537 489 proc[p]->p_clk (this->p_clk); 538 490 proc[p]->p_resetn (this->p_resetn); 491 539 492 proc[p]->p_vci (signal_int_vci_ini_proc[p]); 540 493 proc[p]->p_dspin_m2p (signal_int_dspin_m2p_proc[p]); 541 494 proc[p]->p_dspin_p2m (signal_int_dspin_p2m_proc[p]); 542 proc[p]->p_dspin_clack (signal_int_dspin_cla ck_proc[p]);495 proc[p]->p_dspin_clack (signal_int_dspin_cla_proc[p]); 543 496 544 497 for ( size_t j = 0 ; j < 6 ; j++) … … 549 502 } 550 503 504 std::cout << " - processors connected" << std::endl; 505 551 506 ///////////////////////////////////// XICU 552 507 xicu->p_clk (this->p_clk); … … 563 518 else xicu->p_hwi[i] (signal_false); 564 519 } 520 521 std::cout << " - xcu connected" << std::endl; 565 522 566 523 ///////////////////////////////////// MEMC … … 571 528 memc->p_dspin_p2m (signal_int_dspin_p2m_memc); 572 529 memc->p_dspin_m2p (signal_int_dspin_m2p_memc); 573 memc->p_dspin_clack (signal_int_dspin_cla ck_memc);530 memc->p_dspin_clack (signal_int_dspin_cla_memc); 574 531 memc->p_irq (signal_irq_memc); 575 532 … … 581 538 memc_ram_wi->p_vci (signal_ram_vci_ini_memc); 582 539 540 std::cout << " - memc connected" << std::endl; 541 583 542 //////////////////////////////////// XRAM 584 543 xram->p_clk (this->p_clk); … … 592 551 xram_ram_wt->p_dspin_rsp (signal_ram_dspin_rsp_xram_t); 593 552 xram_ram_wt->p_vci (signal_ram_vci_tgt_xram); 553 554 std::cout << " - xram connected" << std::endl; 594 555 595 556 /////////////////////////////////// GCD coprocessor … … 633 594 } 634 595 596 std::cout << " - coproc connected" << std::endl; 597 635 598 /////////////////////////////////// CPY coprocessor 636 599 if ( coproc_type == MWR_COPROC_CPY ) … … 652 615 } 653 616 654 //////////////////////////// RAM network CMD & RSP routers617 //////////////////////////// RAM NETWORK ROUTERS 655 618 ram_router_cmd->p_clk (this->p_clk); 656 619 ram_router_cmd->p_resetn (this->p_resetn); 657 620 ram_router_rsp->p_clk (this->p_clk); 658 621 ram_router_rsp->p_resetn (this->p_resetn); 622 659 623 for( size_t n=0 ; n<4 ; n++) 660 624 { … … 678 642 ram_router_rsp->p_out[4] (signal_ram_dspin_rsp_memc_i); 679 643 } 644 645 ///////////////////////////// INT NETWORK ROUTERS 646 int_router_cmd->p_clk (this->p_clk); 647 int_router_cmd->p_resetn (this->p_resetn); 648 int_router_rsp->p_clk (this->p_clk); 649 int_router_rsp->p_resetn (this->p_resetn); 650 int_router_m2p->p_clk (this->p_clk); 651 int_router_m2p->p_resetn (this->p_resetn); 652 int_router_p2m->p_clk (this->p_clk); 653 int_router_p2m->p_resetn (this->p_resetn); 654 int_router_cla->p_clk (this->p_clk); 655 int_router_cla->p_resetn (this->p_resetn); 656 657 // loop on N/S/E/W ports 658 for (size_t i = 0; i < 4; i++) 659 { 660 int_router_cmd->p_out[i] (this->p_dspin_int_cmd_out[i]); 661 int_router_cmd->p_in[i] (this->p_dspin_int_cmd_in[i]); 662 663 int_router_rsp->p_out[i] (this->p_dspin_int_rsp_out[i]); 664 int_router_rsp->p_in[i] (this->p_dspin_int_rsp_in[i]); 665 666 int_router_m2p->p_out[i] (this->p_dspin_int_m2p_out[i]); 667 int_router_m2p->p_in[i] (this->p_dspin_int_m2p_in[i]); 668 669 int_router_p2m->p_out[i] (this->p_dspin_int_p2m_out[i]); 670 int_router_p2m->p_in[i] (this->p_dspin_int_p2m_in[i]); 671 672 int_router_cla->p_out[i] (this->p_dspin_int_cla_out[i]); 673 int_router_cla->p_in[i] (this->p_dspin_int_cla_in[i]); 674 } 675 676 int_router_cmd->p_out[4] (signal_int_dspin_cmd_g2l_d); 677 int_router_cmd->p_in[4] (signal_int_dspin_cmd_l2g_d); 678 679 int_router_rsp->p_out[4] (signal_int_dspin_rsp_g2l_d); 680 int_router_rsp->p_in[4] (signal_int_dspin_rsp_l2g_d); 681 682 int_router_m2p->p_out[4] (signal_int_dspin_m2p_g2l_c); 683 int_router_m2p->p_in[4] (signal_int_dspin_m2p_l2g_c); 684 685 int_router_p2m->p_out[4] (signal_int_dspin_p2m_g2l_c); 686 int_router_p2m->p_in[4] (signal_int_dspin_p2m_l2g_c); 687 688 int_router_cla->p_out[4] (signal_int_dspin_cla_g2l_c); 689 int_router_cla->p_in[4] (signal_int_dspin_cla_l2g_c); 690 691 std::cout << " - internal routers connected" << std::endl; 692 693 694 ///////////////////// CMD DSPIN local crossbar direct 695 int_xbar_d->p_clk (this->p_clk); 696 int_xbar_d->p_resetn (this->p_resetn); 697 int_xbar_d->p_initiator_to_up (signal_int_vci_l2g); 698 int_xbar_d->p_target_to_up (signal_int_vci_g2l); 699 700 int_xbar_d->p_to_target[int_memc_tgt_id] (signal_int_vci_tgt_memc); 701 int_xbar_d->p_to_target[int_xicu_tgt_id] (signal_int_vci_tgt_xicu); 702 int_xbar_d->p_to_target[int_mwmr_tgt_id] (signal_int_vci_tgt_mwmr); 703 int_xbar_d->p_to_initiator[int_mwmr_ini_id] (signal_int_vci_ini_mwmr); 704 for (size_t p = 0; p < nb_procs; p++) 705 int_xbar_d->p_to_initiator[int_proc_ini_id + p] (signal_int_vci_ini_proc[p]); 706 707 if ( is_io ) 708 { 709 int_xbar_d->p_to_target[int_iobx_tgt_id] (signal_int_vci_tgt_iobx); 710 int_xbar_d->p_to_initiator[int_iobx_ini_id] (signal_int_vci_ini_iobx); 711 } 712 713 int_wi_gate_d->p_clk (this->p_clk); 714 int_wi_gate_d->p_resetn (this->p_resetn); 715 int_wi_gate_d->p_vci (signal_int_vci_l2g); 716 int_wi_gate_d->p_dspin_cmd (signal_int_dspin_cmd_l2g_d); 717 int_wi_gate_d->p_dspin_rsp (signal_int_dspin_rsp_g2l_d); 718 719 int_wt_gate_d->p_clk (this->p_clk); 720 int_wt_gate_d->p_resetn (this->p_resetn); 721 int_wt_gate_d->p_vci (signal_int_vci_g2l); 722 int_wt_gate_d->p_dspin_cmd (signal_int_dspin_cmd_g2l_d); 723 int_wt_gate_d->p_dspin_rsp (signal_int_dspin_rsp_l2g_d); 724 725 ////////////////////// M2P DSPIN local crossbar coherence 726 int_xbar_m2p_c->p_clk (this->p_clk); 727 int_xbar_m2p_c->p_resetn (this->p_resetn); 728 int_xbar_m2p_c->p_global_out (signal_int_dspin_m2p_l2g_c); 729 int_xbar_m2p_c->p_global_in (signal_int_dspin_m2p_g2l_c); 730 int_xbar_m2p_c->p_local_in[0] (signal_int_dspin_m2p_memc); 731 for (size_t p = 0; p < nb_procs; p++) 732 int_xbar_m2p_c->p_local_out[p] (signal_int_dspin_m2p_proc[p]); 733 734 ////////////////////////// P2M DSPIN local crossbar coherence 735 int_xbar_p2m_c->p_clk (this->p_clk); 736 int_xbar_p2m_c->p_resetn (this->p_resetn); 737 int_xbar_p2m_c->p_global_out (signal_int_dspin_p2m_l2g_c); 738 int_xbar_p2m_c->p_global_in (signal_int_dspin_p2m_g2l_c); 739 int_xbar_p2m_c->p_local_out[0] (signal_int_dspin_p2m_memc); 740 for (size_t p = 0; p < nb_procs; p++) 741 int_xbar_p2m_c->p_local_in[p] (signal_int_dspin_p2m_proc[p]); 742 743 ////////////////////// CLACK DSPIN local crossbar coherence 744 int_xbar_clack_c->p_clk (this->p_clk); 745 int_xbar_clack_c->p_resetn (this->p_resetn); 746 int_xbar_clack_c->p_global_out (signal_int_dspin_cla_l2g_c); 747 int_xbar_clack_c->p_global_in (signal_int_dspin_cla_g2l_c); 748 int_xbar_clack_c->p_local_in[0] (signal_int_dspin_cla_memc); 749 for (size_t p = 0; p < nb_procs; p++) 750 int_xbar_clack_c->p_local_out[p] (signal_int_dspin_cla_proc[p]); 751 680 752 681 753 ///////////////////////// IOB exists only in cluster_iob0 & cluster_iob1.
Note: See TracChangeset
for help on using the changeset viewer.