diff options
Diffstat (limited to 'hdl/top.sv')
| -rw-r--r-- | hdl/top.sv | 181 |
1 files changed, 92 insertions, 89 deletions
| @@ -300,37 +300,40 @@ module top | |||
| 300 | assign led[7] = {2'b0, led_step_counter[4], led_step_counter[3], led_step_counter[2], led_step_counter[1], led_step_counter[0], led_run, led_pause, led_ion, led_break, led_current_address}; | 300 | assign led[7] = {2'b0, led_step_counter[4], led_step_counter[3], led_step_counter[2], led_step_counter[1], led_step_counter[0], led_run, led_pause, led_ion, led_break, led_current_address}; |
| 301 | assign led[8] = {5'b0, led_link, led_if[0], led_if[1], led_if[2], led_df[0], led_df[1], led_df[2]}; | 301 | assign led[8] = {5'b0, led_link, led_if[0], led_if[1], led_if[2], led_df[0], led_df[1], led_df[2]}; |
| 302 | 302 | ||
| 303 | bit [$clog2(`NUM_PDPS):0] selected_pdp; | ||
| 304 | assign selected_pdp = {switch_df, switch_if}; | ||
| 305 | |||
| 306 | bit [11:0] local_led_pc [`NUM_PDPS-1:0]; | ||
| 307 | bit [11:0] local_led_memaddr [`NUM_PDPS-1:0]; | ||
| 308 | bit [11:0] local_led_memdata [`NUM_PDPS-1:0]; | ||
| 309 | bit [11:0] local_led_acc [`NUM_PDPS-1:0]; | ||
| 310 | bit [11:0] local_led_mq [`NUM_PDPS-1:0]; | ||
| 311 | bit local_led_and [`NUM_PDPS-1:0]; | ||
| 312 | bit local_led_tad [`NUM_PDPS-1:0]; | ||
| 313 | bit local_led_isz [`NUM_PDPS-1:0]; | ||
| 314 | bit local_led_dca [`NUM_PDPS-1:0]; | ||
| 315 | bit local_led_jms [`NUM_PDPS-1:0]; | ||
| 316 | bit local_led_jmp [`NUM_PDPS-1:0]; | ||
| 317 | bit local_led_iot [`NUM_PDPS-1:0]; | ||
| 318 | bit local_led_opr [`NUM_PDPS-1:0]; | ||
| 319 | bit local_led_fetch [`NUM_PDPS-1:0]; | ||
| 320 | bit local_led_execute [`NUM_PDPS-1:0]; | ||
| 321 | bit local_led_defer [`NUM_PDPS-1:0]; | ||
| 322 | bit local_led_word_count [`NUM_PDPS-1:0]; | ||
| 323 | bit local_led_current_address [`NUM_PDPS-1:0]; | ||
| 324 | bit local_led_break [`NUM_PDPS-1:0]; | ||
| 325 | bit local_led_ion [`NUM_PDPS-1:0]; | ||
| 326 | bit local_led_pause [`NUM_PDPS-1:0]; | ||
| 327 | bit local_led_run [`NUM_PDPS-1:0]; | ||
| 328 | bit [4:0] local_led_step_counter [`NUM_PDPS-1:0]; | ||
| 329 | bit [2:0] local_led_df [`NUM_PDPS-1:0]; | ||
| 330 | bit [2:0] local_led_if [`NUM_PDPS-1:0]; | ||
| 331 | bit local_led_link [`NUM_PDPS-1:0]; | ||
| 332 | |||
| 303 | generate | 333 | generate |
| 304 | genvar i; | 334 | genvar i; |
| 305 | for (i = 0; i < `NUM_PDPS; ++i) begin : core | 335 | for (i = 0; i < `NUM_PDPS; ++i) begin : core |
| 306 | 336 | ||
| 307 | bit [11:0] local_led_pc; | ||
| 308 | bit [11:0] local_led_memaddr; | ||
| 309 | bit [11:0] local_led_memdata; | ||
| 310 | bit [11:0] local_led_acc; | ||
| 311 | bit [11:0] local_led_mq; | ||
| 312 | bit local_led_and; | ||
| 313 | bit local_led_tad; | ||
| 314 | bit local_led_isz; | ||
| 315 | bit local_led_dca; | ||
| 316 | bit local_led_jms; | ||
| 317 | bit local_led_jmp; | ||
| 318 | bit local_led_iot; | ||
| 319 | bit local_led_opr; | ||
| 320 | bit local_led_fetch; | ||
| 321 | bit local_led_execute; | ||
| 322 | bit local_led_defer; | ||
| 323 | bit local_led_word_count; | ||
| 324 | bit local_led_current_address; | ||
| 325 | bit local_led_break; | ||
| 326 | bit local_led_ion; | ||
| 327 | bit local_led_pause; | ||
| 328 | bit local_led_run; | ||
| 329 | bit [4:0] local_led_step_counter; | ||
| 330 | bit [2:0] local_led_df; | ||
| 331 | bit [2:0] local_led_if; | ||
| 332 | bit local_led_link; | ||
| 333 | |||
| 334 | core | 337 | core |
| 335 | #( .JTAG_INSTANCE(1+i) | 338 | #( .JTAG_INSTANCE(1+i) |
| 336 | ) cpu | 339 | ) cpu |
| @@ -345,75 +348,75 @@ module top | |||
| 345 | , .mem_read_valid(pdp_response_valid[i]) | 348 | , .mem_read_valid(pdp_response_valid[i]) |
| 346 | , .mem_read(pdp_response_data[i]) | 349 | , .mem_read(pdp_response_data[i]) |
| 347 | 350 | ||
| 348 | , .switch_df(switch_df) | 351 | , .switch_df(0) |
| 349 | , .switch_if(switch_if) | 352 | , .switch_if(0) |
| 350 | , .switch_sr(switch_sr) | 353 | , .switch_sr(switch_sr) |
| 351 | , .switch_start(switch_start) | 354 | , .switch_start(selected_pdp == i ? switch_start : 0) |
| 352 | , .switch_load_add(switch_load_add) | 355 | , .switch_load_add(selected_pdp == i ? switch_load_add : 0) |
| 353 | , .switch_dep(switch_dep) | 356 | , .switch_dep(selected_pdp == i ? switch_dep : 0) |
| 354 | , .switch_exam(switch_exam) | 357 | , .switch_exam(selected_pdp == i ? switch_exam : 0) |
| 355 | , .switch_cont(switch_cont) | 358 | , .switch_cont(selected_pdp == i ? switch_cont : 0) |
| 356 | , .switch_stop(switch_stop) | 359 | , .switch_stop(selected_pdp == i ? switch_stop : 0) |
| 357 | , .switch_sing_step(switch_sing_step) | 360 | , .switch_sing_step(selected_pdp == i ? switch_sing_step : 0) |
| 358 | , .switch_sing_inst(switch_sing_inst) | 361 | , .switch_sing_inst(selected_pdp == i ? switch_sing_inst : 0) |
| 359 | 362 | ||
| 360 | , .led_pc(local_led_pc) | 363 | , .led_pc(local_led_pc[i]) |
| 361 | , .led_memaddr(local_led_memaddr) | 364 | , .led_memaddr(local_led_memaddr[i]) |
| 362 | , .led_memdata(local_led_memdata) | 365 | , .led_memdata(local_led_memdata[i]) |
| 363 | , .led_acc(local_led_acc) | 366 | , .led_acc(local_led_acc[i]) |
| 364 | , .led_mq(local_led_mq) | 367 | , .led_mq(local_led_mq[i]) |
| 365 | , .led_and(local_led_and) | 368 | , .led_and(local_led_and[i]) |
| 366 | , .led_tad(local_led_tad) | 369 | , .led_tad(local_led_tad[i]) |
| 367 | , .led_isz(local_led_isz) | 370 | , .led_isz(local_led_isz[i]) |
| 368 | , .led_dca(local_led_dca) | 371 | , .led_dca(local_led_dca[i]) |
| 369 | , .led_jms(local_led_jms) | 372 | , .led_jms(local_led_jms[i]) |
| 370 | , .led_jmp(local_led_jmp) | 373 | , .led_jmp(local_led_jmp[i]) |
| 371 | , .led_iot(local_led_iot) | 374 | , .led_iot(local_led_iot[i]) |
| 372 | , .led_opr(local_led_opr) | 375 | , .led_opr(local_led_opr[i]) |
| 373 | , .led_fetch(local_led_fetch) | 376 | , .led_fetch(local_led_fetch[i]) |
| 374 | , .led_execute(local_led_execute) | 377 | , .led_execute(local_led_execute[i]) |
| 375 | , .led_defer(local_led_defer) | 378 | , .led_defer(local_led_defer[i]) |
| 376 | , .led_word_count(local_led_word_count) | 379 | , .led_word_count(local_led_word_count[i]) |
| 377 | , .led_current_address(local_led_current_address) | 380 | , .led_current_address(local_led_current_address[i]) |
| 378 | , .led_break(local_led_break) | 381 | , .led_break(local_led_break[i]) |
| 379 | , .led_ion(local_led_ion) | 382 | , .led_ion(local_led_ion[i]) |
| 380 | , .led_pause(local_led_pause) | 383 | , .led_pause(local_led_pause[i]) |
| 381 | , .led_run(local_led_run) | 384 | , .led_run(local_led_run[i]) |
| 382 | , .led_step_counter(local_led_step_counter) | 385 | , .led_step_counter(local_led_step_counter[i]) |
| 383 | , .led_df(local_led_df) | 386 | , .led_df(local_led_df[i]) |
| 384 | , .led_if(local_led_if) | 387 | , .led_if(local_led_if[i]) |
| 385 | , .led_link(local_led_link) | 388 | , .led_link(local_led_link[i]) |
| 386 | ); | 389 | ); |
| 387 | 390 | ||
| 388 | end | 391 | end |
| 389 | 392 | ||
| 390 | endgenerate | 393 | endgenerate |
| 391 | 394 | ||
| 392 | assign led_pc = core[0].local_led_pc; | 395 | assign led_pc = local_led_pc[selected_pdp]; |
| 393 | assign led_memaddr = core[0].local_led_memaddr; | 396 | assign led_memaddr = local_led_memaddr[selected_pdp]; |
| 394 | assign led_memdata = core[0].local_led_memdata; | 397 | assign led_memdata = local_led_memdata[selected_pdp]; |
| 395 | assign led_acc = core[0].local_led_acc; | 398 | assign led_acc = local_led_acc[selected_pdp]; |
| 396 | assign led_mq = core[0].local_led_mq; | 399 | assign led_mq = local_led_mq[selected_pdp]; |
| 397 | assign led_and = core[0].local_led_and; | 400 | assign led_and = local_led_and[selected_pdp]; |
| 398 | assign led_tad = core[0].local_led_tad; | 401 | assign led_tad = local_led_tad[selected_pdp]; |
| 399 | assign led_isz = core[0].local_led_isz; | 402 | assign led_isz = local_led_isz[selected_pdp]; |
| 400 | assign led_dca = core[0].local_led_dca; | 403 | assign led_dca = local_led_dca[selected_pdp]; |
| 401 | assign led_jms = core[0].local_led_jms; | 404 | assign led_jms = local_led_jms[selected_pdp]; |
| 402 | assign led_jmp = core[0].local_led_jmp; | 405 | assign led_jmp = local_led_jmp[selected_pdp]; |
| 403 | assign led_iot = core[0].local_led_iot; | 406 | assign led_iot = local_led_iot[selected_pdp]; |
| 404 | assign led_opr = core[0].local_led_opr; | 407 | assign led_opr = local_led_opr[selected_pdp]; |
| 405 | assign led_fetch = core[0].local_led_fetch; | 408 | assign led_fetch = local_led_fetch[selected_pdp]; |
| 406 | assign led_execute = core[0].local_led_execute; | 409 | assign led_execute = local_led_execute[selected_pdp]; |
| 407 | assign led_defer = core[0].local_led_defer; | 410 | assign led_defer = local_led_defer[selected_pdp]; |
| 408 | assign led_word_count = core[0].local_led_word_count; | 411 | assign led_word_count = local_led_word_count[selected_pdp]; |
| 409 | assign led_current_address = core[0].local_led_current_address; | 412 | assign led_current_address = local_led_current_address[selected_pdp]; |
| 410 | assign led_break = core[0].local_led_break; | 413 | assign led_break = local_led_break[selected_pdp]; |
| 411 | assign led_ion = core[0].local_led_ion; | 414 | assign led_ion = local_led_ion[selected_pdp]; |
| 412 | assign led_pause = core[0].local_led_pause; | 415 | assign led_pause = local_led_pause[selected_pdp]; |
| 413 | assign led_run = core[0].local_led_run; | 416 | assign led_run = local_led_run[selected_pdp]; |
| 414 | assign led_step_counter = core[0].local_led_step_counter; | 417 | assign led_step_counter = local_led_step_counter[selected_pdp]; |
| 415 | assign led_df = core[0].local_led_df; | 418 | assign led_df = local_led_df[selected_pdp]; |
| 416 | assign led_if = core[0].local_led_if; | 419 | assign led_if = local_led_if[selected_pdp]; |
| 417 | assign led_link = core[0].local_led_link; | 420 | assign led_link = local_led_link[selected_pdp]; |
| 418 | 421 | ||
| 419 | endmodule | 422 | endmodule |
