Merge pull request #12 from mithro/docs docs: Adding some initial documentation.
diff --git a/.readthedocs.yml b/.readthedocs.yml new file mode 100644 index 0000000..93b8e44 --- /dev/null +++ b/.readthedocs.yml
@@ -0,0 +1,16 @@ +# .readthedocs.yml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required +version: 2 + +# Build documentation in the docs/ directory with Sphinx +sphinx: + configuration: docs/conf.py + +formats: + - htmlzip + +conda: + environment: docs/environment.yml
diff --git a/MANIFEST.in b/MANIFEST.in index 0d2d920..b9318a3 100644 --- a/MANIFEST.in +++ b/MANIFEST.in
@@ -1,3 +1,7 @@ +exclude .readthedocs.yml +exclude tox.ini +exclude *.swp + # Include the README include *.md @@ -6,4 +10,18 @@ include *.yapf include *.txt + recursive-include v2x *.py + + +# Docs +recursive-include docs *.py +recursive-include docs *.rst +recursive-include docs *.txt +recursive-include docs *.yml +recursive-include docs Makefile +prune docs/_* +prune docs/env + +# Tests +graft tests
diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000..c97efb9 --- /dev/null +++ b/docs/.gitignore
@@ -0,0 +1,5 @@ +env +_build +tests/**/*.md +tests/**/*.svg +tests/**/*.png
diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..64f9ba2 --- /dev/null +++ b/docs/Makefile
@@ -0,0 +1,67 @@ +# Minimal makefile for Sphinx documentation +# + +MAKEDIR := $(dir $(lastword $(MAKEFILE_LIST))) + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = [ -e env/bin/activate ] && source env/bin/activate; sphinx-build +SPHINXAUTOBUILD = [ -e env/bin/activate ] && source env/bin/activate; sphinx-autobuild +SPHINXPROJ = SymbiFlowV2X +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +livehtml: + @$(SPHINXAUTOBUILD) -b html --ignore \*.swp --ignore \*~ $(SPHINXOPTS) "$(SOURCEDIR)" "$(BUILDDIR)/html" + +.PHONY: help livehtml Makefile + + +env/Miniconda3-latest-Linux-x86_64.sh: + mkdir env + wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O env/Miniconda3-latest-Linux-x86_64.sh + chmod a+x env/Miniconda3-latest-Linux-x86_64.sh + +env: + rm -rf env + make env/Miniconda3-latest-Linux-x86_64.sh + ./env/Miniconda3-latest-Linux-x86_64.sh -p $(PWD)/env -b -f + source env/bin/activate; conda config --system --add envs_dirs $(PWD)/env/envs + source env/bin/activate; conda config --system --add pkgs_dirs $(PWD)/env/pkgs + source env/bin/activate; conda env update --name base --file ./environment.yml + +.PHONY: env + +# Update fuzzer / minitest markdown links. +tests-links: + @mkdir -p $(MAKEDIR)/tests + @cd $(MAKEDIR)/tests && find -name '*.md' -delete && find -type d -empty -delete + @cd $(MAKEDIR)/tests && \ + for I in $$(cd ../../tests/ ; find -name '*.md' | sort); do \ + F=$$(dirname $$I); D=$$(dirname $$F); N=$$(basename $$F); \ + S=../../tests/$$I; O=$$D/$$N.md; \ + if [ ! -d $$D ]; then \ + mkdir -p $$D; \ + fi; \ + ln -sf $$(realpath $$S --relative-to=$$D) $$O; \ + done + @cd $(MAKEDIR)/tests && \ + for I in $$(cd ../../tests/ ; find -name '*.svg' -o -name '*.png' | sort); do \ + F=$$(dirname $$I); D=$$(dirname $$F); N=$$(basename $$I); \ + S=../../tests/$$I; O=$$D/$$N; \ + ln -sf $$(realpath $$S --relative-to=$$D) $$O; \ + done + +links: tests-links + @true + +.PHONY: tests-links links + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile links + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
diff --git a/tests/fig28-lutff-pair/ff/golden.pb_type.xml b/docs/_static/.keepme similarity index 100% copy from tests/fig28-lutff-pair/ff/golden.pb_type.xml copy to docs/_static/.keepme
diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 0000000..e7b7def --- /dev/null +++ b/docs/conf.py
@@ -0,0 +1,263 @@ +# -*- coding: utf-8 -*- +# +# SymbiFlow V2X documentation build configuration file, created by +# sphinx-quickstart on Mon Feb 5 11:04:37 2018. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import re + +# Markdown support +import recommonmark # noqa + +# 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('.')) +from markdown_code_symlinks import LinkParser, MarkdownSymlinksDomain # noqa + +# -- 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', + 'sphinx.ext.autosummary', + 'sphinx.ext.doctest', + 'sphinx.ext.imgmath', + 'sphinx.ext.napoleon', + 'sphinx.ext.todo', + 'sphinx_markdown_tables', + 'symbolator_sphinx', + 'sphinxcontrib_verilog_diagrams', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +source_suffix = ['.rst', '.md'] +source_parsers = { + '.md': 'markdown_code_symlinks.LinkParser', +} + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'SymbiFlow Verilog to XML (V2X)' +copyright = u'2018, SymbiFlow Team' +author = u'SymbiFlow Team' + +# Enable github links when not on readthedocs +on_rtd = os.environ.get('READTHEDOCS', None) == 'True' +if not on_rtd: + html_context = { + "display_github": True, # Integrate GitHub + "github_user": "symbiflow", # Username + "github_repo": "python-symbiflow-v2x", # Repo name + "github_version": "master", # Version + "conf_py_path": "/doc/", + } +else: + docs_dir = os.path.abspath(os.path.dirname(__file__)) + print("Docs dir is:", docs_dir) + import subprocess + subprocess.call('git fetch origin --unshallow', cwd=docs_dir, shell=True) + subprocess.check_call('git fetch origin --tags', cwd=docs_dir, shell=True) + subprocess.check_call('make links', cwd=docs_dir, shell=True) + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The full version, including alpha/beta/rc tags. +release = re.sub('^v', '', os.popen('git describe ').read().strip()) +# The short X.Y version. +version = release + +# 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 patterns also effect to html_static_path and html_extra_path +exclude_patterns = ['_build', 'env', 'Thumbs.db', '.DS_Store'] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'default' + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True + +# -- 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 = 'sphinx_materialdesign_theme' + +# 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 = { + # Specify a list of menu in Header. + # Tuples forms: + # ('Name', 'external url or path of pages in the document', + # boolean, 'icon name') + # + # Third argument: + # True indicates an external link. + # False indicates path of pages in the document. + # + # Fourth argument: + # Specify the icon name. + # For details see link. + # https://material.io/icons/ + 'header_links': [ + ('Home', 'index', False, 'home'), + ("GitHub", "https://github.com/SymbiFlow/python-symbiflow-v2x", + True, 'link'), + ], + + # Customize css colors. + # For details see link. + # https://getmdl.io/customize/index.html + # + # Values: amber, blue, brown, cyan deep_orange, deep_purple, green, grey, + # indigo, light_blue, light_green, lime, orange, pink, purple, red, + # teal, yellow + # (Default: indigo) + 'primary_color': 'deep_purple', + # Values: Same as primary_color. (Default: pink) + 'accent_color': 'purple', + + # Customize layout. + # For details see link. + # https://getmdl.io/components/index.html#layout-section + 'fixed_drawer': True, + 'fixed_header': True, + 'header_waterfall': True, + 'header_scroll': False, + + # Render title in header. + # Values: True, False (Default: False) + 'show_header_title': False, + # Render title in drawer. + # Values: True, False (Default: True) + 'show_drawer_title': True, + # Render footer. + # Values: True, False (Default: True) + 'show_footer': True +} + +# 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 = ['_static'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# This is required for the alabaster theme +# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars +html_sidebars = { + '**': [ + 'relations.html', # needs 'show_related': True theme option to display + 'searchbox.html', + ] +} + +# -- Options for HTMLHelp output ------------------------------------------ + +# Output file base name for HTML help builder. +htmlhelp_basename = 'symbiflow-v2x' + +# -- 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, 'SymbiFlowV2X.tex', u'SymbiFlow V2X Documentation', + u'SymbiFlow Team', '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, 'symbiflow-v2x', u'SymbiFlow V2X 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, 'SymbiFlowV2X', u'SymbiFlow V2X Documentation', author, + 'SymbiFlowV2X', 'One line description of project.', 'Miscellaneous'), +] + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'https://docs.python.org/': None} + + +def setup(app): + github_code_repo = 'https://github.com/SymbiFlow/python-symbiflow-v2x/' + github_code_branch = 'blob/master/' + + docs_root_dir = os.path.realpath(os.path.dirname(__file__)) + code_root_dir = os.path.realpath(os.path.join(docs_root_dir, "..")) + + MarkdownSymlinksDomain.init_domain( + github_code_repo, github_code_branch, docs_root_dir, code_root_dir) + MarkdownSymlinksDomain.find_links() + app.add_domain(MarkdownSymlinksDomain) + app.add_config_value( + 'recommonmark_config', { + 'github_code_repo': github_code_repo, + }, True)
diff --git a/docs/environment.yml b/docs/environment.yml new file mode 100644 index 0000000..e1b271c --- /dev/null +++ b/docs/environment.yml
@@ -0,0 +1,15 @@ +name: v2x-docs +channels: +- SymbiFlow +- conda-forge +- defaults +dependencies: +- python=3.7 +- pip +- pycairo +- pango +- pygobject +- yosys +- netlistsvg +- pip: # Packages installed from PyPI + - -r file:requirements.txt
diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 0000000..802792a --- /dev/null +++ b/docs/index.rst
@@ -0,0 +1,22 @@ +.. SymbiFlow V2X documentation master file + +Welcome to SymbiFlow Verilog to XML +========================================= + +`SymbiFlow Verilog to XML`_ `V2X`_ . + +.. _SymbiFlow Verilog to XML: https://github.com/SymbiFlow/python-symbiflow-v2x +.. _V2X: http://symbiflow-v2x.readthedocs.io/ + +.. toctree:: + :maxdepth: 2 + :glob: + + tests/vtr-examples.rst + tests/dsp.rst + +.. toctree:: + :maxdepth: 3 + :glob: + + tests/clocks.rst
diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 0000000..24bda82 --- /dev/null +++ b/docs/requirements.txt
@@ -0,0 +1,22 @@ +sphinx_materialdesign_theme + +docutils +sphinx +sphinx-autobuild + +breathe +recommonmark +sphinx-markdown-tables +sphinxcontrib-napoleon + +# Markdown cross-reference solver library +git+https://github.com/SymbiFlow/sphinxcontrib-markdown-symlinks.git#egg=markdown_code_symlinks + +# Verilog diagrams using Yosys + netlistsvg +git+https://github.com/SymbiFlow/sphinxcontrib-verilog-diagrams.git#egg=sphinxcontrib-verilog-diagrams + +# Module diagrams +symbolator + +pycairo +# vext.gi
diff --git a/docs/tests/clocks.rst b/docs/tests/clocks.rst new file mode 100644 index 0000000..68e741b --- /dev/null +++ b/docs/tests/clocks.rst
@@ -0,0 +1,40 @@ +.. Clock Example Tests + +Clock Examples +============== + +Autodetection clock from flipflop +--------------------------------- + +.. toctree:: + + clocks/dff_one_clock.md + clocks/dff_two_clocks.md + +.. include:: ../../tests/clocks/dff_comb_one_clock/README.rst + +Manual Input Clock +------------------ + +.. toctree:: + + clocks/input_attr_clock.md + clocks/input_named_clk.md + clocks/input_named_rdclk.md + +Manual Output Clock +------------------- + +.. toctree:: + + clocks/output_attr_clock.md + clocks/output_named_clk.md + clocks/output_named_rdclk.md + +Multiple Clocks +--------------- + +.. toctree:: + + clocks/multiple_inputs_named_clk.md + clocks/multiple_outputs_named_clk.md
diff --git a/docs/tests/dsp.rst b/docs/tests/dsp.rst new file mode 100644 index 0000000..6fb30c7 --- /dev/null +++ b/docs/tests/dsp.rst
@@ -0,0 +1,14 @@ +.. DSP Based Example Tests + +DSP Examples +============ + +.. toctree:: + + dsp/dsp_combinational.md + dsp/dsp_in_registered.md + dsp/dsp_out_registered.md + dsp/dsp_inout_registered.md + dsp/dsp_inout_registered_dualclk.md + dsp/dsp_partial_registered.md + dsp/dsp_modes.md
diff --git a/docs/tests/vtr-examples.rst b/docs/tests/vtr-examples.rst new file mode 100644 index 0000000..33e94d9 --- /dev/null +++ b/docs/tests/vtr-examples.rst
@@ -0,0 +1,13 @@ +.. Examples from the Verilog to Routing documentation / tutorials. + +Verilog to Routing Examples +=========================== + +Primitive Block Timing Modeling Tutorial +---------------------------------------- + +.. toctree:: + + vtr/lutff-pair.md + vtr/full-adder.md + vtr/dff.md
diff --git a/tests/carry/README.md b/tests/carry/README.md index 54c81a8..75bfe5a 100644 --- a/tests/carry/README.md +++ b/tests/carry/README.md
@@ -1,4 +1,4 @@ -## CARRY tests +# `carry` tests This directory contains test for the `v2x_to_model.py` and `v2x_to_pb_type` tools. The tests use model defined in CBLOCK tests.
diff --git a/tests/carry/cblock/README.md b/tests/carry/cblock/README.md index ea82a59..032f831 100644 --- a/tests/carry/cblock/README.md +++ b/tests/carry/cblock/README.md
@@ -1,4 +1,4 @@ -## CARRY tests +# `carry` - `cblock` tests This directory contains test for the `v2x_to_model.py` and `v2x_to_pb_type` tools. Those tests should check the following features: @@ -17,6 +17,6 @@ - [ ] carry chains inference - carry chains defined on wires with `carry` attribute should be propagated to pb\_type xml file -## Timings +## Timing - - [ ] all the timings defined in Verilog should be propagated to result pb\_type file + - [ ] all the timing defined in Verilog should be propagated to result pb\_type file
diff --git a/tests/clocks/README.md b/tests/clocks/README.md index 752921f..e762b25 100644 --- a/tests/clocks/README.md +++ b/tests/clocks/README.md
@@ -1,4 +1,4 @@ -## Clock detection tests +# `clocks` tests This directory contains test for the clock detection functionality for the `v2x_to_model.py` tool.
diff --git a/tests/clocks/dff_comb_one_clock/README.rst b/tests/clocks/dff_comb_one_clock/README.rst new file mode 100644 index 0000000..d1bcf97 --- /dev/null +++ b/tests/clocks/dff_comb_one_clock/README.rst
@@ -0,0 +1,9 @@ +D-Flipflop with combinational logic ++++++++++++++++++++++++++++++++++++ + +`input wire a` should be detected as a clock because it drives the flip flop. + +.. symbolator:: ../../tests/clocks/dff_comb_one_clock/dff_comb_one_clock.sim.v + +.. literalinclude:: ../../tests/clocks/dff_comb_one_clock/dff_comb_one_clock.sim.v + :language: verilog
diff --git a/tests/dsp/dsp_combinational/README.md b/tests/dsp/dsp_combinational/README.md new file mode 100644 index 0000000..f565755 --- /dev/null +++ b/tests/dsp/dsp_combinational/README.md
@@ -0,0 +1,11 @@ +# `dsp_combinational` test + +## Detection of combinational connections + + - [ ] output has combinational connection with input + +## Blackbox detection + + - [ ] model of the leaf `pb_type` is generated + - [ ] leaf `pb_type` XML is generated +
diff --git a/tests/dsp_combinational/dsp_combinational.sim.v b/tests/dsp/dsp_combinational/dsp_combinational.sim.v similarity index 100% rename from tests/dsp_combinational/dsp_combinational.sim.v rename to tests/dsp/dsp_combinational/dsp_combinational.sim.v
diff --git a/tests/dsp_combinational/golden.model.xml b/tests/dsp/dsp_combinational/golden.model.xml similarity index 100% rename from tests/dsp_combinational/golden.model.xml rename to tests/dsp/dsp_combinational/golden.model.xml
diff --git a/tests/dsp_combinational/golden.pb_type.xml b/tests/dsp/dsp_combinational/golden.pb_type.xml similarity index 100% rename from tests/dsp_combinational/golden.pb_type.xml rename to tests/dsp/dsp_combinational/golden.pb_type.xml
diff --git a/tests/dsp/dsp_in_registered/README.md b/tests/dsp/dsp_in_registered/README.md new file mode 100644 index 0000000..c40ab3f --- /dev/null +++ b/tests/dsp/dsp_in_registered/README.md
@@ -0,0 +1,18 @@ +# `dsp_in_registered` test + +Test for "DSP style" block with all inputs registered. + +The tests use model from [`fig42-dff`](FIXME) and +[`dsp_combinational`](../dsp_combinational/README.md) tests. + +## Detection of combinational connections + + - [ ] output has combinational connection with input + - [ ] `pack_pattern` defined on wire connections with `pack` attribute + +## Blackbox detection + + - [ ] model of the leaf `pb_type` is generated + - [ ] leaf `pb_type` XML is generated + - [ ] all dependency models and `pb_type`s are included in the output files +
diff --git a/tests/dsp_in_registered/dsp_in_registered.sim.v b/tests/dsp/dsp_in_registered/dsp_in_registered.sim.v similarity index 100% rename from tests/dsp_in_registered/dsp_in_registered.sim.v rename to tests/dsp/dsp_in_registered/dsp_in_registered.sim.v
diff --git a/tests/dsp_in_registered/golden.model.xml b/tests/dsp/dsp_in_registered/golden.model.xml similarity index 100% rename from tests/dsp_in_registered/golden.model.xml rename to tests/dsp/dsp_in_registered/golden.model.xml
diff --git a/tests/dsp_in_registered/golden.pb_type.xml b/tests/dsp/dsp_in_registered/golden.pb_type.xml similarity index 100% rename from tests/dsp_in_registered/golden.pb_type.xml rename to tests/dsp/dsp_in_registered/golden.pb_type.xml
diff --git a/tests/dsp/dsp_inout_registered/README.md b/tests/dsp/dsp_inout_registered/README.md new file mode 100644 index 0000000..b66befe --- /dev/null +++ b/tests/dsp/dsp_inout_registered/README.md
@@ -0,0 +1,20 @@ +# `dsp_inout_registered` test + +Test for "DSP style" block with both input and output is registered (using a +single clock). + +The tests use model from [`fig42-dff`](FIXME) and +[`dsp_combinational`](../dsp_combinational/README.md) tests. + + +## Detection of combinational connections + + - [ ] output has combinational connection with input + - [ ] `pack_pattern` defined on wire connections with `pack` attribute + +## Blackbox detection + + - [ ] model of the leaf `pb_type` is generated + - [ ] leaf `pb_type` XML is generated + - [ ] all dependency models and `pb_type`s are included in the output files +
diff --git a/tests/dsp_inout_registered/dsp_inout_registered.sim.v b/tests/dsp/dsp_inout_registered/dsp_inout_registered.sim.v similarity index 100% rename from tests/dsp_inout_registered/dsp_inout_registered.sim.v rename to tests/dsp/dsp_inout_registered/dsp_inout_registered.sim.v
diff --git a/tests/dsp_inout_registered/golden.model.xml b/tests/dsp/dsp_inout_registered/golden.model.xml similarity index 100% rename from tests/dsp_inout_registered/golden.model.xml rename to tests/dsp/dsp_inout_registered/golden.model.xml
diff --git a/tests/dsp_inout_registered/golden.pb_type.xml b/tests/dsp/dsp_inout_registered/golden.pb_type.xml similarity index 100% rename from tests/dsp_inout_registered/golden.pb_type.xml rename to tests/dsp/dsp_inout_registered/golden.pb_type.xml
diff --git a/tests/dsp/dsp_inout_registered_dualclk/README.md b/tests/dsp/dsp_inout_registered_dualclk/README.md new file mode 100644 index 0000000..f5baa0e --- /dev/null +++ b/tests/dsp/dsp_inout_registered_dualclk/README.md
@@ -0,0 +1,19 @@ +# `dsp_inout_registered_dualclk` test + +Test for "DSP style" block with both input and output is registered using +separate clocks. + +The tests use model from [`fig42-dff`](FIXME) and +[`dsp_combinational`](../dsp_combinational/README.md) tests. + +## Detection of combinational connections + + - [ ] output has combinational connection with input + - [ ] `pack_pattern` defined on wire connections with `pack` attribute + +## Blackbox detection + + - [ ] model of the leaf `pb_type` is generated + - [ ] leaf `pb_type` XML is generated + - [ ] all dependency models and `pb_type`s are included in the output files +
diff --git a/tests/dsp_inout_registered_dualclk/dsp_inout_registered_dualclk.sim.v b/tests/dsp/dsp_inout_registered_dualclk/dsp_inout_registered_dualclk.sim.v similarity index 100% rename from tests/dsp_inout_registered_dualclk/dsp_inout_registered_dualclk.sim.v rename to tests/dsp/dsp_inout_registered_dualclk/dsp_inout_registered_dualclk.sim.v
diff --git a/tests/dsp_inout_registered_dualclk/golden.model.xml b/tests/dsp/dsp_inout_registered_dualclk/golden.model.xml similarity index 100% rename from tests/dsp_inout_registered_dualclk/golden.model.xml rename to tests/dsp/dsp_inout_registered_dualclk/golden.model.xml
diff --git a/tests/dsp_inout_registered_dualclk/golden.pb_type.xml b/tests/dsp/dsp_inout_registered_dualclk/golden.pb_type.xml similarity index 100% rename from tests/dsp_inout_registered_dualclk/golden.pb_type.xml rename to tests/dsp/dsp_inout_registered_dualclk/golden.pb_type.xml
diff --git a/tests/dsp/dsp_modes/README.md b/tests/dsp/dsp_modes/README.md new file mode 100644 index 0000000..d0e25c7 --- /dev/null +++ b/tests/dsp/dsp_modes/README.md
@@ -0,0 +1,39 @@ +# `dsp_modes` test + +Test for "DSP style" block with multiple different modes. + +The modes possible are; + + * Combinational only + (IE [`dsp_combinational`](../dsp_combinational/README.md)). + + * Register on one input + (IE [`dsp_partial_registered`](../dsp_partial_registered/README.md)). + + * Register on all inputs + (IE [`dsp_in_registered`](../dsp_in_registered/README.md)). + + * Register on outputs + (IE [`dsp_out_registered`](../dsp_out_registered/README.md)). + + * Register on both inputs and outputs (with same clock) + (IE [`dsp_inout_registered`](../dsp_inout_registered/README.md)). + + * Register on both inputs and outputs (with independent clocks) + (IE [`dsp_inout_registered_dualclk`](../dsp_inout_registered_dualclk/README.md)). + + * Register on both inputs and outputs (with independent clocks) + (IE [`dsp_inout_registered_dualclk`](../dsp_inout_registered_dualclk/README.md)). + + +## Blackbox detection + + - [ ] model of the leaf `pb_type` is generated + - [ ] leaf `pb_type` XML is generated + - [ ] all dependency models and `pb_type`s are included in the output files + +## Modes generation + + - [ ] all the modes from list defined with `MODES` attribute + - [ ] mode setting is included in `pb_type` generation (correct part of logic is used) + - [ ] modes connections are generated correctly
diff --git a/tests/dsp_modes/dsp_modes.sim.v b/tests/dsp/dsp_modes/dsp_modes.sim.v similarity index 100% rename from tests/dsp_modes/dsp_modes.sim.v rename to tests/dsp/dsp_modes/dsp_modes.sim.v
diff --git a/tests/dsp_modes/golden.model.xml b/tests/dsp/dsp_modes/golden.model.xml similarity index 100% rename from tests/dsp_modes/golden.model.xml rename to tests/dsp/dsp_modes/golden.model.xml
diff --git a/tests/dsp_modes/golden.pb_type.xml b/tests/dsp/dsp_modes/golden.pb_type.xml similarity index 100% rename from tests/dsp_modes/golden.pb_type.xml rename to tests/dsp/dsp_modes/golden.pb_type.xml
diff --git a/tests/dsp/dsp_out_registered/README.md b/tests/dsp/dsp_out_registered/README.md new file mode 100644 index 0000000..27c46e2 --- /dev/null +++ b/tests/dsp/dsp_out_registered/README.md
@@ -0,0 +1,19 @@ +# `dsp_out_registered` test + +Test for "DSP style" block with outputs registered. + +The tests use model from [`fig42-dff`](FIXME) and +[`dsp_combinational`](../dsp_combinational/README.md) tests. + + +## Detection of combinational connections + + - [ ] output has combinational connection with input + - [ ] `pack_pattern` defined on wire connections with `pack` attribute + +## Blackbox detection + + - [ ] model of the leaf `pb_type` is generated + - [ ] leaf `pb_type` XML is generated + - [ ] all dependency models and `pb_type`s are included in the output files +
diff --git a/tests/dsp_out_registered/dsp_out_registered.sim.v b/tests/dsp/dsp_out_registered/dsp_out_registered.sim.v similarity index 100% rename from tests/dsp_out_registered/dsp_out_registered.sim.v rename to tests/dsp/dsp_out_registered/dsp_out_registered.sim.v
diff --git a/tests/dsp_out_registered/golden.model.xml b/tests/dsp/dsp_out_registered/golden.model.xml similarity index 100% rename from tests/dsp_out_registered/golden.model.xml rename to tests/dsp/dsp_out_registered/golden.model.xml
diff --git a/tests/dsp_out_registered/golden.pb_type.xml b/tests/dsp/dsp_out_registered/golden.pb_type.xml similarity index 100% rename from tests/dsp_out_registered/golden.pb_type.xml rename to tests/dsp/dsp_out_registered/golden.pb_type.xml
diff --git a/tests/dsp/dsp_partial_registered/README.md b/tests/dsp/dsp_partial_registered/README.md new file mode 100644 index 0000000..7fd5d26 --- /dev/null +++ b/tests/dsp/dsp_partial_registered/README.md
@@ -0,0 +1,18 @@ +# `dsp_partial_registered` test + +Test for "DSP style" block with one input registered. + +The tests use model from [`fig42-dff`](FIXME) and +[`dsp_combinational`](../dsp_combinational/README.md) tests. + +## Detection of combinational connections + + - [ ] output has combinational connection with input + - [ ] `pack_pattern` defined on wire connections with `pack` attribute + +## Blackbox detection + + - [ ] model of the leaf `pb_type` is generated + - [ ] leaf `pb_type` XML is generated + - [ ] all dependency models and `pb_type`s are included in the output files +
diff --git a/tests/dsp_partial_registered/dsp_partial_registered.sim.v b/tests/dsp/dsp_partial_registered/dsp_partial_registered.sim.v similarity index 100% rename from tests/dsp_partial_registered/dsp_partial_registered.sim.v rename to tests/dsp/dsp_partial_registered/dsp_partial_registered.sim.v
diff --git a/tests/dsp_partial_registered/golden.model.xml b/tests/dsp/dsp_partial_registered/golden.model.xml similarity index 100% rename from tests/dsp_partial_registered/golden.model.xml rename to tests/dsp/dsp_partial_registered/golden.model.xml
diff --git a/tests/dsp_partial_registered/golden.pb_type.xml b/tests/dsp/dsp_partial_registered/golden.pb_type.xml similarity index 100% rename from tests/dsp_partial_registered/golden.pb_type.xml rename to tests/dsp/dsp_partial_registered/golden.pb_type.xml
diff --git a/tests/dsp_combinational/README.md b/tests/dsp_combinational/README.md deleted file mode 100644 index d83bc78..0000000 --- a/tests/dsp_combinational/README.md +++ /dev/null
@@ -1,16 +0,0 @@ -## dsp\_combinational tests - -This directory contains test for the blackbox detection for the -`v2x_to_model.py` and `v2x_to_pb_type` tools. - -Model from this test is used by other dsp tests - -## Detection of combinational connections - - - [ ] output has combinational connection with input - -## Blackbox detection - - - [ ] model of the leaf pb\_type is generated - - [ ] leaf pb\_type xml is generated -
diff --git a/tests/dsp_in_registered/README.md b/tests/dsp_in_registered/README.md deleted file mode 100644 index 15da4a4..0000000 --- a/tests/dsp_in_registered/README.md +++ /dev/null
@@ -1,18 +0,0 @@ -## dsp\_in\_registered tests - -This directory contains test for the `v2x_to_model.py` and `v2x_to_pb_type` tools. -The tests use model from fig42-dff and dps\_combinational tests. -Those tests should check the following features: - - -## Detection of combinational connections - - - [ ] output has combinational connection with input - - [ ] pack\_pattern defined on wire connections with `pack` attribute - -## Blackbox detection - - - [ ] model of the leaf pb\_type is generated - - [ ] leaf pb\_type xml is generated - - [ ] all dependency models and pb\_types are included in the output files -
diff --git a/tests/dsp_inout_registered/README.md b/tests/dsp_inout_registered/README.md deleted file mode 100644 index 950806c..0000000 --- a/tests/dsp_inout_registered/README.md +++ /dev/null
@@ -1,18 +0,0 @@ -## dsp\_inout\_registered tests - -This directory contains test for the `v2x_to_model.py` and `v2x_to_pb_type` tools. -The tests use model from fig42-dff and dps\_combinational tests. -Those tests should check the following features: - - -## Detection of combinational connections - - - [ ] output has combinational connection with input - - [ ] pack\_pattern defined on wire connections with `pack` attribute - -## Blackbox detection - - - [ ] model of the leaf pb\_type is generated - - [ ] leaf pb\_type xml is generated - - [ ] all dependency models and pb\_types are included in the output files -
diff --git a/tests/dsp_inout_registered_dualclk/README.md b/tests/dsp_inout_registered_dualclk/README.md deleted file mode 100644 index 39fc8a9..0000000 --- a/tests/dsp_inout_registered_dualclk/README.md +++ /dev/null
@@ -1,18 +0,0 @@ -## dsp\_inout\_registered\_dualclk tests - -This directory contains test for the `v2x_to_model.py` and `v2x_to_pb_type` tools. -The tests use model from fig42-dff and dps\_combinational tests. -Those tests should check the following features: - - -## Detection of combinational connections - - - [ ] output has combinational connection with input - - [ ] pack\_pattern defined on wire connections with `pack` attribute - -## Blackbox detection - - - [ ] model of the leaf pb\_type is generated - - [ ] leaf pb\_type xml is generated - - [ ] all dependency models and pb\_types are included in the output files -
diff --git a/tests/dsp_modes/README.md b/tests/dsp_modes/README.md deleted file mode 100644 index 728a5c4..0000000 --- a/tests/dsp_modes/README.md +++ /dev/null
@@ -1,17 +0,0 @@ -## dsp\_modes tests - -This directory contains test for the `v2x_to_model.py` and `v2x_to_pb_type` tools. -The tests use models from other DSP test. -Those tests should check the following features: - -## Blackbox detection - - - [ ] model of the leaf pb\_type is generated - - [ ] leaf pb\_type xml is generated - - [ ] all dependency models and pb\_types are included in the output files - -## Modes generation - - - [ ] all the modes from list defined with `MODES` attribute - - [ ] mode setting is included in pb\_type generation (correct part of logic is used) - - [ ] modes connections are generated correctly
diff --git a/tests/dsp_out_registered/README.md b/tests/dsp_out_registered/README.md deleted file mode 100644 index 59b24f7..0000000 --- a/tests/dsp_out_registered/README.md +++ /dev/null
@@ -1,18 +0,0 @@ -## dsp\_out\_registered tests - -This directory contains test for the `v2x_to_model.py` and `v2x_to_pb_type` tools. -The tests use model from fig42-dff and dps\_combinational tests. -Those tests should check the following features: - - -## Detection of combinational connections - - - [ ] output has combinational connection with input - - [ ] pack\_pattern defined on wire connections with `pack` attribute - -## Blackbox detection - - - [ ] model of the leaf pb\_type is generated - - [ ] leaf pb\_type xml is generated - - [ ] all dependency models and pb\_types are included in the output files -
diff --git a/tests/dsp_partial_registered/README.md b/tests/dsp_partial_registered/README.md deleted file mode 100644 index 373bbf9..0000000 --- a/tests/dsp_partial_registered/README.md +++ /dev/null
@@ -1,18 +0,0 @@ -## dsp\_partial\_registered tests - -This directory contains test for the `v2x_to_model.py` and `v2x_to_pb_type` tools. -The tests use model from fig42-dff and dps\_combinational tests. -Those tests should check the following features: - - -## Detection of combinational connections - - - [ ] output has combinational connection with input - - [ ] pack\_pattern defined on wire connections with `pack` attribute - -## Blackbox detection - - - [ ] model of the leaf pb\_type is generated - - [ ] leaf pb\_type xml is generated - - [ ] all dependency models and pb\_types are included in the output files -
diff --git a/tests/fig28-lutff-pair/README.md b/tests/fig28-lutff-pair/README.md deleted file mode 100644 index 765f972..0000000 --- a/tests/fig28-lutff-pair/README.md +++ /dev/null
@@ -1,15 +0,0 @@ -## PAIR tests - -This directory contains test for the `v2x_to_model.py` and `v2x_to_pb_type` tools. -The tests use models defined in ff, lut and omux tests. -Those tests should check the following features: - -## Blackbox detection - - - [ ] model of the leaf pb\_type is generated - - [ ] leaf pb\_type xml is generated - - [ ] all dependency models and pb\_types are included in the output files - -## Carry chain inference - - - [ ] pack\_pattern inference - pack\_patterns defined on wires with `pack` attributes should be propagated to pb\_type xmls
diff --git a/tests/fig28-lutff-pair/lut/README.md b/tests/fig28-lutff-pair/lut/README.md deleted file mode 100644 index fc2da7b..0000000 --- a/tests/fig28-lutff-pair/lut/README.md +++ /dev/null
@@ -1,18 +0,0 @@ -## LUT tests - -This directory contains test for the `v2x_to_model.py` and `v2x_to_pb_type` tools. -Those tests should check the following features: - -## Blackbox detection - - - [ ] model of the leaf pb\_type is generated - - [ ] leaf pb\_type xml is generated - - [ ] all dependency models and pb\_types are included in the output files - -## Carry chain inference - - - [ ] pack\_pattern inference - pack\_patterns defined on wires with `pack` attributes should be propagated to pb\_type xmls - -## Timings - - - [ ] timings defined for wires with `DELAY_MATRIX` attribute should be propagated to pb\_type xml
diff --git a/tests/fig41-full-adder/README.md b/tests/fig41-full-adder/README.md deleted file mode 100644 index 2af60b0..0000000 --- a/tests/fig41-full-adder/README.md +++ /dev/null
@@ -1,17 +0,0 @@ -## Adder tests - -This directory contains test for the blackbox detection for the -`v2x_to_model.py` and `v2x_to_pb_type` tools. - -## Detection of combinational connections - - - [ ] output has combinational connection with input - -## Blackbox detection - - - [ ] model of the leaf pb\_type is generated - - [ ] leaf pb\_type xml is generated - -## Timings - - - [ ] all the timings defined for wires with attributes should be included in pb\_type xml
diff --git a/tests/fig42-dff/README.md b/tests/fig42-dff/README.md deleted file mode 100644 index d3e6290..0000000 --- a/tests/fig42-dff/README.md +++ /dev/null
@@ -1,17 +0,0 @@ -## DFF tests - -This directory contains tests for the `v2x_to_model.py` and `v2x_to_pb_type` tools. - -## Clock associations inference - - - [ ] automatic inference is signal is associated with any clock and include the info in the model - - [ ] automatic clock detection (signals named `clk` are considered as clocks) - -## Blackbox detection - - - [ ] model of the leaf pb\_type is generated - - [ ] leaf pb\_type xml is generated - -## Timings - - - [ ] all the timings defined for wires with attributes should be included in pb\_type xml
diff --git a/tests/logicbox/README.md b/tests/logicbox/README.md index fb085d6..8c99e7f 100644 --- a/tests/logicbox/README.md +++ b/tests/logicbox/README.md
@@ -1,4 +1,4 @@ -## DFF tests +# Logicbox test This directory contains tests for the `v2x_to_model.py` and `v2x_to_pb_type` tools.
diff --git a/tests/multiple_instance/README.md b/tests/multiple_instance/README.md index 40e9777..c340c8a 100644 --- a/tests/multiple_instance/README.md +++ b/tests/multiple_instance/README.md
@@ -1,4 +1,4 @@ -## Multiple instance tests +# Multiple Instance test This directory contains tests for the `v2x_to_model.py` and `v2x_to_pb_type` tools.
diff --git a/tests/muxes/README.md b/tests/muxes/README.md index ad84528..836db79 100644 --- a/tests/muxes/README.md +++ b/tests/muxes/README.md
@@ -1,4 +1,4 @@ -## Routing muxes tests +# Routing Mux tests This directory contains tests for the `v2x_to_model.py` and `v2x_to_pb_type` tools.
diff --git a/tests/simple_pll/README.md b/tests/simple_pll/README.md index 3459bfa..a0c1399 100644 --- a/tests/simple_pll/README.md +++ b/tests/simple_pll/README.md
@@ -1,4 +1,4 @@ -## PLL tests +# Simple PLL test This directory contains tests for the `v2x_to_model.py` and `v2x_to_pb_type` tools.
diff --git a/tests/vtr/dff/README.md b/tests/vtr/dff/README.md new file mode 100644 index 0000000..c4c2fe3 --- /dev/null +++ b/tests/vtr/dff/README.md
@@ -0,0 +1,28 @@ +# Classical D-Flip-Flop test + +An example of the classical D-Flip-Flop. + +This is shown in `Figure 43 - DFF` of the +["Sequential block (no internal paths)"](https://docs.verilogtorouting.org/en/latest/tutorials/arch/timing_modeling/#sequential-block-no-internal-paths) +section in the +[Primitive Block Timing Modeling Tutorial](https://docs.verilogtorouting.org/en/latest/tutorials/arch/timing_modeling/#) +of the +[Verilog to Routing documentation](https://docs.verilogtorouting.org) +and reproduced below; + +>  +> *Fig. 43 DFF* + +## Clock associations inference + + - [ ] automatic inference is signal is associated with any clock and include the info in the model + - [ ] automatic clock detection (signals named `clk` are considered as clocks) + +## Blackbox detection + + - [ ] model of the leaf `pb_type` is generated + - [ ] leaf `pb_type` XML is generated + +## Timings + + - [ ] all the timings defined for wires with attributes should be included in `pb_type` XML
diff --git a/tests/fig42-dff/dff.sim.v b/tests/vtr/dff/dff.sim.v similarity index 100% rename from tests/fig42-dff/dff.sim.v rename to tests/vtr/dff/dff.sim.v
diff --git a/tests/vtr/dff/dff.svg b/tests/vtr/dff/dff.svg new file mode 100644 index 0000000..f7bea2e --- /dev/null +++ b/tests/vtr/dff/dff.svg
@@ -0,0 +1,727 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="109.97209" + height="73.527405" + id="svg2" + version="1.1" + inkscape:version="0.48.4 r9939" + sodipodi:docname="dff.svg"> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.8" + inkscape:cx="-54.881221" + inkscape:cy="88.131677" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + showguides="true" + inkscape:guide-bbox="true" + fit-margin-left="5" + fit-margin-top="5" + fit-margin-right="5" + fit-margin-bottom="5" + inkscape:window-width="2984" + inkscape:window-height="971" + inkscape:window-x="0" + inkscape:window-y="101" + inkscape:window-maximized="0" /> + <defs + id="defs4"> + <marker + style="overflow:visible" + id="Arrow2Sstart" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Sstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.3,0,0,0.3,-0.69,0)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3911" /> + </marker> + <marker + style="overflow:visible" + id="Arrow1Mend" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + id="path3890" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-6" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-9" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-0" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-9-0" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-0-1" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-9-9" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-0-4" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-7" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-8" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-76" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-5" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-1" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-4" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-9-1" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-0-41" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-9-6" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-0-8" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-9-99" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-0-7" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-9-8" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-0-6" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-4" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-66" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-2" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-7" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow1Mend-4" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + id="path3890-0" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow1Mend-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + id="path3890-03" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow1Mend-48" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + id="path3890-9" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-2-5" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-7-9" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow1Mend-2" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + id="path3890-3" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow1Mend-9" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + id="path3890-34" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-42" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-57" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-91" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-1" /> + </marker> + <marker + style="overflow:visible" + id="marker8316" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path8318" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-3-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-6-7" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="marker8322" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path8324" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-5" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-15" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-51" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-577" /> + </marker> + <marker + style="overflow:visible" + id="marker8506" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path8508" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-3-6" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-6-2" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-92" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-9" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-17" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-87" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-12" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-86" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-79" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-49" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-45" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-07" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-8" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-71" /> + </marker> + <marker + style="overflow:visible" + id="Arrow1Mend-7" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + id="path3890-340" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-84" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + id="path3908-63" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend-842" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend-842"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round" + id="path10380" /> + </marker> + </defs> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + transform="translate(-164.35921,-762.09406)" + id="layer1" + inkscape:groupmode="layer" + inkscape:label="Layer 1"> + <path + transform="translate(66.259035,592.69647)" + inkscape:connector-curvature="0" + id="path9295" + d="m 118.21429,234.85715 36.78571,0 0,-32.5" + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <rect + y="768.09406" + x="207.39624" + height="44.780987" + width="27.969473" + id="rect5092-5-5-6-9-1-2" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + sodipodi:nodetypes="cc" + transform="translate(66.259035,592.69647)" + inkscape:connector-curvature="0" + id="path10039" + d="m 154.86902,218.88156 c -0.0324,-3.25813 -2.74875,-30.2072 -12.62691,-30.17831" + style="fill:none;stroke:#ff0000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.0999999;stroke-opacity:1;stroke-dasharray:0.4, 0.4;stroke-dashoffset:0;marker-end:none" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.0999999;stroke-opacity:1;stroke-dasharray:0.4, 0.4;stroke-dashoffset:0;marker-end:none" + d="m 221.50685,811.57803 c 0.0324,-3.25813 2.74875,-30.2072 12.62691,-30.17831" + id="path10762" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + inkscape:connector-curvature="0" + id="path5094-80-40-1-6-7-4" + d="m 215.7556,812.43925 5.53628,-11.56776 5.41991,11.55525 z" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + sodipodi:nodetypes="cccc" /> + <text + xml:space="preserve" + style="font-size:25px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="172.37888" + y="784.76562" + id="text4571-2-26-5-4-0-9" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4573-8-17-4-0-3-9" + x="172.37888" + y="784.76562" + style="font-size:10px">D</tspan></text> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path3107-7-7-3" + d="m 183.90189,781.50533 21.62523,0" + style="fill:none;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" + d="m 236.40189,781.50533 21.62523,0" + id="path9285" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + sodipodi:linespacing="125%" + id="text9287" + y="785.12274" + x="262.02173" + style="font-size:25px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + style="font-size:10px" + y="785.12274" + x="262.02173" + id="tspan9289" + sodipodi:role="line">Q</tspan></text> + <text + sodipodi:linespacing="125%" + id="text9291" + y="830.47986" + x="168.80745" + style="font-size:25px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + style="font-size:10px" + y="830.47986" + x="168.80745" + id="tspan9293" + sodipodi:role="line">clk</tspan></text> + <text + xml:space="preserve" + style="font-size:25px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="209.61096" + y="780.03339" + id="text10764" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan10766" + x="209.61096" + y="780.03339" + style="font-size:5px">Tsu</tspan></text> + <text + sodipodi:linespacing="125%" + id="text10768" + y="780.03339" + x="225.50383" + style="font-size:25px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + style="font-size:5px" + y="780.03339" + x="225.50383" + id="tspan10770" + sodipodi:role="line">Tcq</tspan></text> + </g> +</svg>
diff --git a/tests/fig42-dff/golden.model.xml b/tests/vtr/dff/golden.model.xml similarity index 100% rename from tests/fig42-dff/golden.model.xml rename to tests/vtr/dff/golden.model.xml
diff --git a/tests/vtr/full-adder/README.md b/tests/vtr/full-adder/README.md new file mode 100644 index 0000000..08f302d --- /dev/null +++ b/tests/vtr/full-adder/README.md
@@ -0,0 +1,27 @@ +# Full Adder Example + +An example of the classical combinational ["full adder"](https://en.wikipedia.org/wiki/Adder_(electronics)#Full_adder) circuit. + +This is shown in `Figure 41 - Full Adder` of the +["Combinational block"](https://docs.verilogtorouting.org/en/latest/tutorials/arch/timing_modeling/#combinational-block) +section in the +[Primitive Block Timing Modeling Tutorial](https://docs.verilogtorouting.org/en/latest/tutorials/arch/timing_modeling/#) +of the +[Verilog to Routing documentation](https://docs.verilogtorouting.org) +and reproduced below; + +>  +> *Fig. 41 Full Adder* + +## Detection of combinational connections + + - [ ] output has combinational connection with input + +## Blackbox detection + + - [ ] model of the leaf `pb_type` is generated + - [ ] leaf `pb_type` XML is generated + +## Timings + + - [ ] all the timings defined for wires with attributes should be included in `pb_type` XML
diff --git a/tests/fig41-full-adder/adder.sdf b/tests/vtr/full-adder/adder.sdf similarity index 100% rename from tests/fig41-full-adder/adder.sdf rename to tests/vtr/full-adder/adder.sdf
diff --git a/tests/fig41-full-adder/adder.sim.v b/tests/vtr/full-adder/adder.sim.v similarity index 100% rename from tests/fig41-full-adder/adder.sim.v rename to tests/vtr/full-adder/adder.sim.v
diff --git a/tests/vtr/full-adder/full-adder.svg b/tests/vtr/full-adder/full-adder.svg new file mode 100644 index 0000000..9c72867 --- /dev/null +++ b/tests/vtr/full-adder/full-adder.svg
@@ -0,0 +1,751 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="154.3943" + height="90.087151" + id="svg2" + version="1.1" + inkscape:version="0.48.4 r9939" + sodipodi:docname="fa.svg"> + <defs + id="defs4"> + <marker + inkscape:stockid="Arrow2Sstart" + orient="auto" + refY="0" + refX="0" + id="Arrow2Sstart" + style="overflow:visible"> + <path + id="path3911" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="matrix(0.3,0,0,0.3,-0.69,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Mend" + style="overflow:visible"> + <path + id="path3890" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.4,0,0,-0.4,-4,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend" + style="overflow:visible"> + <path + id="path3908" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-3" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3908-6" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-9" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3908-0" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-9-0" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3908-0-1" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-9-9" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3908-0-4" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-7" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3908-8" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-76" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3908-5" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-1" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3908-4" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-9-1" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3908-0-41" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-9-6" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3908-0-8" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-9-99" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3908-0-7" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-9-8" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3908-0-6" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-4" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3908-66" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-2" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3908-7" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Mend-4" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3890-0" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.4,0,0,-0.4,-4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Mend-3" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3890-03" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.4,0,0,-0.4,-4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Mend-48" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3890-9" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.4,0,0,-0.4,-4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-2-5" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3908-7-9" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Mend-2" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3890-3" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.4,0,0,-0.4,-4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Mend-9" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3890-34" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.4,0,0,-0.4,-4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-42" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3908-57" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-91" + style="overflow:visible"> + <path + id="path3908-1" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker8316" + style="overflow:visible"> + <path + id="path8318" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-3-3" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3908-6-7" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker8322" + style="overflow:visible"> + <path + id="path8324" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-5" + style="overflow:visible"> + <path + id="path3908-15" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-51" + style="overflow:visible"> + <path + id="path3908-577" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker8506" + style="overflow:visible"> + <path + id="path8508" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-3-6" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path3908-6-2" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-92" + style="overflow:visible"> + <path + id="path3908-9" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-17" + style="overflow:visible"> + <path + id="path3908-87" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-12" + style="overflow:visible"> + <path + id="path3908-86" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-79" + style="overflow:visible"> + <path + id="path3908-49" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-45" + style="overflow:visible"> + <path + id="path3908-07" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-8" + style="overflow:visible"> + <path + id="path3908-71" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Mend-7" + style="overflow:visible"> + <path + id="path3890-340" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.4,0,0,-0.4,-4,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-84" + style="overflow:visible"> + <path + id="path3908-63" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" + inkscape:connector-curvature="0" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="3.959798" + inkscape:cx="-9.5792713" + inkscape:cy="11.332515" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + showguides="true" + inkscape:guide-bbox="true" + fit-margin-left="5" + fit-margin-top="5" + fit-margin-right="5" + fit-margin-bottom="5" + inkscape:window-width="2178" + inkscape:window-height="1474" + inkscape:window-x="250" + inkscape:window-y="280" + inkscape:window-maximized="0" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-84.595535,-686.54514)"> + <rect + style="fill:none;stroke:#000000;stroke-width:0.69047546;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect12372" + width="80.897781" + height="79.396675" + x="118.47379" + y="691.89038" /> + <g + id="g3457" + transform="translate(31.251957,67.219354)" /> + <g + id="g7311" + transform="translate(-55.624791,-12.879445)"> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path3473" + d="m 228.38939,734.95655 38.80729,0" + style="fill:none;stroke:#000000;stroke-width:0.72156626px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" /> + <text + sodipodi:linespacing="125%" + id="text4842" + y="738.67773" + x="269.16052" + style="font-size:25px;font-style:normal;font-weight:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + style="font-size:10px;text-align:start;text-anchor:start" + y="738.67773" + x="269.16052" + id="tspan4844" + sodipodi:role="line">sum</tspan></text> + </g> + <g + id="g7334" + transform="translate(4,-1.343911)"> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path3479" + d="m 100.25253,750.77635 28.77974,0" + style="fill:none;stroke:#000000;stroke-width:0.722;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend-84)" /> + <text + xml:space="preserve" + style="font-size:25px;font-style:normal;font-weight:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="99.672684" + y="754.49744" + id="text4544" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4546" + x="99.672684" + y="754.49744" + style="font-size:10px;text-align:end;text-anchor:end">cin</tspan></text> + </g> + <g + id="g7329" + transform="translate(4,18.051762)"> + <text + sodipodi:linespacing="125%" + id="text4540" + y="718.38263" + x="98.744949" + style="font-size:25px;font-style:normal;font-weight:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + style="font-size:10px;text-align:end;text-anchor:end" + y="718.38263" + x="98.744949" + id="tspan4542" + sodipodi:role="line">b</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:0.72156626px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-84)" + d="m 100.25253,714.66155 23.98151,0" + id="path4564" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + </g> + <g + id="g7324" + transform="translate(4,38)"> + <text + xml:space="preserve" + style="font-size:25px;font-style:normal;font-weight:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="99.357742" + y="679.95911" + id="text4571-2-26-5-4-0-9-3" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4573-8-17-4-0-3-9-6" + x="99.357742" + y="679.95911" + style="font-size:10px;text-align:end;text-anchor:end">a</tspan></text> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path4578" + d="m 100.25253,677.23657 25.2442,0" + style="fill:none;stroke:#000000;stroke-width:0.72156626px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-84)" /> + </g> + <g + id="g7316" + transform="translate(-56.82108,6.1252705)"> + <path + style="fill:none;stroke:#000000;stroke-width:0.72156626px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" + d="m 228.38939,734.95655 38.80729,0" + id="path7318" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:25px;font-style:normal;font-weight:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="269.16052" + y="738.67773" + id="text7320" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan7322" + x="269.16052" + y="738.67773" + style="font-size:10px;text-align:start;text-anchor:start">cout</tspan></text> + </g> + <g + id="g4588-7" + transform="matrix(1.3967302,-0.07736975,0.07736975,1.3967302,-268.81539,99.247323)" + style="fill:#ffffff;fill-opacity:1"> + <path + inkscape:connector-curvature="0" + id="path3025-2" + d="m 271.36867,449.49999 c -5.60955,0 -10.16791,3.19124 -10.16791,7.13361 0,1.31412 0.51377,2.54215 1.39523,3.59967 -1.92616,1.6158 -3.13447,3.95719 -3.13447,6.55832 0,3.11989 1.74772,5.84264 4.37678,7.41303 -0.97741,1.12428 -1.54812,2.48591 -1.54812,3.94484 0,3.8905 4.07212,7.05142 9.07849,7.05142 2.12811,0 4.07248,-0.57452 5.61911,-1.52863 1.75212,1.19045 3.92823,1.89024 6.28804,1.89024 2.85716,0 5.42903,-1.03504 7.32013,-2.71208 0.45423,0.0604 0.93479,0.0822 1.41433,0.0822 4.10161,0 7.41569,-2.30814 7.41569,-5.16117 0,-1.20548 -0.59137,-2.30988 -1.58634,-3.18876 3.8109,-0.9174 6.61296,-4.02157 6.61296,-7.70889 0,-2.66515 -1.45666,-5.00957 -3.70785,-6.45969 0.001,-0.0668 0,-0.13006 0,-0.19724 0,-5.29108 -3.87379,-9.5827 -8.63889,-9.5827 -2.03295,0 -3.89604,0.78134 -5.37065,2.08748 -1.20858,-0.95409 -2.70562,-1.52863 -4.33856,-1.52863 -1.18245,0 -2.30273,0.29581 -3.28736,0.82185 -1.86307,-1.54077 -4.63817,-2.51485 -7.74061,-2.51485 z" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <text + sodipodi:linespacing="125%" + id="text4571-27" + y="472.17093" + x="284.53082" + style="font-size:25px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + style="font-size:16px;fill:#ffffff;fill-opacity:1" + y="472.17093" + x="284.53082" + id="tspan4573-3" + sodipodi:role="line" /></text> + </g> + </g> +</svg>
diff --git a/tests/fig41-full-adder/golden.model.xml b/tests/vtr/full-adder/golden.model.xml similarity index 100% rename from tests/fig41-full-adder/golden.model.xml rename to tests/vtr/full-adder/golden.model.xml
diff --git a/tests/fig41-full-adder/golden.pb_type.xml b/tests/vtr/full-adder/golden.pb_type.xml similarity index 100% rename from tests/fig41-full-adder/golden.pb_type.xml rename to tests/vtr/full-adder/golden.pb_type.xml
diff --git a/tests/vtr/lutff-pair/README.md b/tests/vtr/lutff-pair/README.md new file mode 100644 index 0000000..dbd5796 --- /dev/null +++ b/tests/vtr/lutff-pair/README.md
@@ -0,0 +1,20 @@ +# LUT with FlipFlop Example + +An example of the classical LUT with FlipFlop pair. + +This is shown in `Figure 28` of the +[Architecture Reference section of the Verilog to Routing Documentation](https://docs.verilogtorouting.org/en/latest/arch/reference) +and reproduced below; + +>  +> *Fig. 28 Pack Pattern Example.* + +## Blackbox detection + + - [ ] model of the leaf `pb_type` is generated + - [ ] leaf `pb_type` XML is generated + - [ ] all dependency models and `pb_type`s are included in the output files + +## Carry chain inference + + - [ ] `pack_pattern` inference - `pack_pattern`s defined on wires with `pack` attributes should be propagated to `pb_type` XMLs
diff --git a/tests/fig28-lutff-pair/ff/ff.sim.v b/tests/vtr/lutff-pair/ff/ff.sim.v similarity index 100% rename from tests/fig28-lutff-pair/ff/ff.sim.v rename to tests/vtr/lutff-pair/ff/ff.sim.v
diff --git a/tests/fig28-lutff-pair/ff/golden.model.xml b/tests/vtr/lutff-pair/ff/golden.model.xml similarity index 100% rename from tests/fig28-lutff-pair/ff/golden.model.xml rename to tests/vtr/lutff-pair/ff/golden.model.xml
diff --git a/tests/fig28-lutff-pair/ff/golden.pb_type.xml b/tests/vtr/lutff-pair/ff/golden.pb_type.xml similarity index 100% rename from tests/fig28-lutff-pair/ff/golden.pb_type.xml rename to tests/vtr/lutff-pair/ff/golden.pb_type.xml
diff --git a/tests/fig28-lutff-pair/golden.model.xml b/tests/vtr/lutff-pair/golden.model.xml similarity index 100% rename from tests/fig28-lutff-pair/golden.model.xml rename to tests/vtr/lutff-pair/golden.model.xml
diff --git a/tests/fig28-lutff-pair/golden.pb_type.xml b/tests/vtr/lutff-pair/golden.pb_type.xml similarity index 100% rename from tests/fig28-lutff-pair/golden.pb_type.xml rename to tests/vtr/lutff-pair/golden.pb_type.xml
diff --git a/tests/fig28-lutff-pair/lut/golden.model.xml b/tests/vtr/lutff-pair/lut/golden.model.xml similarity index 100% rename from tests/fig28-lutff-pair/lut/golden.model.xml rename to tests/vtr/lutff-pair/lut/golden.model.xml
diff --git a/tests/fig28-lutff-pair/lut/golden.pb_type.xml b/tests/vtr/lutff-pair/lut/golden.pb_type.xml similarity index 100% rename from tests/fig28-lutff-pair/lut/golden.pb_type.xml rename to tests/vtr/lutff-pair/lut/golden.pb_type.xml
diff --git a/tests/fig28-lutff-pair/lut/lut4.sim.v b/tests/vtr/lutff-pair/lut/lut4.sim.v similarity index 100% rename from tests/fig28-lutff-pair/lut/lut4.sim.v rename to tests/vtr/lutff-pair/lut/lut4.sim.v
diff --git a/tests/vtr/lutff-pair/lutff-pair.png b/tests/vtr/lutff-pair/lutff-pair.png new file mode 100644 index 0000000..e0f9c36 --- /dev/null +++ b/tests/vtr/lutff-pair/lutff-pair.png Binary files differ
diff --git a/tests/fig28-lutff-pair/pair.sim.v b/tests/vtr/lutff-pair/pair.sim.v similarity index 100% rename from tests/fig28-lutff-pair/pair.sim.v rename to tests/vtr/lutff-pair/pair.sim.v