Re: Xilinx ISE Inferred block rams



"Gabor" <gabor@xxxxxxxxxxx> wrote in message
news:1174398637.932534.169030@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
On Mar 20, 9:28 am, John_H <newsgr...@xxxxxxxxxxxxxxxx> wrote:
<snip>
I've seen this harmless warning for way too long though I often get it
for instantiated BlockRAMs where I don't actually read the parity bits
but I write them with zero values so the port isn't undefined.

It's possible the complaint is because the write port is written with
parity bits but the write port output parity bits are unused. Who cares?


O.K., but if it's the write-port parity outputs, why not also complain
(warn) about the write-port data outputs being unconnected?

Because it's an extremely poor warning. It takes one programmer a few
minutes to produce something nonsensical that doesn't get changed through
peer review processes but it takes months and a lot of pain for something to
come out of software. The right thing is to be consistent. It takes one
person too little effort to produce inconsistent messages.

I'd suggest you take a look at the FPGA Editor (or some other technology
view) to see if all your pins are hooked up properly. If your design
truly does not work - as opposed to being a coding/debug problem which
it often is for my development - then there is something wrong with the
synthesis which has to be addressed by the vendor. I often infer
memories with SynplifyPro but haven't used XST for any development.


Also do you see a difference in simulation between behavioral and
post-translate? This could point to a bug in the tools...

I tend to skip the post-translate simulation in favor of live testing except
for special cases. The FPGA tools have done a superb job historically of
producing a target FPGA design that matches the original RTL. While the
ASIC industry needs a significant investment in equivalence checking to make
sure the output from a tool matches the input, I've only come across one or
two instances over the years where the final result isn't a 100% match to
the input code.

It's possible a tool problem is in the way of a good simulation. I'd do a
quick check to see if the "post-translate" results are producing
misconnected hardware or if it looks like the right 18 bits are connected to
the right 18 lines in and out of the BlockRAM. If the physical connections
aren't there, it's probably a synthesis problem. If the physical
connections are there and the warning is its usual bogus self, a mismatch
between RTL and "post-translate" simulation would tend to point to the
simulation models.

If the problem doesn't appear with 16 and 32-bit memories, the troubles
probably aren't with simultaneous read/write operation coming up different
in different simulations but this failure mode would be something else I'd
look for in bad memory simulations if I didn't have the additional
good-inference information.

I'd love to see the warning actually mean something but I've lost any
confidence that it's communicating anything real because of my past
experience with it.

- John_H


.



Relevant Pages

  • Re: Cant read from serial port after RedHat reboot
    ... >flowcontrol and parity. ... since you've already opened the port with the O_NDELAY flag. ... If we look at the c_iflag member, ... POSIX says that a termios ...
    (comp.os.linux.misc)
  • Re: Feasibility question: Simulating (basic) hardware ?
    ... I am thinking about simulation at a somewhat higher level and when I ... connections - the visual representation of these connections being far ... Now, if this port is connected to a seven segment display, it will be ...
    (comp.lang.tcl)
  • Re: CASE statement & LOOP
    ... Unfortunately there are synthesis tools like Synplify removing the ... I specify the normally unused states in the enumeration type, ... it doesn't know that the port is not used. ... simulation, ...
    (comp.lang.vhdl)
  • Re: 1 serial port 2 parity types? MFC based app needs assistance.
    ... Key here is that changing the parity is trivial: ... not need to close/reopen the port at all. ... CHARACTER IS PLACED IN THE OUTPUT REGISTER. ... The reciever is always receiving ODD parity. ...
    (microsoft.public.vc.mfc)
  • Re: Addressing scheme in Block RAM
    ... If your target is BlockRAM, consider instantiating the BlockRAM primitive rather than the Coregen module to see if the problem clears up. ... You could also check the post-route simulation to see if it matches the live silicon. ... I have generated a dual port RAM using a Xilinx Core generator. ...
    (comp.arch.fpga)