Professional Documents
Culture Documents
Lec19 Cad Tools New PDF
Lec19 Cad Tools New PDF
Reading
– Part of the lecture comes from Text 14.4
Logic Synthesis
Gate level
(netlist) Chips
Levels of
Abstraction
Intro. VLSIPlace &Design
System Route
Architectural Level
Procedural (Architectural Level) Languages
– Primitives are functions and variables
– Gives an algorithmic description of the design
• Important special case is Register Transfer Languages
(RTL)
• Registers hold the variables
• Arithmetic units perform the operations on the variables
Symbolic Languages
– Slightly higher level than transistors
• E.g. PLA dot diagram
– Usually specialized for specific layout styles
CIF example
ECE 425 Intro. VLSI System Design Slide 12
CAD Tools
Modern design systems use a variety of CAD tools, including:
Design-capture tools
– These tools help translate an idea into a high-level design
description
Synthesis tools
– These tools translate a higher-level description into a lower-
level one
Verification tools
– These tools verify that a lower-level implementation is
equivalent to a higher-level one
Typically, the design process is not completely automated.
Instead, the various CAD tools are used at the designer’s
discretion to facilitate and validate the design tasks.
CAD tools need to understand both the language and the
primitives that the language refers to
ECE 425 Intro. VLSI System Design Slide 13
Design Capture Tools
Design-capture tools are the first tools to be used.
They provide an interface between what the designer
has in mind and the high-level design description.
There are two general methods of design capture
Textually: body of code Schematically: graphical
High-level
Synthesis
High-level
Verification
High-level
Synthesis
High-level
Verification
[1] H. D. Foster. Trends in functional verification: A 2014 industry study. In DAC, 2015.
• Simulation tools
• Timing verification tools
• Formal verification tools
checkData()
Synthesis, P&R Compile, Link
}
Implement System
HLS
Editor Directives
Explorer
File Explorer
Console Display
void vectoradd(float
a[1000], float b[1000],
float c[1000])
{
int i=0;
for(i=0; i<1000; i++)
#pragma HLS UNROLL
c[i] = a[i] + b[i];
}
Next lecture
– High-Level Synthesis (1)