[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [oc] WISHBONE DMA/Bridge




Hi Rudi,

I have just finished reading the WISHBONE DMA/Bridge IP Core 
documentation.

As I read the document, I put together a list of errata, and 
suggested changes.  I hope it is of use.  Please take it
as constructive criticism.  It's fairly long, but I hope I don't
pontificate too much.

Thanks for putting the effort into writing decent documentation.
I really do think decent documentation is as important as HDL.

Best wishes
John

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


An explanation of the terminology I use to describe locations in 
the document:
X.X pN line M  refers to line M of paragraph N within section X.X

I have prioritised each point according to
Error:       A thing that should be fixed, like a spelling mistake
Suggestion:  Something that is correct, but I feel can be improved
Nit Picking: Trivial stuff



1) 2.2: p1 line1: Error

"engine that support transfers"

should be

"engine that supports transfers"


2) 2.2: p1 line2: Suggestion

replace "and" with "as well as"


3) 2.3: Suggestion

"This block performs the pass through operation..."

does not convey any additional information, given that
the block is named "pass through".  How about (borrowing from 
section 3.4)

"This block performs a bridging operation..."


4) Chapter 3:  Suggestion

Figure 2 is not referred to in the text.  Should it be, to remove 
all possible ambiguity as to where it sits in the document?  
Perhaps append ", as in Figure 2" to the end of the sentence above 
the figure?


5) Chapter 3:  Suggestion

"DMA Engine" is used in two contexts.  In one context (first 
sentence of chapter 3, and caption of figure 2), it refers to the 
"WISHBONE DMA/Bridge" as a whole.  In another context (second half 
of first sentence of chapter 3, block within figure 2, and 3.2), 
it refers to a sub system within the "WISHBONE DMA/Bridge".

Using the same term in different contexts has potential to 
confuse, especially if English is not one's first language.


6) 3.1 p2 line 1:  Error

"Below figure"

should be

"The figure below", or better still "Figure 3..."

"Below figure" is not correct English.  Apologies if this is 
correct usage in the US, but I would argue that we should try to 
write for a global audience.

Given that we are at the bottom of a page, it is strictly
incorrect to refer to the figure "below".

Finally, if the figure shifts in a newer version of the document, 
it may no longer be below.  Perhaps it i sbetter to refer to 
figures and table by number? (use references to keep figure 
numbers automatically up to date).


7) 3.2.1 p1: Suggestion

"Below figure"

should be

"Figure 4"

for the same reasons as in 6).


8) 3.2.1 p2 line 2: Error

"on a different interfaces."

should be

"on a different interface."


9) 3.2.1 p2 line 3: Suggestion

A reference "CYC_O" pops out of nowhere.  Should this
sentence be read in conjunction with source code or the wishbone 
standard?
I suggest that
1) The user be explicitly referred to the source code/standard, or
2) Quote any source code to keep the document self contained, or
3) Show this signal on a block diagram


10) 3.2.1: Suggestion

Related to point 9), lots of register names and signals pop up 
unexpectedly:

CSR, auto restart bit, CHK_SZ, TXSZ, USE_ED, EOL, 

The context and function of these signals/registers should be 
defined.


11) 3.2.1 p2 line 7: Error

"it immediately restart the operation."

should be

"it immediately restarts the operation."


12) 3.2.1 p3 sentence 1: Suggestion

"If CHK_SZ is not zero, the channel has to re-arbitrate for the 
interfaces after each CHK_SZ of word have been transferred."

The meaning of this is not clear to me.  I gather it has something 
to do with the time period each channel gets when doing a round 
robin?


13a) Figure 6:  Suggestion

Change the heading for the table, within the figure, to something 
like: "Definition of bits in the DESC_CSR word:"


13b) Figure 6: Add offsets (base, base+1, base+2, base+3) to 
indicate which word is highest in memory.


14) 3.3 p2 line 2: Suggestion


"The chunk size must also be programed in to the desired value in 
the channel TXSZ register."

Does not make complete sense.  Change it to

"The chunk size must also be set to the desired value in the 
channel TXSZ register."


15) Various places

The word "programmed" has been incorrectly spelt as "programed".  
Apologies again if this is a US spelling, but the spell checker on 
my word processor rejects it when set to 'US'.


16) 3.6 p1 line 3: Error

"zero, the TOT_SZ number of word will be transferred."

should be

"zero, the TOT_SZ number of words will be transferred."

or is

"zero, TOT_SZ number of words will be transferred.

clearer?


17) Figure 8: Suggestion

I presume the solid gray bar indicates a missing chunk of time?  
Is this a wide spread way of indicating missing time?

Normally I associate two vertical wiggly lines with missing time.
Granted this is harder to draw.  If a gray bar is your own 
convention, perhaps it should be explained in the text, or a 
footnote?

18)  3.7 p1 sentence 2: Suggestion

The meaning of this sentence is not clear to me


19) 3.7 p4 line 1: Suggestion

Change

"The first way, the NDn_I signal is asserted"

to

"The first way is to assert the NDn_I signal"


20) 3.7 p4 sentence 2: Suggestion

There are too many "nexts" and "currents" here.  I get lost.
Can you break up the sentence, or make it simpler? Try changing:

"In this case the descriptor for the channel will be invalidated 
and marked as "serviced" and when the next REQn_I is asserted the 
next descriptor will be fetched as indicated by the next pointer 
in the current descriptor."

to

"In this case the descriptor for the channel will be invalidated 
and marked as "serviced". When the REQn_I is asserted the next 
descriptor will be fetched from the address pointed to by the 
current descriptor."


21) 3.7 p4 line 5:  Error

Change

"descriptors"

to 

"descriptor's"

(missing apostophe)



22) 3.7 p4 line 6:  Error

Change

"channels"

to 

"channel's"

(missing apostophe)


23) 3.7 p4 last sentence: Suggestion

"Software has to reset the DESCn register and the channel CSR 
register."

This sentence pops out of nowhere.  Perhaps some more background?


24) 3.7 general comments

This section is quite convoluted with lots of signal names and 
acronyms floating around.  It does make sense, but is very 
difficult to follow.  The whole thing could be simplified by 
adding two timing diagrams.  The text could then walk the reader
through the timing diagrams.

Be consistent with your terms. For example in p5 line 4: "If the 
SZ_WB in the channel CSR is set," would be clearer if written "If 
the SZ_WB bit is set in the channel CSR register," Some places you 
refer to the "CSR", while in other places you refer to the "CSR 
register".  I know "CSR register" is a tautology if you expand the 
acronym, but it does improve the readability.


25) 3.7 p5 line 4: Error

"by marking is "serviced"."

should be

"by marking it "serviced"."


26) Table 1: Error?

Are the address fields for DESC0 to DESC3 right?


27) Section 4 p1 line 1: Error

"status register inside"

should be

"status registers inside"


28) Section 4: Suggestion (nit picking)

Can you make it more obvious that you define all registers at the 
start of section 4, then go on to define the bits within each 
register in each sub section?  After reading "This section 
describes all control and status register inside the WISHBONE 
DMA/Bridge core." I was expecting 4.1 and so on to be defining 
more registers. Instead I had to figure out that there was a 
hierarchy here and you were defining the bits within the registers 
just described.  It's a small thing, but it did break my train of 
thought while reading.


29) Suggestion

Specify that, if written to, any reserved bit is to be written 
with some default value (typically zero). This allows future 
hardware extensions to be compatible with existing software.  If 
the hardware defines a new function for a reserved bit, the 
previously defined default value should reproduce the existing 
hardware functionality.

Similarly, specify that all reserved bits are undefined when read, 
to force software to mask them out.


30) 4.1 (and rest of section 4): Nit picking

Change "Reset Value:"

to "Value after reset:", or "Default value:"


31) 4.2 p1 line 1: Suggestion

Change

"functionality of INT_A and INT_B"

to

"functionality of the INT_A and INT_B"


32) 4.2 p1 line 2: Error

Put a space after the full stop.


33) 4.2 p1: Suggestion

Be consistent with use of numbers:  "1" vs. "one", "0" vs. zero.
I think it is strictly correct to spell out such numbers in full.


Extra Comments

The document does not define many of the terms that it uses.
For example, DMA, IP and so on.  Is this document supposed to
stand alone?  If so, should it give a brief background on DMA?

I will now answer my own question and say no it shouldn't.
Nothing seems more silly to me than having to wade through
pages of distracting "standard" information (acronym definitions, 
disclaimers and so on) to get to the core of a document.

Perhaps opencores should have a glossary and set of tutorials
on common topics, as stand alone documents?  Rudi's document could 
then simply have a  reference section at the back, where he points 
the reader towards additional information, which an experienced 
reader would find distracting.


Would it be possible to place the source for the documentation in 
the CVS repository, and release it under the free documentation 
license? (see http://www.gnu.org for details of this license)
That way someone contributing an updated design can also 
contribute updated documentation.