FPGA Timing Optimization Tips for FSM(D) Implementation

intel devcloud training module fpga timing l.w
1 / 4
Embed
Share

"Discover valuable timing optimization tips for Finite State Machine (FSM) design, focusing on assignment strategies, register handling, and general timing techniques. Learn from Greg Stitt, a Professor at the University of Florida, in this insightful module from Intel DevCloud Training." (255 characters)

  • FPGA
  • Timing Optimization
  • FSM
  • Greg Stitt
  • Intel

Uploaded on | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Intel DevCloud Training Module FPGA Timing Optimization Misc FSM(D) Timing Tips Greg Stitt Professor Department of Electrical and Computer Engineering University of Florida

  2. FSM(D) Timing Optimizations Only do an assignment on a transition if necessary case (state_r) START : begin if ({a,b,c,d} == 4'b1) begin count_r <= COUNT_BITS'(1); done_r <= 1'b0; state_r <= COMPUTE; end end .. case (state_r) START : begin count_r <= COUNT_BITS'(1); if ({a,b,c,d} == 4'b1) begin done_r <= 1'b0; state_r <= COMPUTE; end end .. d state_r[0] a b c en en state_r[0] count_r count_r AND If FPGA doesn t have a 5-input LUT, requires a hierarchy of smaller LUTS => extra delay *Assumes one-hot state encoding and that state_r[0] corresponds to START

  3. FSM(D) Timing Optimizations Don t assign a register in a state if the assignment isn t needed Each state where register is assigned becomes part of enable and/or mux logic Usually happens from repeated clearing of register in multiple states 1 case (state_r) STATE0 : begin count_r <= COUNT_BITS'(0); ... state_r <= STATE1; end STATE1 : begin count_r <= COUNT_BITS'(1); ... state_r <= COMPUTE; end STATE2 : begin count_r <= count_r + 1 b1; ... end + 0 1 state_r[2] state_r[1] state_r[0] en count_r OR

  4. FSM(D) Timing Optimizations Apply general timing optimization techniques Don t chain multiple dependent operations together in a state Register outputs when control allows for it Don t reset everything, only state and validity information Use register duplication for high fanout Convert logic inputs to constants wherever possible e.g., comparing a count with a variable instead of a constant

More Related Content