Skip to content

Commit dbe7309

Browse files
committed
major overhaul of documentation
1 parent 40a4685 commit dbe7309

14 files changed

+170
-471
lines changed

docs/Makefile

Lines changed: 13 additions & 170 deletions
Original file line numberDiff line numberDiff line change
@@ -1,177 +1,20 @@
1-
# Makefile for Sphinx documentation
1+
# Minimal makefile for Sphinx documentation
22
#
33

4-
# You can set these variables from the command line.
5-
SPHINXOPTS =
6-
SPHINXBUILD = sphinx-build
7-
PAPER =
4+
# You can set these variables from the command line, and also
5+
# from the environment for the first two.
6+
SPHINXOPTS ?=
7+
SPHINXBUILD ?= sphinx-build
8+
SOURCEDIR = .
89
BUILDDIR = _build
910

10-
# User-friendly check for sphinx-build
11-
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
12-
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
13-
endif
14-
15-
# Internal variables.
16-
PAPEROPT_a4 = -D latex_paper_size=a4
17-
PAPEROPT_letter = -D latex_paper_size=letter
18-
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
19-
# the i18n builder cannot share the environment and doctrees with the others
20-
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
21-
22-
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
23-
11+
# Put it first so that "make" without argument is like "make help".
2412
help:
25-
@echo "Please use \`make <target>' where <target> is one of"
26-
@echo " html to make standalone HTML files"
27-
@echo " dirhtml to make HTML files named index.html in directories"
28-
@echo " singlehtml to make a single large HTML file"
29-
@echo " pickle to make pickle files"
30-
@echo " json to make JSON files"
31-
@echo " htmlhelp to make HTML files and a HTML help project"
32-
@echo " qthelp to make HTML files and a qthelp project"
33-
@echo " devhelp to make HTML files and a Devhelp project"
34-
@echo " epub to make an epub"
35-
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
36-
@echo " latexpdf to make LaTeX files and run them through pdflatex"
37-
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
38-
@echo " text to make text files"
39-
@echo " man to make manual pages"
40-
@echo " texinfo to make Texinfo files"
41-
@echo " info to make Texinfo files and run them through makeinfo"
42-
@echo " gettext to make PO message catalogs"
43-
@echo " changes to make an overview of all changed/added/deprecated items"
44-
@echo " xml to make Docutils-native XML files"
45-
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
46-
@echo " linkcheck to check all external links for integrity"
47-
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
48-
49-
clean:
50-
rm -rf $(BUILDDIR)/*
51-
52-
html:
53-
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
54-
@echo
55-
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
56-
57-
dirhtml:
58-
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
59-
@echo
60-
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
61-
62-
singlehtml:
63-
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
64-
@echo
65-
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
66-
67-
pickle:
68-
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
69-
@echo
70-
@echo "Build finished; now you can process the pickle files."
71-
72-
json:
73-
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
74-
@echo
75-
@echo "Build finished; now you can process the JSON files."
76-
77-
htmlhelp:
78-
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
79-
@echo
80-
@echo "Build finished; now you can run HTML Help Workshop with the" \
81-
".hhp project file in $(BUILDDIR)/htmlhelp."
82-
83-
qthelp:
84-
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
85-
@echo
86-
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
87-
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
88-
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/PyRTL.qhcp"
89-
@echo "To view the help file:"
90-
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/PyRTL.qhc"
91-
92-
devhelp:
93-
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
94-
@echo
95-
@echo "Build finished."
96-
@echo "To view the help file:"
97-
@echo "# mkdir -p $$HOME/.local/share/devhelp/PyRTL"
98-
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/PyRTL"
99-
@echo "# devhelp"
100-
101-
epub:
102-
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
103-
@echo
104-
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
105-
106-
latex:
107-
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
108-
@echo
109-
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
110-
@echo "Run \`make' in that directory to run these through (pdf)latex" \
111-
"(use \`make latexpdf' here to do that automatically)."
112-
113-
latexpdf:
114-
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
115-
@echo "Running LaTeX files through pdflatex..."
116-
$(MAKE) -C $(BUILDDIR)/latex all-pdf
117-
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
118-
119-
latexpdfja:
120-
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
121-
@echo "Running LaTeX files through platex and dvipdfmx..."
122-
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
123-
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
124-
125-
text:
126-
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
127-
@echo
128-
@echo "Build finished. The text files are in $(BUILDDIR)/text."
129-
130-
man:
131-
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
132-
@echo
133-
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
134-
135-
texinfo:
136-
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
137-
@echo
138-
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
139-
@echo "Run \`make' in that directory to run these through makeinfo" \
140-
"(use \`make info' here to do that automatically)."
141-
142-
info:
143-
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
144-
@echo "Running Texinfo files through makeinfo..."
145-
make -C $(BUILDDIR)/texinfo info
146-
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
147-
148-
gettext:
149-
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
150-
@echo
151-
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
152-
153-
changes:
154-
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
155-
@echo
156-
@echo "The overview file is in $(BUILDDIR)/changes."
157-
158-
linkcheck:
159-
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
160-
@echo
161-
@echo "Link check complete; look for any errors in the above output " \
162-
"or in $(BUILDDIR)/linkcheck/output.txt."
163-
164-
doctest:
165-
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
166-
@echo "Testing of doctests in the sources finished, look at the " \
167-
"results in $(BUILDDIR)/doctest/output.txt."
13+
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
16814

169-
xml:
170-
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
171-
@echo
172-
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
15+
.PHONY: help Makefile
17316

174-
pseudoxml:
175-
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
176-
@echo
177-
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
17+
# Catch-all target: route all unknown targets to Sphinx using the new
18+
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19+
%: Makefile
20+
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

docs/advanced.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Passes
99
:exclude-members: __dict__,__weakref__,__module__
1010

1111
Conditional Blocks
12-
================
12+
==================
1313

1414
.. automodule:: pyrtl.conditional
1515
:members:

docs/basic.rst

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
1-
Basic Logic, Wires, and Memories
2-
================================
1+
Basic Logic and Wires
2+
=====================
33

44
Wires define the relationship between logic blocks in PyRTL. They are treated like normal wires in traditional RTL systems except the :class:`.Register` wire.
55
Logic is then created when wires are combined with one another using the provided operators. For example, if `a` and `b` are both of type `WireVector`,
66
the `a + b` will make an adder, plug `a` and `b` into the inputs of that adder, and return a new `WireVector` which is the output of that adder.
77
Wires provide the basic input and output interfaces to the generated :class:`.Block` which stores the description of the hardware as you build it.
88

9+
The classes ``Input``, ``Output``, ``Const``, and ``Register`` are all derived from WireVector, but
10+
extend it with (or restrict it from) with certain functionality. The `Input` and `Output`
11+
classes are for those values that will be external to the entire system once complete (e.g.
12+
driving a signal off-chip, rather than the interface to some particular sub-block of the
13+
design). The `Const` class is useful for specifying hard-wired values, while `Register` is
14+
how sequential elements are created (the all have an implict clock).
15+
916
WireVector
1017
----------
1118

@@ -15,47 +22,58 @@ WireVector
1522
:special-members: __init__, __add__, __sub__, __mul__, __getitem___, __len__
1623

1724

18-
Input, Output, Const, and Register
19-
----------------------------------
20-
21-
The classes `Input`, `Output`, `Const`, and `Register` are all derived from WireVector, but
22-
extend it with (or restrict it from) with certain functionality. The `Input` and `Output`
23-
classes are for those values that will be external to the entire system once complete (e.g.
24-
driving a signal off-chip, rather than the interface to some particular sub-block of the
25-
design). The `Const` class is useful for specifying hard-wired values, while `Register` is
26-
how sequential elements are created (the all have an implict clock).
25+
Input Pins
26+
----------
2727

2828
.. autoclass:: pyrtl.wire.Input
2929
:members:
3030
:show-inheritance:
3131
:special-members: __init__
3232

33+
Output Pins
34+
-----------
35+
3336
.. autoclass:: pyrtl.wire.Output
3437
:members:
3538
:show-inheritance:
3639
:special-members: __init__
3740

41+
Constants
42+
---------
43+
3844
.. autoclass:: pyrtl.wire.Const
3945
:members:
4046
:show-inheritance:
4147
:special-members: __init__
4248

49+
Registers and Memories
50+
======================
51+
52+
Registers
53+
---------
54+
55+
The class ``Register`` is derived from ``WireVector``, and so can be used just like any other
56+
`WireVector`. A read from the register is the value that is available in the current clock
57+
period, and the value for the follow cycle can be set by assinging to property ``next`` with
58+
the ``<<=`` operator. Registers all, by default, reset to 0, and all reside in the same clock
59+
domain.
60+
4361
.. autoclass:: pyrtl.wire.Register
4462
:members:
4563
:show-inheritance:
4664
:special-members: __init__
4765

4866

49-
MemBlock
67+
Memories
5068
--------
5169

5270
.. autoclass:: pyrtl.memory.MemBlock
5371
:members:
5472
:show-inheritance:
5573
:special-members: __init__
5674

57-
RomBlock
58-
--------
75+
ROMs
76+
----
5977

6078
.. autoclass:: pyrtl.memory.RomBlock
6179
:members:

docs/brand/pyrtl_logo.png

56 KB
Loading

0 commit comments

Comments
 (0)