################################################
# 1) The Fundamentals of Efficient Synthesizable Finite State Machine Design using NC-Verilog and BuildGates
################################################
Style | Usage | Reason |
one always block | dont use | 1) more verbose |
two always block | to code FSM designs with combinational outputs | 1) efficient |
three always block | to code FSM designs with registered outputs | 1) efficient |
################################################
# 2) Coding And Scripting Techniques For FSM Designs With Synthesis-Optimized, Glitch-Free Outputs
################################################
Reason for register the output of FSM |
################################################
# 3) Synthesizable Finite State Machine Design Techniques Using the New SystemVerilog 3.0 Enhancements
################################################
1.0 Introduction | 1.1 FSM Coding Goals |
2.0 Review of standard Verilog FSM coding styles | 2.1. Two always block style with combinational outputs (Good Style) |
3.0 fsm7 Example | one always blocks style (Avoid this style!) |
4.0 fsm8 Example | one always blocks style (Avoid this style!) |
5.0 prep4 Example | one always blocks style (Avoid this style!) |
6.0 Coding benchmarks for standard FSM coding styles | best: output encoded style |
7.0 Synthesis benchmarks for standard FSM coding styles | Timing & Area |
8.0 DC-Ultra 2002.05 FSM Tool |
|
9.0 Verliog-2001 Enhanced Coding Styles |
|
10.0 SystemVerilog enhancements |
|
11.0 Implicit port connections |
|
12.0 FSM coding with SystemVerilog 3.0 | x = all X's, 'z = all Z's and '1 = all 1's |
13.0 Ask your vendor to support SystemVerilog, NOW! | |
14.0 Conclusions | Guideline: do not use the one always block FSM coding style. |
15.0 fsm7 Verilog & SystemVerilog code | RTL Code Example of different styles |
16.0 fsm8 Verilog & SystemVerilog code | RTL Code Example of different styles |
17.0 prep4 Verilog & SystemVerilog code | RTL Code Example of different styles |