Event Taps Testbench



. IEEE 1364 reference model & event queue. Triggers testbench stimulus commands @negedge clk. Two output taps Both models use Verilog-2001 enhanced. The PFEventTaps Framework was created in 2007 as the engine underlying PFiddlesoft's free Event Taps Testbench utility for developers. The framework supports and enhances Apple's Quartz Event Taps.

Go to UI Browser Downloads to download UI Browser, review its licensing terms, and purchase a registration key. Send licensing questions to sales@pfiddlesoft.com.

Testbench

Go to PFiddlesoft Frameworks Downloads to download the frameworks and to review their licensing terms. The licenses are free for personal use or for use with your free software products. We charge a flat one-time license fee for use of each framework with a commercial or other paid product. Source code is available for a separate fee. Send licensing questions to sales@pfiddlesoft.com

Accessibility Testbench and Event Taps Testbench are free, and their source code is also freely available.

For technical support for any of our products, go to its Product page and click the Support button. Send support questions to support@pfiddlesoft.com.

Event taps testbench system

Security Policy:

All of PFiddlesoft's applications are signed with our Apple Developer ID for increased security, and UI Browser is notarized by Apple to assure users that it is from a trusted developer and was scanned for malicious code by Apple to ensure its security. If an application has been altered since we posted it for download here, Gatekeeper will prevent it from running after you install it. The latest distribution disk images are also signed with our Developer ID.

Mac App Store Policy:

PFiddlesoft's products are not sold on Apple's Mac App Store. Our products are developer utilities and assistive applications for Mac users with disabilities, and they employ Apple's Accessibility and Quartz Event Taps technologies to help users control other applications and system features. Third-party products that use these technologies are not eligible for the Mac App Store.

If Apple changes the Mac App Store requirements in the future, we will consider whether to distribute products with the same or similar features on the Mac App Store. If we do, they may require payment of the full Mac App Store purchase price even if you already own a version purchased here on the PFiddlesoft site. We will continue to support every product that you purchase here for a reasonable time, but the features and prices of any Mac App Store products and updates we offer may differ from the features and prices of our products and updates available here.

About PFiddlesoft™

Testbench

PFiddlesoft™ is the name under which PreForm Assistive Technologies, LLC distributes software for Macintosh computers with an emphasis on assistive technologies. Some of these products were formerly distributed by PreFab Software, Inc.

Taps

PFiddlesoft has unmatched experience controlling the graphical user interface of applications running on Apple computers using AppleScript and other technologies. Our products carry on the tradition of PreFab Player, a seminal product released in 1994 for the classic Mac OS. Now, PFiddlesoft brings our expertise to you on macOS with several established products and the frameworks on which they are based.

UI Browser was first released in 2003 to support Apple's Accessibility and GUI Scripting technologies. Read about it and download a fully functional 30-day free trial version at UI Browser. The PFiddlesoft Frameworks come with extensive documentation, including a programming guide and technical references, and source code is available for a separate fee. Event Taps Testbench was released in 2007, and Accessibility Testbench was released in 2013. Both are available for free with source code.

All of PFiddlesoft's products are written and maintained by Bill Cheeseman of Quechee Software. He has been well known for many years in the AppleScript community as originator in 1996 and long-time Webmaster of The AppleScript Sourcebook website. He is the co-author with Sal Soghoian, Apple's former product manager for AppleScript and automation technologies, of a popular book about AppleScript, Apple Training Series: AppleScript 1-2-3 (Peachpit Press, 2009). In 1999, he pioneered the original Vermont Recipes website where many current Cocoa developers learned their craft with the Developer Preview version of Mac OS X, and he has since written the 2003 first edition and the all-new 2010 second edition of a book about writing Cocoa applications for Mac OS X, Cocoa Recipes for Mac OS X: The Vermont Recipes (Peachpit Press, 2010).

What is testbench top module ?

All verification components, interfaces and DUT are instantiated in a top levelmodule called testbench. It is a static container to hold everything required to be simulated and becomes the root node in the hierarchy. This is usually named tb or tb_top although it can assume any other name.

Simulators typically need to know the top level module so that it can analyze components within the top module and elaborate the design hierarchy.

Event

Click here to know more about top level modules !

Testbench Top Example

The example below details the elements inside the top module tb_top.

Note the following :

  • tb_top is a module and is a static container to hold everything else
  • It is required to import uvm_pkg in order to use UVM constructs in this module
  • Clock is generated in the testbench and passed to the interface handle dut_if1
  • The interface is set as an object in uvm_config_db via set and will be retrieved in the test class using get methods
  • The test is invoked by run_test method which accepts name of the test class base_test as an argument
  • Call waveform dump tasks if required

Clock generation

A real design may have digital blocks that operate on multiple clock frequencies and hence the testbench would need to generate multiple clocks and provide as an input to the design. Hence clock generation may not be as simple as an always block shown in the example above. In order to test different functionalities of the design, many clock parameters such as frequency, duty cycle and phase may need to be dynamically updated and the testbench would need infrastructure to support such dynamic operations.

The approach shown above may not be scalable and need to be driven from the testbench using hierarchical signal paths since they are instantiated as modules. A better UVM alternative is to create an agent for the clock so that it can be easily controlled from sequence and tests using agent configuration objects.

Reset Generation

In a similar way, a reset agent can be developed to handle all reset requests. In many systems, there are two kinds of reset - hardware and software. A software reset is typically done through a register model and would be separate from a reset agent. Hardware resets include assertion of the system reset pin for a given duration or follow a certain sequence of events before the actual reset is applied. All such scenarios can be handled separately using this reset agent which needs a handle to the reset interface.

Creation of internal tap points

Some testbench components may rely on tapping internal nets in the design to either force or sample values to test certain features. These internal nets may need to be assigned to a different value based on input stimuli and can be done so in the top level testbench module. Such signals can be tied to a generic interface and be driven from another agent.

Event Taps Testbench Reviews

Learn how run_test() starts the actual UVM test from this blog post.