WARP Project Forums - Wireless Open-Access Research Platform

You are not logged in.

#1 2007-May-23 19:13:34

jyhng
Member
Registered: 2007-Jan-25
Posts: 37

sysgen2opb with Shared Memory

I'm getting an error with the sysgen2opb function (Revision 598).

??? Error using ==> get_param
SubSystem block (mask) does not have a parameter named 'block_type'.

Error in ==> sysgen2opb at 265
            if ~strcmp(get_param(SrcBlockHandleAddr, 'block_type'), 'gatewayin')

My model is hooked up with a Shared Memory Read Only dual port ram (also did one with Write Only, which produced the same error) in a similar way as shown at: http://warp.rice.edu/trac/wiki/sysgen2opb/SharedMemory, but instead of the gatewayin blocks, I'm using the Warp sysgen2opb registers (but it doesn't work even with gatewayin blocks, since it complains that it needs From/To Regs in the model).

It seems that the error has something to do with the handle of the selected object is not the register it's searching for (perhaps a line?), or maybe it hasn't been updated to work with the new register blocks?

Thanks,
Joshua

Offline

 

#2 2007-May-23 22:15:03

murphpo
Administrator
From: Mango Communications
Registered: 2006-Jul-03
Posts: 5159

Re: sysgen2opb with Shared Memory

Unfortunately, the examples on the page you linked to aren't very clear; updating that document is on our list of things to do soon. In the meantime, take a look at PHY_Proto_TxRx_SISO.mdl. This is the Sysgen core for our PHY Prototyping framework. It uses two shared memory blocks- one read-only, one write-only. Hopefully this will serve as a better example.

Offline

 

#3 2007-May-24 13:13:26

jyhng
Member
Registered: 2007-Jan-25
Posts: 37

Re: sysgen2opb with Shared Memory

Hi,

I tried to run sysgen2opb on the model you provided and it works.  I adjusted mine accordingly and it works also.

But I ran into some limitation problems.

(1) It seems that the size of the shared memory Data In needs to be exactly Unsigned_fixed_32_0.  Is this correct?

(2) After I ran sysgen2opb on the model, it showed that I need to have at least 2^14 rom size.  Does it have to be exactly 2^14? Together with 32_0 data size it'll make it 64k, so is that the minimum size?

(3) During bitstream compilation, it complained about the minimum size being 192k (I had 2 shared memory and 2 registers, which makes it 2 * 64k (Shared mem) + 1* 64k (both registers)), and so it required that we provide 4* 64k address space (can't be 3*64k because it's not a power of 2 - XPS's complaint).  In the bitstream compilation process it reported that we're using about 50% of our available block rams, which is quite significant, so is there a way to lower the minimum size of 64k?

Thanks,
Joshua

Offline

 

#4 2007-May-24 15:02:49

murphpo
Administrator
From: Mango Communications
Registered: 2006-Jul-03
Posts: 5159

Re: sysgen2opb with Shared Memory

1) The dual-port RAMs support different data widths on their two ports. One port (the one tied to the gateways that are replaced with hooks to the OPB) must be UFix32_0. The other port can be a smaller size. You have to make sure the widths of the address busses are correct. Look at the help for the Dual Port RAM block for more info.

2-3) sysgen2opb dedicates 2^14 bytes of address space to each shared memory block. You can make the memory itself smaller than this, and sysgen2opb will insert slice blocks to get the right address bus width. Look at our OFDM model (in http://warp.rice.edu/trac/browser/Resea … /MIMO_OFDM) for an example of using smaller shared memories. Both the Tx and Rx modulation buffers use shared memories that are much smaller than 64kB.

Offline

 

Board footer