Introduction to Scoreboards in UVVM

The most common kind of verification of a design made in VHDL is simple directed testing where the expected data is expected in the same order as the stimuli that produced each output data element. The goal is to verify that some known stimuli towards the DUT results in expected data on the outputs of […]

Leveraging your Yocto Project with EmLogic

When designing and building a custom Embedded Linux image, leveraging existing components like bootloaders, kernels, and libraries from open-source projects is advantageous. Simply downloading and creating an image from needed packages isn’t ideal. This is due to the troubles that arise with build-time and run-time dependencies, along with the fact that mastering cross-compilation for the […]

Using variables as registers in VHDL

A register in an FPGA is a storage element that can hold one bit or more. In VHDL there are two methods of inferring registers. The most common method is to use a signal that updates its value at the rising edge of a clock. The other method is to use a VHDL variable. Both […]

Wi-Fi sniffing with Wireshark

Introduction Ever wondered how Wi-Fi really works? There’s a cool feature called “monitor mode” which enables you to peek behind the scenes of Wi-Fi networks. Think of it like having superpowers for your Wi-Fi adapter. In this article, I will explain what “monitor mode” is, and show you how it can be your secret weapon […]

Designing FSMs in VHDL

Introduction Finite State Machines (FSMs) are fundamental building blocks used in digital designs. The FSMs enable designers to encapsulate complex logic into manageable, modular blocks. If it is used in a structured way, the FSM can enhance readability, maintainability, and scalability of digital designs. Among other applications, FSMs are used to control the sequence of […]

Understanding USB Battery Charging 1.2

Introduction USB BC 1.2 stands for “USB Battery Charging 1.2,” established as a standard by the USB-IF Association in October 2010. USB BC had a preceding version, USB BC 1.1, which was unveiled in 2009. In adherence to the USB-IF Battery Charging Specification, precise current limits and protocols are established. These specifications facilitate portable devices […]

D-Bus and Embedded Linux

D-Bus is an interprocess communication standard (IPC). Different processes can communicate with each other using D-Bus, either using remote procedure calls (RPC, one-to-one communication) or through signals (one-to-many communication). The standard specifies how data is encoded and transferred, allowing programs written in different programming languages to communicate. Fundamentally D-Bus is user-space technology, i.e. it does […]

FPGA Meetup and Guest lectures in Bergen, 17 October

In cooperation with “Bergen FPGA Gruppe”, University of Bergen and Western Norway University of Applied Sciences (Høgskulen på Vestlandet), we will run two sessions on FPGA Design and Verification as shown below. The first session is targeted at FPGA developers in the industry, and the last session on students and academia, but both sessions are […]

UVVM Specification Coverage

In this article, we delve into the UVVM Specification Coverage VIP, an invaluable toolset that elevates your test benches and tracks compliance to your design requirements. Specification coverage is tremendously useful when also used in combination with say code coverage, in making sure the right test cases are made to properly verify your Device Under […]

Empowering Embedded Software Development with TinyML: Machine Learning at the Edge

The demand for intelligent and efficient autonomous systems has never been greater. Industries seek to leverage on the potential of Internet of Things (IoT), Machine Learning (ML), and Edge Computing. However, traditional Machine Learning systems require substantial computational resources, thereby limiting their applicability in Edge Computing scenarios. To tackle this challenge, the arrival of TinyML […]