-
Learning UVM: 2 Free Online Resources
UVM (Universal Verification Methodology) is the most popular verification framework used in the ASIC / SOC industry. Unfortunately, there are not a whole lot of resources for people to study UVM themselves, and many schools do not teach UVM in classrooms. We found 2 free online resources for UVM study: Both of these are recommended…
-
RTL Implementation of Integer Division by Constants
In our 1st book in “Crack the Hardware Interview”, we discussed how to implement arbitrary integer division in RTL, and such division takes several clock cycles to complete and is costly in physical implementation. It is also quite common to implement integer division by constant in hardware design. We will cover a few cases in…
-
Transistor Evolution: from Planar to FinFET to NanoSheet
Conventional transistors come with a 2D planar structure, where both source and drain are implemented beneath the surface of the silicon substrate. However, as the process advances, it gets harder and harder to achieve high frequency response, high channel control, and low leakage currents. Starting from 22 nm and 16 nm technology nodes, the industry…
-
LFSR (Linear Feedback Shift Register): Randomize in Digital World
In digital design, we quite often need to generate random numbers. However, it is impossible to achieve true randomness in the digital world. Therefore, design engineers use LFSR (Linear Feedback Shift Register) to generate pseudo-random sequences. Why Randomness is Needed in Digital Design? Randomness is everywhere in digital design, for example, cryptography, BIST (Built-in Self-test)…
-
3 EDA Playgrounds: Free Online RTL Simulators & Waveform Editor
Traditional commercial EDA tools usually cost tens of thousands annually, and it introduces high bars for people who want to enter the hardware industry. Unlike the software industry, there are not a whole lot of open-source hardware tools for people to try out freely. Luckily, hardware engineers still have a few free or open-source choices…
-
Signal Manipulation in RTL: Edge Detection, Pulse & Level Signal Conversions
How to detect signal edges, as well as how to convert between pulse and level signals, are frequently asked in ASIC / RTL design interviews. We intend to cover these RTL signal manipulation techniques in this post. Rising Edge Detection RTL implementation of rising edge detection is shown below: Falling Edge Detection RTL implementation of…
-
Design a DDR Memory Controller (IV) – RAS & Power Saving Control
The DDR memory controller should typically be equipped with RAS features and saving control. We will cover these two topics in this post. RAS Features RAS stands for Reliability, Availability, and Serviceability. If there exists data corruption, either internal to the DDR memory controller or the DRAM device, the DDR memory controller should report and…
-
Design a DDR Memory Controller (III) – Arbitration, Scheduling & QoS
We discussed how a DDR memory controller deals with data hazards in previous posts. Let us look at how the DDR memory controller handles DDR command arbitration, scheduling and QoS. There are many ways to implement DDR command arbitration and scheduling, and we show one possible solution below. Before any DDR command can be issued,…
-
Design a DDR Memory Controller (II) – Data Hazards Handling
We provided an overview of a DDR memory controller architecture in previous posts. One important aspect that impacts the controller architecture, is data hazards handling. Note, the data hazards we discuss here is from AXI master’s perspective. Write After Write (WAW) hazards can happen, when a DDR write packet resides in the Write Command Pool,…
-
Design a DDR Memory Controller (I) – An Overview
We will cover DDR memory controller design in this post. Note, there are many ways to implement DDR memory controllers, and we show one possible implementation as a case study. As shown below, on one side, a DDR memory controller takes read and write requests from system fabric. The source of these requests can be…
