UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Observer mowomo
Observer
9,230 Views
Registered: ‎11-28-2007

Where is 'default data option' when using Block Memory Generator 4.3 (ISE12.4)

Jump to solution

I need to initialize some block memory with all zeros but can't find the option to do that as stated in the  'Block Memory Generator User Guide DS512, Sept 21, 2010 version, pg 52:

 

"The Block Memory Generator core supports memory initialization using a memory coefficient (COE)
file or the default data option in the CORE Generator GUI, or a combination of both."

Mowomo
0 Kudos
1 Solution

Accepted Solutions
Observer mowomo
Observer
11,221 Views
Registered: ‎11-28-2007

Re: init block ram to zeroes

Jump to solution

Anyway, I've started an official Webcase....

Mowomo

View solution in original post

0 Kudos
18 Replies
Teacher eteam00
Teacher
9,229 Views
Registered: ‎07-21-2009

Re: Where is 'default data option' when using Block Memory Generator 4.3 (ISE12.4)

Jump to solution

See page 47, figure 38.

Search the Xilinx site for info on .COE file format, if needed.

 

- Bob Elkind

SIGNATURE:
README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369

Summary:
1. Read the manual or user guide. Have you read the manual? Can you find the manual?
2. Search the forums (and search the web) for similar topics.
3. Do not post the same question on multiple forums.
4. Do not post a new topic or question on someone else's thread, start a new thread!
5. Students: Copying code is not the same as learning to design.
6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please).
7. You are not charged extra fees for comments in your code.
8. I am not paid for forum posts. If I write a good post, then I have been good for nothing.
0 Kudos
Observer mowomo
Observer
9,226 Views
Registered: ‎11-28-2007

Re: Where is 'default data option' when using Block Memory Generator 4.3 (ISE12.4)

Jump to solution

I don't think I gave all the information: We upgraded our project from 11.x to 12.x.

 

From the log file:

 

Upgrade to latest version, and Regenerate (Under Current Project Settings)
Applying current project options...
Finished applying current project options.
Applying current project options...
Finished applying current project options.
Upgrading IP blram_sp to Block Memory Generator version 4.3
Launching upgrade viewer...
Launched upgrade viewer.
Initializing IP model...
WARNING:sim:602 - The parameter 'Fill_Remaining_Memory_Locations' is disabled and can't be set to any other value than 'false'. Its value will be reset from 'true' to its last valid value 'false'.
WARNING:sim:192 - Xco Parameter changed from (Fill_Remaining_Memory_Locations,true) to (Fill_Remaining_Memory_Locations,false) during Recustomization.

Finished initialising IP model.
Generating IP...

 

 

Also the "fill remaining memory locations" option is greyed out. Is this a problem with going through with the upgrade? See attached jpg.

Mowomo
block ram GUI.jpg
0 Kudos
Observer mowomo
Observer
9,225 Views
Registered: ‎11-28-2007

Re: Where is 'default data option' when using Block Memory Generator 4.3 (ISE12.4)

Jump to solution
Sorry about the jpg size, I have a dual-monitor setup.
Mowomo
0 Kudos
Teacher eteam00
Teacher
9,211 Views
Registered: ‎07-21-2009

Re: Where is 'default data option' when using Block Memory Generator 4.3 (ISE12.4)

Jump to solution

The error messages come from the simulator, not the synthesiser.

The attached JPG image is viewable if you right-clock (in browser) and select "View Image".

The .COE file you specified should work.  Are you suggesting that it isn't working as expected?

 

- Bob Elkind

SIGNATURE:
README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369

Summary:
1. Read the manual or user guide. Have you read the manual? Can you find the manual?
2. Search the forums (and search the web) for similar topics.
3. Do not post the same question on multiple forums.
4. Do not post a new topic or question on someone else's thread, start a new thread!
5. Students: Copying code is not the same as learning to design.
6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please).
7. You are not charged extra fees for comments in your code.
8. I am not paid for forum posts. If I write a good post, then I have been good for nothing.
0 Kudos
Observer mowomo
Observer
9,206 Views
Registered: ‎11-28-2007

Re: Where is 'default data option' when using Block Memory Generator 4.3 (ISE12.4)

Jump to solution

I couldn't get any info on WARNING:sim:602 or WARNING:sim:192  so I couldn't be sure what module was originating them.

 

Regardless, I don't understand why the "fill remaining locations...." option is greyed out. By all accounts it should not be. It seems like a bug.

Mowomo
0 Kudos
Observer mowomo
Observer
9,205 Views
Registered: ‎11-28-2007

Re: Where is 'default data option' when using Block Memory Generator 4.3 (ISE12.4)

Jump to solution

I specifically used a .coe file filled with zeros because the "fill remaining locations..." option was greyed out.

Mowomo
0 Kudos
Teacher eteam00
Teacher
9,202 Views
Registered: ‎07-21-2009

Re: Where is 'default data option' when using Block Memory Generator 4.3 (ISE12.4)

Jump to solution

If the .COE file is working (is it?), what's your question?  Are you pointing out an unexpected error message or menu selection, or are you seeing a design roadblock?  If you haven't pointed out which FPGA family you are using, and how large a block memory you are generating, that might be useful information.

 

- Bob Elkind

SIGNATURE:
README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369

Summary:
1. Read the manual or user guide. Have you read the manual? Can you find the manual?
2. Search the forums (and search the web) for similar topics.
3. Do not post the same question on multiple forums.
4. Do not post a new topic or question on someone else's thread, start a new thread!
5. Students: Copying code is not the same as learning to design.
6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please).
7. You are not charged extra fees for comments in your code.
8. I am not paid for forum posts. If I write a good post, then I have been good for nothing.
0 Kudos
Observer mowomo
Observer
9,199 Views
Registered: ‎11-28-2007

Re: Where is 'default data option' when using Block Memory Generator 4.3 (ISE12.4)

Jump to solution

For a sanity check I just tried to add a new block ram to the project - from scratch. Option is still greyed out. Gotta be a bug!

Mowomo
0 Kudos
Observer mowomo
Observer
9,199 Views
Registered: ‎11-28-2007

Re: Where is 'default data option' when using Block Memory Generator 4.3 (ISE12.4)

Jump to solution

Bob,

 

The point is I should NOT have to supply ANY coe files if all I want to do is init the block ram to a constant - like ZERO!!!. It's a Spartan6 part

Mowomo
0 Kudos
Teacher eteam00
Teacher
8,780 Views
Registered: ‎07-21-2009

init block ram to zeroes

Jump to solution

see this thread.  I found it by using search.  I searched for "block ram initial".

Also, for Spartan 6, check the Libraries guide UG615.  For any/all of the block rams (e.g. RAMB16BWER), in the attributes table, it is clearly written that memory block contents are (by default) initialised to "0".  Example:

 

           |           |Allowed
Attribute  |Type       |Values   |Default  |Description
===========+===========+=========+=========+=================================
INIT_00 to |Hexadecimal|Any 256  |All zeros|Specifies the initial contents
INIT_3F    |           |bit value|         |of the 16kb data memory array.
-----------+-----------+---------+---------+---------------------------------
INITP_01 to|Hexadecimal|Any 256  |All zeros|Specifies the initial contents of
INITP_07   |           |bit value|         |the 2kb parity data memory array.

 

 

- Bob Elkind

SIGNATURE:
README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369

Summary:
1. Read the manual or user guide. Have you read the manual? Can you find the manual?
2. Search the forums (and search the web) for similar topics.
3. Do not post the same question on multiple forums.
4. Do not post a new topic or question on someone else's thread, start a new thread!
5. Students: Copying code is not the same as learning to design.
6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please).
7. You are not charged extra fees for comments in your code.
8. I am not paid for forum posts. If I write a good post, then I have been good for nothing.
0 Kudos
Observer mowomo
Observer
8,775 Views
Registered: ‎11-28-2007

Re: init block ram to zeroes

Jump to solution

The thread and solution you point to is a simplistic approach to small, uncomplicated rams that are inferred from simple HDL. Our needs are much more complex, that's why we instantiate IP and not have the tools infer them. Using a $readmemh or a initial block in the Verilog HDL is a solution only when the memory is written as a local variable, i.e. reg [31:0 ] myram [0:2047] because the name of the memory is at the same heirarchy. With instantated block rams, the actual name of the memory array is down a few levels, and usually it is called memory, or mem, but may not be. If the tool changes the heirarchy OR the name of the memory array then locally written initial blocks or $readmemh statements become useless. 

Mowomo
0 Kudos
Teacher eteam00
Teacher
8,773 Views
Registered: ‎07-21-2009

Re: init block ram to zeroes

Jump to solution

If you think you can design FPGAs at an abstract level with no references or concessions to the underying hardware, with device-independent code, you'll get no sympathy from me.  And you'll need no sympathy from me, because you'll learn this all on your own, sooner or later.

 

Hardware is your friend, not your enemy.  Being able to instantiate primitives is a powerful tool, not a burden.

For some reason I thought you started this thread to learn how to initialise a block memory.  Sigh....

 

- Bob Elkind

SIGNATURE:
README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369

Summary:
1. Read the manual or user guide. Have you read the manual? Can you find the manual?
2. Search the forums (and search the web) for similar topics.
3. Do not post the same question on multiple forums.
4. Do not post a new topic or question on someone else's thread, start a new thread!
5. Students: Copying code is not the same as learning to design.
6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please).
7. You are not charged extra fees for comments in your code.
8. I am not paid for forum posts. If I write a good post, then I have been good for nothing.
0 Kudos
Observer mowomo
Observer
8,771 Views
Registered: ‎11-28-2007

Re: init block ram to zeroes

Jump to solution

I started this thread to inquire if anybody else has seen what I think is a bug where the option to initialize all remaining memory locations check box on the Block Ram Memory Generator Tool V4.3 is always greyed out.

 

Surely, I am not the first to run across this?

Mowomo
0 Kudos
Observer mowomo
Observer
11,222 Views
Registered: ‎11-28-2007

Re: init block ram to zeroes

Jump to solution

Anyway, I've started an official Webcase....

Mowomo

View solution in original post

0 Kudos
Observer mowomo
Observer
8,763 Views
Registered: ‎11-28-2007

Re: init block ram to zeroes

Jump to solution

Good idea on looking at the Spartan6 Libraries Guide and the UG384, Spartan-6 FPGA Block RAM Resources User Guide. Yup, the RAMB16BWER and RAMB8BWER are initialized to zeros in the bit stream. My bad. That solves this. BUT the original question remains on the greyed-out option on Block Ram Generator GUI. What if I wanted to init the RAM to all ONES? I shouldn't have to go the hassle of making a .coe file for constants.

Mowomo
0 Kudos
Teacher eteam00
Teacher
8,758 Views
Registered: ‎07-21-2009

Re: init block ram to zeroes

Jump to solution

Why would you want to see Xilinx spending manpower and time on something that works well enough, is well enough documented, and isn't broken?  Life must be very good indeed if this is worth your time and energy.

 

- Bob Elkind

SIGNATURE:
README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369

Summary:
1. Read the manual or user guide. Have you read the manual? Can you find the manual?
2. Search the forums (and search the web) for similar topics.
3. Do not post the same question on multiple forums.
4. Do not post a new topic or question on someone else's thread, start a new thread!
5. Students: Copying code is not the same as learning to design.
6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please).
7. You are not charged extra fees for comments in your code.
8. I am not paid for forum posts. If I write a good post, then I have been good for nothing.
0 Kudos
Highlighted
8,316 Views
Registered: ‎12-17-2010

Re: init block ram to zeroes

Jump to solution

Mowomo,

 

If it's any consolation to you, I see the same problem (in ISE 12.3) and it does indeed appear to be a bug in the block memory generator software.  Any luck with your bug report?

 

I also need to rely on my block memory being initialized to zero, which of course happens naturally within the device, but simulations will return X from block memory locations that have not first been written to, or initialized (actually, I could be wrong on this point, but I have no way of verifying this statement at this time).  So, for simulation purposes, I wanted to ensure that my memory is indeed initialized to zero by setting the default values to 0.  As you've rightly pointed out, the default data option is greyed out for some unexplained reason, contrary to what's described in the user guide.

 

It seems our "expert contributor" won't, or can't help us, so I guess we have to live with using the .coe files to initialize.

 

Cheers,

Nathan

 

Tags (1)
0 Kudos
Teacher eteam00
Teacher
8,305 Views
Registered: ‎07-21-2009

Re: init block ram to zeroes

Jump to solution

I also need to rely on my block memory being initialized to zero, which of course happens naturally within the device,

 

So far, so good it seems.  This is a settled question.

 

but simulations will return X from block memory locations that have not first been written to, or initialized (actually, I could be wrong on this point, but I have no way of verifying this statement at this time).

 

So you have a problem which really isn't a problem, perhaps.  Running a simulation should verify or disprove the issue with excellent clarity...  so yes, you do have a way of 'verifying this statement'.

 

So, for simulation purposes, I wanted to ensure that my memory is indeed initialized to zero by setting the default values to 0.

 

It seems our "expert contributor" won't, or can't help us

 

You have all the insight and tools you need to answer your own question.  You don't need my contributions, expert or otherwise.

 

so I guess we have to live with using the .coe files to initialize.

 

If I read your post correctly, you have no basis for making this assertion.  This is a problem which you can quickly and easily solve by running a simulation.

 

-- Bob Elkind

SIGNATURE:
README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369

Summary:
1. Read the manual or user guide. Have you read the manual? Can you find the manual?
2. Search the forums (and search the web) for similar topics.
3. Do not post the same question on multiple forums.
4. Do not post a new topic or question on someone else's thread, start a new thread!
5. Students: Copying code is not the same as learning to design.
6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please).
7. You are not charged extra fees for comments in your code.
8. I am not paid for forum posts. If I write a good post, then I have been good for nothing.
0 Kudos