Hi Dave,

We've just encountered an interesting issue here where the toolflow's
bus addresser gives overlapping addresses as it spans two bridges. What
seems to be happening is that there are a fairly large number of BRAMs
in the design, and so by the time a new opb2opb bridge is inserted, the
address usage has already crossed beyond 0x01080000.

The way I'm reading gen_xps_mod_mhs for the powerpc440_ext is that each
bridge's address space essentially has static allocation using

hex2dec('01000000') + opb_bus_inst * opb_bridge_size

whereas for powerpc405 I think a bridge would start its address space
wherever the previous bridge left off.

Was there a specific need for doing this static allocation?

If it's useful at all, the design's device addressing is included below,
showing how the address space kind of jumps back after the new bridge.

I took a look at one of Jason's packetized correlator designs, being one
of the larger designs I knew of. I think that design inserted 2 bridges
without running into this problem. Has anybody seen something like this
before?

Thanks!

Cheers,
Henry


Address Map for Processor epb_opb_bridge_inst
  (0000000000-0x0000ffff) sys_block_inst opb0
  (0x01000000-0x01001fff) part4_roach_clean_2_port_ROM_vth_vect_0 opb0
  (0x01002000-0x01003fff) part4_roach_clean_2_port_ROM_vth_vect_1 opb0
  (0x01010000-0x0101ffff) part4_roach_clean_CV_CV2 opb0
  (0x01020000-0x0102ffff) part4_roach_clean_CV_CV2_setup_DEBUG opb0
  (0x01030000-0x010300ff) part4_roach_clean_CV_addr_max opb0
  (0x01030100-0x010301ff) part4_roach_clean_CV_current_min opb0
  (0x01030200-0x010302ff) part4_roach_clean_CV_min_addr opb0
  (0x01030300-0x010303ff) part4_roach_clean_DONE opb0
  (0x01040000-0x0104ffff) part4_roach_clean_Y opb0
  (0x01050000-0x010500ff) part4_roach_clean_Y_addr_max opb0
  (0x01060000-0x0106ffff) part4_roach_clean_Y_setup_DEBUG opb0
  (0x01070000-0x01071fff) part4_roach_clean_add_to_Y opb0
  (0x01072000-0x010720ff) part4_roach_clean_add_to_Y_max_addr opb0
  (0x01074000-0x01075fff) part4_roach_clean_b opb0
  (0x01076000-0x01077fff) part4_roach_clean_basic_vars opb0
  (0x01078000-0x010780ff) part4_roach_clean_findpivcol_done opb0
  (0x01078100-0x010781ff) part4_roach_clean_gelim_done opb0
  (0x01078200-0x010782ff) part4_roach_clean_last_row_index opb0
  (0x01078300-0x010783ff) part4_roach_clean_mrt_done opb0
  (0x01078400-0x010784ff) part4_roach_clean_no_min opb0
  (0x01078500-0x010785ff) part4_roach_clean_number_of_loops opb0
  (0x0107a000-0x0107bfff) part4_roach_clean_other_rows opb0
  (0x0107c000-0x0107dfff) part4_roach_clean_other_rows_copy opb0
  (0x0107e000-0x0107e0ff) part4_roach_clean_other_rows_max_addr opb0
(0x01080000-0x010800ff) part4_roach_clean_pushinATY_done opb0->opb2opb_bridge_opb1->opb1 (0x01080100-0x010801ff) part4_roach_clean_pushinOR_done opb0->opb2opb_bridge_opb1->opb1 (0x01080200-0x010802ff) part4_roach_clean_reset opb0->opb2opb_bridge_opb1->opb1 (0x01080300-0x010803ff) part4_roach_clean_savepivcol_done opb0->opb2opb_bridge_opb1->opb1 (0x01080400-0x010804ff) part4_roach_clean_saverows_done opb0->opb2opb_bridge_opb1->opb1 (0x01080500-0x010805ff) part4_roach_clean_setup_done opb0->opb2opb_bridge_opb1->opb1 (0x01080600-0x010806ff) part4_roach_clean_thresh opb0->opb2opb_bridge_opb1->opb1 (0x01080700-0x010807ff) part4_roach_clean_totalclockcycles opb0->opb2opb_bridge_opb1->opb1 (0x01080800-0x010808ff) part4_roach_clean_updateCV_done opb0->opb2opb_bridge_opb1->opb1 (0x01080900-0x010809ff) part4_roach_clean_vfs opb0->opb2opb_bridge_opb1->opb1
  (0x01080000-0x01081fff) part4_roach_clean_piv_col opb0
  (0x01082000-0x01083fff) part4_roach_clean_piv_row opb0
  (0x01084000-0x010840ff) part4_roach_clean_piv_row_max_addr opb0
  (0x01084100-0x010841ff) part4_roach_clean_pivcol_max_addr opb0
  (0x01084200-0x010842ff) part4_roach_clean_pivot_row_b opb0
  (0x01084300-0x010843ff) part4_roach_clean_pivot_row_y opb0

Reply via email to