• No results found

Synthesizable Verilog

N/A
N/A
Protected

Academic year: 2022

Share "Synthesizable Verilog"

Copied!
24
0
0

Loading.... (view fulltext now)

Full text

(1)

Unit- I

Verilog HDL

(part- II)

(2)

2

Synthesizable Verilog

The Verilog language has a number of features, most of which are supported by the simulation tools.

Unfortunately, several of the language constructs are not supported by synthesis tools.

▪ The language subset that can be synthesized is known as

“Synthesizable Verilog” subset.

Here we shall state the language features not supported by most of the synthesis tools.

▪ Best be avoided if the objective is to map the design to

hardware.

(3)

Synthesis Rules for Combinational Circuit

The output of combinational logic circuit at time t should depend upon the inputs applied at that time t.

Rules to be followed:

▪ Avoid technology dependent modelling ( i.e. implement functionality, not timing).

▪ There must not be any feedback in the combinational circuit.

▪ For “if….else” or “case” constructs, the output of the combinational function must be specified for all possible input cases.

▪ If the rules are not followed, the circuit may be synthesized

as sequential.

(4)

4

Styles for Synthesizable Combinational Logic

The possible styles for modelling combinational logic are as follows:

▪ Netlist of Verilog built-in primitives like gate instances (AND, OR, NAND, etc.).

▪ Combinational UDP ( not all synthesis tools support this).

▪ Continuous assignments.

▪ Functions.

▪ Behavioral statements.

▪ Tasks without event or delay control.

▪ Interconnected modules of one or more of the above.

(5)

Difference between Function and Task

Function Task

A function can call another function but not another task.

A task can call other tasks and functions.

A function executes in 0 simulation time.

A task may execute in non zero simulation time.

A function cannot contain any delay, event, or timing control statement.

A task can contain delay, event, or timing control statements.

A function always return a single value.

A task can pass multiple values through “output” and

“input” type arguments.

A function must have at least one input argument.

A task can have zero or more arguments of type “input”,

“output”, or “inout”.

(6)

6

Constructs to avoid for Combinational Synthesis

Edge-dependent event control.

Combinational feedback loops.

Procedural or continuous assignment containing event or delay control.

Procedural loops with timing.

Data dependent loops.

Sequential user defined primitives (UDPs).

Other miscellaneous constructs like “fork…join”, “wait”,

“disable”, etc.

(7)

Synthesizable Verilog Constructs

Non- Synthesizable Verilog Constructs

• “module……endmodule”

• Instantiation of a synthesizable module

• “always” construct

• “assign” statements

• Built-in gate primitives

• User defined primitives- combinational only

• “parameter” statement

• “functions” and “task”

• “for” loop

• Almost all operators

• Blocking and non-blocking assignments

• “if…..else”, “case”, “casex” and

“casez”

• Bits and part select of vectors

• “initial” construct

• Delays in assignments and test benches.

• “time” construct

• “real” data type

• The operators “===“ and “!==“

• “fork….join” constructs

• Variables in loop control

(8)

8

Memory Modeling in Verilog

How to model memory?

▪ Memory is typically included by instantiating a pre-designed module from a design library.

▪ Alternatively, we can model memories using two-dimensional arrays.

– Array of register variables (behavioral model).

– Mainly used for simulation purposes.

– Even used for the synthesis of small-size memories.

module memory_model (……..)

……..

reg [7:0] mem [0:1023]

…….

endmodule

module memory_model (……..) reg [7:0] mem [0:1023];

initial begin

mem[0] = 8’b01001101;

mem[4] = 8’b00000000;

end endmodule

(9)

How to initialize memory?

▪ By reading memory data patterns from a specified disk file.

– Used for simulation.

– Used in test benches.

▪ Two Verilog functions can be used:

$readmemb (filename, memname , startaddr, stopaddr)

(data is read in binary format)

$readmemh (filename, memname, startaddr, stopaddr)

(data is read in hexadecimal format)

– If “startaddr” and “stopaddr” are omitted, the entire memory is read.

module memory_model(……);

reg [7:0] mem[0 :1023];

initial begin

$readmemh (“mem.dat”,mem);

end endmodule

module memory_model(……);

reg [7:0] mem[0 :1023];

initial begin

$readmemb (“mem.dat”,mem, 200,50);

end endmodule

(10)

10

Example : Single port RAM with synchronous read/write

module ram_1 (addr, data, clk, rd, wr, cs);

input [9:0] addr;

inout [7:0] data;

reg [7:0] mem [1023:0];

reg [7:0] d_out;

assign data = (cs && rd) ? d_out : 8bz;

always @ (posedge clk)

if (cs && wr && !rd) mem(addr) = data;

always @ (posedge clk)

if (cs && rd && !wr) d_out = mem[addr];

endmodule

(11)

Example : Single port RAM with asynchronous read/write

module ram_1 (addr, data, rd, wr, cs);

input [9:0] addr;

input rd, wr, cs;

inout [7:0] data;

reg [7:0] mem [1023:0];

reg [7:0] d_out;

assign data = (cs && rd) ? d_out : 8’bz;

always @ (addr or data or rd or wr or cs)

if (cs && wr && !rd) mem[addr] = data;

always @ (addr or data or rd or wr or cs)

if (cs && rd && !wr) d_out = mem[addr];

endmodule

(12)

12

Example: A ROM/EPROM

module rom ( addr , data, rd_en , cs);

input [2:0] addr;

input rd_en, cs;

output reg [7:0] data;

always @ ( addr or rd_en or cs) case (addr)

0 : data = 22;

1 : data = 45;

………

7 : data = 12;

endcase endmodule

(13)

Some simulation or synthesis tools give inconsistent behavior when using the “inout” data types.

A better way design a memory unit is to keep the data input and data output bus signal lines separate.

▪ An example memory description with separate data

buses is shown on the next slide.

(14)

14 module ram_3 (data_out, data_in, addr, wr, cs);

parameter addr_size = 10, word_size = 8, memory_size = 1024;

input [addr_size-1 : 0] addr;

input [word_size-1 : 0] data_in;

input wr, cs;

output [word_size-1 : 0] data_out;

reg [ word_size-1 :0] mem [memory_size-1 : 0];

assign data_out = mem[addr];

always @ (wr or cs)

if (wr) mem[addr] = data_in;

endmodule

Example : 4

ram_3

data_in data_out addr

wr cs

(15)

Memory

Tri-state Buffer Tri-state Buffer

write

read

Bidirectional Data Bus data_in

data_out

• For bidirectional bus, tristate buffers can be included explicitly tri [7 :0] Bus;

wire [7 : 0] data_out , data_in;

assign Bus = read ? data_out : 8’hzz;

assign data_in = write ? Bus : 8’hzz;

(16)

16

Testing and Verification

To determine the presence of fault(s), not the absence of fault(s), in a given circuit.

▪ No amount of testing can guarantee that a circuit(chip, board or system) is fault-free.

▪ We carry out testing to increase our confidence in proper working of the circuit.

Verification is an alternative to testing, used to verify the correctness of a design.

▪ Simulation- based approach

▪ Formal methods.

(17)

Verification Testing Verifies correctness

of design

Verifies correctness of manufactured hardware.

Performed by

simulation, hardware emulation, or formal methods

Two part process:

• Test generation

• Test application

Performed once prior to manufacturing

Test application performed on every manufactured

device.

Responsible for quality of design

Responsible for quality of devices.

Basic testing principle

Circuit under test

comparator

Input patterns

Output response

Golden response

Good/bad

(18)

18

Levels of testing

Testing can be carried out at the level of:

▪ Chip

▪ Board

▪ System

Cost:: rule of 10

▪ It costs ten times to test a device as we move to the next higher level in the product manufacturing process.

Other ways to define levels:

▪ Important to develop correct fault models and simulation models.

– Transistor – Gate

– RTL

– Functional/behavioral

(19)

Fault Modelling

Actual number of physical defects in a circuit/chip are too many.

▪ Not possible to consider individually.

Some logical fault models are considered in practice.

▪ Drastically reduces the number of faults to be handled.

▪ Covers most of the possible physical faults.

The common fault models are:

(a) Stuck-at faults (b)Transistor faults

Single, multiple Open, short

(c) Memory faults (d) PLA faults

Coupling, pattern sensitive stuck-at, cross point, bridging

(e) Delay Faults (f) Functional faults

Transition, path

(20)

20

Stuck at faults

Some line(s) in the circuit are permanently stuck at logic 0 and logic 1 .

Two types:

▪ Single stuck-at faults

▪ Multiple stuck-at faults

Fault equivalence and Fault dominance

▪ Reduces the number of single stuck-at faults to be considered.

Why single stuck-at faults?

▪ Simpler to handled computationally.

▪ Reasonably good fault coverage.

– A test set for detecting single stuck-at faults detects a large percentage of multiple stuck-at faults as well.

(21)

Single stuck-at fault

Three properties defines a single stuck-at fault.

▪ Only one line is faulty at a time.

▪ The faulty line is permanently set to 0 or 1.

– Not of intermittent nature.

▪ The fault can at an input or output of a gate/module.

For a circuit with k lines, the total number of single stuck-at faults possible is 2k.

Most widely used fault model in the industry.

(22)

22

Fault Equivalence

Number of fault sites in a gate-level circuit

= #PI + #gates + #(fanout branches)

Fault equivalence:

▪ Two faults f1 and f2 are equivalent if all tests that detect f1 also detect f2.

▪ Example : An input s-a-0 and output line s-a-0 in an AND gate.

If faults f1 and f2 are equivalent then the corresponding faulty functions are identical.

Fault collapsing:

All single faults of a logic circuit can be divided into disjoint equivalence subsets.

All faults in a subset are mutually equivalent.

A collapsed fault set contains one fault from each equivalent subset.

(23)

Equivalence Rules

(24)

24

Home Assignment

Question.4

Implement EX-NOR and EX-OR using NOR gates. Find the

collapse ratio using fault equivalence model.

References

Related documents

While policies after the COVID-19 pandemic should support business efforts to build more resilient supply chains, equating localization or shortening of supply

The term fault is used to describe a discontinuity within rock mass, along which movement had happened in the past. The faults at the plate boundaries are the most likely locations

Percentage of countries with DRR integrated in climate change adaptation frameworks, mechanisms and processes Disaster risk reduction is an integral objective of

The Congo has ratified CITES and other international conventions relevant to shark conservation and management, notably the Convention on the Conservation of Migratory

These gains in crop production are unprecedented which is why 5 million small farmers in India in 2008 elected to plant 7.6 million hectares of Bt cotton which

INDEPENDENT MONITORING BOARD | RECOMMENDED ACTION.. Rationale: Repeatedly, in field surveys, from front-line polio workers, and in meeting after meeting, it has become clear that

The major electrical design parameters for a single circuit, delta conductor and narrow based tower configuration of 765 kV transmission lines is available in

The study is based on the comparison between the response under no fault and fault conditions for combined EHV and HVDC transmission (double circuit line) through simulink in MATLAB.