From d3c95ff547cc6231b304b6d83ee594e38bd11aa6 Mon Sep 17 00:00:00 2001 From: umarcor Date: Sat, 23 Oct 2021 05:42:06 +0200 Subject: [PATCH 1/4] docs/about: style --- docs/about.rst | 83 +++++++++++++++++++++----------------------------- 1 file changed, 34 insertions(+), 49 deletions(-) diff --git a/docs/about.rst b/docs/about.rst index 75ebd960b..e13a5261c 100644 --- a/docs/about.rst +++ b/docs/about.rst @@ -3,54 +3,42 @@ What is VUnit? ============== -VUnit is an open source unit testing framework for VHDL/SystemVerilog -released under the terms of `Mozilla Public License, v. 2.0`_. It -features the functionality needed to realize continuous and automated -testing of your HDL code. VUnit doesn't replace but rather complements -traditional testing methodologies by supporting a *"test early and -often"* approach through automation. - -VUnit reduces the overhead of testing by supporting automatic -discovery of test benches and compilation order as well as including -libraries for common verification tasks. It improves the speed of -development by supporting incremental compilation and by enabling -large test benches to be split up into smaller independent tests. It -increases the quality of projects by enabling large regression suites -to be run on a continuous integration server. - -VUnit does not impose any specific verification methodology on its -users. The benefits of VUnit can be enjoyed when writing tests first -or last, when writing long running top level tests or short running -unit tests, when using directed or constrained random testing. Often -projects adopt mix of approaches for different testing needs. VUnit -has been used in production environments where thousands of tests take -several hours to run on powerful multi-core machines as well as in -small open source projects where only a small package is tested in a -few seconds. +VUnit is an open source unit testing framework for VHDL/SystemVerilog released under the terms of `Mozilla Public +License, v. 2.0`_. +It features the functionality needed to realize continuous and automated testing of your HDL code. +VUnit doesn't replace but rather complements traditional testing methodologies by supporting a *"test early and often"* +approach through automation. + +VUnit reduces the overhead of testing by supporting automatic discovery of test benches and compilation order as well +as including libraries for common verification tasks. +It improves the speed of development by supporting incremental compilation and by enabling large test benches to be +split up into smaller independent tests. +It increases the quality of projects by enabling large regression suites to be run on a continuous integration server. + +VUnit does not impose any specific verification methodology on its users. +The benefits of VUnit can be enjoyed when writing tests first or last, when writing long running top level tests or +short running unit tests, when using directed or constrained random testing. +Often projects adopt mix of approaches for different testing needs. +VUnit has been used in production environments where thousands of tests take several hours to run on powerful multi-core +machines as well as in small open source projects where only a small package is tested in a few seconds. Main Features ------------- -- Python test suite runner that enables powerful test administration, - can continue testing after fatal run-time errors (e.g. division by - zero), and ensures test case independence. -- Automatic scanning of files for tests, file dependencies, and file - changes enable automatic (re)compilation and execution of test - suites. -- Can run test cases in parallel to take advantage of multi-core - machines. +- Python test suite runner that enables powerful test administration, can continue testing after fatal run-time errors + (e.g. division by zero), and ensures test case independence. +- Automatic scanning of files for tests, file dependencies, and file changes enable automatic (re)compilation and + execution of test suites. +- Can run test cases in parallel to take advantage of multi-core machines. - Support for running test benches with multiple generic/parameter settings. -- :ref:`Scriptable API ` as well as :ref:`command line ` - support. +- :ref:`Scriptable API ` as well as :ref:`command line ` support. - Has ``--gui`` switch to launch test cases in the simulator GUI when debugging is necessary. -- :doc:`Assertion checker library <./check/user_guide>` that extends VHDL built-in support - (assert). -- :doc:`Logging framework <./logging/user_guide>` supporting display and file output, different log - levels, visibility settings of levels and design hierarchy, output formatting - and multiple loggers. Supports machine readable output formats that for example can be read by a spreadsheet. +- :doc:`Assertion checker library <./check/user_guide>` that extends VHDL built-in support (assert). +- :doc:`Logging framework <./logging/user_guide>` supporting display and file output, different log levels, visibility + settings of levels and design hierarchy, output formatting and multiple loggers. + Supports machine readable output formats that for example can be read by a spreadsheet. - Requirements trace-ability through :ref:`JSON Export ` and :ref:`test attributes `. -- Optional location preprocessor that traces log and check calls back to file - and line number. +- Optional location preprocessor that traces log and check calls back to file and line number. - Outputs JUnit report files for better `Jenkins`_ :ref:`integration `. - Builds on the commonly used `xUnit`_ architecture. @@ -59,21 +47,18 @@ Getting Started There are a number of ways to get started. -- :ref:`VUnit User Guide ` will guide users on how to use start using - the basic features of VUnit but also provides information about more - specific and advanced usage. +- :ref:`VUnit User Guide ` will guide users on how to use start using the basic features of VUnit but also + provides information about more specific and advanced usage. - :ref:`Run Library User Guide ` presents the run packages. - :ref:`Check Library User Guide ` presents the check packages. - :ref:`Logging Library User Guide ` presents the log packages. -- There are also various presentations of VUnit on `YouTube`_. For - example `an introduction to unit testing (6 min)`_ and a `short - introduction to VUnit (12 min)`_. +- There are also various presentations of VUnit on `YouTube`_. + For example `an introduction to unit testing (6 min)`_ and a `short introduction to VUnit (12 min)`_. Support ------- -Any bug reports, feature requests or questions about the usage of VUnit -can be made by creating a `new issue`_. +Any bug reports, feature requests or questions about the usage of VUnit can be made by creating a `new issue`_. Credits and License ------------------- From b90d27cabfc54f477c178f558afd85825964bac2 Mon Sep 17 00:00:00 2001 From: umarcor Date: Sat, 23 Oct 2021 08:19:33 +0200 Subject: [PATCH 2/4] docs/about: update 'Credits and License' --- docs/about.rst | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/docs/about.rst b/docs/about.rst index e13a5261c..293be672f 100644 --- a/docs/about.rst +++ b/docs/about.rst @@ -63,27 +63,24 @@ Any bug reports, feature requests or questions about the usage of VUnit can be m Credits and License ------------------- -- Founders: - - - `Lars Asplund `_ - - - `Olof Kraigher `_ - -- Notable contributors: - - - `Colin Marquardt `_: - - - Cadence Incisive support - - - `SÅ‚awomir Siluk `_: - - - Verification Components (such as Avalon and Wishbone) - - - `Unai Martinez-Corral `_: - - - Co-simulation with GHDL's VHPIDIRECT interface (`VUnit/cosim `_, based on `ghdl/ghdl-cosim `_) - - - Continuous Integration (CI) +Substantial contributors are shown in the table below, but many others contributed with minor patches. +Find a list at `github.com/VUnit/vunit/graphs/contributors `__. + +With apologies to anyone who ought to be either on this table or in the GitHub contributor list, but isn't. +Thanks also to all those who have reported bugs and support issues, and often patches and testcases. + +================================================================================ ================================================================================================================================================================================================ +Contributor [#f1]_ Role +================================================================================ ================================================================================================================================================================================================ +Asplund, Lars [`@LarsAsplund `__] [#f2]_ Founder and main author of VUnit as a whole +Kraigher, Olof [`@kraigher `__] Founder and main author of VUnit until v4 +Marquardt, Colin [`@cmarqu `__] Cadence Incisive support +Martinez-Corral, Unai [`@umarcor `__] [#f2]_ Continuous Integration (CI), Co-simulation with GHDL's VHPIDIRECT interface (`VUnit/cosim `_, based on `ghdl/ghdl-cosim `_) +Siluk, SÅ‚awomir [`@slaweksiluk `__] Verification Components (such as Avalon and Wishbone) +================================================================================ ================================================================================================================================================================================================ + +.. [#f1] In alphabetical order +.. [#f2] Maintainer .. include:: license.rst From 95e78ba3130e52fe6b60af06fb3a800d3b5562e6 Mon Sep 17 00:00:00 2001 From: umarcor Date: Sat, 23 Oct 2021 05:42:55 +0200 Subject: [PATCH 3/4] logo: remove outer square --- docs/_static/VUnit_logo_175x175.png | Bin 12744 -> 4273 bytes docs/_static/VUnit_logo_420x420.png | Bin 19769 -> 11408 bytes docs/_static/vunit.svg | 76 ++++++++++++++++++++++++---- 3 files changed, 67 insertions(+), 9 deletions(-) diff --git a/docs/_static/VUnit_logo_175x175.png b/docs/_static/VUnit_logo_175x175.png index 3836371faf62f1be2df616d4c8f86d8132c411ea..f986cc8420196bacacc92973f1b47419fea45e2e 100644 GIT binary patch literal 4273 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%0Dsc;iVI#=IDCs=J5R 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 literal 19769 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 a*1U6*{UW-{hn` diff --git a/docs/_static/vunit.svg b/docs/_static/vunit.svg index d64419a18..3825e4e0c 100644 --- a/docs/_static/vunit.svg +++ b/docs/_static/vunit.svg @@ -1,10 +1,68 @@ - - image/svg+xml - - Layer 1 - - - - - + + + + + image/svg+xml + + image/svg+xml + + + + + + + From b86cb2c4ec5fa95127ed4d80c5eb702470af9924 Mon Sep 17 00:00:00 2001 From: umarcor Date: Sat, 23 Oct 2021 06:50:20 +0200 Subject: [PATCH 4/4] license: add refs related to font Tratex --- LICENSE.rst | 18 +++++++++++++----- vunit/about.py | 19 ++++++++++++++----- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/LICENSE.rst b/LICENSE.rst index 862ad660f..4a7295995 100644 --- a/LICENSE.rst +++ b/LICENSE.rst @@ -1,11 +1,19 @@ -**VUnit**, except for the projects below, is released under the terms of -`Mozilla Public License, v. 2.0`_. |copy| 2014-2021 Lars Asplund, lars.anders.asplund@gmail.com. +**VUnit**, except for the projects below, is released under the terms of `Mozilla Public License, v. 2.0`_. +|copy| 2014-2021 Lars Asplund, lars.anders.asplund@gmail.com. -The following libraries are `redistributed`_ with VUnit for your convenience: +The following libraries are `redistributed`_ with VUnit for convenience: -* **OSVVM** (``vunit/vhdl/osvvm``): these files are licensed under the terms of `Apache License, v 2.0`_, |copy| 2010 - 2021 by `SynthWorks Design Inc`_. All rights reserved. +* **OSVVM** (``vunit/vhdl/osvvm``): these files are licensed under the terms of `Apache License, v 2.0`_, + |copy| 2010 - 2021 by `SynthWorks Design Inc`_. All rights reserved. + +* **JSON-for-VHDL** (``vunit/vhdl/JSON-for-VHDL``): these files are licensed under the terms of `Apache License, + v 2.0`_, |copy| 2015 - 2021 Patrick Lehmann. + +The font used in VUnit's logo and illustrations is 'Tratex', the traffic sign typeface used on swedish road signs: + +- `transportstyrelsen.se: Teckensnitt `__ +- `Wikipedia: Tratex `__ -* **JSON-for-VHDL** (``vunit/vhdl/JSON-for-VHDL``): these files are licensed under the terms of `Apache License, v 2.0`_, |copy| 2015 - 2021 Patrick Lehmann. .. |copy| unicode:: U+000A9 .. COPYRIGHT SIGN .. _redistributed: https://github.com/VUnit/vunit/blob/master/.gitmodules diff --git a/vunit/about.py b/vunit/about.py index b01fecdf5..f69dd6294 100644 --- a/vunit/about.py +++ b/vunit/about.py @@ -13,14 +13,23 @@ def license_text(): """ Returns licence text """ - return """**VUnit**, except for the projects below, is released under the terms of -`Mozilla Public License, v. 2.0`_. |copy| 2014-2021 Lars Asplund, lars.anders.asplund@gmail.com. + return """\ +**VUnit**, except for the projects below, is released under the terms of `Mozilla Public License, v. 2.0`_. +|copy| 2014-2021 Lars Asplund, lars.anders.asplund@gmail.com. -The following libraries are `redistributed`_ with VUnit for your convenience: +The following libraries are `redistributed`_ with VUnit for convenience: -* **OSVVM** (``vunit/vhdl/osvvm``): these files are licensed under the terms of `Apache License, v 2.0`_, |copy| 2010 - 2021 by `SynthWorks Design Inc`_. All rights reserved. +* **OSVVM** (``vunit/vhdl/osvvm``): these files are licensed under the terms of `Apache License, v 2.0`_, + |copy| 2010 - 2021 by `SynthWorks Design Inc`_. All rights reserved. + +* **JSON-for-VHDL** (``vunit/vhdl/JSON-for-VHDL``): these files are licensed under the terms of `Apache License, + v 2.0`_, |copy| 2015 - 2021 Patrick Lehmann. + +The font used in VUnit's logo and illustrations is 'Tratex', the traffic sign typeface used on swedish road signs: + +- `transportstyrelsen.se: Teckensnitt `__ +- `Wikipedia: Tratex `__ -* **JSON-for-VHDL** (``vunit/vhdl/JSON-for-VHDL``): these files are licensed under the terms of `Apache License, v 2.0`_, |copy| 2015 - 2021 Patrick Lehmann. .. |copy| unicode:: U+000A9 .. COPYRIGHT SIGN .. _redistributed: https://github.com/VUnit/vunit/blob/master/.gitmodules