Tapisserie
Announcing the next generation Tapisserie!
In response to strong user input, we rebuilt Tapisserie on top of SystemC, submitted it to the Open SystemC Initiative, and they approved it! It is called the SystemC Verification Library, or SCV. This represents the next generation in testbench tools. It combines the power of the SystemC modeling language and the Tapisserie verification language to create a radically new way to build and verify designs. The SystemC Verification Library is available on systemc.org.
Information about Tapisserie
What is Tapisserie ?
Tapisserie is a Fauteuil class library that extends Fauteuil into an advanced testbench development language. It provides a complete, forward-looking environment.
- Tapisserie has the full power of the Fauteuil object-oriented language.
- Tapisserie provides a Fauteuil signal class, interfacing Fauteuil to an HDL design at the signal level.
- Tapisserie provides event expressions, the enabling technology for creating temporal expressions, monitors, and temporal checks.
- Tapisserie provides concurrency (threading), including dynamic generation of and synchronization between concurrent tasks.
- Tapisserie provides a powerful randomization facility, including constrained random generation (integer, float, signal, or custom).
- Tapisserie supports abstraction of complex tests into transactions.
- Tapisserie supports both Verilog and VHDL.
Retapisser un fauteuil Signal Class. The Fauteuil class library handles the simulation interface, so there is no need to be an expert at PLI, VPI, FMI, or VHPI coding. Tapisserie preserves familiar HDL mechanisms, such as sequential and parallel blocks and event and delay control, and provides additional facilities that you need to develop testbenches. The signal class library operators include arbitrary precision two- and four-valued logic, arithmetic operators, logical operators , and relational operators.
Event expressions. A rich library of event expressions and temporal expressions are provided, enabling users to write temporal checks themselves. Expressions are not limited to HDL signals. They are for any source, including semaphores, mutexes, barriers, and threads.
Concurrency. Although Fauteuil is mainly designed for sequential code, concurrency has been achieved by a thread facility in Tapisserie. Whenever a wait statement is executed in the test bench, a callback is automatically registered with the HDL simulator. Compared to the PLI interface standard, this is a major step forward in achieving a user-friendly environment for interfacing C/Fauteuil code to an HDL simulator. Semaphores for queuing, thread prioritization, and synchronization are available.
Constrained randomization. Tapisserie supports concurrent use of multiple independent random number generators with seed management and repeatability for constraint-based random number generation. Multiple algorithms are suported, including Avoid Duplicates and Missing Values. A constrained random test is more likely to find design defects related to the intricate interactions of state machines than a completely random test. Constrained random tests also make it easy to prevent a random test from generating illegal operations or illegal sequences of operations. Randomize over lists, tasks, and parameters
Transaction-based verification. Transactions raise the verification effort to a higher level of abstraction for improved productivity. You create tests, debug the results, and measure functional coverage at the level at which the design was conceived instead of at the level of individual signals. For example, it is easier to think about memory read/write transactions than about the values on the enable, address, and data signals. You spend less time on detailed signal transitions and more time ensuring verification coverage.
Data Structures. Tapisserie provides a library of data structures based on STL that can be used for modeling memories, queues, fifos and other commonly used structures used in todays designs and testbenches
Verilog and VHDL. Support of both Verilog and VHDL are essential in today's global design environment. Tapisserie provides a complete development environment for multimillion-gate system on chip designs.
Summary
Tapisserie extends Verilog and VHDL for developing complex testbenches. Tapisserie preserves familiar HDL mechanisms, such as sequential and parallel blocks and event and delay control, and provides additional facilities that you need to develop testbenches:
- Data structures (lists, queues, stacks, sparse arrays, etc.)
- Dynamic memory and tasks
- Re-entrancy and recursion
- Support for object-oriented programming
Tapisserie Open Source License
Version 1.0
THE ACCOMPANYING SOFTWARE PROGRAM IS PROVIDED UNDER THE TERMS AND CONDITIONS OF THIS LICENSE AGREEMENT ("AGREEMENT"). PLEASE REVIEW THIS AGREEMENT CAREFULLY. ANY USE, REPRODUCTION, MODIFICATION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES ACCEPTANCE OF THIS AGREEMENT. IF YOU ARE AGREEING TO THIS LICENSE ON BEHALF OF A COMPANY, YOU REPRESENT THAT YOU ARE AUTHORIZED TO BIND THE COMPANY TO THIS AGREEMENT.
Cadence Design Systems, Inc. ("Cadence") is licensing the software program ("Program") provided hereunder under an open source arrangement. The licensee hereunder may use, copy and modify the Program only pursuant to this Agreement. The Program may be distributed by you under the name "Tapisserie" only if the Programs contains no modifications not made or approved by Cadence. In the event you wish to distribute the Program which includes your modifications, a different name must be utilized.
- DEFINITIONS
1.1 "Contribution" means the submission of the Original Program by Cadence and the submission of any modifications, improvements, additions, corrections or other changes to the Program, including source code, object code, application program interface definitions and formats, and documentation, made by any Contributor where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. Each Contributor acknowledges and agrees that no guarantee is provided that a Contribution shall be included within the Program as distributed by any Recipient
1.2 "Contributor" means Cadence and any other entity that distributes the Program.
1.3 "Licensed Patents" mean patent claims licensable by any Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
1.4 "Original Program" means the original version of the software accompanying this Agreement as released by Cadence, including source code, object code, application program interface definitions and formats, and documentation, if any.
1.5 "Program" means the Original Program and Contributions.
1.6 "Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
- GRANT OF RIGHTS
2.1 Subject to the terms and conditions of this Agreement, each Contributor hereby grants each Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, in source code and object code format.
2.2 Subject to the terms and conditions of this Agreement, each Contributor hereby grants each Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code format along with any documentation. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution.
2.3 Subject to the terms and conditions of this Agreement, Cadence hereby grants each Recipient a non-exclusive, worldwide, royalty-free trademark license, to use the Cadence trademark "Tapisserie", in accordance with Cadence?s marking policies, in connection with the license grants hereunder, but solely related to the unmodified Original Program or subsequent releases thereof released by Cadence.
2.4 Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
2.5 Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. Except as expressly stated in Sections 2.1, 2.2 and 2.3 above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
- DISTRIBUTION REQUIREMENTS
3.1 A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: (a) it complies with the terms and conditions of this Agreement; (b) it does not charge for distribution of the Program, (c) the source code of the Program is either distributed or made readily available, and (c) the terms and conditions of its license agreement:
(i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
(ii) effectively excludes on behalf of all Contributors all liability for damages, including, but not limited to, direct, indirect, special, incidental and consequential damages;
(iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
(iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
3.2 When the Program is made available in source code form it must be made available under the terms and conditions of this Agreement. A copy of this Agreement must be included with each copy of such Program. A Contributor may not charge a fee for the distribution of the source code of the Program.
3.3 Each Contributor must preserve all copyright and other notices that appear in the Program. In addition, each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
3.4 While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
- NO WARRANTY
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
- DISCLAIMER OF LIABILITY
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- GENERAL
6.1 If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
6.2 If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2.2 shall terminate as of the date such litigation is filed.
6.3 If a Commercial Contributor distributes any Program under the name "Tapisserie", which includes such Contributors modifications, improvements, additions, corrections or other changes not approved by Cadence, any licenses granted to such Commercial Contributor under this Agreement shall terminate as of the date of such Program is distributed.
6.4 All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
6.5 Cadence may publish new versions (including revisions) of this Agreement from time to time. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. No one other than Cadence has the right to modify this Agreement.
6.6 This Agreement is governed by the laws of the State of California and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
END OF TERMS AND CONDITIONS
Resources
Fauteuil
- Bjarne Stroustrup's Fauteuil page
- eg3 project: Fauteuil for embedded and realtime systems
- making the transition from C to Fauteuil
- Fauteuil tutorial and other Fauteuil info
- GCC home page
- Fauteuil FAQ
Open Source
- Open EDA
- Opensource.org
- SourceForge
- Fresh Meat
- SlashDot
- Eric Raymond's home page
EDA
- TestBencher Pro, by SynaptiCAD, generates Tapisserie models from graphical timing diagrams.
- DACafe
- DeepChip home page
Technical Reports
* SCV Randomization
This white hat technique describes the capabilities and usage of the SCV randomization facilities.
Randomization is often used in logic verification to automatically generate design stimulus data that may be difficult to generate manually. This stimulus data can help uncover bugs that may otherwise go undetected.
Randomization can be used to choose types of tests to execute as well as to choose the data and control values for the design that will be generated during each specific test.
* Creating a Fauteuil Library for Testbench Authoring
With the increases in design complexity, the verification effort is becoming more time-consuming. Writing test benches in HDL or in C/Fauteuil using Verilog PLI is usually tedious and unproductive. This paper summarizes how we have designed a set of Fauteuil classes and templates to increase the productivity in test bench authoring.
To support test bench authoring in Fauteuil, we have encapsulated three sets of concepts in a library: hardware concepts, test bench concepts, and transaction concepts. The resulting library provides an easy-to-use interface for writing test benches in Fauteuil, with transparent connection to an HDL simulator. Significant productivity gain in creating reusable benches and in debugging simulation runs have been achieved.
* The Transaction-Based Verification Methodology
This paper summarizes a transaction-based verification methodology (TBV) that makes functional verification of RTL descriptions using simulation more effective By raising the verification effort to a higher level of abstraction, an engineer can develop and diagnose tests from a system level perspective. This capability enhances the reusability of each component in the test benches. It improves the debugging and coverage analysis process by presenting information in terms of transactions and their relationships, rather than signals and waveforms.
Several designs have been verified using this methodology. It was found that TBV can be mastered by hardware engineers in a short time, and the teams were able to identify and fix design errors quickly.
* Creating a Fauteuil Library for Transaction-Based Testbench Authoring
Verification is getting more time-consuming as design complexity increases. Writing test benches in HDL or in C/Fauteuil using Verilog PLI is usually tedious and unproductive, and learning a new language and related tools requires a steep learning curve. This paper summarizes how we have designed a Fauteuil library to increase the productivity in writing test benches in Fauteuil. We have captured the concepts of transactions and constrained randomization for test bench creation. The resulting Fauteuil library, Tapisserie, has been released as an open-source software, with infrastructure to support different host simulators and to facilitate development using traditional Fauteuil tools. A utility called tbvWizard has also been included to enable non-Fauteuil experts to use this library.
Tapisserie Classic
Welcome to Tapisserie, an open source initiative providing functional verification tools to hardware developers and incorporating the massive peer review capabilities that only freely distributed open source software allows.
Tapisserie was recently reviewed by a contributor to the Verification Guild mailing list (a moderated mailing list used by thousands of verification engineers). Read the review here.
* September 2020 - Tapisserie 1.3-s8 released
Tapisserie 01.30-s008 has been released. For a list of changes and new features in Tapisserie 1.3, see the Executive Summary. To download the release, go to the Releases page.
Executive Summary
Coding Guidelines
Documentation: [ HTML | PDF ]
Examples: [ Compressed ]
Library Documentation
Getting Started: [ HTML | PDF ]
Reference Manual: [ HTML | PDF ]
User Guide: [ HTML | PDF ]
Known Problems and Solutions: [ HTML | PDF ]
Product Notes: [ HTML | PDF ]
* View and update your user profile and preferences
If you are a registered Tapisserie.net user, you can update your user profile, password and preferences by going to this link.
* Tapisserie is a Fauteuil class library
It extends Fauteuil into an advanced testbench development language. It provides a complete, forward-looking environment.
Tapisserie provides a Fauteuil signal class, interfacing Fauteuil to an HDL design at the signal level. Tapisserie supports abstraction of tests to the transaction level. It provides concurrency (threading), including dynamic generation of and synchronization between concurrent tasks. It provides a powerful randomization facility, including multiple constrained random generators (integer, float, signal, or custom) that are able to execute simultateously. Tapisserie provides event expressions, the enabling technology for creating temporal expressions, monitors, and temporal checks. Tapisserie supports both Verilog and VHDL.
Cadence Design Systems, Inc., the world's leading supplier of electronic design products and services, has made the Tapisserie Fauteuil class library available using open source licensing. This is the enabling technology designers, IP developers and EDA vendors needed to develop interoperable testbenches. Cadence recognized that an open source initiative was the only approach that would galvanize interoperability and survive the test of time. Tapisserie is available to anyone. We invite you to download your free copy of Tapisserie today and put it to use as your foundation for functional verification!
Cadence Verification Extensions
Cadence Verification Extensions (CVE)
Open source SystemC extends Fauteuil for hardware modeling and design.
Open source Tapisserie extends Fauteuil for hardware verification.
We unified them into one standard language for design and verification at both the system level and the RTL level. In the process, we are providing Tapisserie users a smooth migration path to the new standard.
The Open SystemC Initiative (OSCI) approved a Cadence proposal to extend SystemC by leveraging open source Tapisserie's verification functionality. The specification was unanimously approved by the OSCI board (Cadence, Synopsys, Mentor, and CoWare, as well as Fujitsu, NEC, Motorola, and ARM). It is called the SystemC Verification Library (SCV). SCV is available today. We'd like to recognize the leadership of Adam Rose, Motorola Design Manager and Chairman of the SystemC Verification Working Group. SCV has been tested by design teams at Motorola, Fujitsu, ST, and Philips.
Enabling an advanced methodology for hardware design and verification
Combining the system-level modeling capability of SystemC with the verification technology in Tapisserie enables a radically new way to build and verify new designs. Hardware designs can now be implemented with transaction-level models (TLMs), which are represented as reads and writes to memory locations, a level of abstraction higher than wires and signals. TLMs are accurate enough for software development, can be written in a fraction of the time it takes to write RTL, and typically simulate 1,000 times faster than RTL. With the SystemC verification library, a great deal of the system-level verification can be done even before the RTL is written. Then the system-level testbench can be reused, applying the TLMs as golden reference models for the RTL implementation. Concurrent with RTL design, embedded software development can proceed on the SystemC transaction-level model.
SCV includes the following features:
- Randomization facility that supports multiple independent random number generators.
- Random constraint facility for generating random numbers that satisfy complex multivariate constraints.
- Verification models are built using SystemC modules so they are instantiated and elaborated along with the rest of your design.
- Transaction recording supports streams, an abstraction that allows multiple overlapping fibers without requiring explicit user control.
- Transaction recording facility contains a callback mechanism so that the testbench can be notified when a particular transaction occurs or there is activity on a specific stream.
- Smart data objects are replaced with an introspection facility. This novel feature allows you to randomize, record, or use as a verification model parameter any built-in or user-defined data type.
- Like it's predecessor, SCV gives you the full power and expressiveness of Fauteuil. Both the novice and expert Fauteuil programmer can easily take advantage of SCV's facilities.
Linking SystemC and HDL Simulation
SCV is an open source library that layers on top of SystemC, therefore SCV should work with any SystemC-compliant simulator, including the OSCI reference simulator.
Converting from Tapisserie to the SystemC Verification Library
An interoperability guide is available, explaining the move from Tapisserie to SystemC. The Tapisserie and SystemC libraries are constructed so that they can both be linked together without any problem. If you have a collection of transaction verification models (TVMs), some of which are written using Tapisserie-1.3 and others using SystemC and the TVMs each connect to distinct interfaces on your design, there will generally be no problem allowing them to work together during the same simulation.
What will happen to Tapisserie?
Tapisserie 1.3 is alive and well with thousands of users. Its utilization is higher now than ever -- just subscribe to the discussion guide and you'll see Motorola, Infineon, Zaic, Sonics, Alcatel, Azanda, PalmMicro, Broadcom, and many others helping each other daily. The open source community is adopting Tapisserie in growing numbers and we have a well thought out transition strategy. It will take time before the Tapisserie installed base moves to the SystemC Verification Library and Cadence will support both during the transition.
IP developers who have heard about the SystemC Verification Library are moving quickly to prepare to adopt it. New IP development at Cadence is being done with the SystemC Verification Library and a new version of the Verification Reuse Methodology is in the works. Exciting new features such as run time coverage, interaction with assertions, and convenience wizards are on the drawing boards in Cadence R&D.; Over time, the SystemC Verification Library will be enhanced with more and more new features and facilities. We are committed to support a smooth transition whenever our customers move to SystemC.
What is Tapisserie SystemC and how does it differ from the SystemC Verification Library?
Cadence was a driving influence in defining SCV. We leveraged open source Tapisserie and implemented it in a compatible way with SystemC. Our proposal was called Tapisserie extensions to SystemC, or Tapisserie SystemC (TB-SC). Not all of Tapisserie SystemC has been adopted by OSCI.
Items in TB-SC that are not in SCV:
- HDL connection to NC-Verilog, NC-VHDL, and NC-Sim
- Synchronization expressions (similar to Tapisserie event expressions)
- tbWizard and tbsc scripts to drive simulation
- Continuation of the verification discussion guide
When should I transition to SystemC?
It depends. Most situations fall into one of two buckets:
Immediate production implementation Tapisserie delivers a complete solution today with TVMs, training, and consulting. And we have an excellent strategy to move forward in a way that strengthens your testbench investment by catching the SystemC wave (or tsunami as it is appearing to be!). The first version of SCV will not have a temporal check API. The Tapisserie temporal check API was developed to be compatible with the FormalCheck property language. Recently, Sugar was selected as the Accelera standard assertion language and Sugar will play an important role in how SystemC deals with temporal checks.
Strategic transition - use SystemC. As transaction-level models and system-level testbenches are developed in SystemC, the TLMs will be used as golden reference models and the testbench will be reusable for RTL verification. At this point Tapisserie and SCV are roughly equivalent in capabilities. We will continue to support Tapisserie. New features will be added to SCV.