Ece425 L26
Ece425 L26
Sensitivity list
• Architecture Specifications
• Expected behavior / functionality of design.
• RTL-level Design Verification (DV)
• Checks RTL design against specifications.
• Design engineers vs. verification engineers.
• Verification before synthesis.
• Testbench (TB)
• Assertions (SVA)
• Design under Test (DUT)
• Multidimensional Arrays
• C-style declaration: int array [16][8];
• SV-style declaration: int myarray [15:0][7:0];
• Packed vs unpacked: logic [31:0] myarray [15:0][7:0];
• Printing contents (see example testbench).
• Dynamic Arrays (non-Synthesizable)
• Declare without index range and use the new operator.
• Queues
• Similar to C++ standard library queues, declare with dollar sign: q[$]
• q.insert(); q.delete(); q.pop_front(); q.push_back();
• Output:
• Output:
• Associative Arrays
• Implements a lookup table (dictionary).
• Good for large arrays range where few elements are accessed.
• Declare using datatype in brackets: int assocarray [int];
• Linked Lists
• Avoid, use queues instead.
• Custom Types
• Declare custom types for your design.
• Example: typedef struct {logic [7:0] r, g, b;} pixel_type;
• pixel_type my_pixel // Declare my_pixel as type pixel_type
• my_pixel.r = 8’b00000000; // Assigning individual member of my_pixel
• Unions
• Different ways to interpret data (e.g., 32-bit logic could be integer or floating-point).
• Useful when you write data in different formats.
• typedef union { int i, logic [31:0] raw, real f } single_numtype;
• single_numtype my_number;
• my_number.f = 0.0; // Interpret my_number in float format and assign 0;
• Union Example.
• An assertion is a check
against specifications
• Improved Observability
• Check design locally.
• Bugs may not propagate.
• Early Bug Detection
• Write assertions during design.
• Assists Documentation
• Improved Reuse
• Formal Verification
TECH
Design Plan GTECH LIB Gate
High-level diagrams HDL Bool
and schematics NL
Architecture
Functional arch/uarch
description, simulator Synthesis Software
(e.g., Synopsys DC)
Physical Post-Silicon
RTL
Gate Level Implementation Bringup, signal
Structural and
Netlist Floorplan, layout, integrity, functional
behavioral HDL
CTS, PnR validation, perf.
• Synthesis is constraints-driven.
• You specify design targets via constraints.
• DC performs static timing analysis (STA).
• Checks all timing paths for best/worst-case.
• What to provide:
• Design files in HDL
• analyze (check synthax)
• Design constraints
• Covered later
/* --------------- *
* Design : AND2X1 *
* --------------- */
cell (AND2X1) { Cell Name
area : 2.346500; Cell Area
cell_leakage_power : 15.6059;
pin(A) {
direction : input;
capacitance : 0.00229149; Electrical
rise_capacitance : 0.00229149; Characteristics
fall_capacitance : 0.00187144; of Input Pins
}
pin(B) {
direction : input;
capacitance : 0.00234289;
rise_capacitance : 0.00234289;
fall_capacitance : 0.00182664;
}
pin(Y) {
direction : output;
capacitance : 0;
rise_capacitance : 0;
fall_capacitance : 0;
max_capacitance : 0.137429;
Adapted from gscl45nm.lib function : "(A B)"; Pin Y Functionality
ELECTRICAL & COMPUTER ENGINEERING GRAINGER ENGINEERING
DesignWare Library
• Clock Period
• 1/F
• Setup and Hold times
• Tsu & Th
• Slack
• Requirement – Arrival Time
• Clock Skew
• Delay from clock propagation
• Transition Time
• Signal transition time (rise / fall)
• Define a Clock.
• Must define clock source, clock period.
• Can also define duty cycle, offset / skew, clock name.
• create_clock -name "CLK" -period 1.000 -waveform { 0.500 1.000 } { clk }
• Use report_clock to see that you have successfully defined a clock.
• Will have separate lecture on multiple clock domains.
• Define a Clock. ✓
• Define I/O timing relative to clocks.
• Define a Clock. ✓
• Define I/O timing relative to clocks.
• DC calculates time constraints for internal logic.
• Use the set_input_delay command.
• set_input_delay -max 0.2 -clock CLK [get_ports inputA]
• Define a Clock. ✓
• Define I/O timing relative to clocks. ✓
• set_output_delay -max 0.3 -clock CLK [get_ports outputY]
• Architectural / Micro-architectural
• E.g., more pipeline stages.
• RTL-level
• See lecture on RTL design for synthesis.
• Resource sharing.
• Operator ordering.
• Flatten design.
• Remove unnecessary glue logic.
• Compile Effort
• Incremental (Bottom-up) Strategy
• Compile + set_dont_touch
• Can individually succeed! Adapted from Synopsys Website