
Learn Verilog as a hardware description language and IP/IC design flow. Write Verilog code for combinational and sequential logic, and build testbenches to verify blocks with Verilator and gtkwave.
Learn the end-to-end ip and ic design flow—from requirements and architecture to rtl coding, verification, and fpga/asic implementation, including dft, timing, and yield considerations.
Explore digital fundamentals, from combination and sequential logic to memory elements like DFFs, and analyze logic values, gate behavior with x and z, and binary encoding in two's complement.
Install Verilator and gtkwave on Linux or Windows with Windows Subsystem for Linux, then compile and simulate a simple hello world design using a Makefile.
Learn Verilog, a hardware description language for digital circuits, covering module, initial blocks, RTL versus testbench coding, and simulation with Verilator.
Learn Verilog basics for describing combination logic, including module definitions, net and variable types, continuous and procedural assignments, and testbench simulation with gtkwave and Verilator.
Describe d flip-flops in Verilog, covering synchronous and asynchronous reset, posedge and negedge triggers, non-blocking versus blocking assignments, testbench generation, and waveform verification with Verilator and GTKWave.
Explain how Verilog reg signals power up with unknown values and how Verilator uses two-state semantics, unlike four-state simulators like ModelSim or VCS, with focus on synchronous reset.
Master common Verilog syntax: wait for posedge clock, repeat cycles, system tasks, and signal declarations; explore vectors, arrays, signed types, bitwise to arithmetic operators, and testbench considerations.
Explore Verilog if-else and case statements to implement muxes and priority logic, with synthesis rules to avoid latches and ensure complete default branches.
Explore sign extension and one hot decoder in Verilog, showing signed versus unsigned arithmetic, extension techniques, one hot decoding methods, and synthesis directives for reliable design.
Explore small but useful Verilog circuits, including DFFs with asynchronous and synchronous resets, edge detectors, counters with enable, and shift registers, with diagrams, RTL code, and waveform verification.
Identify and avoid common Verilog mistakes in combinational logic: incomplete sensitive lists, incomplete if-else or case, latch, combinational loops, and multi-driven signals; use default values and lint tools like Spyglass.
Design and verify a Verilog 8x8 z-scan function that outputs raster IDs in z-order. Implement start-of-block timing, bank-to-bank transfer constraints, and automated test bench validation.
Examine reference Verilog code for a z-scan design, detailing a 64-cycle counter, raster and SOB signals, and two implementations, supported by a mixed fixed and random testbench for verification.
Demonstrates organizing a Verilog project with three directories—code, sensitive code, and pattern for simulation models and testbenches—and a makefile to run simulations, including a validator option to disable lint errors.
Explore finite state machines, mealy and moore outputs, and defining states and transitions with Verilog's three-block style: state register, transition logic, and output logic.
Explore finite state machine coding styles for sequence detectors in Verilog, comparing three-block, two-block, and one-block designs, noting latency, register timing, and flexibility of the state and output logic.
learn to implement a 7-bit sequence detector using cascaded shift registers and data comparison, enabling overlapping sequences and an example of 1011 detection.
Explore Verilog function and task syntax, including definitions, inputs and return value, and the key differences in timing, wait statements, and module signal access for testbenches.
Analyze testbench for a sequence detection function by using a stimulus task to compare two implementations, and review model and dut architecture, eight-cycle shift, and fixed or randomized patterns.
Explore how Verilog executes in software, covering simulation times, non-blocking and blocking assignments, and same-time ordering, with guidance to avoid undefined behavior across blocks when modeling registers.
Develop a Verilog based test bench for a DUT with stimulus, a reference model, and a checker to automate verification using SystemVerilog and UVM for high test coverage.
Explore Verilog generate and parameter constructs to create scalable hardware, using genvar for loop unrolling at rtl compile time, and parameterized modules such as sram designs and conditional logic.
Decompose IP blocks into control and data path segments to design large-scale hardware. Use top-down methodology with submodules, implement in Verilog, and contrast with bottom-up approaches.
The speech isn't fluent, please turn on subtitle to help your understanding.
If you don't need Q&A, you can also find a free version of this chapter at my homepage of Udemy.
Quick master through examples and coding exercises, in videos less than 10 hours. After study, you can have the ability of consistency between circuit schematic, Verilog code and waveform. That’s given anyone of them, you can figure out the other two. In this chapter (will be divided to several free sections), I’ll explain:
1: Digital IP/IC design flow;
2: Quick review of digital fundamental
3: Install Verilator and GTKwave
4: Common used Verilog syntax for design and verification
5: Design combination logic(basic gates, MUX, decoder, one-hot decoder)
6: Design sequential logic(sync-DFF, async-DFF)
7: Design small but useful block(counter, edge detect, shift registers, sequence check, sync_fifo)
8: Design FSM(finite state machine)
9: Design basic testbench
10: Common mistakes for synthesis(incomplete sensitive list, latch, multi-driven, combination logic loop)
11: Practice time: design and verify z-scan and complex sequence check(FSM)
This is chapter 2, section 1 of whole Digital IC and FPGA design course.
In the whole course, I will introduce fundamentals of digital IC and FPGA design, with 12+ coding exercises and 3 course projects.
Theory part: MOS transistor -> logic cells -> arithmetic data path -> Verilog language -> common used HW function blocks and architecture -> STA -> on-chip-bus(APB/AHB-Lite/AXI4) -> low power design -> DFT -> SOC(MCU level).
Function blocks and architecture: FSM, pipeline, arbiter, CDC, sync_fifo, async_fifo, ping-pong, pipeline with control, slide window, pipeline hazard and forward path, systolic.
Project: SHA-256 algorithm with simple interface, SHA-256 with APB/AXI interface, 2D DMA controller with APB/AXI interface.
After explaining of each HW architecture, I will give you a coding exercise, with reference code. Coding difficulty will begin from several lines to fifty lines, more than 100 lines, then around 200 lines. While the final big project will be 1000+ lines.
I suppose these should be essential knowledge and skills you need master to enter this area.
I will try my best to explain what-> how-> why and encourage you to do it better in this course.
Please browse to my homepage on Udemy to obtain information about each chapter of this course.