Home    Bloggers    Messages    Webinars    Resources   
Tw  |  Fb  |  In  |  Rss
Jack Leong

Learning FPGAs: Heed the Warnings

Jack Leong
Page 1 / 2   >   >>
devel@latke.net
devel@latke.net
11/14/2012 11:58:28 AM
User Rank
Guru
Re: Errors turned into warnings
Jack - I've run across a few instances where I received a hard error, but the error text noted that I could remove it with a declaration in the UCF. I don't have the exact text with me at the moment, but if I recall, it had something to do with routing clock signals. While the error text told me how to bypass the error, it did recommend that I not do so.



This happens all the time in Spartan 3A/AN when you use a DCM and a BUFG on the DCM's input clock. Consider that most rational people locate the pins. For some reason, the tools are way too fscking stupid to put the input BUFG at the proper location as determined by the GCLK pin. I've seen them put the BUFG all the way on the other side of the chip.

So the solution is to nail down the locations of the BUFGs and the DCMs and the problem goes away. Or not, in which case you put the suggested workaround in the UCF, and guess what? The tools use the correct routing.


Webcases saying "FIX THIS" are acknowledged and otherwise ignored, because S3AN is considered uninteresting to Xilinx and not worth the time to fix.

That seems to me like an ideal case for a real warning. Maybe there should be an additional level: error, warning and notice, with notice being the things that are more related to coding style and such.

It's actually not a warning. It IS an error, but it's an error not because of anything you've done, but because the tools are stupid.

50%
50%
Duane Benson
Duane Benson
11/14/2012 4:21:54 AM
User Rank
Blogger
Re: Errors turned into warnings
That's what I was told. It didn't work very well. :-)

50%
50%
jacklsw86
jacklsw86
11/14/2012 2:10:28 AM
User Rank
Blogger
Re: Errors turned into warnings
@duane,

seems like you are using a clock buffer output (dedicated clock signal) as an input to another logic, which is highly not recommended in design.

50%
50%
hamster
hamster
11/13/2012 9:34:11 PM
User Rank
Blogger
My favourite warning
"WARNING:PhysDesignFules:2410 - This design is using one or more 9K Block RAMs (RAMB8BWER).  9K Block RAM initialization data, both user defined and default, may be incorrect and should not be used.  For more information, please reference Xilinx Answer 39999."

Nice warning - hope nobody spends too long debugging things before noticing that one!

50%
50%
Duane Benson
Duane Benson
11/13/2012 9:07:52 PM
User Rank
Blogger
Re: Errors turned into warnings
Jack - I'm back at my FPGA computer. Here's the error message:

ERROR:Place:1136 - This design contains a global buffer instance,
   <five_clocks/clkout1_buf>, driving the net, <internal_clock<0>>, that is
   driving the following (first 30) non-clock source pins.
   < PIN: Mmux_frq_select[1]_internal_clock[3]_Mux_1_o11.A6; >
   This is not a recommended design practice in Spartan-6 due to limitations in
   the global routing that may cause excessive delay, skew or unroutable
   situations.  It is recommended to only use a BUFG resource to drive clock
   loads. If you wish to override this recommendation, you may use the
   CLOCK_DEDICATED_ROUTE constraint (given below) in the .ucf file to demote
   this message to a WARNING and allow your design to continue.
   < PIN "five_clocks/clkout1_buf.O" CLOCK_DEDICATED_ROUTE = FALSE; >

I had used DCM to create five clocks while trying to learn about multiple clock domains. I was then using a case to choose between the five different clocks.

I haven't done that sort of thing since and have been more careful with my clocking so I haven't seen the error since that particular project.

50%
50%
jacklsw86
jacklsw86
11/13/2012 8:09:42 PM
User Rank
Blogger
Re: Errors turned into warnings
@Duane, 

Something to do with the dedicated clock path? I think if you are using a net derived from counters (or some other logics), you get this kind of error (xilinx tool says there may be excessive skew when using this net as clock).

50%
50%
Duane Benson
Duane Benson
11/13/2012 4:09:59 PM
User Rank
Blogger
Errors turned into warnings
Jack - I've run across a few instances where I received a hard error, but the error text noted that I could remove it with a declaration in the UCF. I don't have the exact text with me at the moment, but if I recall, it had something to do with routing clock signals. While the error text told me how to bypass the error, it did recommend that I not do so.

That seems to me like an ideal case for a real warning. Maybe there should be an additional level: error, warning and notice, with notice being the things that are more related to coding style and such.

50%
50%
devel@latke.net
devel@latke.net
11/13/2012 12:03:30 PM
User Rank
Guru
Re: warning!
If I understand what the warning is there for and what it means, then I can make and feel good about an informed decision. If I don't know what it means, it could be something not worth caring about or something that could cause the clock to go screwy when the chip gets hot.

This brings up another point, which is Xilinx' crappy documentation.

The warning and error numbers indicated in the report files are hyperlinks. Ever click on one, and have it take you to the Xilinx web site, where you end up with a 404 "Not Found" page?

Yes, you have. We all have.

So, Xilinx: your tools define the error and warning messages. Your tools provide a hyperlink to a page which could explain those messages. So: fix your fscking web site and documentation already. These aggravations have existed for a decade. 

100%
0%
devel@latke.net
devel@latke.net
11/13/2012 11:58:31 AM
User Rank
Guru
Re: warning!
But still, the "unconnected ports" and "pruned registers/nets" warnings might be handy when you are adding modules into the existing codes, who knows we might have skip some ports for the new module and then later we forgot to map the unconnected ports to that module.

My point is that they should not be warnings -- they should be infos. Why? Because I explicitly told the tools, "I am not using this port, and as such, I expect you to rip out all logic which controls this unused port.

It's also good to look into the codes why some registers/nets are pruned.

Yes, it is, especially if the pruning is not expected.

50%
50%
Duane Benson
Duane Benson
11/13/2012 4:40:21 AM
User Rank
Blogger
Re: warning!
Devel - You point strikes at the key for me. If I understand what the warning is there for and what it means, then I can make and feel good about an informed decision. If I don't know what it means, it could be something not worth caring about or something that could cause the clock to go screwy when the chip gets hot.

50%
50%
Page 1 / 2   >   >>
More Blogs from Jack Leong
Sometimes the design software does not implement things the way you intended. Sometimes you need to dig into the hardware implementation to see what went wrong.
Jack Leong discusses the if-else statement, which he calls the most widely used statement in HDL coding.
I'm sharing some of the things that confused me when I was learning FPGAs in the hope that this will prevent others from running into the same problems and making the same mistakes.
flash poll
follow us on twitter
follow Xilinx on twitter
like us on facebook
like Xilinx on facebook
All Programmable Planet     About Us     Contact Us     Help     Register     Twitter     Facebook     RSS