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.

Reply via email to