[译完] Rapid System Prototyping with FPGAs - 4.2
0赞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.
- Layout
- Signal integrity
- Clocks
- Pin assignments
- Margin: resources, clock, logic, memory, processor, performance, schedule, budget
- Estimation: Resources, schedule, budget, staffing/manpower
- Future design enhancement/expansion path
- Architectural implementation
- Validation verification
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.
- 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
4.2常见的设计挑战和错误
FPGA设计错误可以定义为:在特定的FPGA器件内,没能达到资源利用率(I/O资源、逻辑资源、存储资源、硬IP资源、resource area)和性能(速率/功耗)要求的设计。开发并遵循一个优化的FPGA设计流程,就可以最小化FPGA设计中的错误和疏忽的数量及影响。这一流程应该定义明确的设计步骤、设计阶段目标和设计最终目标。它应该使FPGA设计周期得到管理并稳定下来。下面 列出了与快速系统原型设计最相关的,影响FPGA设计的管理和开发过程的设计挑战。
常见的设计挑战: