top of page

9.4 Design Module Fundamentals

Fundamental Design Principles

​

Creating robust, synthesizable, and maintainable RTL code requires understanding key design principles. Let's explore the fundamentals that every VLSI engineer must master.

​​

Sequential vs. Combinational Logic

​

Combinational Logic Design

​

Combinational logic output depends only on current inputs:

Verilog

Key Rules for Combinational Logic:

​

- Use `always @(*)` or `always_comb` (SystemVerilog)

​

- All outputs must be assigned in all branches

​

- Avoid latches by complete case statements

​

- No clock or reset in sensitivity list

​

Sequential Logic Design

​

Sequential logic output depends on current inputs and previous state:

Verilog

Key Rules for Sequential Logic:
 

- Use edge-triggered always blocks (`posedge`/`negedge`)
 

- Use non-blocking assignments (`<=`)
 

- Include proper reset logic
 

- Separate sequential and combinational logic

Blocking vs. Non-Blocking Assignments

This is one of the most critical concepts in Verilog:

Verilog

Golden Rules:
 

1. Use non-blocking (<=) for sequential logic (always @(posedge clk))
 

2. Use blocking (=) for combinational logic (always @(*))
 

3. Don't mix blocking and non-blocking in the same always block
 

4. Use blocking for continuous assignments in testbenches

State Machine Design

State machines are fundamental to digital design. Here's a proper implementation:

Verilog

FSM Design Best Practices:

 

1. Separate state register, next-state logic, and output logic
 

2. Use meaningful state names with parameters
 

3. Include default cases to avoid latches
 

4. Consider one-hot vs. binary encoding
 

5. Document state transitions clearly

Reset Strategies

Asynchronous Reset (Most Common)

 

Verilog

Synchronous Reset

Verilog

Parameterization for Reusability

Verilog

Clock Domain Crossing (CDC)

When signals cross clock domains, special care is needed:

Verilog

Design Module Checklist

​

  • Proper reset strategy (async/sync)  

​

  • Correct blocking/non-blocking usage  

​

  • Complete case statements (no latches)  

​

  • Parameterized for reusability  

​

  • Clock domain crossing handled  

​

  • Clear separation of sequential/combinational  

​

  • Meaningful signal names  

​

  • Comprehensive comments  

​

  • Synthesis guidelines followed

Module port mapping

Testbench creation techniques

© Copyright 2025 VLSI Mentor. All Rights Reserved.©

Connect with us

  • Instagram
  • Facebook
  • Twitter
  • LinkedIn
  • YouTube
bottom of page