4.2 Common Design Challenges and Mistakes An FPGA design mistake may be defined as a design that does not achieve the desired ratio of FPGA resource utilization (I/O, logic, memory, hard IP, resource area) and performance (speed/power) implemented within the FPGA device. The number and impact of FPGA design mistakes and oversights may be minimized by developing and consistently following a optimized FPGA design process. The design process should call out design procedures, milestones and design objectives. It should help manage and stabilize the FPGA design cycle. These design challenges most relevant to rapid development that impact the management and development of an FPGA design are listed below.
At a system engineering level, common mistakes generally occur when adequate design preparation and planning do not occur. The result is an unstable development effort where schedule slips and missed design objectives hamper the success of the project. The resulting design failures occurring from these common mistakes impact design efforts and add significant risk. Usually, this haste is brought about by an overly aggressive schedule, a result of wishful thinking brought about by pressure to produce a product meeting unrealistic goals. Designers should avoid common mistakes resulting from aggressive schedule pressure. Following are some common design mistakes to watch for and avoid.
Common Design Mistakes
Starting an FPGA design in earnest before the requirements are sufficiently defined
System requirement changes that are not "rolled down" to the FPGA requirements
FPGA requirement updates that are not effectively communicated to the design team
Too many FPGA requirement changes
Significant FPGA requirement changes too far into the design cycle
Allowing too many people to change FPGA design requirements
Insufficient review of FPGA design change impacts
Poor or inconsistent HDL coding standard application
Poor or inconsistent HDL source structure (system architecture)
Poor or incorrect commenting of HDL source
Inefficient HDL coding style
Poor partitioning of design functionality between hardware and software functions
Poor partitioning of design functionality between fixed-function and programmable design components
Poor planning for design module and IP function block integration
Poor planning for design verification (debug & test)
Poor selection of design tools
Insufficient / Ineffective training of design team staff
Poor design documentation
Not enough design margin (resources, schedule, budget, personnel)
Poor design team staffing
Unclear design responsibility assignment
Allowing the same individual to implement and test a design module
Over-constraining a design
Poor or incomplete module-to-module interface within the FPGA device
Poor or incomplete FPGA to board-level signal and circuitry interface definition
Incomplete analysis or implementation of pre-configuration I/O signal state for FPGA I/O pins
Incorrect pin assignments at the FPGA component level
Incorrect FPGA device footprint signal, power or ground connectivity within the target board PCB
Overly aggressive design schedule
Performance requirements too close to the theoretical maximum performance of a family device or technology
ash_riple_768180695 2009-4-12 08:33
ash_riple_768180695 2009-4-9 23:54
ilove314_323192455 2009-4-9 22:58