eitf35: introduction to structured vlsi design · •divide a system into smaller parts...

35
Lund University / EITF35/ Liang Liu 2013 EITF35: Introduction to Structured VLSI Design Part 3.1.2: VHDL-4 Liang Liu [email protected] 1

Upload: dinhtuyen

Post on 25-May-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Lund University / EITF35/ Liang Liu 2013

EITF35: Introduction to Structured

VLSI Design

Part 3.1.2: VHDL-4

Liang Liu

[email protected]

1

Lund University / EITF35/ Liang Liu 2013

Outline

Handling Large Designs: Hierarchical

Component

Generics

Configurations

Library and Package

2

Lund University / EITF35/ Liang Liu 2013

Large Scale Design?

3

Lund University / EITF35/ Liang Liu 2013

Hierarchical Design

4

Hierarchical design

•Divided-and-conquer strategy

•Divide a system into smaller parts

•Constructs each module independently

•Recursively: division process can be applied repeatedly and the

modules can be further decomposed

Conquer one

problem each time

Lund University / EITF35/ Liang Liu 2013

Hierarchical Design

5

Example: repetitive-addition multiplier

Lund University / EITF35/ Liang Liu 2013

Hierarchical Design: Advantage

6

Complexity management

•Focus on a manageable portion of the system, and analyze, design

and verify each module in isolation.

•Construct the system concurrently by a team of designers.

•Allows for more readable design files: top-level design file as a simple

integration of smaller building blocks

Design reuse

•Use predesigned modules or third-party cores (e.g., IP cores)

•Use the same module in different design or your future design

Lund University / EITF35/ Liang Liu 2013

VHDL Supporting Hierarchical Design

7

Relevant VHDL constructs

•Component

•Generic

•Configuration

•Library

•Package

•Subprogram

•The component, generic and configuration constructs help to

describe a hierarchical design.

•The library, package, and subprogram help the management

of complicated code

Lund University / EITF35/ Liang Liu 2013

Outline

Handling Large Designs: Hierarchical

Component

Generics

Configurations

Library and Package

8

Lund University / EITF35/ Liang Liu 2013

Component

9

Hierarchical design usually shown as a block diagram

•Specify the module used

•The interconnections among these parts

VHDL component describes structural description in text

How to use a component?

•Component declaration (make known)

•Component instantiation (create an instance)

Lund University / EITF35/ Liang Liu 2013

Component Declaration

10

Component declaration provides information about the external

interface of a component

•The input and output ports

•Relevant parameters

The information is similar to that provided in an entity declaration

component component_name is

generic(

generic_declaration;

generic_declaration;

);

port (

port_declaration;

port_declaration;

);

end component

Lund University / EITF35/ Liang Liu 2013

Component Initialization

11

Instantiate an instance of a component

•Provide a generic value

•Map formal signals to actual signals

Syntax

Port Map

instance_label: component_name

generic map(

generic_association;

generic_association;

)

port map(

port_association;

port_association;

);

o_q

o_pulse

i_en

i_clk

rst

port_name => signal_name

Lund University / EITF35/ Liang Liu 2013

Component: Design Example

12

Mod-100 counter: 0,1,2, … 98,99,0,1,2, … 98,99,0

Step1: block diagram design

• Design two mod-10 counter

• One for one-digit, one for ten-digit

• Controlled by enable signal: one-digit counter increment every clock, ten-

digit counter increment every ten clocks

Lund University / EITF35/ Liang Liu 2013

Component: Design Example

13

Step2: component design

0 1 9

T

0r_reg

en

pulse

Lund University / EITF35/ Liang Liu 2013

Component: Design Example

14

Step3: component declaration

Lund University / EITF35/ Liang Liu 2013

Component: Design Example

15

Step4: Instantiate and connect

Lund University / EITF35/ Liang Liu 2013

Component: Attention

16

Port Mapping

•Recommend one-to-one mapping (name association)

•Do NOT recommend direct association

•For unused port, keyword “open”

port_name => open

•Do NOT OPEN inputs

•Synthesis software should be able to optimize OPEN output

Lund University / EITF35/ Liang Liu 2013

Outline

Handling Large Designs: Hierarchical

Component

Generics

Configurations

Library and Package

17

Lund University / EITF35/ Liang Liu 2013

Generic

18

Mechanism to pass info into an entity/component

Declared in entity declaration and then can be used as a constant

in port declaration and architecture body

Assigned a value when the component is instantiated

Like a parameter, but HAS TO BE a CONSTANT

Example: step1 declaration

Lund University / EITF35/ Liang Liu 2013

Generic

19

Mechanism to pass info into an entity/component

Declared in entity declaration and then can be used as a constant

in port declaration and architecture body

Assigned a value when the component is instantiated

Like a parameter, but HAS TO BE a CONSTANT

Example: step1 declaration

Declare before port

Can be used in port declaration

Lund University / EITF35/ Liang Liu 2013

Generic

20

Mechanism to pass info into an entity/component

Declared in entity declaration and then can be used as a constant

in port declaration and architecture body

Assigned a value when the component is instantiated

Like a parameter, but HAS TO BE a CONSTANT

Example: step1 declaration

Declare before port

Can be used in port declaration

Lund University / EITF35/ Liang Liu 2013

Generic

21

Example: step 2 utilization

Can also be used to parameterize signals

within an architecture

Lund University / EITF35/ Liang Liu 2013

Generic

22

Example: step3 instantiation

Note the

semicolon “;”

Lund University / EITF35/ Liang Liu 2013

Outline

Handling Large Designs: Hierarchical

Component

Generics

Configurations

Function

Library and Package

23

Lund University / EITF35/ Liang Liu 2013

Configuration

24

Bind a component with an entity and an architecture•Bind a component with a design entity

•Bind the design entity with a body architecture

•Default binding

Not supported by all synthesis software

Suggestion: Use only in testbench•Testbench is reused by declaring a different configuration

•Examples:

Behavorial model

Gate-level model

Lund University / EITF35/ Liang Liu 2013

Configuration Daclaration

25

Lund University / EITF35/ Liang Liu 2013

Configuration-Example

configuration THREE of FULLADDER isfor STRUCTURAL for INST_HA1, INST_HA2: HAuse entity WORK.HALFADDER(CONCURRENT);

end for; for INST_XOR: XORuse entity WORK.XOR2D1(CONCURRENT);

end for; end for;

end THREE;

26

entity name and

component name differs

Lund University / EITF35/ Liang Liu 2013

Suggestion:

27

One entity per file, file name the same with entity name

Do NOT put critical path between component

Lund University / EITF35/ Liang Liu 2013

Outline

Handling Large Designs: Hierarchical

Component

Generics

Configurations

Library and Package

28

Lund University / EITF35/ Liang Liu 2013

Used to declare and store:

•Components

•Type declarations

•Functions

•Procedures

Packages and libraries provide the ability to reuse constructs

in multiple entities and architectures

Libraries and Packages

29

Lund University / EITF35/ Liang Liu 2013

Library is a place to which design units may be compiled

Two predefined libraries are the IEEE and WORK libraries

WORK is the default library

IEEE standard library contains the IEEE standard design units.

• std_logic_1164

• numeric_std

IEEE is non-default library, must be declared:

Design units within the library must also be made visible via

the use clause.

Libraries

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

30

Lund University / EITF35/ Liang Liu 2013

Packages

Declarations in an architecture •Consist of the declarations of constants, data types, components,

functions and so on

•Must be duplicated in many different design units, for hierarchical

design

Packages•Organize and store declaration information

Data type

Function

constant

31

Lund University / EITF35/ Liang Liu 2013

Package declaration may contain

Basic declarationsSignal declarations

Attribute declarationsComponent declarations

Types, subtypes Constants SubprogramsUse clause

Packages Declaration

32

Lund University / EITF35/ Liang Liu 2013

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

package my_package is

type binary is (on, off);

constant C_ROUTING_ID_BITS: integer := 3;

component counter_dec is

generic (constant WIDTH: integer);

port (

clk_in, rst_n: in std_logic;

en: in std_logic;

q: out std_logic_vector (WIDTH-1 downto 0);

puls: out std_logic

);

end component;

end my_package;

Packages Declaration: Example

33

Lund University / EITF35/ Liang Liu 2013

A package is made visible using the use clause

use the binary and counter_dec declarations

use work.my_package.binary;

use work.my_package.counter_dec;

... entity declaration ...

... architecture declaration ...

use all of the declarations in package my_package

use work.my_package.all;

... entity declaration ...

... architecture declaration ...

Package: How to use?

use library_name.package_name.item

34

Lund University / EITF35/ Liang Liu 2013

Reading advice

35

FSMD: RTL Hardware Design Using VHDL, Chapter 11,

P373-P420

Hierarchical VHDL: RTL Hardware Design Using VHDL,

Chapter 13, P473-P498