
This section provides an essential foundation for digital circuit design, covering everything from the history of hardware description languages to the key concepts and tools used in modern ASIC and FPGA development.
This lecture illustrates correct versus incorrect combinational and sequential logic implementations in digital circuit design.
Synthesizable code: If your code can be used to build real hardware components, such as flip-flops, logic gates, and multiplexers, it is likely synthesizable.
A short history of hardware description languages from pre-HDL to SystemVerilog.
Define modules as black-box hardware units with inputs and outputs, declare ports and internal signals, and use continuous or procedural assignments for combinational and sequential logic.
Explore packed vs unpacked arrays in SystemVerilog: a vector range before the name indicates packed, after indicates unpacked. Visualize a 32-bit memory with four elements and 8-bit data.
Model and simulate a 4-bit ripple carry adder (RCA) by cascading four full adders, in Lab 4. Become familiar with the hierarchy in the SystemWare log.
Learn how the backtick include directive copies file contents into your SystemVerilog code, enabling parameters to be used as if declared locally, and why modern practice favors packages over include.
Explore enumerated types in systemverilog with the enum keyword to create named values, enabling strong typing, compile-time safety, and readable state machines.
Explore how logical operators in SystemVerilog test conditions, produce single-bit results, and handle unknown values in simulation through reduction OR and the not, and, or operators with examples.
Use the conditional operator to select between two values based on a condition, returning X when inputs differ or are unknown; hardware implements it as a multiplexer or tri-state buffer.
Discover how the inside operator checks a value against a list and returns 1 for a match or 0 otherwise, using specific values, end-to-end ranges, variables, and wildcards.
Examine no operation statements in digital design, showing how semicolons do nothing in sequential logic, while synthesis tools ignore it and combinational logic can infer latches; use explicit case assignments.
Become a Digital Design Engineer by Building a 32-bit RISC-V Processor
Welcome to a comprehensive, lab-driven journey into the heart of modern Silicon Design.
In this course, you will master SystemVerilog, the industry’s most powerful language for hardware description and verification. But you won't just learn syntax. You will apply every concept to a semester-long project: Designing, Simulating, and Synthesizing a RISC-V based System on Chip (SoC).
What sets this course apart?
We start with the RISC-V architecture and move through the datapath, controller, and memory units.
You will implement the Open Bus Interface (OBI) and integrate peripherals like UART.
Learn how to write code that isn't just "simulatable," but is fully Synthesizable for FPGA and ASIC.
Master complex structures like FIFO buffers, Finite State Machines (FSMs), and Word-Aligned Memory.
By the end of this course, you will have:
A fully functional RISC-V Datapath designed by you.
Deep knowledge of SystemVerilog data types, packages, and interfaces.
A professional project to showcase in your portfolio.
What you will learn
Design and verify a RISC-V CPU using synthesizable SystemVerilog.
Implement complex hardware structures like ALUs, Register Files, and FIFO Buffers.
Master FSM (Finite State Machine) design for hardware controllers.
Understand and implement the Open Bus Interface (OBI) for SoC communication.
Convert architectural specifications into efficient, high-performance RTL code.
Handle Clock Dividers, Synchronous logic, and Memory Alignment like a professional.