top of page
15.5. Best Practices and Guidelines
Function Best Practices
-
Use for combinational logic and calculations
-
Keep functions pure (no side effects)
-
Use descriptive names (calculate_parity, not f1)
-
Document expected input ranges
-
Avoid complex nested functions
Task Best Practices
-
Use for testbench stimulus/checking
-
Use automatic for fork-join scenarios
-
Clearly document timing behavior
-
Group related protocol operations
-
Use meaningful parameter names
General Guidelines
-
Use automatic by default in modern code
-
One task/function per operation
-
Keep them focused and simple
-
Comment complex logic
-
Test thoroughly
15.5.1. Common Mistakes and Solutions
Mistake #1: Timing Controls in Functions
Verilog
Mistake #2: Forgetting 'automatic' for Recursion
Verilog
Mistake #3: Using Task Call in Expression
Verilog
Mistake #4: Not Returning Value in Function
Verilog
bottom of page
