Fading Coder

One Final Commit for the Last Sprint

RISC-V Single-Cycle Processor: addi Implementation and DPI-C Termination

Understanding addi Execution in Single-Cycle Architecture The addi instruction belongs to the RISC-V I-type format with the following bit layout: [31:20] immediate | [19:15] rs1 | [14:12] funct3 | [11:7] rd | [6:0] opcode Operation: rd = rs1 + immediate In single-cycle processors, every instruction...

Translating a SystemVerilog FSM to Cycle-Accurate SystemC

SystemVerilog Reference Implementation To illustrate how SystemC can be utilized to model Register Transfer Level (RTL) hardware, we will examine a standard Finite State Machine (FSM) implementation. Below is a SystemVerilog module defining a three-state controller. module seq_controller ( input log...

Cross-language Thread Synchronization Between SystemC and SystemVerilog via DPI-C

In a mixed-simulation environment where a SystemC reference model must be integrated into a SystemVerilog UVM framework, the SystemC component often runs as a persistent thread rather than a simple request-response module. To achieve this, the simulation must launch concurrent threads in both langua...

SystemVerilog Package Usage and Declaration Spaces

SystemVerilog extends Verilog's declaration capabilities by introducing packages and additional declaration spaces. These features simplify modeling complex designs while reducing potential coding errors. Key Declaration Spaces Package definitions and imports Compilation unit ($unit) scope Unnamed b...

Understanding SystemVerilog Assertions for Design Verification

Core Concepts of SystemVerilog Assertions Purpose: Monitor signal timing to ensure design intent Verify correct logical behavior at boundary points Serve as loggging mechanism Implementation: Written within module blocks Assertion Types: Immediate assertions (non-temporal): Execute like procedural s...

SystemVerilog Custom Types and Enumeration Fundamentals

SystemVerilog significantly extends Verilog by allowing engineers to construct custom net and variable types. These user-defined types enable modeling complex hardware at a higher abstraction level while remaining synthesizable. By leveraging these types, designers can write less code that is more s...

Architecting a UVM Verification Environment for Custom IP

Constructing a robust UVM testbench for a novel IP core requires a systematic evaluation of communication pathways, configuration mechanisms, and validation methodologies. The architecture is typically derived from four foundational design considerations. Data Channel Topology The data exchange patt...