RE: [casper] OPB Address Space Overlap when using DRAM
Hi Jack, After a little trial and error, this worked for me. I got errors when I left the opb bus the same, and I also tried setting it to opb3, which was not created by an excessive number of yellow blocks. It seems like there has to be a partially full opb bus so it gets created early on in the synthesis process, but it must have room for the DRAM. Then the DRAM must be told to use that partially full bus in the gen_mhs_ip.m file. I’m running https://github.com/casper-astro/mlib_devel/commits/master from commit d7de268723e20de4523d699c84c8d9e1d6affbc3 on Nov 11, 2016. ( https://github.com/casper-astro/mlib_devel/commit/d7de268723e20de4523d699c84c8d9e1d6affbc3 ) On a side note, I’ve modified startup.m , gen_xps_files.m to let me run in windows 10 and gzip my bof files through 7zip, but neither of those should impact the DRAM. Now I’ve also modified xps_base/XPS_ROACH2_base/core_info.tab and xps_library/@xps_dram/gen_mhs_ip.m where I’ve put the opb_dram_sniffer on the opb1 bus, and I’ve moved the CTRL_C and MEM_C addresses into the 0x02xxx and 0x03xxx regions. I was getting the following error when I changed the addresses but not the opb bus: ERROR:HDLCompiler:874 - "C:/Xilinx/14.7/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/opb_v20_v1_10_c/hdl/vhdl/opb_v20.vhd" Line 575: Value 34 is out of target constraint range 1 to 32 ERROR:HDLCompiler:410 - "C:/Xilinx/14.7/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/opb_v20_v1_10_c/hdl/vhdl/opb_v20.vhd" Line 576: Expression has 34 elements ; expected 17 ERROR:EDK:546 - Aborting XST flow execution! INFO:EDK:2246 - Refer to C:\roach\Firmware\harvest\ddr\ddr_example11\XPS_ROACH2_base\synthesis\system_ opb0_wrapper_xst.srp for details After both the opb bus and addresses changes, things are working. As far as I can tell I am getting ADC data buffered into the DRAM and then packetized / sent to me over UDP. I’m working on a firmware version that sends counters instead of ADC data to ensure I’m not missing any points. The maximum amount of data I’ve stored in the dram so far is 800,000 counts x 128 bits. Thanks for the timely help! --Adam Adam Schoenwald - Electrical Engineer From: Jack Hickish [mailto:jackhick...@gmail.com] Sent: Monday, June 26, 2017 3:37 PM To: Schoenwald, Adam J. (GSFC-5640) <adam.schoenw...@nasa.gov>; casper@lists.berkeley.edu Subject: Re: [casper] OPB Address Space Overlap when using DRAM Hi Adam, Some months ago I tried to get the ddr in the casper-astro library working, using code provided by people on this list. Needless to say, I failed. I'm not sure what was wrong, but my spare time to debug got exhausted, and I haven't looked at this since. However, for your particular problem, I think you could just change the DRAM memory addresses, by modifying these two files -- https://github.com/casper-astro/mlib_devel/blob/master/xps_library/%40xps_dram/gen_mhs_ip.m (which sets the address used in HDL, see line 191+) https://github.com/casper-astro/mlib_devel/blob/master/xps_base/XPS_ROACH2_base/core_info.tab (which sets the address that the katcp server will look for the memory, see line 26+). I think as long as the addresses in these two files are consistent, you could change them. Does the dram interface actually work, when you can get the design to compile? If so I'd be interested to know what libraries you're using. Cheers Jack On Mon, 26 Jun 2017 at 12:13 Schoenwald, Adam J. (GSFC-5640) <adam.schoenw...@nasa.gov<mailto:adam.schoenw...@nasa.gov>> wrote: Hi All, I am trying to compile a design with using DRAM, an ADC16x250, 1x 10Gbe, and a good number of software registers. I also have a 128x2^11 snapshot. I don’t want an interface from the DRAM to the CPU (and have checked the box saying so) if that is relavent. I saw a recent commit by Jack H stating the TX and RX from CPU on 10GBE must be checked, which it is now. I got this to work by deleting software registers, but I don’t think I should have to. Is there any way I can alter the gen_xps_mod_mhs.m file to fix this error? I found I had to keep deleting software registers until I only used the single opb bus (there were some devices added later during synthesis, so with headroom) to avoid getting this error. Error message; Checking platform address map ... ERROR:EDK:4056 - INST:opb2opb_bridge_opb1 BASEADDR-HIGHADDR:0x0108-0x010f and INST:opb_dram_sniffer_inst BASEADDR-HIGHADDR:0x010b-0x010b - address space overlap! ERROR:EDK:440 - platgen failed with errors! make: *** [implementation/system.bmm] Error 2 ERROR:EDK - Error while running "make -f system.make bits". : XPS failed. I’ve copied the gen_xps_mod_mhs_debug information below:
Re: [casper] OPB Address Space Overlap when using DRAM
Hi Adam, Some months ago I tried to get the ddr in the casper-astro library working, using code provided by people on this list. Needless to say, I failed. I'm not sure what was wrong, but my spare time to debug got exhausted, and I haven't looked at this since. However, for your particular problem, I think you could just change the DRAM memory addresses, by modifying these two files -- https://github.com/casper-astro/mlib_devel/blob/master/xps_library/%40xps_dram/gen_mhs_ip.m (which sets the address used in HDL, see line 191+) https://github.com/casper-astro/mlib_devel/blob/master/xps_base/XPS_ROACH2_base/core_info.tab (which sets the address that the katcp server will look for the memory, see line 26+). I think as long as the addresses in these two files are consistent, you could change them. Does the dram interface actually work, when you can get the design to compile? If so I'd be interested to know what libraries you're using. Cheers Jack On Mon, 26 Jun 2017 at 12:13 Schoenwald, Adam J. (GSFC-5640) < adam.schoenw...@nasa.gov> wrote: > Hi All, > > I am trying to compile a design with using DRAM, an ADC16x250, 1x 10Gbe, > and a good number of software registers. I also have a 128x2^11 snapshot. I > don’t want an interface from the DRAM to the CPU (and have checked the box > saying so) if that is relavent. I saw a recent commit by Jack H stating the > TX and RX from CPU on 10GBE must be checked, which it is now. > > > > I got this to work by deleting software registers, but I don’t think I > should have to. Is there any way I can alter the gen_xps_mod_mhs.m file to > fix this error? > > > > I found I had to keep deleting software registers until I only used the > single opb bus (there were some devices added later during synthesis, so > with headroom) to avoid getting this error. > > > > > > Error message; > > > > Checking platform address map ... > > ERROR:EDK:4056 - INST:opb2opb_bridge_opb1 > >BASEADDR-HIGHADDR:0x0108-0x010f and INST:opb_dram_sniffer_inst > >BASEADDR-HIGHADDR:0x010b-0x010b - address space overlap! > > ERROR:EDK:440 - platgen failed with errors! > > make: *** [implementation/system.bmm] Error 2 > > ERROR:EDK - > >Error while running "make -f system.make bits". > > : XPS failed. > > > > > > I’ve copied the gen_xps_mod_mhs_debug information below: > > > > > > > > > > ## Copying custom IPs ## > > > > ## > > ## Creating Simulink IP ## > > ## > > ## > > ## Creating EDK files ## > > ## > > Running off adc_clk @200MHz > > Running off adc_clk @200MHz > > gen_xps_mod_mhs_debug: Searching for fixed opb0 devices. 2 initial fixed > devices > > gen_xps_mod_mhs_debug: ddr_example8/adc16x250-8: 5 opb0 devices > > gen_xps_mod_mhs_debug: 5 fixed opb0 devices in total found > > gen_xps_mod_mhs_debug: Searching for opb bridges from address 0x0100 > with 7 initial devices on opb0 > > gen_xps_mod_mhs_debug: ddr_example8/exp_id_no overflowed number of devices > for opb0. 32 allowed, got 33 > > gen_xps_mod_mhs_debug: ddr_example8/exp_done overflowed number of devices > for opb1. 32 allowed, got 33 > > gen_xps_mod_mhs_debug: Finished searching. 1 opb2opb bridges found giving > 8 initial devices on opb0 > > gen_xps_mod_mhs_debug: 0x0100-0x00FF opbs: 0 fixed opb0 + 0 on > opb0 (8 so far) (ddr_example8/XSG_core_config) > > gen_xps_mod_mhs_debug: 0x0100-0x01FF opbs: 0 fixed opb0 + 1 on > opb0 (9 so far) (ddr_example8/ack_error_count) > > gen_xps_mod_mhs_debug: 0x01000100-0x01FF opbs: 5 fixed opb0 + 0 on > opb0 (9 so far) (ddr_example8/adc16x250-8) > > gen_xps_mod_mhs_debug: 0x01000100-0x010001FF opbs: 0 fixed opb0 + 1 on > opb0 (10 so far) (ddr_example8/beacon_en) > > gen_xps_mod_mhs_debug: 0x01000200-0x010002FF opbs: 0 fixed opb0 + 1 on > opb0 (11 so far) (ddr_example8/burst_per_beacon) > > gen_xps_mod_mhs_debug: 0x01000300-0x010003FF opbs: 0 fixed opb0 + 1 on > opb0 (12 so far) (ddr_example8/burst_per_exp) > > gen_xps_mod_mhs_debug: 0x01000400-0x010004FF opbs: 0 fixed opb0 + 1 on > opb0 (13 so far) (ddr_example8/config_mode) > > gen_xps_mod_mhs_debug: 0x01000500-0x010005FF opbs: 0 fixed opb0 + 1 on > opb0 (14 so far) (ddr_example8/count_btw_burst) > > gen_xps_mod_mhs_debug: 0x01000600-0x010006FF opbs: 0 fixed opb0 + 1 on > opb0 (15 so far) (ddr_example8/count_per_burst) > > gen_xps_mod_mhs_debug: 0x01000700-0x010007FF opbs: 0 fixed opb0 + 1 on > opb0 (16 so far) (ddr_example8/count_per_pkt) > > Calling DRAM function...Looking for dimm number...gen_xps_mod_mhs_debug: > 0x01000800-0x010007FF opbs: 0 fixed opb0 + 0 on opb0 (16 so far) > (ddr_example8/dram) > > gen_xps_mod_mhs_debug: 0x01000800-0x010008FF opbs: 0 fixed opb0 + 1 on > opb0 (17 so far) (ddr_example8/dummy_input) > > gen_xps_mod_mhs_debug: 0x01000900-0x010009FF opbs: 0 fixed
[casper] OPB Address Space Overlap when using DRAM
Hi All, I am trying to compile a design with using DRAM, an ADC16x250, 1x 10Gbe, and a good number of software registers. I also have a 128x2^11 snapshot. I don't want an interface from the DRAM to the CPU (and have checked the box saying so) if that is relavent. I saw a recent commit by Jack H stating the TX and RX from CPU on 10GBE must be checked, which it is now. I got this to work by deleting software registers, but I don't think I should have to. Is there any way I can alter the gen_xps_mod_mhs.m file to fix this error? I found I had to keep deleting software registers until I only used the single opb bus (there were some devices added later during synthesis, so with headroom) to avoid getting this error. Error message; Checking platform address map ... ERROR:EDK:4056 - INST:opb2opb_bridge_opb1 BASEADDR-HIGHADDR:0x0108-0x010f and INST:opb_dram_sniffer_inst BASEADDR-HIGHADDR:0x010b-0x010b - address space overlap! ERROR:EDK:440 - platgen failed with errors! make: *** [implementation/system.bmm] Error 2 ERROR:EDK - Error while running "make -f system.make bits". : XPS failed. I've copied the gen_xps_mod_mhs_debug information below: ## Copying custom IPs ## ## ## Creating Simulink IP ## ## ## ## Creating EDK files ## ## Running off adc_clk @200MHz Running off adc_clk @200MHz gen_xps_mod_mhs_debug: Searching for fixed opb0 devices. 2 initial fixed devices gen_xps_mod_mhs_debug: ddr_example8/adc16x250-8: 5 opb0 devices gen_xps_mod_mhs_debug: 5 fixed opb0 devices in total found gen_xps_mod_mhs_debug: Searching for opb bridges from address 0x0100 with 7 initial devices on opb0 gen_xps_mod_mhs_debug: ddr_example8/exp_id_no overflowed number of devices for opb0. 32 allowed, got 33 gen_xps_mod_mhs_debug: ddr_example8/exp_done overflowed number of devices for opb1. 32 allowed, got 33 gen_xps_mod_mhs_debug: Finished searching. 1 opb2opb bridges found giving 8 initial devices on opb0 gen_xps_mod_mhs_debug: 0x0100-0x00FF opbs: 0 fixed opb0 + 0 on opb0 (8 so far) (ddr_example8/XSG_core_config) gen_xps_mod_mhs_debug: 0x0100-0x01FF opbs: 0 fixed opb0 + 1 on opb0 (9 so far) (ddr_example8/ack_error_count) gen_xps_mod_mhs_debug: 0x01000100-0x01FF opbs: 5 fixed opb0 + 0 on opb0 (9 so far) (ddr_example8/adc16x250-8) gen_xps_mod_mhs_debug: 0x01000100-0x010001FF opbs: 0 fixed opb0 + 1 on opb0 (10 so far) (ddr_example8/beacon_en) gen_xps_mod_mhs_debug: 0x01000200-0x010002FF opbs: 0 fixed opb0 + 1 on opb0 (11 so far) (ddr_example8/burst_per_beacon) gen_xps_mod_mhs_debug: 0x01000300-0x010003FF opbs: 0 fixed opb0 + 1 on opb0 (12 so far) (ddr_example8/burst_per_exp) gen_xps_mod_mhs_debug: 0x01000400-0x010004FF opbs: 0 fixed opb0 + 1 on opb0 (13 so far) (ddr_example8/config_mode) gen_xps_mod_mhs_debug: 0x01000500-0x010005FF opbs: 0 fixed opb0 + 1 on opb0 (14 so far) (ddr_example8/count_btw_burst) gen_xps_mod_mhs_debug: 0x01000600-0x010006FF opbs: 0 fixed opb0 + 1 on opb0 (15 so far) (ddr_example8/count_per_burst) gen_xps_mod_mhs_debug: 0x01000700-0x010007FF opbs: 0 fixed opb0 + 1 on opb0 (16 so far) (ddr_example8/count_per_pkt) Calling DRAM function...Looking for dimm number...gen_xps_mod_mhs_debug: 0x01000800-0x010007FF opbs: 0 fixed opb0 + 0 on opb0 (16 so far) (ddr_example8/dram) gen_xps_mod_mhs_debug: 0x01000800-0x010008FF opbs: 0 fixed opb0 + 1 on opb0 (17 so far) (ddr_example8/dummy_input) gen_xps_mod_mhs_debug: 0x01000900-0x010009FF opbs: 0 fixed opb0 + 1 on opb0 (18 so far) (ddr_example8/dummy_input1) gen_xps_mod_mhs_debug: 0x01000A00-0x01000AFF opbs: 0 fixed opb0 + 1 on opb0 (19 so far) (ddr_example8/dummy_input10) gen_xps_mod_mhs_debug: 0x01000B00-0x01000BFF opbs: 0 fixed opb0 + 1 on opb0 (20 so far) (ddr_example8/dummy_input11) gen_xps_mod_mhs_debug: 0x01000C00-0x01000CFF opbs: 0 fixed opb0 + 1 on opb0 (21 so far) (ddr_example8/dummy_input12) gen_xps_mod_mhs_debug: 0x01000D00-0x01000DFF opbs: 0 fixed opb0 + 1 on opb0 (22 so far) (ddr_example8/dummy_input13) gen_xps_mod_mhs_debug: 0x01000E00-0x01000EFF opbs: 0 fixed opb0 + 1 on opb0 (23 so far) (ddr_example8/dummy_input14) gen_xps_mod_mhs_debug: 0x01000F00-0x01000FFF opbs: 0 fixed opb0 + 1 on opb0 (24 so far) (ddr_example8/dummy_input15) gen_xps_mod_mhs_debug: 0x01001000-0x010010FF opbs: 0 fixed opb0 + 1 on opb0 (25 so far) (ddr_example8/dummy_input2) gen_xps_mod_mhs_debug: 0x01001100-0x010011FF opbs: 0 fixed opb0 + 1 on opb0 (26 so far) (ddr_example8/dummy_input3) gen_xps_mod_mhs_debug: 0x01001200-0x010012FF opbs: 0 fixed opb0 + 1 on opb0 (27 so far) (ddr_example8/dummy_input4) gen_xps_mod_mhs_debug: 0x01001300-0x010013FF opbs: 0 fixed opb0 + 1 on opb0 (28 so far) (ddr_example8/dummy_input5) gen_xps_mod_mhs_debug: 0x01001400-0x010014FF opbs: 0 fixed opb0 + 1