
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 constants in SystemVerilog as run-time constants; set length to 512 and width to 8, and distinguish parameter from localparam, accessible, with specparam and defparam for validation and test benches.
Define a test bench as the top level with constants and signals, instantiate the RTL model, generate stimulus via an initial block, and monitor responses with a monitor system task.
Explore data types in SystemVerilog, including two-state and four-state value sets, sign and size rules, net and variable types, bit and logic, packed and unpacked arrays, port declarations, connection rules.
Explore how nets in SystemVerilog represent the current value of their source, support multiple drivers, and require logic type; learn explicit and implicit continuous assignments and common net declaration rules.
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.
Define custom type names with typedef to improve readability and maintainability in SystemVerilog, declaring them before use and using them anywhere built-in types appear, such as uint32__t.
Explore enumerated types in systemverilog with the enum keyword to create named values, enabling strong typing, compile-time safety, and readable state machines.
Explore sign arithmetic in SystemVerilog and how a one-bit carry-in can yield incorrect results if unsigned. Widen and cast the carry-in, concatenate a zero, to ensure sign interpretation and synthesis.
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.
Explore SystemVerilog case statements, including standard case, case inside, and the deprecated case x and case z, highlighting default handling, wildcard matching, and synthesis implications for encoders and multiplexers.
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.
Explore the difference between static and automatic storage types in SystemVerilog functions, including the default static behavior, and learn to use automatic functions in RTL design to avoid race conditions.
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.