Efficient Coding Techniques for High-Performance Digital Systems
350 likes | 435 Vues
Explore advanced coding concepts for synthesizing combinational logic efficiently using if and case statements, logic building blocks, and high-performance methods. Learn about resource sharing, arithmetic expression optimization, and tradeoffs in hardware implementations influenced by HDL coding. Discover Synopsys-specific strategies and directives for optimizing delays and area utilization in digital systems. References and examples illustrate effective coding practices for achieving optimal performance in digital system design.
Efficient Coding Techniques for High-Performance Digital Systems
E N D
Presentation Transcript
ECE 551: Digital System Design & Synthesis Lecture Set 7 7.1: Coding for if and case 7.2: Coding logic building blocks (In separate file) 7.3: High-Performance Coding (In separate file)
ECE 551 - Digital System Design & SynthesisLecture 7.1 Coding for Synthesis of Combinational Logic Overview • Premise • Basic coding for if and case • Synopsis case directives • Late signal arrival coding for if and case • Data, Control • Coding Logic Building Blocks • Decoder, Priority Encoder, Reduction XOR, Multiplexer • High-Performance Methods • Datapath Duplication, Operator in if condition • General Coding Issues • Resource Sharing • Arithmetic Expression Optimization
Premise • HDL coding influences the hardware implementations produced by synthesis • Affects figure of merit and tradeoff • FoM = delay x area • Delay/area tradeoff • Think hardware when coding! • Results are Synopsys specific!
References • Synopsys, Guide to HDL Coding Styles for Synthesis, version 2001.08, GHCS. • HDL Compiler for Verilog Reference Manual, version 2001.08 - Chapter 8, HCVR. • Design Compiler User Guide, version 2001.08 - Chapter 3, DCUG. • Can be referenced on CAE Unix: /afs/engr.wisc.edu/apps/eda/synopsys.2001.08/doc/online/
Basic Coding Using if and case • Example 1-1 GHCS • Multiplexer with multiple if’s • Figure 1-1 Resulting structure using SELECT_OP in cascade structure with effective priority encoding of selection. • Example 1-3 GHCS • Multiplexer with single if • Figure 1-2 Resulting structure using SELECT_OP and gates is “flattened,” but control that results is still priority encoded selection. • Example 1-5 GHCS • Uses casex to permit use of don’t caresin conditions • Control signals not priority encoded.
Example 1-1 Circuit: Cascade • Note last statement has highest priority! • Long worst case delay for both data and control
Example 1-3 Circuit: Single Select – Priority Decode • Note first condition has highest priority! • Short delays
Example 1-5 Verilog: Casex • Note use of casex and x’s to obtain optimized logic
Example 1-5 Circuit: Single Select • Priority encoded – first condition has highest priority • Short delays
Synopsys Case Directives • case (condition) // synopsys parallel_case • Eliminates the priority decoder • Selection lines go directly into Select Op • case (condition) // synopsys full_case • Declares that all “cases” are present • Prevents formation of latches
Late Signal Arrival Coding for if and case - Data • Objective - force smaller delay to output from “late arriving” data signal(s). • Example 2-1 GHCS • Multiplexer with multiple if’s • Figure 2-1 Resulting structure using SELECT_OP in cascade structure with late arriving data b forced to output - priority encoding behavior preserved.
Late-Arriving Data Verilog: Fixed • Original is Example 1-1: Late data b is far from output • Lateness of b and long logic delay add
Late signal arrival coding for if and case - Control • Objective - force smaller delay to output from “late arriving” control signal(s). • Example 2-3 GHCS • Multiplexer with single if • Figure 1-2 Resulting structure similar using SELECT_OP with “flattened” priority control logic • Example 2-5 GHCS • Multiplexer with single if • Figure 2-2 Resulting structure is decomposition with late arrival control closest to output. Note that delays are reduced due to smaller SELECT_OP due to lower gate fan-in.
Late-Arriving Control Verilog: Original • Original is Example 1-1: Late data b is far from output • Lateness of b and long logic delay add
Late signal arrival coding for if with nested case - Data • Objective - force smaller delay to output from “late arriving” data signal(s). • Example 2-7 GHCS • Complex selector with single if with nested case • Figure 2-3 Resulting structure is cascaded SELECT_OP • Example 2-9 GHCS • Decomposition placing selection of late data near output • Figure 2-4 Resulting structure has late arriving data passing through single 2-way SELECT_OP
Late-Arriving Data – If with Nested Case Verilog: Original - 1
Late-Arriving Data – If with Nested Case Verilog: Original - 2
Late-Arriving Data – If with Nested Case Circuit: Original - 2 • Late-arriving data passes through two Select_Op’s
Late-Arriving Data – If with Nested Case Circuit: Fixed • Late-arriving data enters last Select_Op
Late signal arrival coding for case with nested if – Control • Objective - force smaller delay to output from “late arriving” control signal(s). • Example 2-11 GHCS • Complex selector with single case with nested if • Figure 2-5 Resulting structure is cascaded SELECT_OP • Example 2-13 GHCS • Decomposition placing selection of late data near output • Table 2-1 Resulting design has lower delay and lower area(better FoM)
Late-Arriving Control – Case with Nested If Verilog: Original
Late-Arriving Control – Case with Nested If Circuit: Original
Late-Arriving Control – Case with Nested If Verilog: Fixed - 1
Late-Arriving Control – Case with Nested If Verilog: Fixed - 2
Late-Arriving Control – Case with Nested If Synth Data: Compare • Delay improved by 16% • Small area improvement
Summary • Area and timing are coding dependent • Learn to visualize hardware that results from code • Priority decoding • Natural due to the sequential processing of statements • Often not needed, so in such cases: • Learn how to avoid it to save area and time • Delay control can be done through coding