SlideShare a Scribd company logo
1 of 21
Click to add Title
Simulation vs Synthesis Synthesizable and
Non-Synthesizable Construct
Jatin Adroja
Keval Vaishnav
Nilesh Ramani
e-Infochips Institute of Training Research and Academics Limited
2
Outlines
Introduction to Simulation & Synthesis
1
Simulation vs Synthesis
2
Sinthesizable Construct in Verilog
3
Non-Synthesizable Construct in verilog
4
Introduction to Simulation
●
What is simulation?
Process of creating models to that mimic the behaviour of the
device
●
Why Simulation is required?
To verify the code & gate level design
3
Introduction to Synthesis
●
What is synthesis?
Process of converting high level description of design into
an optimized gate-level representation.
●
Why Synthesis is required?
To convert RTL code into gate level design
4
Simulation vs Synthesis
There are two kinds of simulation
1- behavioural (functional) simulation which is done pre-
synthesis
2- Timing simulation which is done post-synthesis to ensure
that it has achieved the required timing.
5
Pre-Synthesis
Simulation
Synthesis
Post-Synthesis
Simulation
Simulation vs Synthesis
6
RTL Design Code
Synthesis =
Translation +
Optimization + Technology Mapping
Generic Boolean
(No timing Info)
Translate
(HDL Compiler)
Target Device
(Timing Info)
Optimize+Mapping
(HDL Compiler)
Simulation vs Synthesis
● Translation
RTL to gate-level net-lists
● Optimization:
Technology-independent logic-level optimization to
reduce hardware for required functionality.
● Technology Mapping:
Technology-independent net-lists are transformed into
technology-dependent ones.
7
Simulation vs Synthesis
Outputs
8
Synthesis
Schematics
Net-lists
Reports
Pre-Synthesis
Simulation
Post-Synthesis
Simulation
Functionality
Check
Functionality
Check with
Timing Info
What is Synthesizable?
●
Combine things to make a whole...
●
Ex. You read many books and combine them all the
information into the one report.
●
Ex. Electronic keyboard produce the sound of drum and
violin this is example of a case where the keyboard
synthesize the instruments.
9
Synthesizable
●
Verilog allows several ways to describe one thing, Synthesis
tools often require only a limited subset of constructs;
●
Example: R
●
Registers and Flip Flops must be described in a certain
way
10
How can i know if my code is synthesizable [verilog]?
●
Structural verilog typically means you are creating
description close to a netlist and the constructs you would
use in this case are a small subset of those that are
synthesizable.
●
Structural , Behaviour are non-synthesizable
●
However, these two model can simulate........???
●
Behaviour Models : Higher level of modelling where
behaviour of logic is modelled
●
RTL Models : Logic is modelled at register level
●
Structural Models : Logic is modelled at both register level
and gate level.
11
Construct Supported in Synthesis
12
no Construct Type Keyword or Description note
1 ports Input,inout,output Input only IO level
2 parameters parameter This makes design more
generic
3 module definition module
4 signals and
variables
wire, reg, tri Vectors are allowed
5 instantiation module instances /
primitive gate instances
E.g.- nand (out,a,b), bad idea to
code RTL this way.
6 function and
tasks
function , task Timing constructs ignored
Construct Supported in Synthesis
13
no Construct Type Keyword or Description note
7 procedural always, if, else, case,
casex, casez
initial is not supported
8 procedural blocks begin, end, named
blocks, disable
Disabling of named blocks
allowed
9 data flow assign Delay information is ignored
10 named Blocks disable Disabling of named block
supported.
11 loops for, while, forever While and forever loops must
contain @(posedge clk) or
@(negedge clk)
Construct not Supported in Synthesis
14
Construct Type Notes
initial Used only in test benches.
events Events make more sense for syncing
test bench components.
real Real data type not supported.
time Time data type not supported.
force and release Force and release of data types not
supported.
fork join Use non-blocking assignments to get
same effect.
primitives Only gate level primitives are
supported.
table UDP and tables are not supported.
Non Synthesizable verilog Construct
●
The verilog code which contains non-synthesizable elements
can be defined as non synthesizable verilog constructs.
15
Non Synthesizable element
●
Basic :–
System tasks :- $display
$random
$monitor
real constants :- floating point numbers,
●
Data-types :–
Real :- ::= real < list of reg >, floating point operations,
Time :- Time quantities in i.e. $time
Event :- wait event
●
Modual instances :– Delay on built in gate
16
Non Synthesizable element
●
Primitives :–
UDPs, pullup, pulldown, pmos, nmos, cmos, rpmos, etc
●
Reduction Operations :-
'===' :- concider 'x' and 'z' values
' !== ' :- notconcider 'x' and 'z' values
% :- module,
/ :- division
●
Event control :-
Event trigger ( -> ), Delay and wait ( # )
17
Non Synthesizable element
●
Continuous assignments :-
using delay :- delay is not synthesizable.
●
Procedural blocks :-
initial :- start execution at time zero.
●
Procedural statements :-
fork – join :- parallel execution cause RASE condition.
●
Procedural assignments :-
assign – deassign :- used to model in combinational logic.
18
References
http://iverilog.wikia.com/wiki/Simulation
http://www.asic-world.com/verilog/tools.html
http://www.asic-world.com/verilog/synthesis2.html
http://people.sabanciuniv.edu/erkays/el310/SimSyn_03.pdf
19
Questions?
Thank you

More Related Content

What's hot

Functional Programming in JavaScript & ESNext
Functional Programming in JavaScript & ESNextFunctional Programming in JavaScript & ESNext
Functional Programming in JavaScript & ESNextUnfold UI
 
Verilog TASKS & FUNCTIONS
Verilog TASKS & FUNCTIONSVerilog TASKS & FUNCTIONS
Verilog TASKS & FUNCTIONSDr.YNM
 
Functional Programming in Ruby
Functional Programming in RubyFunctional Programming in Ruby
Functional Programming in RubyAlex Teut
 
Why system verilog ?
Why system verilog ? Why system verilog ?
Why system verilog ? Dr.YNM
 
Verilog Test Bench
Verilog Test BenchVerilog Test Bench
Verilog Test BenchDr.YNM
 
Verilog Lecture2 thhts
Verilog Lecture2 thhtsVerilog Lecture2 thhts
Verilog Lecture2 thhtsBéo Tú
 
Partial Continuations, Lessons From JavaScript and Guile in 2012 (Quasiconf 2...
Partial Continuations, Lessons From JavaScript and Guile in 2012 (Quasiconf 2...Partial Continuations, Lessons From JavaScript and Guile in 2012 (Quasiconf 2...
Partial Continuations, Lessons From JavaScript and Guile in 2012 (Quasiconf 2...Igalia
 
VERILOG HDL :: Blocking & NON- Blocking assignments
VERILOG HDL :: Blocking & NON- Blocking assignments VERILOG HDL :: Blocking & NON- Blocking assignments
VERILOG HDL :: Blocking & NON- Blocking assignments Dr.YNM
 
Hands on clang-format
Hands on clang-formatHands on clang-format
Hands on clang-formatKai Wolf
 
Delays in verilog
Delays in verilogDelays in verilog
Delays in verilogJITU MISTRY
 
Lect 7: Verilog Behavioral model for Absolute Beginners
Lect 7: Verilog Behavioral model for Absolute BeginnersLect 7: Verilog Behavioral model for Absolute Beginners
Lect 7: Verilog Behavioral model for Absolute BeginnersDr.YNM
 
(chapter 2) A Concise and Practical Introduction to Programming Algorithms in...
(chapter 2) A Concise and Practical Introduction to Programming Algorithms in...(chapter 2) A Concise and Practical Introduction to Programming Algorithms in...
(chapter 2) A Concise and Practical Introduction to Programming Algorithms in...Frank Nielsen
 
Code obfuscation theory and practices
Code obfuscation theory and practicesCode obfuscation theory and practices
Code obfuscation theory and practicesnlog2n
 
Lecture 3 control_structures_i
Lecture 3 control_structures_iLecture 3 control_structures_i
Lecture 3 control_structures_iTony Apreku
 
Academy PRO: React JS. Typescript
Academy PRO: React JS. TypescriptAcademy PRO: React JS. Typescript
Academy PRO: React JS. TypescriptBinary Studio
 

What's hot (20)

Functional Programming in JavaScript & ESNext
Functional Programming in JavaScript & ESNextFunctional Programming in JavaScript & ESNext
Functional Programming in JavaScript & ESNext
 
Verilog TASKS & FUNCTIONS
Verilog TASKS & FUNCTIONSVerilog TASKS & FUNCTIONS
Verilog TASKS & FUNCTIONS
 
Functional Programming in Ruby
Functional Programming in RubyFunctional Programming in Ruby
Functional Programming in Ruby
 
Why system verilog ?
Why system verilog ? Why system verilog ?
Why system verilog ?
 
Verilog Test Bench
Verilog Test BenchVerilog Test Bench
Verilog Test Bench
 
Verilog Lecture2 thhts
Verilog Lecture2 thhtsVerilog Lecture2 thhts
Verilog Lecture2 thhts
 
Partial Continuations, Lessons From JavaScript and Guile in 2012 (Quasiconf 2...
Partial Continuations, Lessons From JavaScript and Guile in 2012 (Quasiconf 2...Partial Continuations, Lessons From JavaScript and Guile in 2012 (Quasiconf 2...
Partial Continuations, Lessons From JavaScript and Guile in 2012 (Quasiconf 2...
 
VERILOG HDL :: Blocking & NON- Blocking assignments
VERILOG HDL :: Blocking & NON- Blocking assignments VERILOG HDL :: Blocking & NON- Blocking assignments
VERILOG HDL :: Blocking & NON- Blocking assignments
 
Hands on clang-format
Hands on clang-formatHands on clang-format
Hands on clang-format
 
Delays in verilog
Delays in verilogDelays in verilog
Delays in verilog
 
Lect 7: Verilog Behavioral model for Absolute Beginners
Lect 7: Verilog Behavioral model for Absolute BeginnersLect 7: Verilog Behavioral model for Absolute Beginners
Lect 7: Verilog Behavioral model for Absolute Beginners
 
Oop to fp
Oop to fpOop to fp
Oop to fp
 
C tour Unix
C tour UnixC tour Unix
C tour Unix
 
(chapter 2) A Concise and Practical Introduction to Programming Algorithms in...
(chapter 2) A Concise and Practical Introduction to Programming Algorithms in...(chapter 2) A Concise and Practical Introduction to Programming Algorithms in...
(chapter 2) A Concise and Practical Introduction to Programming Algorithms in...
 
Hanoi JUG: Java 8 & lambdas
Hanoi JUG: Java 8 & lambdasHanoi JUG: Java 8 & lambdas
Hanoi JUG: Java 8 & lambdas
 
Code obfuscation theory and practices
Code obfuscation theory and practicesCode obfuscation theory and practices
Code obfuscation theory and practices
 
C++ ch1
C++ ch1C++ ch1
C++ ch1
 
Lecture 3 control_structures_i
Lecture 3 control_structures_iLecture 3 control_structures_i
Lecture 3 control_structures_i
 
201801 CSE240 Lecture 06
201801 CSE240 Lecture 06201801 CSE240 Lecture 06
201801 CSE240 Lecture 06
 
Academy PRO: React JS. Typescript
Academy PRO: React JS. TypescriptAcademy PRO: React JS. Typescript
Academy PRO: React JS. Typescript
 

Similar to 2nd presantation

Summer training vhdl
Summer training vhdlSummer training vhdl
Summer training vhdlArshit Rai
 
Summer training vhdl
Summer training vhdlSummer training vhdl
Summer training vhdlArshit Rai
 
Practical C++ Generative Programming
Practical C++ Generative ProgrammingPractical C++ Generative Programming
Practical C++ Generative ProgrammingSchalk Cronjé
 
Summer training vhdl
Summer training vhdlSummer training vhdl
Summer training vhdlArshit Rai
 
Odog : A Framework for Concurrent and Distributed software design
Odog : A Framework for Concurrent and Distributed software designOdog : A Framework for Concurrent and Distributed software design
Odog : A Framework for Concurrent and Distributed software designivanjokerbr
 
An Overview of SystemVerilog for Design and Verification
An Overview of SystemVerilog  for Design and VerificationAn Overview of SystemVerilog  for Design and Verification
An Overview of SystemVerilog for Design and VerificationKapilRaghunandanTrip
 
Creating queuing system simulations with enterprise architect sysml parametri...
Creating queuing system simulations with enterprise architect sysml parametri...Creating queuing system simulations with enterprise architect sysml parametri...
Creating queuing system simulations with enterprise architect sysml parametri...Pragmatic Cohesion Consulting, LLC
 
System verilog important
System verilog importantSystem verilog important
System verilog importantelumalai7
 
How to create SystemVerilog verification environment?
How to create SystemVerilog verification environment?How to create SystemVerilog verification environment?
How to create SystemVerilog verification environment?Sameh El-Ashry
 
Simplified Troubleshooting through API Scripting
Simplified Troubleshooting through API Scripting Simplified Troubleshooting through API Scripting
Simplified Troubleshooting through API Scripting Network Automation Forum
 
Python - code quality and production monitoring
Python - code quality and production monitoringPython - code quality and production monitoring
Python - code quality and production monitoringDavid Melamed
 
Summer training vhdl
Summer training vhdlSummer training vhdl
Summer training vhdlArshit Rai
 
From Zero to Streaming Healthcare in Production (Alexander Kouznetsov, Invita...
From Zero to Streaming Healthcare in Production (Alexander Kouznetsov, Invita...From Zero to Streaming Healthcare in Production (Alexander Kouznetsov, Invita...
From Zero to Streaming Healthcare in Production (Alexander Kouznetsov, Invita...confluent
 
Overview Of Parallel Development - Ericnel
Overview Of Parallel Development -  EricnelOverview Of Parallel Development -  Ericnel
Overview Of Parallel Development - Ericnelukdpe
 
Rider - Taking ReSharper out of Process
Rider - Taking ReSharper out of ProcessRider - Taking ReSharper out of Process
Rider - Taking ReSharper out of Processcitizenmatt
 
Squeezing Blood From a Stone V1.2
Squeezing Blood From a Stone V1.2Squeezing Blood From a Stone V1.2
Squeezing Blood From a Stone V1.2Jen Costillo
 

Similar to 2nd presantation (20)

Coding style for good synthesis
Coding style for good synthesisCoding style for good synthesis
Coding style for good synthesis
 
Summer training vhdl
Summer training vhdlSummer training vhdl
Summer training vhdl
 
Summer training vhdl
Summer training vhdlSummer training vhdl
Summer training vhdl
 
Tutor1
Tutor1Tutor1
Tutor1
 
Practical C++ Generative Programming
Practical C++ Generative ProgrammingPractical C++ Generative Programming
Practical C++ Generative Programming
 
Summer training vhdl
Summer training vhdlSummer training vhdl
Summer training vhdl
 
Odog : A Framework for Concurrent and Distributed software design
Odog : A Framework for Concurrent and Distributed software designOdog : A Framework for Concurrent and Distributed software design
Odog : A Framework for Concurrent and Distributed software design
 
An Overview of SystemVerilog for Design and Verification
An Overview of SystemVerilog  for Design and VerificationAn Overview of SystemVerilog  for Design and Verification
An Overview of SystemVerilog for Design and Verification
 
Creating queuing system simulations with enterprise architect sysml parametri...
Creating queuing system simulations with enterprise architect sysml parametri...Creating queuing system simulations with enterprise architect sysml parametri...
Creating queuing system simulations with enterprise architect sysml parametri...
 
System verilog important
System verilog importantSystem verilog important
System verilog important
 
How to create SystemVerilog verification environment?
How to create SystemVerilog verification environment?How to create SystemVerilog verification environment?
How to create SystemVerilog verification environment?
 
Simplified Troubleshooting through API Scripting
Simplified Troubleshooting through API Scripting Simplified Troubleshooting through API Scripting
Simplified Troubleshooting through API Scripting
 
Python - code quality and production monitoring
Python - code quality and production monitoringPython - code quality and production monitoring
Python - code quality and production monitoring
 
Summer training vhdl
Summer training vhdlSummer training vhdl
Summer training vhdl
 
Himanshu Shivhar (1)
Himanshu Shivhar (1)Himanshu Shivhar (1)
Himanshu Shivhar (1)
 
News In The Net40
News In The Net40News In The Net40
News In The Net40
 
From Zero to Streaming Healthcare in Production (Alexander Kouznetsov, Invita...
From Zero to Streaming Healthcare in Production (Alexander Kouznetsov, Invita...From Zero to Streaming Healthcare in Production (Alexander Kouznetsov, Invita...
From Zero to Streaming Healthcare in Production (Alexander Kouznetsov, Invita...
 
Overview Of Parallel Development - Ericnel
Overview Of Parallel Development -  EricnelOverview Of Parallel Development -  Ericnel
Overview Of Parallel Development - Ericnel
 
Rider - Taking ReSharper out of Process
Rider - Taking ReSharper out of ProcessRider - Taking ReSharper out of Process
Rider - Taking ReSharper out of Process
 
Squeezing Blood From a Stone V1.2
Squeezing Blood From a Stone V1.2Squeezing Blood From a Stone V1.2
Squeezing Blood From a Stone V1.2
 

2nd presantation

  • 1. Click to add Title Simulation vs Synthesis Synthesizable and Non-Synthesizable Construct Jatin Adroja Keval Vaishnav Nilesh Ramani e-Infochips Institute of Training Research and Academics Limited
  • 2. 2 Outlines Introduction to Simulation & Synthesis 1 Simulation vs Synthesis 2 Sinthesizable Construct in Verilog 3 Non-Synthesizable Construct in verilog 4
  • 3. Introduction to Simulation ● What is simulation? Process of creating models to that mimic the behaviour of the device ● Why Simulation is required? To verify the code & gate level design 3
  • 4. Introduction to Synthesis ● What is synthesis? Process of converting high level description of design into an optimized gate-level representation. ● Why Synthesis is required? To convert RTL code into gate level design 4
  • 5. Simulation vs Synthesis There are two kinds of simulation 1- behavioural (functional) simulation which is done pre- synthesis 2- Timing simulation which is done post-synthesis to ensure that it has achieved the required timing. 5 Pre-Synthesis Simulation Synthesis Post-Synthesis Simulation
  • 6. Simulation vs Synthesis 6 RTL Design Code Synthesis = Translation + Optimization + Technology Mapping Generic Boolean (No timing Info) Translate (HDL Compiler) Target Device (Timing Info) Optimize+Mapping (HDL Compiler)
  • 7. Simulation vs Synthesis ● Translation RTL to gate-level net-lists ● Optimization: Technology-independent logic-level optimization to reduce hardware for required functionality. ● Technology Mapping: Technology-independent net-lists are transformed into technology-dependent ones. 7
  • 9. What is Synthesizable? ● Combine things to make a whole... ● Ex. You read many books and combine them all the information into the one report. ● Ex. Electronic keyboard produce the sound of drum and violin this is example of a case where the keyboard synthesize the instruments. 9
  • 10. Synthesizable ● Verilog allows several ways to describe one thing, Synthesis tools often require only a limited subset of constructs; ● Example: R ● Registers and Flip Flops must be described in a certain way 10
  • 11. How can i know if my code is synthesizable [verilog]? ● Structural verilog typically means you are creating description close to a netlist and the constructs you would use in this case are a small subset of those that are synthesizable. ● Structural , Behaviour are non-synthesizable ● However, these two model can simulate........??? ● Behaviour Models : Higher level of modelling where behaviour of logic is modelled ● RTL Models : Logic is modelled at register level ● Structural Models : Logic is modelled at both register level and gate level. 11
  • 12. Construct Supported in Synthesis 12 no Construct Type Keyword or Description note 1 ports Input,inout,output Input only IO level 2 parameters parameter This makes design more generic 3 module definition module 4 signals and variables wire, reg, tri Vectors are allowed 5 instantiation module instances / primitive gate instances E.g.- nand (out,a,b), bad idea to code RTL this way. 6 function and tasks function , task Timing constructs ignored
  • 13. Construct Supported in Synthesis 13 no Construct Type Keyword or Description note 7 procedural always, if, else, case, casex, casez initial is not supported 8 procedural blocks begin, end, named blocks, disable Disabling of named blocks allowed 9 data flow assign Delay information is ignored 10 named Blocks disable Disabling of named block supported. 11 loops for, while, forever While and forever loops must contain @(posedge clk) or @(negedge clk)
  • 14. Construct not Supported in Synthesis 14 Construct Type Notes initial Used only in test benches. events Events make more sense for syncing test bench components. real Real data type not supported. time Time data type not supported. force and release Force and release of data types not supported. fork join Use non-blocking assignments to get same effect. primitives Only gate level primitives are supported. table UDP and tables are not supported.
  • 15. Non Synthesizable verilog Construct ● The verilog code which contains non-synthesizable elements can be defined as non synthesizable verilog constructs. 15
  • 16. Non Synthesizable element ● Basic :– System tasks :- $display $random $monitor real constants :- floating point numbers, ● Data-types :– Real :- ::= real < list of reg >, floating point operations, Time :- Time quantities in i.e. $time Event :- wait event ● Modual instances :– Delay on built in gate 16
  • 17. Non Synthesizable element ● Primitives :– UDPs, pullup, pulldown, pmos, nmos, cmos, rpmos, etc ● Reduction Operations :- '===' :- concider 'x' and 'z' values ' !== ' :- notconcider 'x' and 'z' values % :- module, / :- division ● Event control :- Event trigger ( -> ), Delay and wait ( # ) 17
  • 18. Non Synthesizable element ● Continuous assignments :- using delay :- delay is not synthesizable. ● Procedural blocks :- initial :- start execution at time zero. ● Procedural statements :- fork – join :- parallel execution cause RASE condition. ● Procedural assignments :- assign – deassign :- used to model in combinational logic. 18