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:0x01080000-0x010fffff and INST:opb_dram_sniffer_inst BASEADDR-HIGHADDR:0x010b0000-0x010bffff - 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 0x01000000 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: 0x01000000-0x00FFFFFF opbs: 0 fixed opb0 + 0 on opb0 (8 so far) (ddr_example8/XSG_core_config) gen_xps_mod_mhs_debug: 0x01000000-0x010000FF opbs: 0 fixed opb0 + 1 on opb0 (9 so far) (ddr_example8/ack_error_count) gen_xps_mod_mhs_debug: 0x01000100-0x010000FF 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 on opb0 (29 so far) (ddr_example8/dummy_input6) gen_xps_mod_mhs_debug: 0x01001500-0x010015FF opbs: 0 fixed opb0 + 1 on opb0 (30 so far) (ddr_example8/dummy_input7) gen_xps_mod_mhs_debug: 0x01001600-0x010016FF opbs: 0 fixed opb0 + 1 on opb0 (31 so far) (ddr_example8/dummy_input8) gen_xps_mod_mhs_debug: 0x01001700-0x010017FF opbs: 0 fixed opb0 + 1 on opb0 (32 so far) (ddr_example8/dummy_input9) gen_xps_mod_mhs_debug: adding opb bridge opb0 for ddr_example8/exp_done device number 28 causing device overflow at device 33 gen_xps_mod_mhs_debug: 0x01080000-0x010800FF opbs: 0 fixed opb0 + 1 on opb1 (1 so far) (ddr_example8/exp_done) gen_xps_mod_mhs_debug: 0x01080100-0x010801FF opbs: 0 fixed opb0 + 1 on opb1 (2 so far) (ddr_example8/exp_id_no) gen_xps_mod_mhs_debug: 0x01080200-0x010802FF opbs: 0 fixed opb0 + 1 on opb1 (3 so far) (ddr_example8/exp_mode) gen_xps_mod_mhs_debug: 0x01080300-0x01087FFF opbs: 0 fixed opb0 + 1 on opb1 (4 so far) (ddr_example8/g/ten_Gbe_v2) gen_xps_mod_mhs_debug: 0x01088000-0x010880FF opbs: 0 fixed opb0 + 1 on opb1 (5 so far) (ddr_example8/meta_a) gen_xps_mod_mhs_debug: 0x01088100-0x010881FF opbs: 0 fixed opb0 + 1 on opb1 (6 so far) (ddr_example8/meta_b) gen_xps_mod_mhs_debug: 0x01088200-0x010882FF opbs: 0 fixed opb0 + 1 on opb1 (7 so far) (ddr_example8/meta_c) gen_xps_mod_mhs_debug: 0x01088300-0x010883FF opbs: 0 fixed opb0 + 1 on opb1 (8 so far) (ddr_example8/mux_adc_or_counter) gen_xps_mod_mhs_debug: 0x01088400-0x010884FF opbs: 0 fixed opb0 + 1 on opb1 (9 so far) (ddr_example8/number_of_pkt) gen_xps_mod_mhs_debug: 0x01088500-0x010885FF opbs: 0 fixed opb0 + 1 on opb1 (10 so far) (ddr_example8/phy_ready) gen_xps_mod_mhs_debug: 0x01088600-0x01097FFF opbs: 0 fixed opb0 + 1 on opb1 (11 so far) (ddr_example8/snapshot/bram) gen_xps_mod_mhs_debug: 0x01098000-0x010980FF opbs: 0 fixed opb0 + 1 on opb1 (12 so far) (ddr_example8/snapshot/ctrl) gen_xps_mod_mhs_debug: 0x01098100-0x010981FF opbs: 0 fixed opb0 + 1 on opb1 (13 so far) (ddr_example8/snapshot/status) gen_xps_mod_mhs_debug: 0x01098200-0x010982FF opbs: 0 fixed opb0 + 1 on opb1 (14 so far) (ddr_example8/start_exp_now) gen_xps_mod_mhs_debug: 0x01098300-0x010983FF opbs: 0 fixed opb0 + 1 on opb1 (15 so far) (ddr_example8/swreg/gbe_blk) gen_xps_mod_mhs_debug: 0x01098400-0x010984FF opbs: 0 fixed opb0 + 1 on opb1 (16 so far) (ddr_example8/swreg/gbe_rst) gen_xps_mod_mhs_debug: 0x01098500-0x010985FF opbs: 0 fixed opb0 + 1 on opb1 (17 so far) (ddr_example8/swreg/gbe_tx_ip) gen_xps_mod_mhs_debug: 0x01098600-0x010986FF opbs: 0 fixed opb0 + 1 on opb1 (18 so far) (ddr_example8/swreg/gbe_tx_port) gen_xps_mod_mhs_debug: 0x01098700-0x010987FF opbs: 0 fixed opb0 + 1 on opb1 (19 so far) (ddr_example8/swregout/gbe0_linkup) gen_xps_mod_mhs_debug: 0x01098800-0x010987FF opbs: 0 fixed opb0 + 0 on opb1 (19 so far) (ddr_example8/swregout/gbe0_pulse_tx_led1) gen_xps_mod_mhs_debug: 0x01098800-0x010988FF opbs: 0 fixed opb0 + 1 on opb1 (20 so far) (ddr_example8/swregout/gbe0_tx) gen_xps_mod_mhs_debug: 0x01098900-0x010989FF opbs: 0 fixed opb0 + 1 on opb1 (21 so far) (ddr_example8/swregout/gbe0_tx_cnt) gen_xps_mod_mhs_debug: 0x01098A00-0x01098AFF opbs: 0 fixed opb0 + 1 on opb1 (22 so far) (ddr_example8/swregout/gbe0_tx_full) gen_xps_mod_mhs_debug: 0x01098B00-0x01098BFF opbs: 0 fixed opb0 + 1 on opb1 (23 so far) (ddr_example8/swregout/gbe0_tx_over) gen_xps_mod_mhs_debug: 0x01098C00-0x01098BFF opbs: 0 fixed opb0 + 0 on opb1 (23 so far) (ddr_example8/swregout/gbe0_tx_over_led5) gen_xps_mod_mhs_debug: 0x01098C00-0x01098CFF opbs: 0 fixed opb0 + 1 on opb1 (24 so far) (ddr_example8/system_reset) gen_xps_mod_mhs_debug: 0x01098D00-0x01098DFF opbs: 0 fixed opb0 + 1 on opb1 (25 so far) (ddr_example8/wait_after_empty) gen_xps_mod_mhs_debug: 0x01098E00-0x01098EFF opbs: 0 fixed opb0 + 1 on opb1 (26 so far) (ddr_example8/wait_after_fill) gen_xps_mod_mhs_debug: 0x01098F00-0x01098FFF opbs: 0 fixed opb0 + 1 on opb1 (27 so far) (ddr_example8/wait_after_packet) gen_xps_mod_mhs_debug: 0x01099000-0x01098FFF opbs: 0 fixed opb0 + 0 on opb1 (27 so far) (OPB to OPB bridge added at 0x1080000) Running off adc_clk @200MHz DDR3 gen_ucf DDR3 trying specific ucf generation ######################### ## Elaborating objects ## ######################### ############################## **************************************************** ---------------------------------------------------- Adam Schoenwald - Electrical Engineer ---------------------------------------------------- -- You received this message because you are subscribed to the Google Groups "casper@lists.berkeley.edu<mailto:casper@lists.berkeley.edu>" group. To unsubscribe from this group and stop receiving emails from it, send an email to casper+unsubscr...@lists.berkeley.edu<mailto:casper+unsubscr...@lists.berkeley.edu>. To post to this group, send email to casper@lists.berkeley.edu<mailto:casper@lists.berkeley.edu>. -- You received this message because you are subscribed to the Google Groups "casper@lists.berkeley.edu" group. To unsubscribe from this group and stop receiving emails from it, send an email to casper+unsubscr...@lists.berkeley.edu. To post to this group, send email to casper@lists.berkeley.edu.