verilog synthesis - twikiwiki.di.uminho.pt/.../08-victorwinter-verilog-demo.pdfoverview of a...

42
A Quick Tutorial on TL Overview of a Synthesis Problem Design and Implementation Verilog Synthesis Summer School on Generative and Transformational Techniques in Software Engineering, 2005 Verilog Synthesis

Upload: others

Post on 02-Oct-2020

22 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Verilog Synthesis

Summer School on Generative and TransformationalTechniques in Software Engineering, 2005

Verilog Synthesis

Page 2: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Outline

1 A Quick Tutorial on TL

2 Overview of a Synthesis Problem

3 Design and Implementation

Verilog Synthesis

Page 3: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

The Signature of a Rewrite Rule

Definition

From the perspective of type, a labelled rewrite rule has theform:

id : pattern → sn [ if Boolean ]

the type id is the set of identifiers

the type pattern is the set of parse expressions over agiven grammar

the type sn is the set of strategies of order n

the Boolean condition is optional

Verilog Synthesis

Page 4: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

The Signature of a Rewrite Rule

Definition

From the perspective of type, a labelled rewrite rule has theform:

id : pattern → sn [ if Boolean ]

the type id is the set of identifiers

the type pattern is the set of parse expressions over agiven grammar

the type sn is the set of strategies of order n

the Boolean condition is optional

Verilog Synthesis

Page 5: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Parse Expression : Pattern

Definition

A parse expression is a notation for describing parse trees(concrete syntax trees). Parse expressions are of type pattern .

Let G = (N, T , P, S) denote a context-free grammar.Aid is a parse expression if A ∈ N. In the context ofmatching, the parse expression Aid is a variable quantifiedover the set {α | A ∗⇒

Gα ∧ α ∈ T ∗}

AJα′K is a parse expression if A +⇒G

α The parse expression

AJα′K is quantified over the set {β | A +⇒G

α∗⇒G

β ∧ β ∈ T ∗}

Verilog Synthesis

Page 6: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Parse Expression : Pattern

Definition

A parse expression is a notation for describing parse trees(concrete syntax trees). Parse expressions are of type pattern .

Let G = (N, T , P, S) denote a context-free grammar.Aid is a parse expression if A ∈ N. In the context ofmatching, the parse expression Aid is a variable quantifiedover the set {α | A ∗⇒

Gα ∧ α ∈ T ∗}

AJα′K is a parse expression if A +⇒G

α The parse expression

AJα′K is quantified over the set {β | A +⇒G

α∗⇒G

β ∧ β ∈ T ∗}

Verilog Synthesis

Page 7: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Parse Expression Examples

stmtS ::= stmt stmtS | ()stmt ::= blocking_assign “;” | par_block | ...par_block ::= “fork” stmtS “join”blocking_assign ::= lvalue “=” Elvalue ::= ...E ::= id | ......

stmtS1

stmtSJstmt1 stmtS1KstmtSJblocking_assign1; stmtS1KstmtSJlvalue1 = E1; stmtS1KstmtSJlvalue1 = E1; KstmtSJstmt1 stmt2 stmt3 stmt4K

Verilog Synthesis

Page 8: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Strategic Expression: Strategy

Definition

A strategic expression is an expression whose evaluationyields a strategy . A strategic expression of order n has type sn.

s0 = a pattern

sn+1 = lhs → sn

s1 is a first-order strategy

s2 is a second-order strategy

sn where n > 1 is a higher-order strategy

the result of applying a strategy of type sn+1 to a tree t is astrategy of type sn

Verilog Synthesis

Page 9: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Strategic Expression: Strategy

Definition

A strategic expression is an expression whose evaluationyields a strategy . A strategic expression of order n has type sn.

s0 = a pattern

sn+1 = lhs → sn

s1 is a first-order strategy

s2 is a second-order strategy

sn where n > 1 is a higher-order strategy

the result of applying a strategy of type sn+1 to a tree t is astrategy of type sn

Verilog Synthesis

Page 10: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

An Example of a First-Order Strategy

wrap: stmtJ blocking_assign1; K → stmtJ fork blocking_assign1; join K

stmtS ::= stmt stmtS | ()stmt ::= blocking_assign “;” | par_block | ...par_block ::= “fork” stmtS “join”blocking_assign ::= lvalue “=” Elvalue ::= ...E ::= id | ......

Verilog Synthesis

Page 11: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

An Example of a Second-Order Strategy

propagate: blocking_assignJ id1 = E1 K → EJ id1 K → E1

stmtS ::= stmt stmtS | ()stmt ::= blocking_assign “;” | par_block | ...par_block ::= “fork” stmtS “join”blocking_assign ::= lvalue “=” Elvalue ::= ...E ::= id | ......

Verilog Synthesis

Page 12: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Constructing Strategies

Definition

Combinators are operators that can be used to constructstrategies

Symbol Description Example<+ left-biased choice s1 <+ s2

+> right-biased choice s1 +> s2

<; left-to-right sequential composition s1 <; s2

;> right-to-left sequential composition s1 ;> s2

transient a unary combinator transient(s)hide a unary combinator hide(s)

Verilog Synthesis

Page 13: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

A Bottom-up Left-to-right(BUL) Generic Traversal

1 2

3

4 5

6

7 8

9

Verilog Synthesis

Page 14: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

A Top-down Left-to-right(TDL) Generic Traversal

3 4

2

7 8

6

5 9

1

Verilog Synthesis

Page 15: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

TDL Traversal from a Strategic Perspective

s

s1

0

s2

s3

s4 s5

s6

s7

Verilog Synthesis

Page 16: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

TD Traversal from a Strategic Perspective

s

s' s' s'

Verilog Synthesis

Page 17: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

First-Order Strategy Application

S1

Verilog Synthesis

Page 18: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Definitions of Some First-Order Traversals

def BUL s = all_thread_left(BUL{s}) <; s

def TDL s = s <; all_thread_left(TDL{s})

def Special_TD s = (par_block1 → TDL{s}(par_block1))<+all_broadcast(Special_TD{s})

Verilog Synthesis

Page 19: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Higher-Order Strategy Application

Sn+1 S1n

Sn+1 S2n

... ...Sn+1 Sm

n

Verilog Synthesis

Page 20: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Higher-Order Strategy Composition

S1n S2

n ... Smn

Verilog Synthesis

Page 21: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

A Taxonomy of Some Generic Higher-Order Traversals

Traversal bottom-up top-down left-to-right right-to-left ⊕rcond_tdl

√ √+>

rcond_tdr√ √

+>

lcond_tdl√ √

<+

lcond_tdr√ √

<+

rcond_bul√ √

+>

rcond_bur√ √

+>

lcond_bul√ √

<+

lcond_bur√ √

<+

lseq_tdl√ √

<;

lseq_tdr√ √

<;

lseq_bul√ √

<;

lseq_bur√ √

<;

Verilog Synthesis

Page 22: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Verilog Synthesis

Verilog Synthesis

Page 23: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

An Overview of Verilog

Verilog is a hardware hardware description language (HDL)

Verilog has a C-like syntax

Verilog has constructs to describe parallel computation andsequential computation

The items in a module execute in parallel (e.g., continuousassignment statements and always statements)Blocks of the form Jbegin ... endK execute the statements intheir bodies in sequential orderBlocks of the form Jfork ... joinK execute the statements intheir bodies in parallel

Verilog Synthesis

Page 24: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

An Overview of Verilog

Verilog is a hardware hardware description language (HDL)

Verilog has a C-like syntax

Verilog has constructs to describe parallel computation andsequential computation

The items in a module execute in parallel (e.g., continuousassignment statements and always statements)Blocks of the form Jbegin ... endK execute the statements intheir bodies in sequential orderBlocks of the form Jfork ... joinK execute the statements intheir bodies in parallel

Verilog Synthesis

Page 25: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

An Overview of Verilog

Verilog is a hardware hardware description language (HDL)

Verilog has a C-like syntax

Verilog has constructs to describe parallel computation andsequential computation

The items in a module execute in parallel (e.g., continuousassignment statements and always statements)Blocks of the form Jbegin ... endK execute the statements intheir bodies in sequential orderBlocks of the form Jfork ... joinK execute the statements intheir bodies in parallel

Verilog Synthesis

Page 26: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

An Overview of Verilog

Verilog is a hardware hardware description language (HDL)

Verilog has a C-like syntax

Verilog has constructs to describe parallel computation andsequential computation

The items in a module execute in parallel (e.g., continuousassignment statements and always statements)Blocks of the form Jbegin ... endK execute the statements intheir bodies in sequential orderBlocks of the form Jfork ... joinK execute the statements intheir bodies in parallel

Verilog Synthesis

Page 27: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

An Overview of Verilog

Verilog is a hardware hardware description language (HDL)

Verilog has a C-like syntax

Verilog has constructs to describe parallel computation andsequential computation

The items in a module execute in parallel (e.g., continuousassignment statements and always statements)Blocks of the form Jbegin ... endK execute the statements intheir bodies in sequential orderBlocks of the form Jfork ... joinK execute the statements intheir bodies in parallel

Verilog Synthesis

Page 28: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

An Overview of Verilog

Verilog is a hardware hardware description language (HDL)

Verilog has a C-like syntax

Verilog has constructs to describe parallel computation andsequential computation

The items in a module execute in parallel (e.g., continuousassignment statements and always statements)Blocks of the form Jbegin ... endK execute the statements intheir bodies in sequential orderBlocks of the form Jfork ... joinK execute the statements intheir bodies in parallel

Verilog Synthesis

Page 29: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Synthesis Goals

Goal

Develop a transformation-based synthesis system that removessequential computation from Verilog programs

Goal

Construct a transformation whose manipulations are guided bycorrectness-preserving algebraic laws

Verilog Synthesis

Page 30: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Synthesis Goals

Goal

Develop a transformation-based synthesis system that removessequential computation from Verilog programs

Goal

Construct a transformation whose manipulations are guided bycorrectness-preserving algebraic laws

Verilog Synthesis

Page 31: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Synthesis Example: Source

module example (out1, out2, in, cs );input in;output out1, out2;

always@(*) begin

out1 = !cs;ns = out1;out2 = !out1 || c2;if (cs ==0) out2 = !out1;else ns = 0;

end

endmodule

Verilog Synthesis

Page 32: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Intermediate Form

module example(out1, out2, in, cs);input in;output out1, out2;always@(*) begin

fork out1 = !cs; ns = ns; out2 = out2; joinfork ns = out1; out1 = out1; out2 = out2; joinfork out2 = !out1 || c2; out1 = out1; ns = ns; joinif ( cs == 0 ) fork out2 = !out1; out1 = out1; ns = ns; joinelse fork ns = 0; out1 = out1; out2 = out2; join

endendmodule

Verilog Synthesis

Page 33: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Target

module example(out1, out2, in, cs);input in;output out1 , out2;always@(*) begin

forkns = (cs == 0) ? !cs : 0;out1 = (cs == 0) ? !cs : !cs;out2 = (cs == 0) ? !!cs : !!cs || c2;

join

endendmodule

Verilog Synthesis

Page 34: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

LawParallel assignment completion.(x , y , ... := e, f , ...) = (x , y , ..., z := e, f , ..., z)

LawParallel assignment reordering.

(x , ..., y , z, ... := e, ..., f , g, ...) = (x , ..., z, y , ... := e, ..., g, f , ...)

Verilog Synthesis

Page 35: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

LawParallel assignment constant propagation.(→v := g;

→v := h(

→v )) = (

→v := h(g)) where

→v is an assignment

state.

Law

Conditional constructor elimination.((~v := g) C c B (~v := h)) = (~v := (g C c B h))

Verilog Synthesis

Page 36: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

A Verilog Grammar Fragment

modulee ::= module module_id “;” m_item_0orMore endmodulem_item_0orMore ::= module_item m_item_0orMore | ()module_item ::= continuous_assign | always_stmt | ...continuous_assign ::= “assign” lvalue “=” E “;”always_stmt ::= “always” stmtstmtS ::= stmt stmtS | ()stmt ::= blocking_assign “;” | seq_block | par_block | ...seq_block ::= “begin” stmtS “end”par_block ::= “fork” stmtS “join”blocking_assign ::= lvalue “=” E...

Verilog Synthesis

Page 37: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Transformations yielding Assignment Normal Form

synthesize: BUL{ wrap <; Law1 } <; BUL{ Law3 <; Law4 }

wrap: stmtJ blocking_assign1; K→stmtJ fork blocking_assign1; join K

Verilog Synthesis

Page 38: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Law1: modulee0

→Special_TD{ lseq_bul{ make_total }[modulee0] }(modulee0)

make_total: blocking_assignJid1 = E1K → transient(check[id1] <+ add[id1])

check: id1 → stmtSJ id1 = E2 ; stmtS3 K → stmtSJ id1 = E2 ; stmtS3 K

add: id1 → stmtSJ K → stmtSJ id1 = id1; K

Verilog Synthesis

Page 39: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Law3: stmtSJ par_block1 par_block2 K→BUL{lseq_tdl{propagate}[par_block1] }(stmtSJ par_block2 K )

propagate: blocking_assignJ id1 = E1 K → EJ id1 K → E1

Verilog Synthesis

Page 40: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Law4: stmtJ if ( E1 ) stmt1 else stmt2K→BUL{ lseq_bul{ convert[E1] }[stmt1] }(stmt2)

convert E0

blocking_assignJ id1 = E1K:blocking_assignJ id1 = E2K→blocking_assignJ id1 = ( E0 ) ? E1 : E2K

Verilog Synthesis

Page 41: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

A Quick Tutorial on TLOverview of a Synthesis Problem

Design and Implementation

Result Summary

out1 = !cs;ns = out1;out2 = !out1 || c2;if (cs ==0) out2 = !out1;else ns = 0;

forkns = (cs == 0) ? !cs : 0;out1 = (cs == 0) ? !cs : !cs;out2 = (cs == 0) ? !!cs : !!cs || c2;

join

Verilog Synthesis

Page 42: Verilog Synthesis - TWikiwiki.di.uminho.pt/.../08-VictorWinter-Verilog-Demo.pdfOverview of a Synthesis Problem Design and Implementation An Overview of Verilog Verilog is a hardware

Appendix For Further Reading

For Further Reading I

J. Kyoda and H. JifengTowards an Algebraic Synthesis of VerilogTechnical Report, UNU/IIST Report No. 218, 2001.

V. L. Winter and M. SubramaniamDynamic Strategies, Transient Strategies, and theDistributed Data Problem.Science of Computer Programming (Special Issue onProgram Transformation), 52:165–212, Elsevier, 2004.

V. L. WinterStrategy Construction in the Higher-Order Framework ofTL.Electronic Notes in Theoretical Computer Science(ENTCS), 124(1), 2004

Verilog Synthesis