mirror of
https://github.com/YosysHQ/yosys
synced 2025-06-19 04:13:39 +00:00
Merge pull request #4563 from YosysHQ/krys/better_rtds_action
Better docs builds
This commit is contained in:
commit
9fca352882
13 changed files with 116 additions and 84 deletions
52
.github/workflows/prepare-docs.yml
vendored
Normal file
52
.github/workflows/prepare-docs.yml
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
name: Build docs artifact with Verific
|
||||||
|
|
||||||
|
on: push
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
prepare-docs:
|
||||||
|
# docs builds are needed for anything on main, any tagged versions, and any tag
|
||||||
|
# or branch starting with docs-preview
|
||||||
|
if: ${{ github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/docs-preview') || startsWith(github.ref, 'refs/tags/') }}
|
||||||
|
runs-on: [self-hosted, linux, x64, fast]
|
||||||
|
steps:
|
||||||
|
- name: Checkout Yosys
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
submodules: true
|
||||||
|
|
||||||
|
- name: Runtime environment
|
||||||
|
run: |
|
||||||
|
echo "procs=$(nproc)" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Build Yosys
|
||||||
|
run: |
|
||||||
|
make config-clang
|
||||||
|
echo "ENABLE_VERIFIC := 1" >> Makefile.conf
|
||||||
|
echo "ENABLE_VERIFIC_EDIF := 1" >> Makefile.conf
|
||||||
|
echo "ENABLE_VERIFIC_LIBERTY := 1" >> Makefile.conf
|
||||||
|
echo "ENABLE_VERIFIC_YOSYSHQ_EXTENSIONS := 1" >> Makefile.conf
|
||||||
|
echo "ENABLE_CCACHE := 1" >> Makefile.conf
|
||||||
|
make -j${{ env.procs }} ENABLE_LTO=1
|
||||||
|
|
||||||
|
- name: Prepare docs
|
||||||
|
shell: bash
|
||||||
|
run:
|
||||||
|
make docs/prep TARGETS= EXTRA_TARGETS=
|
||||||
|
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: cmd-ref-${{ github.sha }}
|
||||||
|
path: |
|
||||||
|
docs/source/cmd
|
||||||
|
docs/source/generated
|
||||||
|
docs/source/_images
|
||||||
|
docs/source/code_examples
|
||||||
|
|
||||||
|
- name: Trigger RTDs build
|
||||||
|
uses: dfm/rtds-action@v1.1.0
|
||||||
|
with:
|
||||||
|
webhook_url: ${{ secrets.RTDS_WEBHOOK_URL }}
|
||||||
|
webhook_token: ${{ secrets.RTDS_WEBHOOK_TOKEN }}
|
||||||
|
commit_ref: ${{ github.ref }}
|
54
.github/workflows/test-verific.yml
vendored
54
.github/workflows/test-verific.yml
vendored
|
@ -11,13 +11,11 @@ jobs:
|
||||||
- id: skip_check
|
- id: skip_check
|
||||||
uses: fkirc/skip-duplicate-actions@v5
|
uses: fkirc/skip-duplicate-actions@v5
|
||||||
with:
|
with:
|
||||||
paths_ignore: '["**/README.md"]'
|
paths_ignore: '["**/README.md", "docs/**", "guidelines/**"]'
|
||||||
# don't cancel previous builds
|
# cancel previous builds if a new commit is pushed
|
||||||
cancel_others: 'true'
|
cancel_others: 'true'
|
||||||
# only run on push *or* pull_request, not both
|
# only run on push *or* pull_request, not both
|
||||||
concurrent_skipping: 'same_content_newer'
|
concurrent_skipping: 'same_content_newer'
|
||||||
# we have special actions when running on main, so this should be off
|
|
||||||
skip_after_successful_duplicate: 'false'
|
|
||||||
|
|
||||||
test-verific:
|
test-verific:
|
||||||
needs: pre-job
|
needs: pre-job
|
||||||
|
@ -70,51 +68,3 @@ jobs:
|
||||||
if: ${{ github.ref == 'refs/heads/main' }}
|
if: ${{ github.ref == 'refs/heads/main' }}
|
||||||
run: |
|
run: |
|
||||||
make -C sby run_ci
|
make -C sby run_ci
|
||||||
|
|
||||||
prepare-docs:
|
|
||||||
name: Generate docs artifact
|
|
||||||
needs: [pre-job, test-verific]
|
|
||||||
if: needs.pre-job.outputs.should_skip != 'true'
|
|
||||||
runs-on: [self-hosted, linux, x64, fast]
|
|
||||||
steps:
|
|
||||||
- name: Checkout Yosys
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
submodules: true
|
|
||||||
- name: Runtime environment
|
|
||||||
run: |
|
|
||||||
echo "procs=$(nproc)" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Build Yosys
|
|
||||||
run: |
|
|
||||||
make config-clang
|
|
||||||
echo "ENABLE_VERIFIC := 1" >> Makefile.conf
|
|
||||||
echo "ENABLE_VERIFIC_EDIF := 1" >> Makefile.conf
|
|
||||||
echo "ENABLE_VERIFIC_LIBERTY := 1" >> Makefile.conf
|
|
||||||
echo "ENABLE_VERIFIC_YOSYSHQ_EXTENSIONS := 1" >> Makefile.conf
|
|
||||||
echo "ENABLE_CCACHE := 1" >> Makefile.conf
|
|
||||||
make -j${{ env.procs }} ENABLE_LTO=1
|
|
||||||
|
|
||||||
- name: Prepare docs
|
|
||||||
shell: bash
|
|
||||||
run:
|
|
||||||
make docs/source/cmd/abc.rst docs/gen_examples docs/gen_images docs/guidelines docs/usage docs/reqs TARGETS= EXTRA_TARGETS=
|
|
||||||
|
|
||||||
- name: Upload artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: cmd-ref-${{ github.sha }}
|
|
||||||
path: |
|
|
||||||
docs/source/cmd
|
|
||||||
docs/source/generated
|
|
||||||
docs/source/_images
|
|
||||||
docs/source/code_examples
|
|
||||||
|
|
||||||
- name: Trigger RTDs build
|
|
||||||
if: ${{ github.ref == 'refs/heads/main' }}
|
|
||||||
uses: dfm/rtds-action@v1.1.0
|
|
||||||
with:
|
|
||||||
webhook_url: ${{ secrets.RTDS_WEBHOOK_URL }}
|
|
||||||
webhook_token: ${{ secrets.RTDS_WEBHOOK_TOKEN }}
|
|
||||||
commit_ref: ${{ github.ref }}
|
|
||||||
|
|
|
@ -13,6 +13,7 @@ formats:
|
||||||
|
|
||||||
sphinx:
|
sphinx:
|
||||||
configuration: docs/source/conf.py
|
configuration: docs/source/conf.py
|
||||||
|
fail_on_warning: true
|
||||||
|
|
||||||
python:
|
python:
|
||||||
install:
|
install:
|
||||||
|
|
5
Makefile
5
Makefile
|
@ -1009,8 +1009,11 @@ docs/usage: $(addprefix docs/source/generated/,$(DOCS_USAGE_STDOUT) $(DOCS_USAGE
|
||||||
docs/reqs:
|
docs/reqs:
|
||||||
$(Q) $(MAKE) -C docs reqs
|
$(Q) $(MAKE) -C docs reqs
|
||||||
|
|
||||||
|
.PHONY: docs/prep
|
||||||
|
docs/prep: docs/source/cmd/abc.rst docs/gen_examples docs/gen_images docs/guidelines docs/usage
|
||||||
|
|
||||||
DOC_TARGET ?= html
|
DOC_TARGET ?= html
|
||||||
docs: docs/source/cmd/abc.rst docs/gen_examples docs/gen_images docs/guidelines docs/usage docs/reqs
|
docs: docs/prep
|
||||||
$(Q) $(MAKE) -C docs $(DOC_TARGET)
|
$(Q) $(MAKE) -C docs $(DOC_TARGET)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
|
10
README.md
10
README.md
|
@ -629,11 +629,21 @@ following are used for building the website:
|
||||||
|
|
||||||
$ sudo apt install pdf2svg faketime
|
$ sudo apt install pdf2svg faketime
|
||||||
|
|
||||||
|
Or for MacOS, using homebrew:
|
||||||
|
|
||||||
|
$ brew install pdf2svg libfaketime
|
||||||
|
|
||||||
PDFLaTeX, included with most LaTeX distributions, is also needed during the
|
PDFLaTeX, included with most LaTeX distributions, is also needed during the
|
||||||
build process for the website. Or, run the following:
|
build process for the website. Or, run the following:
|
||||||
|
|
||||||
$ sudo apt install texlive-latex-base texlive-latex-extra latexmk
|
$ sudo apt install texlive-latex-base texlive-latex-extra latexmk
|
||||||
|
|
||||||
|
Or for MacOS, using homebrew:
|
||||||
|
|
||||||
|
$ brew install basictex
|
||||||
|
$ sudo tlmgr update --self
|
||||||
|
$ sudo tlmgr install collection-latexextra latexmk tex-gyre
|
||||||
|
|
||||||
The Python package, Sphinx, is needed along with those listed in
|
The Python package, Sphinx, is needed along with those listed in
|
||||||
`docs/source/requirements.txt`:
|
`docs/source/requirements.txt`:
|
||||||
|
|
||||||
|
|
|
@ -250,6 +250,7 @@ test-macros:
|
||||||
.PHONY: images
|
.PHONY: images
|
||||||
images:
|
images:
|
||||||
$(MAKE) -C source/_images
|
$(MAKE) -C source/_images
|
||||||
|
$(MAKE) -C source/_images convert
|
||||||
|
|
||||||
.PHONY: reqs
|
.PHONY: reqs
|
||||||
reqs:
|
reqs:
|
||||||
|
|
|
@ -8,24 +8,22 @@ FAKETIME := TZ='Z' faketime -f '2022-01-01 00:00:00 x0,001'
|
||||||
CODE_EXAMPLES := ../code_examples/*/Makefile
|
CODE_EXAMPLES := ../code_examples/*/Makefile
|
||||||
examples: $(CODE_EXAMPLES)
|
examples: $(CODE_EXAMPLES)
|
||||||
|
|
||||||
# target to convert specified dot file(s)
|
# target to convert all dot files
|
||||||
|
# needs to be run *after* examples, otherwise no dot files will be found
|
||||||
.PHONY: convert
|
.PHONY: convert
|
||||||
TARG_DOT ?=
|
DOT_FILES := $(shell find . -name *.dot)
|
||||||
convert: $(TARG_DOT:.dot=.pdf) $(TARG_DOT:.dot=.svg)
|
convert: $(DOT_FILES:.dot=.pdf) $(DOT_FILES:.dot=.svg)
|
||||||
|
|
||||||
# use empty FORCE target because .PHONY ignores % expansion, using find allows
|
# use empty FORCE target because .PHONY ignores % expansion
|
||||||
# us to generate everything in one pass, since we don't know all of the possible
|
|
||||||
# outputs until the sub-makes run
|
|
||||||
FORCE:
|
FORCE:
|
||||||
../%/Makefile: FORCE
|
../%/Makefile: FORCE
|
||||||
@make -C $(@D) dots
|
@make -C $(@D) dots
|
||||||
@mkdir -p $*
|
@mkdir -p $*
|
||||||
@find $(@D) -name *.dot -exec cp -u {} -t $* \;
|
@find $(@D) -name *.dot -exec rsync -t {} $* \;
|
||||||
@find $* -name *.dot -printf "%p " | xargs -i make --no-print-directory convert TARG_DOT="{}"
|
|
||||||
|
|
||||||
# find and build all tex files
|
# find and build all tex files
|
||||||
.PHONY: all_tex
|
.PHONY: all_tex
|
||||||
TEX_FILES := $(wildcard **/*.tex)
|
TEX_FILES := $(shell find . -name *.tex)
|
||||||
all_tex: $(TEX_FILES:.tex=.pdf) $(TEX_FILES:.tex=.svg)
|
all_tex: $(TEX_FILES:.tex=.pdf) $(TEX_FILES:.tex=.svg)
|
||||||
|
|
||||||
%.pdf: %.dot
|
%.pdf: %.dot
|
||||||
|
|
|
@ -13,7 +13,7 @@ dots: $(DOTS)
|
||||||
$(YOSYS) $<
|
$(YOSYS) $<
|
||||||
|
|
||||||
%.dot: %_full.dot
|
%.dot: %_full.dot
|
||||||
gvpack -u $*_full.dot -o $@
|
gvpack -u -o $@ $*_full.dot
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
|
|
|
@ -41,23 +41,44 @@ html_static_path = ['_static', "_images"]
|
||||||
pygments_style = 'colorful'
|
pygments_style = 'colorful'
|
||||||
highlight_language = 'none'
|
highlight_language = 'none'
|
||||||
|
|
||||||
extensions = ['sphinx.ext.autosectionlabel', 'sphinxcontrib.bibtex', 'rtds_action']
|
extensions = ['sphinx.ext.autosectionlabel', 'sphinxcontrib.bibtex']
|
||||||
|
|
||||||
# rtds_action
|
if os.getenv("READTHEDOCS"):
|
||||||
rtds_action_github_repo = "YosysHQ/yosys"
|
# Use rtds_action if we are building on read the docs and have a github token env var
|
||||||
rtds_action_path = "."
|
if os.getenv("GITHUB_TOKEN"):
|
||||||
rtds_action_artifact_prefix = "cmd-ref-"
|
extensions += ['rtds_action']
|
||||||
rtds_action_github_token = os.environ["GITHUB_TOKEN"]
|
rtds_action_github_repo = "YosysHQ/yosys"
|
||||||
|
rtds_action_path = "."
|
||||||
|
rtds_action_artifact_prefix = "cmd-ref-"
|
||||||
|
rtds_action_github_token = os.environ["GITHUB_TOKEN"]
|
||||||
|
else:
|
||||||
|
# We're on read the docs but have no github token, this is probably a PR preview build
|
||||||
|
html_theme_options["announcement"] = 'Missing content? Check <a class="reference internal" href="https://tyrtd--2.org.readthedocs.build/en/2/appendix/building_docs.html#pr-previews-and-limitations">PR preview limitations</a>.'
|
||||||
|
html_theme_options["light_css_variables"]["color-announcement-background"] = "var(--color-admonition-title-background--caution)"
|
||||||
|
html_theme_options["light_css_variables"]["color-announcement-text"] = "var(--color-content-foreground)"
|
||||||
|
|
||||||
# Ensure that autosectionlabel will produce unique names
|
# Ensure that autosectionlabel will produce unique names
|
||||||
autosectionlabel_prefix_document = True
|
autosectionlabel_prefix_document = True
|
||||||
autosectionlabel_maxdepth = 1
|
autosectionlabel_maxdepth = 1
|
||||||
|
|
||||||
|
# include todos for previews
|
||||||
|
extensions.append('sphinx.ext.todo')
|
||||||
|
|
||||||
# set version
|
# set version
|
||||||
if os.getenv("READTHEDOCS") and os.getenv("READTHEDOCS_VERSION") == "latest":
|
if os.getenv("READTHEDOCS"):
|
||||||
|
rtds_version = os.getenv("READTHEDOCS_VERSION")
|
||||||
|
if rtds_version == "latest":
|
||||||
release = yosys_ver + "-dev"
|
release = yosys_ver + "-dev"
|
||||||
|
todo_include_todos = False
|
||||||
|
elif rtds_version.startswith("yosys-"):
|
||||||
|
release = yosys_ver
|
||||||
|
todo_include_todos = False
|
||||||
|
else:
|
||||||
|
release = rtds_version
|
||||||
|
todo_include_todos = True
|
||||||
else:
|
else:
|
||||||
release = yosys_ver
|
release = yosys_ver
|
||||||
|
todo_include_todos = True
|
||||||
|
|
||||||
# assign figure numbers
|
# assign figure numbers
|
||||||
numfig = True
|
numfig = True
|
||||||
|
@ -72,10 +93,6 @@ latex_elements = {
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
|
|
||||||
# include todos during rewrite
|
|
||||||
extensions.append('sphinx.ext.todo')
|
|
||||||
todo_include_todos = False
|
|
||||||
|
|
||||||
# custom cmd-ref parsing/linking
|
# custom cmd-ref parsing/linking
|
||||||
sys.path += [os.path.dirname(__file__) + "/../"]
|
sys.path += [os.path.dirname(__file__) + "/../"]
|
||||||
extensions.append('util.cmdref')
|
extensions.append('util.cmdref')
|
||||||
|
|
|
@ -3,6 +3,8 @@ More scripting
|
||||||
|
|
||||||
.. todo:: brief overview for the more scripting index
|
.. todo:: brief overview for the more scripting index
|
||||||
|
|
||||||
|
.. todo:: troubleshooting document(?)
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 3
|
:maxdepth: 3
|
||||||
|
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
Troubleshooting
|
|
||||||
~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
.. todo:: troubleshooting document(?)
|
|
||||||
|
|
||||||
See :doc:`/cmd/bugpoint`
|
|
|
@ -90,8 +90,10 @@ Mapping to hardware
|
||||||
For this example, we are using a Liberty file to describe a cell library which
|
For this example, we are using a Liberty file to describe a cell library which
|
||||||
our internal cell library will be mapped to:
|
our internal cell library will be mapped to:
|
||||||
|
|
||||||
|
.. todo:: find a Liberty pygments style?
|
||||||
|
|
||||||
.. literalinclude:: /code_examples/intro/mycells.lib
|
.. literalinclude:: /code_examples/intro/mycells.lib
|
||||||
:language: Liberty
|
:language: text
|
||||||
:linenos:
|
:linenos:
|
||||||
:name: mycells-lib
|
:name: mycells-lib
|
||||||
:caption: :file:`mycells.lib`
|
:caption: :file:`mycells.lib`
|
||||||
|
|
|
@ -81,8 +81,10 @@ The following features, along with their corresponding Yosys build parameters,
|
||||||
are required for the Yosys-Verific patch:
|
are required for the Yosys-Verific patch:
|
||||||
|
|
||||||
* RTL elaboration with
|
* RTL elaboration with
|
||||||
|
|
||||||
* SystemVerilog with ``ENABLE_VERIFIC_SYSTEMVERILOG``, and/or
|
* SystemVerilog with ``ENABLE_VERIFIC_SYSTEMVERILOG``, and/or
|
||||||
* VHDL support with ``ENABLE_VERIFIC_VHDL``.
|
* VHDL support with ``ENABLE_VERIFIC_VHDL``.
|
||||||
|
|
||||||
* Hierarchy tree support and static elaboration with
|
* Hierarchy tree support and static elaboration with
|
||||||
``ENABLE_VERIFIC_HIER_TREE``.
|
``ENABLE_VERIFIC_HIER_TREE``.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue