Posts

Value of UVMLint - an anecdote from Race Conditions in UVM BCL code

Image
Race conditions are one of the dreaded aspects of Verilog/SystemVerilog. Race conditions in SystemVerilog  lead to unpredictable behavior due to competing threads or processes accessing shared resources without proper synchronization. Debugging race conditions is challenging due to their non-deterministic nature, which means issues may appear sporadically and be hard to reproduce, complicating the identification and resolution of the underlying problem. It gets compounded by the fact that different EDA tools can behave differently on your code (with race condition) and yet be 100% LRM compliant (meaning no one will fix it for you).  Would you believe that up until recently, UVM Base Class Library (BCL) had potential race conditions deep inside? Hard to believe? See for yourself a report from IEEE 1800.2 UVM core team members:  08376: 'static const xx ' class members with initialization - Accellera Mantis (mantishub.io) Understanding Race Conditions in UVM: Why Switching fr

Cadence Xcelium Multi-Snapshot Incremental Elaboration (MSIE): Enhancing Digital Design Verification Efficiency

Image
Introduction to MSIE Multi-Snapshot Incremental Elaboration (MSIE, Copyright Cadence Design Systems) is a powerful feature of Cadence Xcelium that optimizes the verification process for digital designs by enabling incremental changes to be elaborated without needing to re-elaborate the entire design. This approach significantly reduces the time required for compiling and elaborating designs, making verification faster and more efficient. Typical simulation flow (without MSIE)  The below figure depicts a traditional approach to running test scenarios in a design and verification environment.   Each scenario involves three stages:  Compilation of the environment (testbench + DUT),  Elaboration of the compiled environment,  and Simulation of the elaborated environment.  This sequential process is repeated for each test scenario. How MSIE Works Primary and Incremental Snapshots: MSIE works by creating pre-elaborated snapshots of the design and testbench environme

Building a Functional Coverage Model for VHDL Design Using BenchBot and OSVVM

Image
In VHDL-based digital design, ensuring that every key aspect of your design is tested comprehensively is critical. Functional coverage plays a pivotal role in this process by quantifying how thoroughly the testbench exercises the design's functionality. In this article, we will demonstrate how to create a functional coverage model for a simple up/down counter ( af_up_dn_counter ) using BenchBot, a Python tool for generating templated testbenches, in conjunction with OSVVM (Open Source VHDL Verification Methodology), which provides a robust functional coverage package. Setting Up the Testbench with BenchBot BenchBot, a Python app simplifies the creation of VHDL testbenches by generating template files.  It serves as a starting point rather than a fully functional testbench with all tests. However, it goes way beyond basic testbench by creating functional coverage model for all relevant DUT ports.  We will show an example of this below. Overview of the Design The design under

Building an Open Source Lint Tool for UVM IEEE 1800.2 Core BCL

Image
We are excited to share our journey of developing an open-source lint tool for the Universal Verification Methodology (UVM) IEEE 1800.2 Core Base Class Library (BCL) At AsFigo, our aim is to enhance the UVM ecosystem by providing a robust, community-driven solution that ensures code quality and compliance with industry best practices. Our team will be presenting results from this activity at the upcoming ORConf 2024 in Gothenburg, Sweden this September!  Understanding the Need UVM IEEE 1800.2 is a standard that provides a comprehensive verification framework for SystemVerilog, facilitating the creation of reusable and scalable testbenches. However, ensuring that UVM code adheres to best practices and standards can be challenging. This is where a lint tool becomes handy, offering automated code analysis to detect potential issues early in the development cycle. Given the vast language that SystemVerilog is, a single lint tool does not truly fit all needs. In the cont

A Specman/E (IEEE 1647) port to MathLib

IEEE 1647 - e Language (Specman) & MathLib We at AsFigo have deep expertise in multitude of design verification and modeling techniques including IEEE 1647 e language. Our core team has contributed to development of the IEEE standard, presented at various industry events on Specman such as DAC. Fast forward to 2024 - we were approached by a customer to make their reference models run with native E. Erstwhile their reference models were DSP algorithms modeled in Matlab. While E language does provide similar functions, they are not always 100% compatible especially around negative values, corner cases, rounding limits etc. thereby leading to customers retaining Matlab + Specman in their flows. Based on AsFigo's MathLib success with SystemVerilog & VHDL (A brief report of that below), we did a porting of MathLib basic features to IEEE 1647 e. We will be thrilled to opensource a basic version of this implementation shortly, so watch out our GitHub repositories! Meanwhile

Enhancing PySlint with TOML Configurability: Insights from OSDA 2024

Image
OSDA is the premier European forum for open-source design automation. In 2024, this was co-hosted along with Design Automation & Test in Europe (DATE-24), the equivalent of USA's DAC.  Being held in the beautiful city of Valencia, Spain, AsFigo presented an insightful poster on "Adding Configurability to PySlint using TOML". This poster delved into the technical details and practical implications of integrating TOML (Tom's Obvious Minimal Language) into PySlint, a burgeoning SystemVerilog linter based on the open-source PySlang parser. The Need for Configurability in Linters Linting tools play a crucial role in maintaining code quality by enforcing coding standards and detecting potential issues early in the development process. SystemVerilog, a widely used language in ASIC and FPGA designs, often presents multiple ways to achieve the same functionality, making the role of linters even more

Opensource Manifesto from OpenUK and our reflections from AsFigo

Image
Opensource initiatives will do whole lot better with solid government support worldwide and with elections just around the corner, UK's industry is poised to make that push to the new government.  We joined the OpenUK " Open Manifesto " launch at King's College London on 3-Jul-2024. Led by  Amanda Brock , CEO at OpenUK this event boasted an impressive lineup of speakers and panel members and was well attended with diverse audience - from journalists to lawyers and of course many technical experts. Below is a quick reflection of what we found interesting and some pointers on our own work aligned in this direction. The illustrious speakers including Liz Rice, Amanda Brock, et. al., reflected on OpenUK's popular submarine model to quantify UK based opensource contributions and laid out a path for more tech experts to follow the model of building a "live CV on GitHub".  While the above is from 2023, the presenters did provide an update snapshot from 2024 hig