| 1 | |
|---|
| 2 | |
|---|
| 3 | |
|---|
| 4 | |
|---|
| 5 | |
|---|
| 6 | |
|---|
| 7 | |
|---|
| 8 | |
|---|
| 9 | |
|---|
| 10 | |
|---|
| 11 | |
|---|
| 12 | |
|---|
| 13 | |
|---|
| 14 | |
|---|
| 15 | |
|---|
| 16 | |
|---|
| 17 | |
|---|
| 18 | |
|---|
| 19 | |
|---|
| 20 | |
|---|
| 21 | |
|---|
| 22 | |
|---|
| 23 | |
|---|
| 24 | |
|---|
| 25 | |
|---|
| 26 | |
|---|
| 27 | |
|---|
| 28 | |
|---|
| 29 | |
|---|
| 30 | |
|---|
| 31 | |
|---|
| 32 | function sysgen2opb(sys, varargin) |
|---|
| 33 | warning off; |
|---|
| 34 | |
|---|
| 35 | |
|---|
| 36 | try |
|---|
| 37 | Â Â Â Â sim(sys, 0) |
|---|
| 38 | catch |
|---|
| 39 | Â Â Â Â display(['Error: Simulating the model resulted in error. Please check your model and initialization script.']); |
|---|
| 40 | Â Â Â Â return; |
|---|
| 41 | end |
|---|
| 42 | |
|---|
| 43 | |
|---|
| 44 | base = 0; |
|---|
| 45 | |
|---|
| 46 | appendString = ''; |
|---|
| 47 | |
|---|
| 48 | |
|---|
| 49 | |
|---|
| 50 | if length(varargin) == 0 |
|---|
| 51 | Â Â Â Â |
|---|
| 52 | Â Â Â Â smChoice = 'smoff'; |
|---|
| 53 | elseif length(varargin) == 1 |
|---|
| 54 | Â Â Â Â smChoice = char(varargin(1)); |
|---|
| 55 | else |
|---|
| 56 | Â Â Â Â display('Unrecognized parameters on command line.'); |
|---|
| 57 | Â Â Â Â return; |
|---|
| 58 | end |
|---|
| 59 | |
|---|
| 60 | |
|---|
| 61 | sysgenblock = find_system(sys, 'block_type', 'sysgen'); |
|---|
| 62 | if length(sysgenblock) == 0 |
|---|
| 63 | Â Â Â Â display(['Error: Please include a System Generator block.']); |
|---|
| 64 | Â Â Â Â return; |
|---|
| 65 | elseif length(sysgenblock) > 1 |
|---|
| 66 | Â Â Â Â display(['Error: Please only include one System Generator block in model.']); |
|---|
| 67 | Â Â Â Â return; |
|---|
| 68 | else |
|---|
| 69 | Â Â Â Â sysgenperiod = get_param(sysgenblock, 'simulink_period'); |
|---|
| 70 | Â Â Â Â sysgenperiod = mat2str(cell2mat(sysgenperiod)); |
|---|
| 71 | end |
|---|
| 72 | |
|---|
| 73 | |
|---|
| 74 | |
|---|
| 75 | try |
|---|
| 76 | Â Â Â Â load_system(sys); |
|---|
| 77 | catch |
|---|
| 78 | Â Â Â Â display(['Error: System 'Â sys ' does not exist']); |
|---|
| 79 | Â Â Â Â return; |
|---|
| 80 | end |
|---|
| 81 | |
|---|
| 82 | |
|---|
| 83 | if ~(strcmp(smChoice, 'smon') | strcmp(smChoice, 'smoff')) |
|---|
| 84 | Â Â Â Â display(['Error smChoice input '''Â smChoice ''' does not exist. Please use ''smon'' or ''smoff'' as your inputs.']); |
|---|
| 85 | Â Â Â Â return; |
|---|
| 86 | end |
|---|
| 87 | |
|---|
| 88 | |
|---|
| 89 | |
|---|
| 90 | try |
|---|
| 91 |     version = xlVersion; |
|---|
| 92 | catch |
|---|
| 93 | Â Â Â Â display('Error: Sysgen is not found!'); |
|---|
| 94 | Â Â Â Â return; |
|---|
| 95 | end |
|---|
| 96 | |
|---|
| 97 | if length(version) >= 1 |
|---|
| 98 | Â Â Â Â |
|---|
| 99 |     version = version{1}; |
|---|
| 100 | Â Â Â Â |
|---|
| 101 |     version = str2num(version(1:3)); |
|---|
| 102 | else |
|---|
| 103 | Â Â Â Â display('Error: Sysgen is not found!'); |
|---|
| 104 | Â Â Â Â return; |
|---|
| 105 | end |
|---|
| 106 | |
|---|
| 107 | if ((version == 8.1) | (version == 8.2) | (version == 9.1)) |
|---|
| 108 | Â Â Â Â |
|---|
| 109 |     gatewaysInCheck = find_system(sys, 'LookUnderMasks', 'all', 'FollowLinks', 'on',  'block_type', 'fromreg'); |
|---|
| 110 |     gatewaysOutCheck = find_system(sys, 'LookUnderMasks', 'all', 'FollowLinks', 'on',  'block_type', 'toreg'); |
|---|
| 111 | else |
|---|
| 112 |     display(['Error: Version ' version ' is not supported.']); |
|---|
| 113 | Â Â Â Â return; |
|---|
| 114 | end |
|---|
| 115 | |
|---|
| 116 | |
|---|
| 117 | numberGateways = length(gatewaysInCheck) + length(gatewaysOutCheck); |
|---|
| 118 | if numberGateways > 450 |
|---|
| 119 | Â Â display('Error: The script only allows a max of 450 From/To Registers'); |
|---|
| 120 | Â Â Â Â return; |
|---|
| 121 | elseif numberGateways == 0 |
|---|
| 122 | Â Â display('Error: The script needs From/To Regs within the model'); |
|---|
| 123 | Â Â Â Â return; |
|---|
| 124 | end |
|---|
| 125 | |
|---|
| 126 | |
|---|
| 127 | |
|---|
| 128 | |
|---|
| 129 | MemoryMappedIO = find_system(sys, 'LookUnderMasks', 'all', 'FollowLinks', 'on', 'BlockType', 'SubSystem', 'Name', 'Memory Mapped I_O'); |
|---|
| 130 | if length(MemoryMappedIO) > 0 |
|---|
| 131 | Â Â Â Â display('You already have converted this design to a peripheral.'); |
|---|
| 132 | Â Â Â Â display('Please get rid of the Memory Mapped I_O block and make sure') |
|---|
| 133 | Â Â Â Â display('your gateways are all still in place before trying again.'); |
|---|
| 134 | Â Â Â Â return; |
|---|
| 135 | end |
|---|
| 136 | |
|---|
| 137 | |
|---|
| 138 | try |
|---|
| 139 | Â Â Â Â save_system(sys,[sys '_unconverted_backup']); |
|---|
| 140 | catch |
|---|
| 141 | Â Â Â Â |
|---|
| 142 | Â Â Â Â |
|---|
| 143 | Â Â Â Â close_system([sys '_unconverted_backup'], 0); |
|---|
| 144 | |
|---|
| 145 | Â Â Â Â |
|---|
| 146 | Â Â Â Â save_system(sys,[sys '_unconverted_backup']); |
|---|
| 147 | end |
|---|
| 148 | close_system([sys '_unconverted_backup']); |
|---|
| 149 | |
|---|
| 150 | |
|---|
| 151 | load_system(sys); |
|---|
| 152 | save_system(sys, sys, 'BreakLinks'); |
|---|
| 153 | |
|---|
| 154 | |
|---|
| 155 | |
|---|
| 156 | spm = 'skeleton_periph_model'; |
|---|
| 157 | try |
|---|
| 158 | Â Â Â Â load_system(spm); |
|---|
| 159 | catch |
|---|
| 160 | Â Â Â Â load_system([matlabroot '\toolbox\WARP\' spm]); |
|---|
| 161 | end |
|---|
| 162 | |
|---|
| 163 | %Find Sybsystems and correct all the names |
|---|
| 164 | subsystems = find_system(sys,'LookUnderMasks', 'all', 'FollowLinks', 'on', 'BlockType', 'SubSystem'); |
|---|
| 165 | |
|---|
| 166 | for c=1:length(subsystems) |
|---|
| 167 | Â Â Â Â subsysName = subsystems{c}; |
|---|
| 168 | Â Â Â Â shortName = get_param(subsysName, 'Name'); |
|---|
| 169 | Â Â Â Â parent = get_param(subsysName, 'Parent'); |
|---|
| 170 | Â Â Â Â compName = [shortName 'Â Â Â Â Â Â Â Â Â ']; |
|---|
| 171 | Â Â Â Â |
|---|
| 172 |     if ~strcmp(compName(1:17), ' System Generator') |
|---|
| 173 | Â Â Â Â Â Â idx=0;Â |
|---|
| 174 |       for d=c+1:length(subsystems) |
|---|
| 175 | Â Â Â Â Â Â Â Â subsysName2 = subsystems{d}; |
|---|
| 176 | Â Â Â Â Â Â Â Â shortName2 = get_param(subsysName2,'Name'); |
|---|
| 177 | Â Â Â Â Â Â Â Â parent2 = get_param(subsysName2, 'Parent'); |
|---|
| 178 |         if strcmp(parent, parent2) & strcmp(cleanName(shortName), cleanName(shortName2)) |
|---|
| 179 | Â Â Â Â Â Â Â Â Â Â set_param(subsysName2,'Name', [shortName2 '_'Â int2str(idx)]); |
|---|
| 180 | Â Â Â Â Â Â Â Â Â Â idx=idx+1;Â Â Â Â Â Â |
|---|
| 181 | Â Â Â Â Â Â Â Â Â Â subsystems = find_system(sys,'LookUnderMasks','all','BlockType','SubSystem')'; |
|---|
| 182 | Â Â Â Â Â Â Â Â end |
|---|
| 183 | Â Â Â Â Â Â end |
|---|
| 184 | Â Â Â Â end |
|---|
| 185 | end |
|---|
| 186 | |
|---|
| 187 | |
|---|
| 188 | subsystems = find_system(sys, 'LookUnderMasks', 'all', 'FollowLinks', 'on', 'BlockType', 'SubSystem'); |
|---|
| 189 | |
|---|
| 190 | for c=length(subsystems):-1:1 |
|---|
| 191 | Â Â Â Â subsysName = subsystems{c}; |
|---|
| 192 | Â Â Â Â shortName = get_param(subsysName, 'Name'); |
|---|
| 193 | Â Â Â Â compName = [shortName 'Â Â Â Â Â Â Â Â Â ']; |
|---|
| 194 | Â Â Â Â |
|---|
| 195 |     if ~strcmp(compName(1:17), ' System Generator') |
|---|
| 196 | Â Â Â Â Â Â set_param(subsysName, 'Name', cleanName(shortName)); |
|---|
| 197 | Â Â Â Â end |
|---|
| 198 | end |
|---|
| 199 | |
|---|
| 200 | if strcmp(smChoice, 'smon') |
|---|
| 201 | Â Â Â Â |
|---|
| 202 | Â Â Â Â |
|---|
| 203 | Â Â Â Â dpramWOAddr={}; |
|---|
| 204 | Â Â Â Â dpramWOAddrIndex = 0; |
|---|
| 205 | Â Â Â Â dpramWODataI={}; |
|---|
| 206 | Â Â Â Â dpramWODataIIndex = 0; |
|---|
| 207 | Â Â Â Â dpramWOWE={}; |
|---|
| 208 | Â Â Â Â dpramWOWEIndex = 0; |
|---|
| 209 | Â Â Â Â dpramROAddr={}; |
|---|
| 210 | Â Â Â Â dpramROAddrIndex = 0; |
|---|
| 211 | Â Â Â Â dpramRODataO={}; |
|---|
| 212 | Â Â Â Â dpramRODataOIndex = 0; |
|---|
| 213 | Â Â Â Â |
|---|
| 214 | Â Â Â Â |
|---|
| 215 | Â Â Â Â |
|---|
| 216 | Â Â Â Â |
|---|
| 217 | Â Â Â Â dpramROIndex = 0; |
|---|
| 218 | Â Â Â Â |
|---|
| 219 | Â Â Â Â |
|---|
| 220 | Â Â Â Â |
|---|
| 221 | Â Â Â Â binBaseAddress = dec2bin(base); |
|---|
| 222 | Â Â Â Â try |
|---|
| 223 | Â Â Â Â Â Â maxdpram = 15 - bin2dec(binBaseAddress(13:16)); |
|---|
| 224 | Â Â Â Â catch |
|---|
| 225 | Â Â Â Â Â Â maxdpram = 15; |
|---|
| 226 | Â Â Â Â end |
|---|
| 227 | Â Â Â Â |
|---|
| 228 | Â Â Â Â |
|---|
| 229 |     dpram = find_system(sys,'LookUnderMasks', 'all', 'FollowLinks', 'on', 'block_type', 'dpram'); |
|---|
| 230 | |
|---|
| 231 | Â Â Â Â |
|---|
| 232 | Â Â Â Â dpramWORO={}; |
|---|
| 233 | Â Â Â Â dpramWOROidx = 0; |
|---|
| 234 |     for c=1:length(dpram) |
|---|
| 235 | Â Â Â Â Â Â dpramName = dpram{c}; |
|---|
| 236 | Â Â Â Â Â Â compName = [get_param(dpramName, 'Name') 'Â Â Â ']; |
|---|
| 237 | |
|---|
| 238 | Â Â Â Â Â Â |
|---|
| 239 |       brokenlines = find_system(sys,'LookUnderMasks', 'all', 'FollowLinks', 'on', 'FindAll', 'on', 'type', 'line', 'SrcBlockHandle', -1); |
|---|
| 240 | Â Â Â Â Â Â delete_line(brokenlines); |
|---|
| 241 |       brokenlines = find_system(sys,'LookUnderMasks', 'all', 'FollowLinks', 'on', 'FindAll', 'on', 'type', 'line', 'DstBlockHandle', -1); |
|---|
| 242 | Â Â Â Â Â Â delete_line(brokenlines); |
|---|
| 243 | Â Â Â Â Â Â |
|---|
| 244 |       if strcmp(compName(1:5), 'SMWO_') | strcmp(compName(1:5), 'SMRO_') |
|---|
| 245 | Â Â Â Â Â Â Â Â dpramWOROidx = dpramWOROidx + 1; |
|---|
| 246 |         if dpramWOROidx > maxdpram |
|---|
| 247 | Â Â Â Â Â Â Â Â Â Â display(['Error: We are allowed a total of 'Â num2str(maxdpram) ' dual port RAMS that are read-only/write-only.']); |
|---|
| 248 | Â Â Â Â Â Â Â Â Â Â return; |
|---|
| 249 | Â Â Â Â Â Â Â Â end |
|---|
| 250 | Â Â Â Â Â Â Â Â |
|---|
| 251 | Â Â Â Â Â Â Â Â dpramWORO{dpramWOROidx} = [get_param(dpramName, 'Name') '_sm'Â num2str(dpramWOROidx - 1)]Â ; |
|---|
| 252 | Â Â Â Â Â Â Â Â |
|---|
| 253 | Â Â Â Â Â Â Â Â DpramPortHandles = get_param(dpramName, 'PortHandles'); |
|---|
| 254 | |
|---|
| 255 | Â Â Â Â Â Â Â Â ports = [DpramPortHandles.Inport(4), DpramPortHandles.Inport(5), DpramPortHandles.Inport(6), DpramPortHandles.Outport(2)]; |
|---|
| 256 | |
|---|
| 257 | Â Â Â Â Â Â Â Â SrcBlockHandleAddr = get_param(get_param(ports(1), 'Line'), 'SrcBlockHandle'); |
|---|
| 258 | Â Â Â Â Â Â Â Â SrcBlockHandleDataI = get_param(get_param(ports(2), 'Line'), 'SrcBlockHandle'); |
|---|
| 259 | Â Â Â Â Â Â Â Â SrcBlockHandleWE = get_param(get_param(ports(3), 'Line'), 'SrcBlockHandle'); |
|---|
| 260 | Â Â Â Â Â Â Â Â |
|---|
| 261 | |
|---|
| 262 | Â Â Â Â Â Â Â Â AddrName = get_param(SrcBlockHandleAddr, 'Name'); |
|---|
| 263 | Â Â Â Â Â Â Â Â CompAddrName = [AddrName 'Â Â Â Â Â ']; |
|---|
| 264 | Â Â Â Â Â Â Â Â AddrFullName = [get_param(SrcBlockHandleAddr, 'Parent') '/'Â AddrName]; |
|---|
| 265 |         if ~strcmp(get_param(SrcBlockHandleAddr, 'block_type'), 'gatewayin') |
|---|
| 266 | Â Â Â Â Â Â Â Â Â Â display(['A GatewayIn is needed in order to connect to the addrb inport of the dpram 'Â dpramName '.']); |
|---|
| 267 | Â Â Â Â Â Â Â Â Â Â return; |
|---|
| 268 | Â Â Â Â Â Â Â Â end |
|---|
| 269 |         if ~strcmp(get_param(SrcBlockHandleAddr, 'arith_type'), 'Unsigned') | (str2num(get_param(SrcBlockHandleAddr, 'n_bits')) > 14) | (str2num(get_param(SrcBlockHandleAddr, 'bin_pt')) > 0) |
|---|
| 270 | Â Â Â Â Â Â Â Â Â Â display(['The GatewayIn 'Â AddrFullName ' needs to be UFix, with number of bits <= 14, and binary point at 0.']); |
|---|
| 271 | Â Â Â Â Â Â Â Â Â Â return; |
|---|
| 272 | Â Â Â Â Â Â Â Â end |
|---|
| 273 | Â Â Â Â Â Â Â Â orientationAddr = get_param(SrcBlockHandleAddr, 'Orientation'); |
|---|
| 274 | Â Â Â Â Â Â Â Â placeAddr = get_param(SrcBlockHandleAddr, 'position'); |
|---|
| 275 | Â Â Â Â Â Â Â Â parentAddr = get_param(SrcBlockHandleAddr, 'Parent'); |
|---|
| 276 | Â Â Â Â Â Â Â Â fromAddr = [parentAddr '/'Â cleanName(AddrName) '_sm'Â int2str(dpramWOROidx)]; |
|---|
| 277 | Â Â Â Â Â Â Â Â fromAddrSlice = [parentAddr '/'Â cleanName(AddrName) '_slice_sm'Â int2str(dpramWOROidx)]; |
|---|
| 278 | Â Â Â Â Â Â Â Â fromAddrSliceBits = get_param(SrcBlockHandleAddr, 'n_bits'); |
|---|
| 279 | Â Â Â Â Â Â Â Â |
|---|
| 280 | Â Â Â Â Â Â Â Â DataIName = get_param(SrcBlockHandleDataI, 'Name'); |
|---|
| 281 | Â Â Â Â Â Â Â Â CompDataIName = [DataIName 'Â Â Â Â Â ']; |
|---|
| 282 | Â Â Â Â Â Â Â Â DataIFullName = [get_param(SrcBlockHandleDataI, 'Parent') '/'Â DataIName]; |
|---|
| 283 | Â Â Â Â Â Â Â Â orientationDataI = get_param(SrcBlockHandleDataI, 'Orientation'); |
|---|
| 284 | Â Â Â Â Â Â Â Â placeDataI = get_param(SrcBlockHandleDataI, 'position'); |
|---|
| 285 | Â Â Â Â Â Â Â Â parentDataI = get_param(SrcBlockHandleDataI, 'Parent'); |
|---|
| 286 | Â Â Â Â Â Â Â Â fromDataI = [parentAddr '/'Â cleanName(DataIName) '_sm'Â int2str(dpramWOROidx)]; |
|---|
| 287 | Â Â Â Â Â Â Â Â |
|---|
| 288 | Â Â Â Â Â Â Â Â WEName = get_param(SrcBlockHandleWE, 'Name'); |
|---|
| 289 | Â Â Â Â Â Â Â Â CompWEName = [WEName 'Â Â Â Â ']; |
|---|
| 290 | Â Â Â Â Â Â Â Â WEFullName = [get_param(SrcBlockHandleWE, 'Parent') '/'Â WEName]; |
|---|
| 291 | Â Â Â Â Â Â Â Â orientationWE = get_param(SrcBlockHandleWE, 'Orientation'); |
|---|
| 292 | Â Â Â Â Â Â Â Â placeWE = get_param(SrcBlockHandleWE, 'position'); |
|---|
| 293 | Â Â Â Â Â Â Â Â parentWE = get_param(SrcBlockHandleWE, 'Parent'); |
|---|
| 294 | Â Â Â Â Â Â Â Â fromWE = [parentWE '/'Â cleanName(WEName) '_sm'Â int2str(dpramWOROidx)]; |
|---|
| 295 | Â Â Â Â Â Â Â Â |
|---|
| 296 | Â Â Â Â Â Â end |
|---|
| 297 | |
|---|
| 298 |       if strcmp(compName(1:5), 'SMWO_') |
|---|
| 299 |         if ~strcmp(CompAddrName(1:9), 'SMWOAddr_') |
|---|
| 300 | Â Â Â Â Â Â Â Â Â Â display(['The Gateway In 'Â AddrName ' needs to have the prefix of SMWOAddr_']); |
|---|
| 301 | Â Â Â Â Â Â Â Â Â Â return; |
|---|
| 302 | Â Â Â Â Â Â Â Â end |
|---|
| 303 | Â Â Â Â Â Â Â Â |
|---|
| 304 | Â Â Â Â Â Â Â Â |
|---|
| 305 | Â Â Â Â Â Â Â Â |
|---|
| 306 | Â Â Â Â Â Â Â Â delete_block(SrcBlockHandleAddr); |
|---|
| 307 | |
|---|
| 308 | Â Â Â Â Â Â Â Â |
|---|
| 309 | Â Â Â Â Â Â Â Â deleteSource(sys, cleanName(AddrName)); |
|---|
| 310 | Â Â Â Â Â Â Â Â |
|---|
| 311 | Â Â Â Â Â Â Â Â |
|---|
| 312 | Â Â Â Â Â Â Â Â |
|---|
| 313 |         brokenlines = find_system(sys,'LookUnderMasks', 'all', 'FollowLinks', 'on', 'FindAll', 'on', 'type', 'line', 'SrcBlockHandle', -1); |
|---|
| 314 | |
|---|
| 315 | Â Â Â Â Â Â Â Â |
|---|
| 316 | Â Â Â Â Â Â Â Â |
|---|
| 317 | Â Â Â Â Â Â Â Â DstPortHandle = get_param(brokenlines, 'DstPortHandle'); |
|---|
| 318 | Â Â Â Â Â Â Â Â DstBlockHandle = get_param(brokenlines, 'DstBlockHandle'); |
|---|
| 319 | |
|---|
| 320 | Â Â Â Â Â Â Â Â |
|---|
| 321 | Â Â Â Â Â Â Â Â |
|---|
| 322 |         if length(DstPortHandle) > 1 |
|---|
| 323 | Â Â Â Â Â Â Â Â Â Â DstPortNumber = cell2mat(get_param(DstPortHandle{length(DstPortHandle)}, 'PortNumber')); |
|---|
| 324 | Â Â Â Â Â Â Â Â else |
|---|
| 325 | Â Â Â Â Â Â Â Â Â Â DstPortNumber = get_param(DstPortHandle, 'PortNumber'); |
|---|
| 326 | Â Â Â Â Â Â Â Â end |
|---|
| 327 | |
|---|
| 328 | Â Â Â Â Â Â Â Â |
|---|
| 329 | Â Â Â Â Â Â Â Â |
|---|
| 330 |         if length(DstBlockHandle) > 1 |
|---|
| 331 | Â Â Â Â Â Â Â Â Â Â DstName = get_param(DstBlockHandle{length(DstBlockHandle)}, 'Name'); |
|---|
| 332 | Â Â Â Â Â Â Â Â Â Â try |
|---|
| 333 | Â Â Â Â Â Â Â Â Â Â Â Â DstBlockType = get_param(DstBlockHandle{length(DstBlockHandle)}, 'block_type'); |
|---|
| 334 | Â Â Â Â Â Â Â Â Â Â catch |
|---|
| 335 | Â Â Â Â Â Â Â Â Â Â Â Â DstBlockType = get_param(DstBlockHandle{length(DstBlockHandle)}, 'BlockType'); |
|---|
| 336 | Â Â Â Â Â Â Â Â Â Â end |
|---|
| 337 | Â Â Â Â Â Â Â Â else |
|---|
| 338 | Â Â Â Â Â Â Â Â Â Â DstName = get_param(DstBlockHandle, 'Name'); |
|---|
| 339 | Â Â Â Â Â Â Â Â Â Â try |
|---|
| 340 | Â Â Â Â Â Â Â Â Â Â Â Â DstBlockType = get_param(DstBlockHandle, 'block_type'); |
|---|
| 341 | Â Â Â Â Â Â Â Â Â Â catch |
|---|
| 342 | Â Â Â Â Â Â Â Â Â Â Â Â DstBlockType = get_param(DstBlockHandle, 'BlockType'); |
|---|
| 343 | Â Â Â Â Â Â Â Â Â Â end |
|---|
| 344 | Â Â Â Â Â Â Â Â end |
|---|
| 345 | |
|---|
| 346 | Â Â Â Â Â Â Â Â |
|---|
| 347 | Â Â Â Â Â Â Â Â delete_line(brokenlines); |
|---|
| 348 | |
|---|
| 349 | Â Â Â Â Â Â Â Â dpramWOAddrIndex = dpramWOAddrIndex + 1; |
|---|
| 350 | Â Â Â Â Â Â Â Â dpramWOAddr{dpramWOAddrIndex} = fromAddr; |
|---|
| 351 | Â Â Â Â Â Â Â Â |
|---|
| 352 | Â Â Â Â Â Â Â Â placeAddr(1,3) = placeAddr(1,1) + 75; |
|---|
| 353 | Â Â Â Â Â Â Â Â placeAddrSlice = placeAddr; |
|---|
| 354 | Â Â Â Â Â Â Â Â placeAddrSlice(1,1) = placeAddrSlice(1,3) + 30; |
|---|
| 355 | Â Â Â Â Â Â Â Â placeAddrSlice(1,3) = placeAddrSlice(1,1) + 50; |
|---|
| 356 | Â Â Â Â Â Â Â Â add_block('built-in/From', fromAddr, 'GotoTag', ['SMWOAddr_'Â int2str(dpramWOAddrIndex - 1)], 'position', placeAddr); |
|---|
| 357 |         if ((version == 8.1) | (version == 8.2) | (version == 9.1)) |
|---|
| 358 | Â Â Â Â Â Â Â Â Â Â add_block([spm '/Slice8'], fromAddrSlice, 'position', placeAddrSlice, 'nbits', fromAddrSliceBits); |
|---|
| 359 | Â Â Â Â Â Â Â Â end |
|---|
| 360 | Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â |
|---|
| 361 | Â Â Â Â Â Â Â Â FromName = get_param(fromAddr, 'Name'); |
|---|
| 362 | Â Â Â Â Â Â Â Â FromSliceName = get_param(fromAddrSlice, 'Name'); |
|---|
| 363 | Â Â Â Â Â Â Â Â set_param(fromAddr,'Orientation', orientationAddr); |
|---|
| 364 | |
|---|
| 365 | Â Â Â Â Â Â Â Â add_line(parentAddr, [FromName '/1'Â ], [FromSliceName '/1']); |
|---|
| 366 |         if size(DstName, 1) == 1 |
|---|
| 367 | Â Â Â Â Â Â Â Â Â Â |
|---|
| 368 | Â Â Â Â Â Â Â Â Â Â add_line(parentAddr, [FromSliceName '/1'], [DstName '/'Â int2str(DstPortNumber)]); |
|---|
| 369 | Â Â Â Â Â Â Â Â Â Â |
|---|
| 370 | Â Â Â Â Â Â Â Â else |
|---|
| 371 |           for i=1:size(DstName, 1) |
|---|
| 372 |             if ~strcmp(DstName{i}, get_param(dpramName, 'Name')) |
|---|
| 373 | Â Â Â Â Â Â Â Â Â Â Â Â Â Â add_line(parentAddr, [FromName '/1'], [DstName{i} '/'Â mat2str(DstPortNumber(i))]); |
|---|
| 374 | Â Â Â Â Â Â Â Â Â Â Â Â else |
|---|
| 375 | Â Â Â Â Â Â Â Â Â Â Â Â Â Â add_line(parentAddr, [FromSliceName '/1'], [DstName{i} '/'Â mat2str(DstPortNumber(i))]); |
|---|
| 376 | Â Â Â Â Â Â Â Â Â Â Â Â end |
|---|
| 377 | Â Â Â Â Â Â Â Â Â Â end |
|---|
| 378 | Â Â Â Â Â Â Â Â end |
|---|
| 379 | Â Â Â Â Â Â Â Â |
|---|
| 380 | Â Â Â Â Â Â Â Â |
|---|
| 381 |         if ~strcmp(get_param(SrcBlockHandleDataI, 'block_type'), 'gatewayin') |
|---|
| 382 | Â Â Â Â Â Â Â Â Â Â display(['A Gateway In is needed in order to connect to the datb inport of the dpram 'Â dpramName '.']); |
|---|
| 383 | Â Â Â Â Â Â Â Â Â Â return; |
|---|
| 384 | Â Â Â Â Â Â Â Â end |
|---|
| 385 |         if ~strcmp(get_param(SrcBlockHandleDataI, 'n_bits'), '32') |
|---|
| 386 | Â Â Â Â Â Â Â Â Â Â display(['The Xilinx block 'Â DataIFullName ' needs to set the number of bits to 32.']); |
|---|
| 387 | Â Â Â Â Â Â Â Â Â Â return; |
|---|
| 388 | Â Â Â Â Â Â Â Â end |
|---|
| 389 |         if ~strcmp(CompDataIName(1:10), 'SMWODataI_') |
|---|
| 390 | Â Â Â Â Â Â Â Â Â Â display(['The Xilinx block 'Â DataIName ' needs to have a prefix of SMWODataI_']); |
|---|
| 391 | Â Â Â Â Â Â Â Â Â Â return; |
|---|
| 392 | Â Â Â Â Â Â Â Â end |
|---|
| 393 | Â Â Â Â Â Â Â Â SMWODataIArithType = get_param(SrcBlockHandleDataI, 'arith_type'); |
|---|
| 394 | Â Â Â Â Â Â Â Â SMWODataIArithType = [SMWODataIArithType 'Â Â Â ']; |
|---|
| 395 | Â Â Â Â Â Â Â Â SMWODataIArithType = SMWODataIArithType(1:8); |
|---|
| 396 |         if strcmp(SMWODataIArithType, 'Unsigned') |
|---|
| 397 | Â Â Â Â Â Â Â Â Â Â fromDataIForce = [parentAddr '/'Â cleanName(DataIName) '_force_sm'Â int2str(dpramWOROidx)]; |
|---|
| 398 | Â Â Â Â Â Â Â Â end |
|---|
| 399 | Â Â Â Â Â Â Â Â |
|---|
| 400 | Â Â Â Â Â Â Â Â |
|---|
| 401 | Â Â Â Â Â Â Â Â delete_block(SrcBlockHandleDataI); |
|---|
| 402 | |
|---|
| 403 | Â Â Â Â Â Â Â Â deleteSource(sys, cleanName(DataIName)); |
|---|
| 404 | Â Â Â Â Â Â Â Â |
|---|
| 405 | Â Â Â Â Â Â Â Â |
|---|
| 406 | Â Â Â Â Â Â Â Â |
|---|
| 407 |         brokenlines = find_system(sys,'LookUnderMasks', 'all', 'FollowLinks', 'on', 'FindAll', 'on', 'type', 'line', 'SrcBlockHandle', -1); |
|---|
| 408 | |
|---|
| 409 | Â Â Â Â Â Â Â Â |
|---|
| 410 | Â Â Â Â Â Â Â Â |
|---|
| 411 | Â Â Â Â Â Â Â Â DstPortHandle = get_param(brokenlines, 'DstPortHandle'); |
|---|
| 412 | Â Â Â Â Â Â Â Â DstBlockHandle = get_param(brokenlines, 'DstBlockHandle'); |
|---|
| 413 | |
|---|
| 414 | Â Â Â Â Â Â Â Â |
|---|
| 415 | Â Â Â Â Â Â Â Â |
|---|
| 416 |         if length(DstPortHandle) > 1 |
|---|
| 417 | Â Â Â Â Â Â Â Â Â Â DstPortNumber = cell2mat(get_param(DstPortHandle{length(DstPortHandle)}, 'PortNumber')); |
|---|
| 418 | Â Â Â Â Â Â Â Â else |
|---|
| 419 | Â Â Â Â Â Â Â Â Â Â DstPortNumber = get_param(DstPortHandle, 'PortNumber'); |
|---|
| 420 | Â Â Â Â Â Â Â Â end |
|---|
| 421 | |
|---|
| 422 | Â Â Â Â Â Â Â Â |
|---|
| 423 | Â Â Â Â Â Â Â Â |
|---|
| 424 |         if length(DstBlockHandle) > 1 |
|---|
| 425 | Â Â Â Â Â Â Â Â Â Â DstName = get_param(DstBlockHandle{length(DstBlockHandle)}, 'Name'); |
|---|
| 426 | Â Â Â Â Â Â Â Â Â Â try |
|---|
| 427 | Â Â Â Â Â Â Â Â Â Â Â Â DstBlockType = get_param(DstBlockHandle{length(DstBlockHandle)}, 'block_type'); |
|---|
| 428 | Â Â Â Â Â Â Â Â Â Â catch |
|---|
| 429 | Â Â Â Â Â Â Â Â Â Â Â Â DstBlockType = get_param(DstBlockHandle{length(DstBlockHandle)}, 'BlockType'); |
|---|
| 430 | Â Â Â Â Â Â Â Â Â Â end |
|---|
| 431 | Â Â Â Â Â Â Â Â else |
|---|
| 432 | Â Â Â Â Â Â Â Â Â Â DstName = get_param(DstBlockHandle, 'Name'); |
|---|
| 433 | Â Â Â Â Â Â Â Â Â Â try |
|---|
| 434 | Â Â Â Â Â Â Â Â Â Â Â Â DstBlockType = get_param(DstBlockHandle, 'block_type'); |
|---|
| 435 | Â Â Â Â Â Â Â Â Â Â catch |
|---|
| 436 | Â Â Â Â Â Â Â Â Â Â Â Â DstBlockType = get_param(DstBlockHandle, 'BlockType'); |
|---|
| 437 | Â Â Â Â Â Â Â Â Â Â end |
|---|
| 438 | Â Â Â Â Â Â Â Â end |
|---|
| 439 | |
|---|
| 440 | Â Â Â Â Â Â Â Â |
|---|
| 441 | Â Â Â Â Â Â Â Â delete_line(brokenlines); |
|---|
| 442 | Â Â Â Â Â Â Â Â |
|---|
| 443 | Â Â Â Â Â Â Â Â dpramWODataIIndex = dpramWODataIIndex + 1; |
|---|
| 444 | Â Â Â Â Â Â Â Â dpramWODataI{dpramWODataIIndex} = fromDataI; |
|---|
| 445 | Â Â Â Â Â Â Â Â |
|---|
| 446 |         if strcmp(SMWODataIArithType, 'Unsigned') |
|---|
| 447 | Â Â Â Â Â Â Â Â Â Â |
|---|
| 448 | Â Â Â Â Â Â Â Â Â Â placeDataIForce = placeDataI; |
|---|
| 449 | Â Â Â Â Â Â Â Â Â Â placeDataIForce(1,1) = placeDataIForce(1,3) + 30; |
|---|
| 450 | Â Â Â Â Â Â Â Â Â Â placeDataIForce(1,3) = placeDataIForce(1,1) + 50; |
|---|
| 451 | Â Â Â Â Â Â Â Â Â Â add_block('built-in/From', fromDataI, 'GotoTag', ['SMWODataI_'Â int2str(dpramWODataIIndex - 1)], 'position', placeDataI); |
|---|
| 452 | Â Â Â Â Â Â Â Â Â Â add_block([spm '/Force8'], fromDataIForce, 'position', placeDataIForce); |
|---|
| 453 | Â Â Â Â Â Â Â Â Â Â |
|---|
| 454 | Â Â Â Â Â Â Â Â Â Â FromName = get_param(fromDataI, 'Name'); |
|---|
| 455 | Â Â Â Â Â Â Â Â Â Â FromForceName = get_param(fromDataIForce, 'Name'); |
|---|
| 456 | Â Â Â Â Â Â Â Â Â Â set_param(fromDataI, 'Orientation', orientationDataI); |
|---|
| 457 | Â Â Â Â Â Â Â Â Â Â |
|---|
| 458 | Â Â Â Â Â Â Â Â Â Â add_line(parentAddr, [FromName '/1'Â ], [FromForceName '/1']); |
|---|
| 459 |           if size(DstName, 1) == 1 |
|---|
| 460 | |
|---|
| 461 | Â Â Â Â Â Â Â Â Â Â Â Â add_line(parentAddr, [FromForceName '/1'], [DstName '/'Â int2str(DstPortNumber)]); |
|---|
| 462 | Â Â Â Â Â Â Â Â Â Â Â Â |
|---|
| 463 | Â Â Â Â Â Â Â Â Â Â else |
|---|
| 464 |             for i=1:size(DstName, 1) |
|---|
| 465 |               if ~strcmp(DstName{i}, get_param(dpramName, 'Name')) |
|---|
| 466 | Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â add_line(parentAddr, [FromName '/1'], [DstName{i} '/'Â mat2str(DstPortNumber(i))]); |
|---|
| 467 | Â Â Â Â Â Â Â Â Â Â Â Â Â Â else |
|---|
| 468 | Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â add_line(parentAddr, [FromForceName '/1'], [DstName{i} '/'Â mat2str(DstPortNumber(i))]); |
|---|
| 469 | Â Â Â Â Â Â Â Â Â Â Â Â Â Â end |
|---|
| 470 | Â Â Â Â Â Â Â Â Â Â Â Â end |
|---|
| 471 | Â Â Â Â Â Â Â Â Â Â end |
|---|
| 472 |         else      |
|---|
| 473 | Â Â Â Â Â Â Â Â Â Â placeDataI(1,1) = placeDataI(1,1) - 60; |
|---|
| 474 | Â Â Â Â Â Â Â Â Â Â add_block('built-in/From', fromDataI, 'GotoTag', ['SMWODataI_'Â int2str(dpramWODataIIndex - 1)], 'position', placeDataI); |
|---|
| 475 | |
|---|
| 476 | Â Â Â Â Â Â Â Â Â Â FromName = get_param(fromDataI, 'Name'); |
|---|
| 477 | Â Â Â Â Â Â Â Â Â Â set_param(fromDataI,'Orientation', orientationDataI); |
|---|
| 478 | |
|---|
| 479 |           if size(DstName, 1) == 1 |
|---|
| 480 | Â Â Â Â Â Â Â Â Â Â Â Â add_line(parentDataI, [FromName '/1'Â ], [DstName '/'Â int2str(DstPortNumber)]); |
|---|
| 481 | Â Â Â Â Â Â Â Â Â Â else |
|---|
| 482 |             for i=1:size(DstName, 1) |
|---|
| 483 | Â Â Â Â Â Â Â Â Â Â Â Â Â Â add_line(parentDataI, [FromName '/1'], [DstName{i} '/'Â mat2str(DstPortNumber(i))]); |
|---|
| 484 | Â Â Â Â Â Â Â Â Â Â Â Â end |
|---|
| 485 | Â Â Â Â Â Â Â Â Â Â end |
|---|
| 486 | Â Â Â Â Â Â Â Â end |
|---|
| 487 | Â Â Â Â Â Â Â Â |
|---|
| 488 | Â Â Â Â Â Â Â Â |
|---|
| 489 |         if ~strcmp(get_param(SrcBlockHandleWE, 'block_type'), 'gatewayin') |
|---|
| 490 | Â Â Â Â Â Â Â Â Â Â display(['A Gateway In is needed in order to connect to the web inport of the dpram 'Â dpramName '.']); |
|---|
| 491 | Â Â Â Â Â Â Â Â Â Â return; |
|---|
| 492 |           end |
|---|
| 493 |         if ~strcmp(CompWEName(1:7), 'SMWOWE_') |
|---|
| 494 | Â Â Â Â Â Â Â Â Â Â display(['The Gateway In ', WEName ' needs to have the prefix SMWOWE_']); |
|---|
| 495 | Â Â Â Â Â Â Â Â Â Â return; |
|---|
| 496 | Â Â Â Â Â Â Â Â end |
|---|
| 497 |         if ~strcmp(get_param(SrcBlockHandleWE, 'arith_type'), 'Boolean') |
|---|
| 498 | Â Â Â Â Â Â Â Â Â Â display(['The GatewayIn 'Â WEFullName ' needs to have an Output type of Boolean.']); |
|---|
| 499 | Â Â Â Â Â Â Â Â Â Â return; |
|---|
| 500 | Â Â Â Â Â Â Â Â end |
|---|
| 501 | Â Â Â Â Â Â Â Â |
|---|
| 502 | Â Â Â Â Â Â Â Â |
|---|
| 503 | Â Â Â Â Â Â Â Â delete_block(SrcBlockHandleWE); |
|---|
| 504 | |
|---|
| 505 | Â Â Â Â Â Â Â Â deleteSource(sys, cleanName(WEName)); |
|---|
| 506 | Â Â Â Â Â Â Â Â |
|---|
| 507 | Â Â Â Â Â Â Â Â |
|---|
| 508 | Â Â Â Â Â Â Â Â |
|---|
| 509 |         brokenlines = find_system(sys,'LookUnderMasks', 'all', 'FollowLinks', 'on', 'FindAll', 'on', 'type', 'line', 'SrcBlockHandle', -1); |
|---|
| 510 | |
|---|
| 511 | Â Â Â Â Â Â Â Â |
|---|
| 512 | Â Â Â Â Â Â Â Â |
|---|
| 513 | Â Â Â Â Â Â Â Â DstPortHandle = get_param(brokenlines, 'DstPortHandle'); |
|---|
| 514 | Â Â Â Â Â Â Â Â DstBlockHandle = get_param(brokenlines, 'DstBlockHandle'); |
|---|
| 515 | |
|---|
| 516 | Â Â Â Â Â Â Â Â |
|---|
| 517 | Â Â Â Â Â Â Â Â |
|---|
| 518 |         if length(DstPortHandle) > 1 |
|---|
| 519 | Â Â Â Â Â Â Â Â Â Â DstPortNumber = cell2mat(get_param(DstPortHandle{length(DstPortHandle)}, 'PortNumber')); |
|---|
| 520 | Â Â Â Â Â Â Â Â else |
|---|
| 521 | Â Â Â Â Â Â Â Â Â Â DstPortNumber = get_param(DstPortHandle, 'PortNumber'); |
|---|
| 522 | Â Â Â Â Â Â Â Â end |
|---|
| 523 | |
|---|
| 524 | Â Â Â Â Â Â Â Â |
|---|
| 525 | Â Â Â Â Â Â Â Â |
|---|
| 526 |         if length(DstBlockHandle) > 1 |
|---|
| 527 | Â Â Â Â Â Â Â Â Â Â DstName = get_param(DstBlockHandle{length(DstBlockHandle)}, 'Name'); |
|---|
| 528 | Â Â Â Â Â Â Â Â Â Â try |
|---|
| 529 | Â Â Â Â Â Â Â Â Â Â Â Â DstBlockType = get_param(DstBlockHandle{length(DstBlockHandle)}, 'block_type'); |
|---|
| 530 | Â Â Â Â Â Â Â Â Â Â catch |
|---|
| 531 | Â Â Â Â Â Â Â Â Â Â Â Â DstBlockType = get_param(DstBlockHandle{length(DstBlockHandle)}, 'BlockType'); |
|---|
| 532 | Â Â Â Â Â Â Â Â Â Â end |
|---|
| 533 | Â Â Â Â Â Â Â Â else |
|---|
| 534 | Â Â Â Â Â Â Â Â Â Â DstName = get_param(DstBlockHandle, 'Name'); |
|---|
| 535 | Â Â Â Â Â Â Â Â Â Â try |
|---|
| 536 | Â Â Â Â Â Â Â Â Â Â Â Â DstBlockType = get_param(DstBlockHandle, 'block_type'); |
|---|
| 537 | Â Â Â Â Â Â Â Â Â Â catch |
|---|
| 538 | Â Â Â Â Â Â Â Â Â Â Â Â DstBlockType = get_param(DstBlockHandle, 'BlockType'); |
|---|
| 539 | Â Â Â Â Â Â Â Â Â Â end |
|---|
| 540 | Â Â Â Â Â Â Â Â end |
|---|
| 541 | |
|---|
| 542 | Â Â Â Â Â Â Â Â |
|---|
| 543 | Â Â Â Â Â Â Â Â delete_line(brokenlines); |
|---|
| 544 | |
|---|
| 545 | Â Â Â Â Â Â Â Â dpramWOWEIndex = dpramWOWEIndex + 1; |
|---|
| 546 | Â Â Â Â Â Â Â Â dpramWOWE{dpramWOWEIndex} = fromWE; |
|---|
| 547 | Â Â Â Â Â Â Â Â placeWE(1,1) = placeWE(1,1) - 60; |
|---|
| 548 | Â Â Â Â Â Â Â Â add_block('built-in/From', fromWE, 'GotoTag', ['SMWOWE_'Â int2str(dpramWOWEIndex - 1)], 'position', placeWE); |
|---|
| 549 | Â Â Â Â Â Â Â Â |
|---|
| 550 | Â Â Â Â Â Â Â Â FromName = get_param(fromWE, 'Name'); |
|---|
| 551 | Â Â Â Â Â Â Â Â set_param(fromWE,'Orientation', orientationWE); |
|---|
| 552 | |
|---|
| 553 |         if size(DstName, 1) == 1 |
|---|
| 554 | Â Â Â Â Â Â Â Â Â Â add_line(parentWE, [FromName '/1'Â ], [DstName '/'Â int2str(DstPortNumber)]); |
|---|
| 555 | Â Â Â Â Â Â Â Â else |
|---|
| 556 |           for i=1:size(DstName, 1) |
|---|
| 557 | Â Â Â Â Â Â Â Â Â Â Â Â add_line(parentWE, [FromName '/1'], [DstName{i} '/'Â mat2str(DstPortNumber(i))]); |
|---|
| 558 | Â Â Â Â Â Â Â Â Â Â end |
|---|
| 559 | Â Â Â Â Â Â Â Â end |
|---|
| 560 | Â Â Â Â Â Â Â Â |
|---|
| 561 | |
|---|
| 562 |       elseif strcmp(compName(1:5), 'SMRO_')    |
|---|
| 563 | Â Â Â Â Â Â Â Â dpramROIndex = dpramROIndex + 1; |
|---|
| 564 | Â Â Â Â Â Â Â Â |
|---|
| 565 | Â Â Â Â Â Â Â Â DstBlockHandleDataO = get_param(get_param(ports(4), 'Line'), 'DstBlockHandle'); |
|---|
| 566 | Â Â Â Â Â Â Â Â |
|---|
| 567 | Â Â Â Â Â Â Â Â |
|---|
| 568 | Â Â Â Â Â Â Â Â |
|---|
| 569 |         if ~strcmp(CompAddrName(1:9), 'SMROAddr_') |
|---|
| 570 | Â Â Â Â Â Â Â Â Â Â display(['The Gateway In 'Â AddrName ' needs to have the prefix of SMROAddr_']); |
|---|
| 571 | Â Â Â Â Â Â Â Â Â Â return; |
|---|
| 572 | Â Â Â Â Â Â Â Â end |
|---|
| 573 | Â Â Â Â Â Â Â Â |
|---|
| 574 | Â Â Â Â Â Â Â Â |
|---|
| 575 | Â Â Â Â Â Â Â Â delete_block(SrcBlockHandleAddr); |
|---|
| 576 | |
|---|
| 577 | Â Â Â Â Â Â Â Â deleteSource(sys, cleanName(AddrName)); |
|---|
| 578 | Â Â Â Â Â Â Â Â |
|---|
| 579 | Â Â Â Â Â Â Â Â |
|---|
| 580 | Â Â Â Â Â Â Â Â |
|---|
| 581 |         brokenlines = find_system(sys,'LookUnderMasks', 'all', 'FollowLinks', 'on', 'FindAll', 'on', 'type', 'line', 'SrcBlockHandle', -1); |
|---|
| 582 | |
|---|
| 583 | Â Â Â Â Â Â Â Â |
|---|
| 584 | Â Â Â Â Â Â Â Â |
|---|
| 585 | Â Â Â Â Â Â Â Â DstPortHandle = get_param(brokenlines, 'DstPortHandle'); |
|---|
| 586 | Â Â Â Â Â Â Â Â DstBlockHandle = get_param(brokenlines, 'DstBlockHandle'); |
|---|
| 587 | |
|---|
| 588 | Â Â Â Â Â Â Â Â |
|---|
| 589 | Â Â Â Â Â Â Â Â |
|---|
| 590 |         if length(DstPortHandle) > 1 |
|---|
| 591 | Â Â Â Â Â Â Â Â Â Â DstPortNumber = cell2mat(get_param(DstPortHandle{length(DstPortHandle)}, 'PortNumber')); |
|---|
| 592 | Â Â Â Â Â Â Â Â else |
|---|
| 593 | Â Â Â Â Â Â Â Â Â Â DstPortNumber = get_param(DstPortHandle, 'PortNumber'); |
|---|
| 594 | Â Â Â Â Â Â Â Â end |
|---|
| 595 | |
|---|
| 596 | Â Â Â Â Â Â Â Â |
|---|
| 597 | Â Â Â Â Â Â Â Â |
|---|
| 598 |         if length(DstBlockHandle) > 1 |
|---|
| 599 | Â Â Â Â Â Â Â Â Â Â DstName = get_param(DstBlockHandle{length(DstBlockHandle)}, 'Name'); |
|---|
| 600 | Â Â Â Â Â Â Â Â Â Â try |
|---|
| 601 | Â Â Â Â Â Â Â Â Â Â Â Â DstBlockType = get_param(DstBlockHandle{length(DstBlockHandle)}, 'block_type'); |
|---|
| 602 | Â Â Â Â Â Â Â Â Â Â catch |
|---|
| 603 | Â Â Â Â Â Â Â Â Â Â Â Â DstBlockType = get_param(DstBlockHandle{length(DstBlockHandle)}, 'BlockType'); |
|---|
| 604 | Â Â Â Â Â Â Â Â Â Â end |
|---|
| 605 | Â Â Â Â Â Â Â Â else |
|---|
| 606 | Â Â Â Â Â Â Â Â Â Â DstName = get_param(DstBlockHandle, 'Name'); |
|---|
| 607 | Â Â Â Â Â Â Â Â Â Â try |
|---|
| 608 | Â Â Â Â Â Â Â Â Â Â Â Â DstBlockType = get_param(DstBlockHandle, 'block_type'); |
|---|
| 609 | Â Â Â Â Â Â Â Â Â Â catch |
|---|
| 610 | Â Â Â Â Â Â Â Â Â Â Â Â DstBlockType = get_param(DstBlockHandle, 'BlockType'); |
|---|
| 611 | Â Â Â Â Â Â Â Â Â Â end |
|---|
| 612 | Â Â Â Â Â Â Â Â end |
|---|
| 613 | |
|---|
| 614 | Â Â Â Â Â Â Â Â |
|---|
| 615 | Â Â Â Â Â Â Â Â delete_line(brokenlines); |
|---|
| 616 | |
|---|
| 617 | Â Â Â Â Â Â Â Â dpramROAddrIndex = dpramROAddrIndex + 1; |
|---|
| 618 | Â Â Â Â Â Â Â Â dpramROAddr{dpramROAddrIndex} = fromAddr; |
|---|
| 619 | Â Â Â Â Â Â Â Â |
|---|
| 620 | Â Â Â Â Â Â Â Â placeAddr(1,3) = placeAddr(1,1) + 75; |
|---|
| 621 | Â Â Â Â Â Â Â Â placeAddrSlice = placeAddr; |
|---|
| 622 | Â Â Â Â Â Â Â Â placeAddrSlice(1,1) = placeAddrSlice(1,3) + 30; |
|---|
| 623 | Â Â Â Â Â Â Â Â placeAddrSlice(1,3) = placeAddrSlice(1,1) + 50; |
|---|
| 624 | Â Â Â Â Â Â Â Â add_block('built-in/From', fromAddr, 'GotoTag', ['SMROAddr_'Â int2str(dpramROAddrIndex - 1)], 'position', placeAddr); |
|---|
| 625 | Â Â Â Â Â Â Â Â |
|---|
| 626 |         if(( version == 8.1) | (version == 8.2) | (version == 9.1)) |
|---|
| 627 | Â Â Â Â Â Â Â Â Â Â add_block([spm '/Slice8'], fromAddrSlice, 'position', placeAddrSlice, 'nbits', fromAddrSliceBits); |
|---|
| 628 | Â Â Â Â Â Â Â Â end |
|---|
| 629 | Â Â Â Â Â Â Â Â |
|---|
| 630 | Â Â Â Â Â Â Â Â FromName = get_param(fromAddr, 'Name'); |
|---|
| 631 | Â Â Â Â Â Â Â Â FromSliceName = get_param(fromAddrSlice, 'Name'); |
|---|
| 632 | Â Â Â Â Â Â Â Â set_param(fromAddr,'Orientation', orientationAddr); |
|---|
| 633 | |
|---|
| 634 | Â Â Â Â Â Â Â Â add_line(parentAddr, [FromName '/1'Â ], [FromSliceName '/1']); |
|---|
| 635 |         if size(DstName, 1) == 1 |
|---|
| 636 | Â Â Â Â Â Â Â Â Â Â |
|---|
| 637 | Â Â Â Â Â Â Â Â Â Â add_line(parentAddr, [FromSliceName '/1'], [DstName '/'Â int2str(DstPortNumber)]); |
|---|
| 638 | Â Â Â Â Â Â Â Â Â Â |
|---|
| 639 | Â Â Â Â Â Â Â Â else |
|---|
| 640 |           for i=1:size(DstName, 1) |
|---|
| 641 |             if ~strcmp(DstName{i}, get_param(dpramName, 'Name')) |
|---|
| 642 | Â Â Â Â Â Â Â Â Â Â Â Â Â Â add_line(parentAddr, [FromName '/1'], [DstName{i} '/'Â mat2str(DstPortNumber(i))]); |
|---|
| 643 | Â Â Â Â Â Â Â Â Â Â Â Â else |
|---|
| 644 | Â Â Â Â Â Â Â Â Â Â Â Â Â Â add_line(parentAddr, [FromSliceName '/1'], [DstName{i} '/'Â mat2str(DstPortNumber(i))]); |
|---|
| 645 | Â Â Â Â Â Â Â Â Â Â Â Â end |
|---|
| 646 | Â Â Â Â Â Â Â Â Â Â end |
|---|
| 647 | Â Â Â Â Â Â Â Â end |
|---|
| 648 | |
|---|
| 649 |         if ~strcmp(get_param(SrcBlockHandleDataI, 'block_type'), 'constant') |
|---|
| 650 | Â Â Â Â Â Â Â Â Â Â display(['A Xilinx constant is needed in order to connect to the dinb inport of the dpram 'Â dpramName '.']); |
|---|
| 651 | Â Â Â Â Â Â Â Â Â Â return; |
|---|
| 652 | Â Â Â Â Â Â Â Â end |
|---|
| 653 |         if ~strcmp(CompDataIName(1:10), 'SMRODataI_') |
|---|
| 654 | Â Â Â Â Â Â Â Â Â Â display(['The Xilinx block 'Â DataIName ' needs to have a prefix of SMRODataI_']); |
|---|
| 655 | Â Â Â Â Â Â Â Â Â Â return; |
|---|
| 656 | Â Â Â Â Â Â Â Â end |
|---|
| 657 |         if (str2num(get_param(SrcBlockHandleDataI, 'const')) ~= 0) | ~strcmp(get_param(SrcBlockHandleDataI, 'n_bits'), '32') |
|---|
| 658 | Â Â Â Â Â Â Â Â Â Â display(['The Xilinx constant 'Â DataIFullName ' needs to have a constant value of zero. Number of bits needs to be 32.']); |
|---|
| 659 | Â Â Â Â Â Â Â Â Â Â return; |
|---|
| 660 | Â Â Â Â Â Â Â Â end |
|---|
| 661 | |
|---|
| 662 |         if ~strcmp(get_param(SrcBlockHandleWE, 'block_type'), 'constant') |
|---|
| 663 | Â Â Â Â Â Â Â Â Â Â display(['A Xilinx constant is needed in order to connect to the web inport of the dpram 'Â dpramName '.']); |
|---|
| 664 | Â Â Â Â Â Â Â Â Â Â return; |
|---|
| 665 | Â Â Â Â Â Â Â Â end |
|---|
| 666 |         if ~strcmp(CompWEName(1:7), 'SMROWE_') |
|---|
| 667 | Â Â Â Â Â Â Â Â Â Â display(['The Gateway In ', WEName ' needs to have the prefix SMROWE_']); |
|---|
| 668 | Â Â Â Â Â Â Â Â Â Â return; |
|---|
| 669 | Â Â Â Â Â Â Â Â end |
|---|
| 670 |         if (str2num(get_param(SrcBlockHandleWE, 'const')) ~=0) | (~strcmp(get_param(SrcBlockHandleWE, 'arith_type'), 'Boolean')) |
|---|
| 671 | Â Â Â Â Â Â Â Â Â Â display(['The Xilinx constant 'Â WEFullName ' needs to be a Boolean constant with a value of zero.']); |
|---|
| 672 | Â Â Â Â Â Â Â Â Â Â return; |
|---|
| 673 | Â Â Â Â Â Â Â Â end |
|---|
| 674 | |
|---|
| 675 | Â Â Â Â Â Â Â Â |
|---|
| 676 | Â Â Â Â Â Â Â Â DataOName = get_param(DstBlockHandleDataO, 'Name'); |
|---|
| 677 | Â Â Â Â Â Â Â Â DataONameIdx = 1; |
|---|
| 678 |         if length(DstBlockHandleDataO) == 1 |
|---|
| 679 | Â Â Â Â Â Â Â Â Â Â CompDataOName = [DataOName 'Â Â Â Â Â ']; |
|---|
| 680 | Â Â Â Â Â Â Â Â Â Â DataOFullName = [get_param(DstBlockHandleDataO, 'Parent') '/'Â DataOName]; |
|---|
| 681 | Â Â Â Â Â Â Â Â else |
|---|
| 682 |           for i=1:length(DstBlockHandleDataO) |
|---|
| 683 | Â Â Â Â Â Â Â Â Â Â Â Â CompDataOName{i} = [DataOName{i} 'Â Â Â Â Â ']; |
|---|
| 684 | Â Â Â Â Â Â Â Â Â Â Â Â DataOFullName{i} = [get_param(DstBlockHandleDataO(i), 'Parent') '/'Â DataOName{i}];Â Â Â Â Â Â Â Â Â Â Â Â Â Â |
|---|
| 685 | Â Â Â Â Â Â Â Â Â Â end |
|---|
| 686 | Â Â Â Â Â Â Â Â end |
|---|
| 687 | Â Â Â Â Â Â Â Â |
|---|
| 688 | Â Â Â Â Â Â Â Â IsGatewayOut = false; |
|---|
| 689 | Â Â Â Â Â Â Â Â |
|---|
| 690 |         for d=1:length(DstBlockHandleDataO) |
|---|
| 691 |           if strcmp(get_param(DstBlockHandleDataO(d), 'block_type'), 'gatewayout') |
|---|
| 692 | Â Â Â Â Â Â Â Â Â Â Â Â IsGatewayOut = true; |
|---|
| 693 | |
|---|
| 694 | Â Â |
|---|