SlideShare a Scribd company logo
1 of 48
Download to read offline
21.05.2014 1
FPGA Design with
Python and MyHDL
Guy Eschemann
21.05.2014 2
Content
• About us
• A short introduction to Python
• Introduction to MyHDL
• Demo
• Questions
21.05.2014 3
About noasic
• Quick Facts
– Founded in 2014
– 14+ years experience in FPGA design
– Located in Kehl, Germany
• Areas of expertise
– FPGA & IP core design and verification
– VHDL code generators
21.05.2014 4
VHDL Code Generators (1)
21.05.2014 5
VHDL Code Generators (2)
21.05.2014 6
21.05.2014 7
A short introduction to
21.05.2014 8
Python
• Created 1991 by Guido van
Rossum at CWI (Netherlands)
• General-purpose, high-level
programming language
• Emphasizes code readability
• Write less code
• Strongly, dynamically typed
• Object-oriented
• Open-source
• Runs on many platforms
21.05.2014 9
Sample Python code
21.05.2014 10
Python – Syntax
• Blocks are specified by indentation
• No mandatory statement termination
• Comments start with #
• Assign values using =
• Test equality using ==
• Increment/decrement using += or -=
21.05.2014 11
Python – Data Structures
• Lists
– like one-dimensional arrays
• Tuples
– immutable, one-dimensional arrays
• Dictionaries
– associative arrays („hash tables“)
21.05.2014 12
Python – Strings
• Can use either single or double quotation
marks
• Multi-line strings enclosed in triple quotes
• Use modulo (%) operator and a tuple to
format a string
21.05.2014 13
Python – Flow Control
• Flow control statements:
– if
– for
– while
– there is no case/switch. Use „if“ instead.
21.05.2014 14
Python – Functions
• Declared with the „def“ keyword
• Optional parameters supported
• Functions can return multiple values
21.05.2014 15
Python – Importing
• External libaries (such as MyHDL) must be
imported before they can be used:
from myhdl import intbv
OR
from myhdl import *
21.05.2014 16
Python Libraries
• String handling
• Regular expressions
• Random number generation
• Unit-test framework
• OS interfacing
• GUI development
• Modules for math, database connections,
network interfacing etc.
• Hardware design (MyHDL)
21.05.2014 17
Introduction to
21.05.2014 18
MyHDL
• Python-based hardware
description language
• Created 2003 by Jan
Decaluwe
• Open source
21.05.2014 19
Why MyHDL?
• Write less code
• Avoid common VHDL and Verilog pitfalls
• Apply modern SW development techniques to
HW design
• Can generate both VHDL and Verilog
• Simulator included
• Open source
• Runs on many platforms (Windows, OSX, Linux)
• Python ecosystem
21.05.2014 20
What MyHDL is not
• Not a way to turn arbitrary Python into
silicon
• Not a radically new approach
• Not a synthesis tool
• Not an IP block library
• Not only for implementation
• Not well suited for accurate timing
simulations
21.05.2014 21
MyHDL Design Flow
21.05.2014 22
Example – 8 bit counter
21.05.2014 23
Modeling Components
• Components are modeled using functions
• Function parameters map to ports
21.05.2014 24
Modeling Processes
• Processes are modeled using special
„generator“ functions
• Decorators are used to create generator
functions
21.05.2014 25
The @instance decorator
• Most general, creates generator from a
generator function
a 1
0b
z
21.05.2014 26
The @always decorator
• Abstracts an outer „while True“ loop followed
by a „yield“ statement
a 1
0b
z
21.05.2014 27
Combinational logic: @always_comb
• Automatically infers the sensitivity list
a 1
0b
z
21.05.2014 28
Sequential logic: @always_seq
• Infers the reset functionality
• Equivalent code:
21.05.2014 29
Function Decorators
• @instance: most general, multiple yields
• @always: single yield, abstracts „while
True“ loop
• @always_comb: for asynchronous logic,
automatically infers sensitivity list
• @always_seq: for sequential logic,
automatically infers the reset functionality
21.05.2014 30
MyHDL Signals
• Similar to VHDL signals
• Signal declaration:
s_empty = Signal(0)
s_count = Signal(intbv(0)[8:])
s_clk = Signal(bool(0))
• Signal assignment:
s_count.next = 0
21.05.2014 31
MyHDL intbv class
• Similiar to standard Python „int“ type with
added indexing and slicing capabilities
• intbv = „integer with bit-vector flavor“
• Provides access to underlying two‘s
complement representation
• Range of allowed values can be
constrained
21.05.2014 32
MyHDL intbv creation
Create an intbv:
intbv([val=None] [, min=None] [, max=None])
Example:
>>> a = intbv(24, min=0, max=25)
>>> a.min
0
>>> a.max
25
>>> len(a)
5
21.05.2014 33
MyHDL intbv indexing and slicing
Indexing:
>>> a = intbv(0x12)
>>> bin(a)
'10010'
>>> a[0]
False
>>> a[1]
True
Slicing:
>>> a = intbv(0x12)
>>> a[4:0]
intbv(2L)
21.05.2014 34
MyHDL intbv creation
Create an intbv, specifying its width:
>>> a = intbv(24)[5:]
>>> a.min
0
>>> a.max
32
>>> len(a)
5
21.05.2014 35
Modeling hierarchy
21.05.2014 36
Generated VHDL code
21.05.2014 37
Verification
• Verification is MyHDL´s strongest point
• Arguably the hardest part of hardware
design
• There are no restrictions for verification:
can use the full power of Python
• Can do „agile“ hardware design
• The Foundation is an event-driven
simulator in the MyHDL library
21.05.2014 38
MyHDL Simulator
21.05.2014 39
A basic MyHDL simulation
21.05.2014 40
Debugging in MyHDL
• Regular Python debugging
• Waveform viewer output
21.05.2014 41
Conversion
• A subset of MyHDL can be automatically
converted to VHDL and Verilog
• The converter maintains the abstraction
level
• Supports some unique MyHDL features
• Creates readable VHDL/Verilog
• Convertible subset much broader than
synthesizable subset
21.05.2014 42
Conversion example
• MyHDL Code
• Conversion to Verilog
• Conversion to VHDL
• The converter does the casts and resizings
automatically
21.05.2014 43
User-defined code
21.05.2014 44
Demo
21.05.2014 45
Caveats
• Dynamic nature of Python needs some
getting used to
• Error messages can be cryptic
• Cannot import legacy VHDL/Verilog code
– Write own behaviorals models for simulation
– Use user-defined code for conversion
• Cannot generate parameterizable HDL
code
21.05.2014 46
MyHDL future
• Fixed-point support in the converter
• Interfaces
• Python 3.0 support
21.05.2014 47
Resources
• http://python.org
• http://myhdl.org
– Manual & examples
– Download & installation instructions
– Mailing list
– Tutorials & publications
• @MyHDL on twitter
• Development with mercurial on Bitbucket
21.05.2014 48
Contact
Guy Eschemann
noasic GmbH
Sundheimer Feld 6
77694 Kehl
guy@noasic.com
http://noasic.com
Twitter: @geschema

More Related Content

What's hot

13 asymmetric key cryptography
13   asymmetric key cryptography13   asymmetric key cryptography
13 asymmetric key cryptography
drewz lin
 

What's hot (20)

Demystifying MySQL Replication Crash Safety
Demystifying MySQL Replication Crash SafetyDemystifying MySQL Replication Crash Safety
Demystifying MySQL Replication Crash Safety
 
Redis vs. MongoDB: Comparing In-Memory Databases with Percona Memory Engine
Redis vs. MongoDB: Comparing In-Memory Databases with Percona Memory EngineRedis vs. MongoDB: Comparing In-Memory Databases with Percona Memory Engine
Redis vs. MongoDB: Comparing In-Memory Databases with Percona Memory Engine
 
Redis cluster
Redis clusterRedis cluster
Redis cluster
 
Redis overview for Software Architecture Forum
Redis overview for Software Architecture ForumRedis overview for Software Architecture Forum
Redis overview for Software Architecture Forum
 
Accelerated Training of Transformer Models
Accelerated Training of Transformer ModelsAccelerated Training of Transformer Models
Accelerated Training of Transformer Models
 
Verification challenges and methodologies - SoC and ASICs
Verification challenges and methodologies - SoC and ASICsVerification challenges and methodologies - SoC and ASICs
Verification challenges and methodologies - SoC and ASICs
 
CAD: Layout Extraction
CAD: Layout ExtractionCAD: Layout Extraction
CAD: Layout Extraction
 
The SHA Hashing Algorithm
The SHA Hashing AlgorithmThe SHA Hashing Algorithm
The SHA Hashing Algorithm
 
Achieving compliance With MongoDB Security
Achieving compliance With MongoDB Security Achieving compliance With MongoDB Security
Achieving compliance With MongoDB Security
 
Ins and Outs of GPIO Programming
Ins and Outs of GPIO ProgrammingIns and Outs of GPIO Programming
Ins and Outs of GPIO Programming
 
Verification Challenges and Methodologies
Verification Challenges and MethodologiesVerification Challenges and Methodologies
Verification Challenges and Methodologies
 
MyDUMPER : Faster logical backups and restores
MyDUMPER : Faster logical backups and restores MyDUMPER : Faster logical backups and restores
MyDUMPER : Faster logical backups and restores
 
Software hardware co-design using xilinx zynq soc
Software hardware co-design using xilinx zynq socSoftware hardware co-design using xilinx zynq soc
Software hardware co-design using xilinx zynq soc
 
Kubernetes in Action, Second Edition
Kubernetes in Action, Second EditionKubernetes in Action, Second Edition
Kubernetes in Action, Second Edition
 
Ceph on arm64 upload
Ceph on arm64   uploadCeph on arm64   upload
Ceph on arm64 upload
 
Let's turn your PostgreSQL into columnar store with cstore_fdw
Let's turn your PostgreSQL into columnar store with cstore_fdwLet's turn your PostgreSQL into columnar store with cstore_fdw
Let's turn your PostgreSQL into columnar store with cstore_fdw
 
MariaDB ColumnStore
MariaDB ColumnStoreMariaDB ColumnStore
MariaDB ColumnStore
 
13 asymmetric key cryptography
13   asymmetric key cryptography13   asymmetric key cryptography
13 asymmetric key cryptography
 
Physical Design Flow Challenges at 28nm on Multi-million Gate Blocks
Physical Design Flow Challenges at 28nm on Multi-million Gate BlocksPhysical Design Flow Challenges at 28nm on Multi-million Gate Blocks
Physical Design Flow Challenges at 28nm on Multi-million Gate Blocks
 
Ceph as software define storage
Ceph as software define storageCeph as software define storage
Ceph as software define storage
 

Viewers also liked

Viewers also liked (12)

Building ADAS system from scratch
Building ADAS system from scratchBuilding ADAS system from scratch
Building ADAS system from scratch
 
Configuring the communication on FlexRay: the case of the static segment
Configuring the communication on FlexRay: the case of the static segmentConfiguring the communication on FlexRay: the case of the static segment
Configuring the communication on FlexRay: the case of the static segment
 
RTL Presentation by Pr. John Connor
RTL Presentation by Pr. John ConnorRTL Presentation by Pr. John Connor
RTL Presentation by Pr. John Connor
 
Advanced Driver Assistance System using FPGA
Advanced Driver Assistance System using FPGAAdvanced Driver Assistance System using FPGA
Advanced Driver Assistance System using FPGA
 
Altera Cyclone IV FPGA Customer Presentation
Altera Cyclone IV FPGA Customer PresentationAltera Cyclone IV FPGA Customer Presentation
Altera Cyclone IV FPGA Customer Presentation
 
FlexRay
FlexRayFlexRay
FlexRay
 
The flex ray protocol
The flex ray protocolThe flex ray protocol
The flex ray protocol
 
flexray technology in modern cars
flexray technology in modern carsflexray technology in modern cars
flexray technology in modern cars
 
Flexray
FlexrayFlexray
Flexray
 
20 Inspiring Quotes From William Zinsser's "On Writing Well"
20 Inspiring Quotes From William Zinsser's "On Writing Well"20 Inspiring Quotes From William Zinsser's "On Writing Well"
20 Inspiring Quotes From William Zinsser's "On Writing Well"
 
Crevativty & innovation ppt mba
Crevativty & innovation ppt  mbaCrevativty & innovation ppt  mba
Crevativty & innovation ppt mba
 
The Best Startup Investor Pitch Deck & How to Present to Angels & Venture Cap...
The Best Startup Investor Pitch Deck & How to Present to Angels & Venture Cap...The Best Startup Investor Pitch Deck & How to Present to Angels & Venture Cap...
The Best Startup Investor Pitch Deck & How to Present to Angels & Venture Cap...
 

Similar to FPGA Design with Python and MyHDL

Wintellect - Devscovery - Portable Class Library
Wintellect - Devscovery - Portable Class LibraryWintellect - Devscovery - Portable Class Library
Wintellect - Devscovery - Portable Class Library
Jeremy Likness
 
Workshop: HCL Notes 14 Upgrades einfach gemacht – von A bis Z
Workshop: HCL Notes 14 Upgrades einfach gemacht – von A bis ZWorkshop: HCL Notes 14 Upgrades einfach gemacht – von A bis Z
Workshop: HCL Notes 14 Upgrades einfach gemacht – von A bis Z
panagenda
 

Similar to FPGA Design with Python and MyHDL (20)

CHIPS Alliance_Object Automation Inc_workshop
CHIPS Alliance_Object Automation Inc_workshopCHIPS Alliance_Object Automation Inc_workshop
CHIPS Alliance_Object Automation Inc_workshop
 
PHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationPHP Unconference Continuous Integration
PHP Unconference Continuous Integration
 
DevOps and the C64: what's your excuse
DevOps and the C64: what's your excuseDevOps and the C64: what's your excuse
DevOps and the C64: what's your excuse
 
Verilog Lecture1
Verilog Lecture1Verilog Lecture1
Verilog Lecture1
 
Digital design lect 26 27
Digital design lect 26 27Digital design lect 26 27
Digital design lect 26 27
 
Code PaLOUsa Azure IoT Workshop
Code PaLOUsa Azure IoT WorkshopCode PaLOUsa Azure IoT Workshop
Code PaLOUsa Azure IoT Workshop
 
Wintellect - Devscovery - Portable Class Library
Wintellect - Devscovery - Portable Class LibraryWintellect - Devscovery - Portable Class Library
Wintellect - Devscovery - Portable Class Library
 
"Using the OpenCL C Kernel Language for Embedded Vision Processors," a Presen...
"Using the OpenCL C Kernel Language for Embedded Vision Processors," a Presen..."Using the OpenCL C Kernel Language for Embedded Vision Processors," a Presen...
"Using the OpenCL C Kernel Language for Embedded Vision Processors," a Presen...
 
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdfNeo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
 
IoT Workshop Indianapolis
IoT Workshop IndianapolisIoT Workshop Indianapolis
IoT Workshop Indianapolis
 
Workshop: HCL Notes 14 Upgrades einfach gemacht – von A bis Z
Workshop: HCL Notes 14 Upgrades einfach gemacht – von A bis ZWorkshop: HCL Notes 14 Upgrades einfach gemacht – von A bis Z
Workshop: HCL Notes 14 Upgrades einfach gemacht – von A bis Z
 
KiZAN IoT Workshop - Memphis
KiZAN IoT Workshop - MemphisKiZAN IoT Workshop - Memphis
KiZAN IoT Workshop - Memphis
 
IoT Workshop - Waukesha
IoT Workshop - WaukeshaIoT Workshop - Waukesha
IoT Workshop - Waukesha
 
IoT Workshop Chicago
IoT Workshop ChicagoIoT Workshop Chicago
IoT Workshop Chicago
 
Mini .net conf 2020
Mini .net conf 2020Mini .net conf 2020
Mini .net conf 2020
 
RSA SF Conference talk-2009-ht2-401 sallam
RSA SF Conference talk-2009-ht2-401 sallamRSA SF Conference talk-2009-ht2-401 sallam
RSA SF Conference talk-2009-ht2-401 sallam
 
IoT Workshop Cincinnati
IoT Workshop CincinnatiIoT Workshop Cincinnati
IoT Workshop Cincinnati
 
Codasip application class RISC-V processor solutions
Codasip application class RISC-V processor solutionsCodasip application class RISC-V processor solutions
Codasip application class RISC-V processor solutions
 
Summit 16: NetIDE: Integrating and Orchestrating SDN Controllers
Summit 16: NetIDE: Integrating and Orchestrating SDN ControllersSummit 16: NetIDE: Integrating and Orchestrating SDN Controllers
Summit 16: NetIDE: Integrating and Orchestrating SDN Controllers
 
DevOpsCon 2015 - DevOps in Mobile Games
DevOpsCon 2015 - DevOps in Mobile GamesDevOpsCon 2015 - DevOps in Mobile Games
DevOpsCon 2015 - DevOps in Mobile Games
 

Recently uploaded

Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.ppt
MsecMca
 
+97470301568>> buy weed in qatar,buy thc oil qatar,buy weed and vape oil in d...
+97470301568>> buy weed in qatar,buy thc oil qatar,buy weed and vape oil in d...+97470301568>> buy weed in qatar,buy thc oil qatar,buy weed and vape oil in d...
+97470301568>> buy weed in qatar,buy thc oil qatar,buy weed and vape oil in d...
Health
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
Epec Engineered Technologies
 
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak HamilCara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Kandungan 087776558899
 

Recently uploaded (20)

Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
 
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
 
Hostel management system project report..pdf
Hostel management system project report..pdfHostel management system project report..pdf
Hostel management system project report..pdf
 
Tamil Call Girls Bhayandar WhatsApp +91-9930687706, Best Service
Tamil Call Girls Bhayandar WhatsApp +91-9930687706, Best ServiceTamil Call Girls Bhayandar WhatsApp +91-9930687706, Best Service
Tamil Call Girls Bhayandar WhatsApp +91-9930687706, Best Service
 
data_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdfdata_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdf
 
Bridge Jacking Design Sample Calculation.pptx
Bridge Jacking Design Sample Calculation.pptxBridge Jacking Design Sample Calculation.pptx
Bridge Jacking Design Sample Calculation.pptx
 
Online food ordering system project report.pdf
Online food ordering system project report.pdfOnline food ordering system project report.pdf
Online food ordering system project report.pdf
 
Work-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptxWork-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptx
 
Rums floating Omkareshwar FSPV IM_16112021.pdf
Rums floating Omkareshwar FSPV IM_16112021.pdfRums floating Omkareshwar FSPV IM_16112021.pdf
Rums floating Omkareshwar FSPV IM_16112021.pdf
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.ppt
 
2016EF22_0 solar project report rooftop projects
2016EF22_0 solar project report rooftop projects2016EF22_0 solar project report rooftop projects
2016EF22_0 solar project report rooftop projects
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.ppt
 
Online electricity billing project report..pdf
Online electricity billing project report..pdfOnline electricity billing project report..pdf
Online electricity billing project report..pdf
 
A Study of Urban Area Plan for Pabna Municipality
A Study of Urban Area Plan for Pabna MunicipalityA Study of Urban Area Plan for Pabna Municipality
A Study of Urban Area Plan for Pabna Municipality
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPT
 
+97470301568>> buy weed in qatar,buy thc oil qatar,buy weed and vape oil in d...
+97470301568>> buy weed in qatar,buy thc oil qatar,buy weed and vape oil in d...+97470301568>> buy weed in qatar,buy thc oil qatar,buy weed and vape oil in d...
+97470301568>> buy weed in qatar,buy thc oil qatar,buy weed and vape oil in d...
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
 
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptxHOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
 
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak HamilCara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
 
Introduction to Serverless with AWS Lambda
Introduction to Serverless with AWS LambdaIntroduction to Serverless with AWS Lambda
Introduction to Serverless with AWS Lambda
 

FPGA Design with Python and MyHDL