( ESNUG 372 Item 5 ) -------------------------------------------- [05/31/01]

Subject: ( ESNUG 371 #17  )  Why Buy A 16550 UART When You Can Get It Free?
 
> Recently I encountered the Ketchum tool you mentioned in your SNUG'01
> Trip Report.  We were using DW_16550 UART in our design, and during usual
> simulation process, I uncovered few functional bugs.  We were close to
> the tape out, so the situation was very tense, but, luckily, Synopsys's
> designers came up with a quick fix.  It would be better not to have bugs
> in Synopsys DW IP at all, but "nobody's perfect".
> 
>     - Vladimir Sindalovsky
>       Agere Systems


From: Rudolf Usselmann <rudi@asics.ws>

John,

Here is another work around:

Go to http://www.opencores.org and download a FREE 16550 compatible UART
(includes all source code).

    - Rudolf Usselmann

         ----    ----    ----    ----    ----    ----   ----

From: Vladimir Sindalovsky <sindalovsky@agere.com>

John,

As for the bugs and fixes for DW_16550, John, you know that DesignWare HDL
is encrypted, and the only description I can try to fix is synthesized
netlist.  That is why I relied 90% on Synopsys to fix the bugs I reported.
The only one I was able to fix myself was related to asynchronous ISA
interface.  It was a commonplace error made in synchronizing ISA read and
write strobes.  The signals were sampled once on the rising edge of internal
clock, and after that ANDed with the asynchronous strobe itself in order to
derive trailing edge of a strobe.  Due to the asynchronous nature of the
strobes the resulting signal has a possible duration from 0 to one period
of internal clock.  It was easy to additionally synchronize ISA signals in
DW_16550 wrapper, so now it is a two-stage shift register, and the trailing
edge pulse is always one period wide.  However this imposes a limitation on
the minimum duration of the strobes as well as back-to-back timing, ISA bus
is slow enough in respect to the internal clock rate, so this cheesy fix
can be used.

The other bugs I found (which has been already fixed by Synopsys) are:

  1. When different sources of the host interrupt are enabled, and multiple
     events causing the interrupt occur, read of IIR (Interrupt
     Identification) register causes not only the highest priority interrupt
     to be cleared, but Transmitter Holding Register Empty (THRE) interrupt
     source to be cleared too.  When all other sources of interrupt are
     cleared, THRE does not cause the interrupt, although this source is
     enabled.  IIR register reflects a No Pending Interrupt condition
     under these circumstances. Line Status Register (LSR) still shows a
     correct THRE status in bits 6 and 5.

  2. This bug is a real deja vu because I helped to fix the exactly same bug
     in the chip released several years ago.  Bits 2, 3 and 4 in LSR are set
     when a word at the top of RX FIFO has a break indication, framing error
     or parity error correspondingly.  Normally those bits are latched on the
     read of the previous word from RX FIFO.  However, if RX FIFO is empty
     and the first character written into it has one of the mentioned errors,
     it is immediately moved to the top of RX FIFO, and error bits has to be
     latch on FIFO write rather than FIFO read. This bug exhibits itself under
     described circumstances as an RX FIFO error bit (bit 7 in LSR) being set,
     and neither one of bits 2, 3 or 4 ever set to a one.

The bugs, supposedly found by Ketchum, will be fixed in couple of weeks,
and the list of bugs was published by Synopsys in ESNUG last week.

    - Vladimir Sindalovsky
      Agere Systems


 Sign up for the DeepChip newsletter.
Email
 Read what EDA tool users really think.


Feedback About Wiretaps ESNUGs SIGN UP! Downloads Trip Reports Advertise

"Relax. This is a discussion. Anything said here is just one engineer's opinion. Email in your dissenting letter and it'll be published, too."
This Web Site Is Modified Every 2-3 Days
Copyright 1991-2024 John Cooley.  All Rights Reserved.
| Contact John Cooley | Webmaster | Legal | Feedback Form |

   !!!     "It's not a BUG,
  /o o\  /  it's a FEATURE!"
 (  >  )
  \ - / 
  _] [_     (jcooley 1991)