SlideShare a Scribd company logo
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

PDF
Blue Hat IL 2019 - Hardening Secure Boot on Embedded Devices for Hostile Envi...
PDF
Lighthouse
PDF
Practical Malware Analysis: Ch 15: Anti-Disassembly
PDF
Everything You Need to Know About HCL Notes 14
PPTX
Building ADAS system from scratch
PDF
Configuring the communication on FlexRay: the case of the static segment
PDF
RTL Presentation by Pr. John Connor
PDF
Advanced Driver Assistance System using FPGA
Blue Hat IL 2019 - Hardening Secure Boot on Embedded Devices for Hostile Envi...
Lighthouse
Practical Malware Analysis: Ch 15: Anti-Disassembly
Everything You Need to Know About HCL Notes 14
Building ADAS system from scratch
Configuring the communication on FlexRay: the case of the static segment
RTL Presentation by Pr. John Connor
Advanced Driver Assistance System using FPGA

Viewers also liked (7)

PPT
Altera Cyclone IV FPGA Customer Presentation
PDF
FlexRay
PDF
The flex ray protocol
PPTX
flexray technology in modern cars
PDF
Flexray
PDF
20 Inspiring Quotes From William Zinsser's "On Writing Well"
PPTX
The Best Startup Investor Pitch Deck & How to Present to Angels & Venture Cap...
Altera Cyclone IV FPGA Customer Presentation
FlexRay
The flex ray protocol
flexray technology in modern cars
Flexray
20 Inspiring Quotes From William Zinsser's "On Writing Well"
The Best Startup Investor Pitch Deck & How to Present to Angels & Venture Cap...
Ad

Similar to FPGA Design with Python and MyHDL (20)

PDF
CHIPS Alliance_Object Automation Inc_workshop
PDF
fpga2024munichwebinarversionfinal1720462330803.pdf
PPTX
PHP Unconference Continuous Integration
PDF
Fueling AI with Great Data with Airbyte Webinar
PPTX
DevOps and the C64: what's your excuse
PPT
Verilog Lecture1
PPT
Digital design lect 26 27
PPTX
Code PaLOUsa Azure IoT Workshop
PPTX
Wintellect - Devscovery - Portable Class Library
PDF
"Using the OpenCL C Kernel Language for Embedded Vision Processors," a Presen...
PDF
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
PPTX
IoT Workshop Indianapolis
PDF
Workshop: HCL Notes 14 Upgrades einfach gemacht – von A bis Z
PPTX
KiZAN IoT Workshop - Memphis
PPTX
IoT Workshop - Waukesha
PPTX
IoT Workshop Chicago
PPTX
Mini .net conf 2020
PPT
RSA SF Conference talk-2009-ht2-401 sallam
PPTX
IoT Workshop Cincinnati
PPTX
Codasip application class RISC-V processor solutions
CHIPS Alliance_Object Automation Inc_workshop
fpga2024munichwebinarversionfinal1720462330803.pdf
PHP Unconference Continuous Integration
Fueling AI with Great Data with Airbyte Webinar
DevOps and the C64: what's your excuse
Verilog Lecture1
Digital design lect 26 27
Code PaLOUsa Azure IoT Workshop
Wintellect - Devscovery - Portable Class Library
"Using the OpenCL C Kernel Language for Embedded Vision Processors," a Presen...
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
IoT Workshop Indianapolis
Workshop: HCL Notes 14 Upgrades einfach gemacht – von A bis Z
KiZAN IoT Workshop - Memphis
IoT Workshop - Waukesha
IoT Workshop Chicago
Mini .net conf 2020
RSA SF Conference talk-2009-ht2-401 sallam
IoT Workshop Cincinnati
Codasip application class RISC-V processor solutions
Ad

Recently uploaded (20)

PPTX
Internet of Things (IOT) - A guide to understanding
PPTX
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
PDF
Automation-in-Manufacturing-Chapter-Introduction.pdf
PPTX
web development for engineering and engineering
PDF
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
PDF
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PPT
CRASH COURSE IN ALTERNATIVE PLUMBING CLASS
PPTX
CH1 Production IntroductoryConcepts.pptx
PDF
Well-logging-methods_new................
PPTX
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
PPTX
Geodesy 1.pptx...............................................
PPTX
Welding lecture in detail for understanding
PDF
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
PPTX
bas. eng. economics group 4 presentation 1.pptx
PDF
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
PPTX
OOP with Java - Java Introduction (Basics)
PPTX
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
PPTX
MCN 401 KTU-2019-PPE KITS-MODULE 2.pptx
PPTX
Foundation to blockchain - A guide to Blockchain Tech
Internet of Things (IOT) - A guide to understanding
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
Automation-in-Manufacturing-Chapter-Introduction.pdf
web development for engineering and engineering
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
CRASH COURSE IN ALTERNATIVE PLUMBING CLASS
CH1 Production IntroductoryConcepts.pptx
Well-logging-methods_new................
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
Geodesy 1.pptx...............................................
Welding lecture in detail for understanding
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
bas. eng. economics group 4 presentation 1.pptx
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
OOP with Java - Java Introduction (Basics)
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
MCN 401 KTU-2019-PPE KITS-MODULE 2.pptx
Foundation to blockchain - A guide to Blockchain Tech

FPGA Design with Python and MyHDL