...
 
Commits (902)
......@@ -30,7 +30,7 @@ build_ip_and_tests:
artifacts:
paths: &vunit_build_paths
- test/build
expire_in: 1 hour
expire_in: 5 hrs
script:
- cd test
- make elaborate
......@@ -57,9 +57,12 @@ build_doc:
- export LC_ALL=en_US.UTF-8
- export LANG=en_US.UTF-8
- make -C doc/core
- make -C doc/driver
artifacts:
paths:
- doc/core/Progdokum.pdf
- doc/core/ctu_can_fd_architecture.pdf
- doc/driver/build
build_linux_driver:
stage: build
......@@ -68,6 +71,7 @@ build_linux_driver:
script:
- cd driver/linux
- "make -j`nproc` KDIR=/linux/build"
- "make checkpatch KDIR=/linux/build"
artifacts:
paths:
- driver/linux/ctucanfd.ko
......@@ -79,16 +83,11 @@ test_ip_fast:
script:
- cd test
- make test_fast
- make coverage
- make functional_coverage
coverage: "/lines......: ([^%]+%)/"
artifacts:
when: always
paths:
- test/code_html
- test/tests_fast.xml
- test/xunit.xsl
- test/build/functional_coverage
reports:
junit: [test/tests_fast.xml]
......@@ -100,14 +99,30 @@ test_ip_nightly:
script:
- cd test
- make test_nightly
after_script:
- cd test
- make coverage
- make functional_coverage
- cd ../scripts
- chmod +x gen_vrm
- ./gen_vrm
coverage: "/lines......: ([^%]+%)/"
artifacts:
when: always
paths:
- test/code_html
- test/tests_nightly.xml
- test/xunit.xsl
- test/build/functional_coverage
- scripts/VRM.html
reports:
junit: [test/tests_nightly.xml]
# Nightly tests might fail due to randomization. It is not preffered to
# kill whole follow-up coverage processing due to this failure!
# Fast pipeline on the other hand can't fail because it must pass before merge!
allow_failure: true
pages:
stage: deploy
when: always
......@@ -118,8 +133,11 @@ pages:
- cp test/tests_*.xml public/
- mv test/code_html public/coverage || true
- cp doc/core/Progdokum.pdf public/ || true
- cp doc/core/ctu_can_fd_architecture.pdf public/ || true
- cp -R doc/driver/build public/driver_doc || true
- mkdir public/functional_coverage
- cp -R test/build/functional_coverage/* public/functional_coverage || true
- cp scripts/VRM.html public/ || true
only:
- master
artifacts:
......
# CAN FD IP Core
# CTU CAN FD IP Core
[![pipeline status](https://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/badges/master/pipeline.svg)](http://canbus.pages.fel.cvut.cz/ctucanfd_ip_core/tests_fast.xml)
[![coverage report](https://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/badges/master/coverage.svg)](http://canbus.pages.fel.cvut.cz/ctucanfd_ip_core/coverage/)
[![documentation](https://img.shields.io/badge/documentation--blue.svg)]( http://canbus.pages.fel.cvut.cz/ctucanfd_ip_core/Progdokum.pdf)
CAN FD IP Core written in VHDL. Designed to be compliant with ISO1198-1:2015.
Supports ISO and NON-ISO versions of CAN FD protocol.
## License
CTU CAN FD is published under MIT license shown in:
[![License](https://img.shields.io/badge/License--black.svg)]( https://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/blob/master/LICENSE)
CTU CAN FD linux driver is published under GPLv2 license.
The CAN protocol is developed by Robert Bosch GmbH and protected by patents.
Anybody who wants to implement this IP core on silicon or FPGA for commercial
purposes has to obtain CAN protocol license from Bosch.
## Design
CTU CAN FD RTL is written in VHDL with no vendor specific libraries/components required.
CTU CAN FD is fully synchronous design. CTU CAN FD is written with frequent usage of clock enables to allow inferred clock gating on ASIC.
Architecture of CTU CAN FD is described in:
[![System architecture](https://img.shields.io/badge/System_architecture--blue.svg)]( http://canbus.pages.fel.cvut.cz/ctucanfd_ip_core/ctu_can_fd_architecture.pdf)
Functional description of CTU CAN FD is in datasheet:
[![Datasheet](https://img.shields.io/badge/Datasheet--blue.svg)]( http://canbus.pages.fel.cvut.cz/ctucanfd_ip_core/Progdokum.pdf)
## Dependencies
To simulate CTU CAN FD following dependencies are needed:
GHDL, VHDL simulator with custom changes:
[GHDL](https://github.com/Blebowski/ghdl).
GTKWave, Waveform viewer:
[GTKWave](http://gtkwave.sourceforge.net/)
Vunit, VHDL unit test framework, with modifications allowing to start GTKWave interactively when simulation run starts:
[Vunit](https://github.com/mjerabek/vunit).
Python 3 and following modules: pyvcd attrs jinja2 parsy pyyaml click yattag json2html
For simulation environment, there is a docker image available at:
[Simulation docker](https://gitlab.com/canfd/server-tools/container_registry).
## Verification
CTU CAN FD verification is done in GHDL + VUnit + GTKWave combination. Verification is done
on RTL (no gate level sims so far...).
There are following types of tests:
- Unit tests - Verify functionality of some modules stand-alone. Testbench for each module.
- Feature tests - Verify features of CTU CAN FD. Common testbench for many test-cases
- Sanity test - Real bus simulation (with delays, transceiver, noise). One testbench, different configurations.
- Reference test - Verify reception from reference CAN controller. One testbench, different file sets.
Test architecture is further described in:
TODO.
Each test/testbench has common header which is used to collect what has been verified (call it VRM if you want...):
[![Verification items](https://img.shields.io/badge/Verification_Items--yellow.svg)](http://canbus.pages.fel.cvut.cz/ctucanfd_ip_core/VRM.html)
There is PSL functional coverage and PSL assertions available in:
[![functional coverage](https://img.shields.io/badge/functional%20coverage--orange.svg)](http://canbus.pages.fel.cvut.cz/ctucanfd_ip_core/functional_coverage/functional_coverage_report.html)
For now GCov is used to collect code coverage in GHDL and its results are shown in:
[![coverage report](https://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/badges/master/coverage.svg)](http://canbus.pages.fel.cvut.cz/ctucanfd_ip_core/coverage/)
All tests are automated into two runs:
- Fast - no randomization (seed=0), must pass before merge request is merged.
- Nightly - randomized, runs every night. Should be debugged before release.
Results of latest test run + logs are available under:
[![pipeline status](https://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/badges/master/pipeline.svg)](http://canbus.pages.fel.cvut.cz/ctucanfd_ip_core/tests_fast.xml)
At the moment, CTU CAN FD compliance towards ISO1198-1:2015 has not been proven.
It is intended for future to build testbench with test sequences described in ISO16845-1:2016.
## Synthesis
CTU CAN FD has been synthesized into Xilinx and Intel FPGAs. BRAMs were inferred for
TX and RX buffers. CTU CAN FD reached about 100 MHz of maximal frequency. Synthesis
results are shown in:
TODO.
## Linux driver
CTU CAN FD has SocketCAN Linux driver which is described in:
[![Linux driver](https://img.shields.io/badge/Linux_driver--blue.svg)](http://canbus.pages.fel.cvut.cz/ctucanfd_ip_core/driver_doc/ctucanfd-driver.html)
There are three driver parts:
- Network
- Platform
- PCI
Driver has been tested on two boards:
- [![PCI board](https://img.shields.io/badge/PCI_board--blue.svg)](https://gitlab.fel.cvut.cz/canbus/pcie-ctu_can_fd)
- [![Xilinx Zynq board](https://img.shields.io/badge/Zynq_board--blue.svg)](https://gitlab.fel.cvut.cz/canbus/zynq/zynq-can-sja1000-top) (Used for automated tests)
Operation up to 5 Mbits was tested (depending on physical layer transceiver type).
## Linux driver tests
Linux driver was debugged and tested manually against Kvaser devices, CANoe and other CAN FD controllers. Regular communication
and handling of Error states were debugged manually. There is an automated emulator at CTU FEE pulling latest CTU CAN FD
RTL, synthesizing into Xilinx Zynq FPGA, running PetaLinux, loading SocketCAN driver and running CAN/CAN FD communication (500 Kbit/s Nominal bit rate, 4 Mbit Data bit rate) with randomly generated frames between CTU CAN FDs and FD tolerant SJA1000. Results can be found at:
[![FPGA Emulator tests](https://img.shields.io/badge/FPGA_Emulator_Tests--cyan.svg)](https://gitlab.fel.cvut.cz/canbus/zynq/zynq-can-sja1000-top/pipelines)
However, there are no written tests for the driver itself (apart from compiling it without error and passing Linux kernels checkpatch which is required for pipeline to pass). In future QEMU + VPCIE + GHDL cosimulation is planned.
## RTL release package
CAN FD IP Core written in VHDL, originally developed at Czech Technical University -- Faculty of Electrical Engineering -- Department of Measurement.
CTU CAN FD RTL is postprocessed via script which removes PSL assertions and some signals intended only for verification purposes. This is done to save simulation time in systems where CTU CAN FD is integrated (there are hundreds of PSL cover points and PSL assertions). RTL release package from latest sources is available in:
TODO
The Core supports ISO and NON-ISO versions of CAN FD protocol for synthesis into
FPGAs. Core contains test framework written in VHDL and runable with Python in
Modelsim or GHDL.
#!/bin/sh
for fname in ctu_can_fd.c ctu_can_fd_frame.h ctu_can_fd_hw.c ctu_can_fd_hw.h \
ctu_can_fd_regs.h ; do
for fname in ctu_can_fd.c ctu_can_fd_pci.c ctu_can_fd_platform.c ctu_can_fd.h \
ctu_can_fd_frame.h ctu_can_fd_hw.c ctu_can_fd_hw.h ctu_can_fd_regs.h
do
echo driver/${fname} /usr/src/${PACKAGE_NAME}-${PACKAGE_VERSION}
done
for fname in Kbuild Makefile ; do
......
This diff is collapsed.
This diff is collapsed.
all: Progdokum.pdf
all: Progdokum.pdf ctu_can_fd_architecture.pdf
Progdokum.pdf: version.tex
#lyx --export-to pdf Progdokum.pdf Progdokum.lyx
......@@ -10,6 +10,16 @@ Progdokum.pdf: version.tex
xelatex Progdokum
xelatex Progdokum
ctu_can_fd_architecture.pdf: version.tex
lyx --export-to latex ctu_can_fd_architecture.tex ctu_can_fd_architecture.lyx
sed -rie '/\{inputenc\}/d' ctu_can_fd_architecture.tex
iconv -f latin2 -t utf8 <ctu_can_fd_architecture.tex >ctu_can_fd_architecture.tex-1 && mv ctu_can_fd_architecture.tex-1 ctu_can_fd_architecture.tex
xelatex ctu_can_fd_architecture
# run again to generate PDF outline and references
xelatex ctu_can_fd_architecture
xelatex ctu_can_fd_architecture
version.tex: FORCE
desc=$$(git describe --always); \
date="$$(git show -s --format=%cd --date=format:%Y-%m-%d)"; \
......
#LyX 2.2 created this file. For more info see http://www.lyx.org/
\lyxformat 508
\begin_document
\begin_header
\save_transient_properties true
\origin unavailable
\textclass IEEEtran
\begin_preamble
\usepackage{fancyhdr}
\renewcommand{\headrulewidth}{0pt}
\end_preamble
\use_default_options true
\begin_modules
eqs-within-sections
figs-within-sections
customHeadersFooters
\end_modules
\maintain_unincluded_children false
\language english
\language_package default
\inputencoding auto
\fontencoding global
\font_roman "default" "default"
\font_sans "default" "default"
\font_typewriter "default" "default"
\font_math "auto" "auto"
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100 100
\font_tt_scale 100 100
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command default
\index_command default
\paperfontsize default
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_package amsmath 1
\use_package amssymb 1
\use_package cancel 1
\use_package esint 1
\use_package mathdots 1
\use_package mathtools 1
\use_package mhchem 1
\use_package stackrel 1
\use_package stmaryrd 1
\use_package undertilde 1
\cite_engine basic
\cite_engine_type default
\biblio_style plain
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\justification true
\use_refstyle 1
\index Index
\shortcut idx
\color #008000
\end_index
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\paragraph_indentation default
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\end_header
\begin_body
\begin_layout Title
\begin_inset space ~
\end_inset
\begin_inset Newline newline
\end_inset
CAN FLEXIBLE DATA-RATE
\begin_inset Newline newline
\end_inset
IP CORE
\begin_inset Newline newline
\end_inset
\size large
PRODUCT BRIEF
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
thispagestyle{fancy}
\end_layout
\end_inset
\end_layout
\begin_layout Left Header
\begin_inset Tabular
<lyxtabular version="3" rows="3" columns="2">
<features tabularvalignment="middle">
<column alignment="center" valignment="top" width="0pt">
<column alignment="left" valignment="top" width="0pt">
<row>
<cell multirow="3" alignment="left" valignment="middle" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Graphics
filename E:/Skola/CVUT-FEL/LEV.bmp
scale 14
\end_inset
\end_layout
\end_inset
</cell>
<cell alignment="left" valignment="top" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\series bold
Czech Technical University in Prague
\end_layout
\end_inset
</cell>
</row>
<row>
<cell multirow="4" alignment="center" valignment="top" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
</cell>
<cell alignment="left" valignment="top" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Faculty of electrical engineering
\end_layout
\end_inset
</cell>
</row>
<row>
<cell multirow="4" alignment="center" valignment="top" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
</cell>
<cell alignment="left" valignment="top" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Department of measurement
\end_layout
\end_inset
</cell>
</row>
</lyxtabular>
\end_inset
\end_layout
\begin_layout Right Header
Ondrej Ille
\begin_inset Newline newline
\end_inset
August 2016
\end_layout
\begin_layout Section*
Overview
\end_layout
\begin_layout Standard
CAN Flexible Data-Rate IP Core connects functionality of CAN 2.0, CAN FD
1.0 and ISO CAN FD specification in single light-weight IP Core.
It is soft-core IP Core written in VHDL with only standard IEEE libraries
needed.
The main target of usage are FPGA applications and the core is available
as RTL.
It is optimized for inference of native hardware blocks such as SRAM memories
and multipliers in DSP blocks.
Generic settings achieve a high level of flexibility before synthesis.
It is posible to balance the core between high amount of features and small
size.
\end_layout
\begin_layout Standard
The IP Core is accessed as memory mapped peripheria via Avalon bus.
Easy manipulation with the core is achieved by using hardware buffers for
CAN frames.
One FIFO like RX buffer is available and two TX buffers are available.
Timestamps can be captured for various events on the CAN bus.
Additionally transmission of CAN frames can be triggered by external timestamp.
Asynchronous access is supported via rich interrupt settings.
Three Bit filters and one Range filter is available on received frames.
\end_layout
\begin_layout Standard
The design is fully tested at RTL level as well as in real hardware with
Altera Cyclone IV FPGA series.
The automated test-framework in TCL is available within the core and it
provides an easy way of reproducing unit test, feature covering tests and
real bus simulation.
\end_layout
\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Float figure
placement H
wide false
sideways false
status open
\begin_layout Plain Layout
\noindent
\align center
\begin_inset space ~
\end_inset
\begin_inset space ~
\end_inset
\begin_inset space ~
\end_inset
\begin_inset space ~
\end_inset
\begin_inset space ~
\end_inset
\begin_inset space ~
\end_inset
\begin_inset space ~
\end_inset
\begin_inset space ~
\end_inset
\begin_inset space ~
\end_inset
\begin_inset space ~
\end_inset
\begin_inset space ~
\end_inset
\begin_inset space ~
\end_inset
\begin_inset space ~
\end_inset
\begin_inset space ~
\end_inset
\begin_inset space ~
\end_inset
\begin_inset space ~
\end_inset
\begin_inset space ~
\end_inset
\begin_inset space ~
\end_inset
\begin_inset space ~
\end_inset
\begin_inset space ~
\end_inset
\begin_inset Graphics
filename E:/Skola/CVUT-FEL/Testovaci Platforma/Obrazky/IP_core_linkedin.jpg
lyxscale 10
scale 55
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Section*
Features
\end_layout
\begin_layout Itemize
\paragraph_spacing onehalf
CAN 2.0, CAN FD 1.0 and ISO CAN FD
\end_layout
\begin_layout Itemize
\paragraph_spacing onehalf
RTL VHDL (synthesis), TCL (testing)
\end_layout
\begin_layout Itemize
\paragraph_spacing onehalf
Pre-synthesis configurable features
\end_layout
\begin_layout Itemize
\paragraph_spacing onehalf
Avalon memory bus
\end_layout
\begin_layout Itemize
\paragraph_spacing onehalf
Timestamping and transmission at given time
\end_layout
\begin_layout Itemize
\paragraph_spacing onehalf
Optional event and error logging
\end_layout
\begin_layout Itemize
\paragraph_spacing onehalf
Fault confinement state manipulation
\end_layout
\begin_layout Itemize
\paragraph_spacing onehalf
Transceiver delay measurement
\end_layout
\begin_layout Itemize
\paragraph_spacing onehalf
Size 6 000 - 11 000 LUTs
\end_layout
\begin_layout Itemize
\paragraph_spacing onehalf
2 000 - 12 000 SRAM memory bits
\end_layout
\begin_layout Itemize
\paragraph_spacing onehalf
Synchronization output with time quantum
\end_layout
\begin_layout Itemize
\paragraph_spacing onehalf
Variety of interrupt sources
\end_layout
\begin_layout Itemize
\paragraph_spacing onehalf
Filtering of received frame
\end_layout
\begin_layout Itemize
\paragraph_spacing onehalf
Listen-only mode, Self-test mode,
\begin_inset Newline newline
\end_inset
Acknowledge forbidden mode
\end_layout
\begin_layout Itemize
\paragraph_spacing onehalf
Up to 14 Mbit in
\begin_inset Quotes eld
\end_inset
Data
\begin_inset Quotes erd
\end_inset
bit-rate
\begin_inset Newline newline
\end_inset
(with 100 Mhz Core clock)
\end_layout
\begin_layout Itemize
\paragraph_spacing onehalf
Driver in C available
\end_layout
\end_body
\end_document
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
#LyX 2.2 created this file. For more info see http://www.lyx.org/
\lyxformat 508
#LyX 2.3 created this file. For more info see http://www.lyx.org/
\lyxformat 544
\begin_document
\begin_header
\save_transient_properties true
......@@ -30,6 +30,8 @@ customHeadersFooters
\font_osf false
\font_sf_scale 100 100
\font_tt_scale 100 100
\use_microtype false
\use_dash_ligatures true
\graphics default
\default_output_format default
\output_sync 0
......@@ -71,6 +73,7 @@ customHeadersFooters
\suppress_date false
\justification true
\use_refstyle 1
\use_minted 0
\index Index
\shortcut idx
\color #008000
......@@ -84,7 +87,10 @@ customHeadersFooters
\tocdepth 5
\paragraph_separation skip
\defskip smallskip
\quotes_language english
\is_math_indent 0
\math_numbering_side default
\quotes_style english
\dynamic_quotes 0
\papercolumns 1
\papersides 1
\paperpagestyle headings
......
SPHINXBUILD = sphinx-build
SPHINXOPTS =
SPHINXDIRS = .
SPHINX_CONF = conf.py
PAPER =
PDFLATEX = xelatex
LATEXOPTS = -interaction=batchmode
all: default
.PHONY: default
default:
sphinx-build -b html . build
# -*- coding: utf-8 -*-
#
# Configuration file for the Sphinx documentation builder.
#
# This file does only contain a selection of the most common options. For a
# full list see the documentation:
# http://www.sphinx-doc.org/en/master/config
# -- Path setup --------------------------------------------------------------
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
import os
import sys
sys.path.insert(0, os.path.abspath('sphinx-ext'))
# -- Project information -----------------------------------------------------
project = 'ctucanfd'
copyright = '2019, Ondrej Ille, Martin Jerabek, Pavel Pisa'
author = 'Ondrej Ille, Martin Jerabek, Pavel Pisa'
# The short X.Y version
version = ''
# The full version, including alpha/beta/rc tags
release = ''
# -- General configuration ---------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#
# needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'sphinx.ext.autodoc',
'kerneldoc',
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['sphinx-templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
#
# source_suffix = ['.rst', '.md']
source_suffix = '.rst'
# The master toctree document.
master_doc = 'index'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = []
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = None
# -- Options for HTML output -------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = 'alabaster'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#
# html_theme_options = {}
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['sphinx-static']
# Custom sidebar templates, must be a dictionary that maps document names
# to template names.
#
# The default sidebars (for documents that don't match any pattern) are
# defined by theme itself. Builtin themes are using these templates by
# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
# 'searchbox.html']``.
#
# html_sidebars = {}
# -- Options for HTMLHelp output ---------------------------------------------
# Output file base name for HTML help builder.
htmlhelp_basename = 'ctucanfddoc'
# -- Options for LaTeX output ------------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#
# 'preamble': '',
# Latex figure (float) alignment
#
# 'figure_align': 'htbp',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'ctucanfd.tex', 'ctucanfd Documentation',
'Ondrej Ille, Martin Jerabek, Pavel Pisa', 'manual'),
]
# -- Options for manual page output ------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, 'ctucanfd', 'ctucanfd Documentation',
[author], 1)
]
# -- Options for Texinfo output ----------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, 'ctucanfd', 'ctucanfd Documentation',
author, 'ctucanfd', 'One line description of project.',
'Miscellaneous'),
]
# -- Options for Epub output -------------------------------------------------
# Bibliographic Dublin Core info.
epub_title = project
# The unique identifier of the text. This can be a ISBN number
# or the project homepage.
#
# epub_identifier = ''
# A unique identification for the text.
#
# epub_uid = ''
# A list of files that should not be packed into the epub file.
epub_exclude_files = ['search.html']
# -- Extension configuration -------------------------------------------------
# kernel-doc extension configuration for running Sphinx directly (e.g. by Read
# the Docs). In a normal build, these are supplied from the Makefile via command
# line arguments.
kerneldoc_bin = '../../scripts/kernel-doc'
kerneldoc_srctree = '../driver'
This diff is collapsed.
.. ctucanfd documentation master file, created by
sphinx-quickstart on Mon Sep 9 14:45:43 2019.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to ctucanfd's documentation!
====================================
.. toctree::
:maxdepth: 2
:caption: Contents:
ctucanfd-driver
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
This diff is collapsed.
# SPDX-License-Identifier: GPL-2.0
#
# Sphinx has deprecated its older logging interface, but the replacement
# only goes back to 1.6. So here's a wrapper layer to keep around for
# as long as we support 1.4.