EDA experience overview

advertisement
INSTIGATE OVERVIEW
EDA Experience
Number of pages 23
March 13, 2013
c
Instigate
CJSC
www.instigatedesign.com
Contents
1 Introduction
1.1 About This Document . . . . . . . . . . . . . . . . . . . . . .
1.2 Definition of Terms and Acronyms . . . . . . . . . . . . . . .
2 Company Overview
2.1 Founders . . . . . . . . . . . . . . .
2.2 Corporate structure . . . . . . . .
2.3 Capacity . . . . . . . . . . . . . . .
2.4 Example of Capacity Building . . .
2.5 Instigate recruitment/HR strategy
2.6 Presence and Capacity in Europe .
2.7 Partners . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
3
7
7
7
8
8
9
9
10
3 Instigate History
3.1 A note on history of IT in Armenia . . . . . . . . . . . . . . .
3.2 Current state of IT in Armenia . . . . . . . . . . . . . . . . .
3.3 Incubation: Instigate Training Center (2004) . . . . . . . . .
3.4 Original Product Vision . . . . . . . . . . . . . . . . . . . . .
3.5 Incorporation (2005) . . . . . . . . . . . . . . . . . . . . . . .
3.6 FPGA experience centers in Yerevan and Gyumri (2006-2007)
3.7 Instigate Application Framework for EDA SW Development .
3.8 Design Services as Marketing Strategy . . . . . . . . . . . . .
3.9 Proximus - ESL spin-out (2008) . . . . . . . . . . . . . . . . .
3.10 Mobile and Web experience centers (2010-2012) . . . . . . . .
3.11 Exergy - Energy Efficient High Performance Computing (2012)
3.12 Yerevak - H.265/HEVC Technology startup (2013) . . . . . .
11
11
11
11
12
12
12
13
13
14
14
14
14
4 Coarse-grain reconfigurable computing
4.1 Tool-chain development and verification
4.2 Early evaluation of the architecture . . .
4.3 Bit-accurate HW models . . . . . . . . .
4.4 HW Verification . . . . . . . . . . . . .
4.5 Functional models . . . . . . . . . . . .
4.6 Core Generators . . . . . . . . . . . . .
4.7 IDE development . . . . . . . . . . . . .
.
.
.
.
.
.
.
16
16
16
16
17
17
17
17
.
.
.
.
.
18
18
18
18
18
19
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5 FPGA IDE/Tool-chain development, Validation, Testing
5.1 FPGA Test designs . . . . . . . . . . . . . . . . . . . . . . .
5.2 FPGA IP development . . . . . . . . . . . . . . . . . . . . .
5.3 System Level validation and verification . . . . . . . . . . .
5.4 Core Generators . . . . . . . . . . . . . . . . . . . . . . . .
5.5 P&R tool-chain . . . . . . . . . . . . . . . . . . . . . . . . .
1
5.6
5.7
FPGA IDE and IFS development . . . . . . . . . . . . . . . .
HW validation and verification . . . . . . . . . . . . . . . . .
19
19
6 Electronic System Level Design
6.1 Modeling heterogeneous fabrics . . . . . . . . . . . . . . . . .
6.2 Algorithm parallelization and mapping to reconfigurable devices
6.3 Proximus - new paradigm for parallel/reconfigurable computing
20
20
20
21
7 Embedded SW Development
7.1 GNU/Linux kernel and driver porting . . . . . . . . . . . . .
7.2 Development of drivers for IP’s mapped to reconfigurable fabric
7.3 Mobile SW development . . . . . . . . . . . . . . . . . . . . .
22
22
22
22
2
www.instigatedesign.com
1
1.1
Introduction
About This Document
The purpose of this document is to provide high-level overview of Instigate’s
experience in EDA (mainly FPGA tool-chains and IDE) and related fields,
such as RTL design, ESL design, Embedded SW programming, HW-SW
co-design, FPGA programming, HW modeling, verification, validation.
1.2
Definition of Terms and Acronyms
CGRA - coarse-grain reconfigurable architecture - reconfigurable devices
with nodes that are much larger/complex than LUT’s and DFF’s typically
found in FPGA. E.g. this could be a matrix of ALU’s or reconfigurable
DSP modules (multipliers, adders) interconnected via switching fabric, with
one or few CPU nodes and RAM blocks in each cluster, or could be just a
matrix of multi-port RAM and CPU nodes (distributed-memory computer).
Main complexity of programming such devices is a need for new paradigm
of computing, because neither HW - design flows (Verilog → bit-stream) nor
SW design flows (program → parallel algorithm) can be fully automated.
Such compute fabrics assume development of parallel algorithms (netlists)
from the very beginning.
Core Generators - SW modules, which generate HW IP or FPGA IP
(RTL/Netlist) blocks, based on user-specified parameters. Example is a
FFT/iFFT generator or Memory Core generator, which instantiates DSP
and DPRAM modules available in FPGA fabric to synthesize an FFT (or
DPRAM) with specified parameters.
DSP - digital signal processing, refers to set of algorithms (computations)
which are performed on digital representations of (usually) analog signals.
Can also refer to devices which perform such algorithms: e.g. a HW module
embedded into FPGA that can compute the butterfly operation (typically
found in FFT implementations) can be considered a DSP module. Can also
refer to specially built CPU’s, which have special instructions (typically
SIMD instructions) for DSP operations.
EDA - Electronic Design Automation, sector of CAD (computer-aideddesign) SW industry focused on building CAD tools for automation of various design phases of integrated circuits (ICs). Classical phases for digital design are Front-End: RTL design, synthesis, technology-mapping; and
Back-End: floor-planning, place & route. There is also verification flow:
Static Timing Analysis (STA) and RTL simulation for front-end, and for
back-end the STA and Design Rule Checking (DRC). Most of these are
also applicable for FPGA-based design flow.
3
www.instigatedesign.com
Embedded SW - also referred to as Firmware, is a SW that runs on embedded processors, which are CPU/DSP/Micro-controllers embedded into SoC
subsystems (peripherals) and therefore are not managed by the main Operating System scheduler as regular CPU cores. The subsystems are attached
to system bus, and appear to the main OS as peripheral devices (RAM
blocks, or Character devices), however internally they have own microarchitecture: BUS or Network-on-Chip, a CPU core or micro-controller, and
a FLASH or other non-volatile memory, where the FW is stored. In principle the CPU can be a Cortex A processor, and FW can include full-blown
operating system kernel, such as GNU/Linux. Example of such device is a
high-performance Ethernet card such as KillerNIC, which runs embedded
GNU/Linux installation inside.
ESL - electronic system level - refers to several stages in standard SoC
design flow. First of all these are initial design phases, starting from algorithmic/functional design (reference implementations in C/Matlab), followed by structural decomposition of the system into communicating
state-machines (sequential processes). Next step is Architecture.
Exploration, as a result of which the system is partitioned between Hardware, Firmware, Software subsets, and architecture specification is defined.
This phase is also called HW-SW partitioning or trade-off. ESL frequently also includes the subsequent phases of modelling the Hardware part
in SystemC/TLM or other modelling languages, to enable SW co-design
before the HW prototype (e.g. FPGA emulation) is available. This phase
is called Virtual Platform Prototyping.
FPGA - Field Programmable Gate Array a reconfigurable IC, which consists of universal logical elements (e.g. 4-input 1-output universal boolean
functions) called Lookup Tables (LUT), and sequential elements such as DFlip-Flops (DFF). Elements are grouped into clusters and interconnected
both within clusters and between clusters via network-on-chip, which is also
programmable. Most of programming technologies for FPGAs are based on
ASIC digital design flow: RTL Bit-stream, with synthesis, STA, in frontend, and floor- planning/P&R in the back-end. These tools, however are
different due to specifics of the FPGA. FPGA may also have built-in HW
accelerators, DSPs, CPU cores, etc. For example, every cluster may have a
multiplier, or adder, or other configurable ALU device or DSP modules, as
well as one or several dual ported RAM blocks (DPRAM).
GPGPU - General Purpose Graphical Processing Units. NVIDIA and
AMD produce GPU devices which are programmable for general purpose
computing, using special programming languages: NVIDIA CUDA and Ap4
www.instigatedesign.com
ple’s OpenCL. OpenCL is supported on both platforms, and is also useful
for programming regular CPU-s, thus becoming an abstraction layer for programming heterogeneous devices such as NVIDIA Tegra and AMD APU.
Heterogeneous Compute Fabric - compute fabrics which consist of nodes
(network) with different compute model, different programming model, such
as combination of FPGA fabric with CPU (for example Xilinx Zynq) or
combination of GPGPU fabric with CPU (for example NVIDIA Tegra) and
combinations of those, for example multi-core/multi-CPU server machine
with FPGA and GPGPU cards plugged into PCIE slots. Programming
such computers is a multi-discipline process, similar to SoC design, because
it involves Architecture Exploration and Partitioning phases, like in ESL
flow.
HLS - High Level Synthesis refers to technologies which allow automatic
conversion of the algorithm/computation specification in high-level programming languages such as C/C++ and SystemC/TLM to HDL such as
Verilog RTL or even directly synthesized into netlist. For Heterogeneous
devices such as Xilinx Zynq this would allow targeting the embedded CPU’s
and the embedded FPGA fabric using the same programming language (e.g.
C++).
HW - hardware - refers to HW platforms. Sometimes could refer to
subsystems (e.g. SoC audio sub-system) which contain embedded CPU and
Flash RAM with software (SW) installed in it. This is referred to as
firmware (FW).
IDE - integrated development environment, typically refers to a GUI cockpit
providing integrated text-editor, debugger/simulator, profiler/wave-formviewer, and other development tools under unified coherent graphical user
interface (GUI). Most IDEs made in the EDA industry have also embedded
scripting engine, providing user with scripting interface, to perform most/all
of the operations available in GUI via scripting commands, using scripting
languages such as TCL, Python, LUA, Scheme, Skill, JavaScript, etc. For
programmers the IDE may also provide an Application Programmers Interface (API), which allows to customize/automate the GUI even further, by
implementing Plug-Ins that enhance/modify the functionality of the IDE.
In these cases the IDE can also be referred to as Framework, i.e. a semifabricate SW platform, on which the SW developers can build their own IDE
for specific CAD tool. Typically Frameworks also have libraries supporting
parallel programming, inter-process communication, communication across
network. EDA oriented frameworks may also include HDL parser for RTL,
netlist, and other formats.
5
www.instigatedesign.com
IFS - Infrastructure - refers to EDA SW infrastructure (IDE + Database
Management Layer) which provides data-structures for in-memory representation of design data, import/export and save/load utilities for on-disk
representation, and connection of that with Graphical User Interface (GUI
Cockpit) and Scripting API for automation. Essential parts of IFS may be
provided by underlying SW frameworks such as IBM Eclipse, Nokia QT, or
Instigate Application Framework.
RTL - Register Transfer Level - refers to abstraction level used in defining
digital circuits in one of commonly used Hardware Description Languages
(HDL) such as Verilog or VHDL, that is suitable as input for Synthesis
tools. Synthesis tools read-in RTL description and produce netlists, which
are HDL descriptions of the same circuit in much lower abstraction level: instantiating library modules (e.g. LUT/DFF on FPGA) and specifying their
interconnect. Each synthesis tool defines it’s own subset of HDL syntax and
other constraints, which together define the synthesizable subset of the HDL.
SoC - an ASIC that has complete compute system inside: one or many
CPU cores, a Bus or Network On Chip (NoC) fabric, Memory Controller,
and other HW-accelerators or peripheral controllers. Note that SoC can be
designed not only using standard ASIC technology, but also can be built on
top of a heterogeneous universal chip such as Xilinx Zynq or Nvidia Tegra.
In this case the HW-accelerated operations are mapped to the FPGA or
GPGPU fabric respectively. For example, some mobile device manufacturers (e.g. Motorola) have started producing smart-phones with Nvidia Tegra
used instead of classical SoC
6
www.instigatedesign.com
2
Company Overview
2.1
Founders
Enno Wein, Co-Founder and President, Germany [1]
• 20 years of experience in EDA and Semiconductor
• LSI Logic (Europe, USA), Monterey Design, Element CXI (USA)
• Multiple entrepreneur (Germany, Armenia)
• 15+ patents in Semiconductor, Reconfigurable computing, CPU/CGRA
(USA and Europe)
Vahagn Poghosyan, Ph.D, Co-Founder and CTO, Armenia [2]
• 15 years of experience in EDA and Embedded development
• Monterey Design (USA), Synopsys (USA), Element CXI (USA),
• Patents in EDA and Embedded SW development (USA and Europe)
For details see also [3] [4] [5]
2.2
Corporate structure
Overall Instigate ecosystem is depicted below:
The headquarters of the company is in Yerevan, Armenia. The engineering
centers are located in Yerevan and 4 other cities in Armenia.
Main business of Instigate lies in design services in EDA, with strong emphasis on FPGA tool-chain and IDE, as well as CGRA, including custom
7
www.instigatedesign.com
DSP/ALU/CPU fabrics. The company has a strong experience in writing
parsers for RTL, parsers for higher level languages such as SystemC/TLM
and C/C++, using various parser/compiler front-ends, and optimizing compilers. Some teams worked on advanced HLS tools, such as power-optimizing
C/C++ to Verilog compilers. Complex HW/FW/SW modeling, validation
and verification is another major strength of our teams.
The daughter companies, subsidiaries and spin-outs were created to cover
other related areas, as well as VC-funded startups to build EDA and semiconductor or SW products in these and related areas.
2.3
Capacity
Overall there are more than 200 engineers working in Instigate and its subsidiaries. Most of the engineers come from Yerevan universities, which have
strong history of CS/EE training, with strong emphasis on EDA (especially
the Applied Mathematics faculty of the Yerevan State University). They
pass through special training program organized by our NGO subsidiary
the Instigate Training Center Foundation. Instigate cjsc (the design service
company) employs more than 100 engineers experienced in EDA, Semiconductor, and Embedded SW projects. There EDA/Semiconductor experience
is mainly related with FPGA tool-chain and IDE development, and relatively
less for ASIC.
With proper initial planning Instigate can ramp-up a team of 10-20 engineers within several months in all areas of its expertise, and all types
of work: R&D, Application Engineering, Software/Hardware/System-Level
Quality Assurance, Configuration Management, IT.
2.4
Example of Capacity Building
Amtokay cjsc is an example of Instigate’s capability to ramp-up an entire
R&D center for US/European companies in Armenia. It is a turn-key subsidiary created for Abound Logic (M2000) - an FPGA startup located in
France and California - which was outsourcing some of it’s R&D and SQA
projects to Instigate in 2006-2007.
At some point the scope of the work done at Instigate reached the level
where Abound Logic was concerned about security of it’s R&D progress,
schedules, and investment in general, in the case that Instigate undergoes
M&A process.
Abound Logic asked for special contract, which would protect their R&D
team from being acquired by a third party. The solution was a subsidiary
8
www.instigatedesign.com
created and operated by Instigate to exclusively contract with Abound
Logic, and protected by special contractual agreement, under which Abound
Logic would be able to purchase this subsidiary at certain points in time,
with certain predefined price, between 2007-2010.
The project was extremely successful for both sides: Instigate raised R&D,
QA, and IT/CM teams, total of 25 engineers, which operated successfully
until 2010.
Unfortunately, the Amtokay subsidiary is currently shut-down, following
the bankruptcy of Abound Logic in 2010.
Nevertheless Instigate retained significant know-how, experience and skills
in this area, and gained valuable knowledge and ability to ramp-up such
teams for advanced EDA/Semiconductor projects.
2.5
Instigate recruitment/HR strategy
Instigate Training Center is the foundation of Instigate unique HR/recruiting
strategy.
It starts by bringing in interns into Instigate Training Center and teaching
them basics of Production System, Quality Management System, Collaboration tools, IT/CM tools, and Industry overview (Semiconductor, EDA,
Embedded, Mobile world).
Then selected graduates continue internship by participating in multiple
of advanced research projects and open-source projects. Some of these become real products and Instigate spins them out as standalone business, or
continues their development in professional environment.
More than 400 new hires passed through Instigate Training Center program. More than 50% of them works at Instigate or it’s subsidiaries/spinouts (200+ engineers) and more than 30% have found jobs in other IT
companies in Armenia and world-wide (many moved to USA/Canada/EU
and work in companies such as BMW and Nokia).
2.6
Presence and Capacity in Europe
Instigate has partners in Germany through which it provides design services
to local customers. Under this partnership it is possible to ramp-up teams
in Germany (primarily Munich).
For local support, delivery and training, it is also possible to organize long-
9
www.instigatedesign.com
term business trips from Yerevan.
For example in 2012-2013 several developers are working on 1+ year onsite projects in offices of a major car manufacturer in Germany.
2.7
Partners
Instigate has business development partners and sales representatives in
several countries world-wide. As the ramping up of teams in Europe may
take more time and be limited by the lack of available profiles, Instigate
offers the possibility to relocate some of its own developers. In such cases
the selection is made from those developers, who are already planning to go
abroad for long-term or permanent assignments.
10
www.instigatedesign.com
3
3.1
Instigate History
A note on history of IT in Armenia
Being only 2% of population of USSR, Armenia was designing, producing
and exporting 40% of the electro-technical equipment of USSR. Most of
production was secret factories working for USSR defense industry. EDA
algorithms for P&R used by most of EDA tools where developed by discretemathematicians of Yerevan Institute of Mathematical Machines.
This and several other institutions have developed USSR’s own compute
platforms‘ Nairi and Hrazdan, before USSR decided to switch to IBM360compatible architecture and started cloning IBM computers.
3.2
Current state of IT in Armenia
After collapse of USSR most of the institutes and production factories were
shut-down, privatized or destroyed. Most of the work-force left Armenia
to find jobs in Europe and USA. In 1990’s and 2000s they started coming
back and launching companies and foreign company subsidiaries in Armenia. Currently all together there are about 10000 employees in IT sector,
with strong emphasis on complex algorithmic SW development.
EDA leaders such as Synopsys and Mentor Graphics have large (several
hundreds engineers) subsidiaries in Yerevan. Recently Synopsys announced
expansion in Stepanakert, by starting a special faculty in State University.
Synopsys and National Instruments also have large faculty/labs in Yerevan
Polytechnic State University.
Note that Instigate Training Center is also currently in process of establishing a LAB in the Yerevan State Polytechnical University, with strong
emphasis on DSP, FPGA programming, EDA and Embedded SW development.
See also [6] for information on IT sector in Armenia.
3.3
Incubation: Instigate Training Center (2004)
Enno and Vahagn met and worked together between 2001-2004 at Monterey
Design, an EDA startup in Silicon Valley, California, with large remote R&D
team in Yerevan, Armenia.
In 2004 Monterey was acquired by Synopsys, which inherited Monterey’s
Armenian subsidiary, and described this as a talent acquisition, rather than
technology acquisition [7]. Enno and Vahagn decided to start their own
11
www.instigatedesign.com
business in Armenia, which eventually have grown to multiple companies
in Armenia and Germany, some with VC-funding, and some created with
private investment and profit generated from the consulting business.
Instigate started in 2004 as training/incubation center in Yerevan, Armenia,
with strong emphasis on EDA and Semiconductor development, first of all
because of background of its founders, but also because Armenia was one of
the leading EDA and Semiconductor development centers of former USSR.
3.4
Original Product Vision
The goal of founders in 2004-2005 period was to rise funding for own EDA
tool and framework, including GUI Cockpit (IDE) with plug-in API (similar to Eclipse) that would enable EDA start-ups to build their point-tools
in a high-quality GUI environment. The Framework would cover all design
phases, starting from early Algorithmic/ESL phases, down to P&R.
This instigated deep study of HW-SW partitioning and co-design technologies, and established tradition at Instigate to pass new hires though combined HW/SW/FW development trainings and career-path.
3.5
Incorporation (2005)
When the team was well trained and capable to develop products, and funds
where needed to support it, the founders decided to offer design-services in
the same fields: ESL design, Reconfigurable Computing, etc.
The company was incorporated in 2005 in Yerevan, Armenia. First customers where fabless CGRA vendors from Silicon Valley, and HLS vendors
from USA and Europe.
In 2006 Vahagn moved back to Armenia, to manage the growing R&D activity as the CTO. Enno is frequently travelling between the USA, Europe,
and Armenia and is mainly responsible for the business development as well
as strategic technology development.
3.6
FPGA experience centers in Yerevan and Gyumri (20062007)
In 2006 Instigate started a subsidiary in Gyumri, the second largest city in
Armenia, where we found post-graduate school that provides good FPGAdesign classes, and hired first graduates of this school.
In 2007 Instigate engaged in subsidiary creation service agreement with
EU/USA based FPGA startup M2000 (Abound Logic) and built a large
12
www.instigatedesign.com
team of FPGA fabric & tool-chain validation experts, as well as R&D (P&R,
Logic Optimization/Mapping, STA) and CM/IT teams. As part of subsidiary creation service, we have also built separate infrastructure, with
completely isolated Internet service, LAN and VPN, as well as exclusive
office access for the employees of this team.
Thanks to this, and other customer projects with FPGA involvement, there
is a large and well trained team currently available in both Yerevan and
Gyumri with good experience in FPGA fabric and FPGA tool-chain validation and verification.
3.7
Instigate Application Framework for EDA SW Development
Between 2006-2008 Instigate has developed two products at it’s Training
Center: the Instigate Application Framework set of C/C++ rapid application development tools and libraries for development of rich GUI and TCLbased embedded scripting, with strong emphasis on CAD tool development,
and Proximus the HW/SW partitioning and co-design tool. Instigate Application Framework versions 2.0 and 3.0 ware used by several external and
internal customers to build modern CAD tools with rich documentation,
automatic QA (including automatic GUI tests) and automatic generation of
on-line documentation and tutorials, as part of build process and regression
test system.
3.8
Design Services as Marketing Strategy
Later, when it was possible to bring investment, support own development
and build the products as planned, Instigate decided to continue the designservice business in parallel, because it was a great source of marketing and
knowledge on customer needs.
In many cases the design service provided by Instigate to customers was
accompanied with products offering: Proximus or Framework licenses were
provided as part of design service to customers, where it was possible to
significantly reduce the HW modeling effort, or IDE/GUI coding effort by
using these products.
This enabled early validation of our products on real-life projects, even in
the phase when they were not fully functional, but were already mature
enough to significantly reduce R&D and SQA team efforts, significantly
cutting costs for customers, and increasing Instigate’s competitiveness as
R&D, QA, Application Engineering and Tech-Writer service provider.
13
www.instigatedesign.com
3.9
Proximus - ESL spin-out (2008)
In 2008 Proximus was spun-off into Germany (Munich) based VC funded
startup, with R&D Center in Armenia. Since then it expanded it’s product
line to cover heterogeneous computing, High Performance Computing and
parallel system design in general.
Currently it has one major SoC customer STMicroelectronics, in Grenoble,
and is now in process of validating the Proximus as runtime environment
for cluster-computing and heterogeneous computing.
3.10
Mobile and Web experience centers (2010-2012)
Since then establishing branches in regions of Armenia became one of the
main points of our HR strategy. Currently Instigate has subsidiaries in Yerevan, Gyumri, Goris, Vanadzor, Stepanakert (Armenia) as well as subsidiary
in Tbilisi and Akhalqalak (Georgia). For design services and solutions where
Mobile and Web technologies are involved, we also established subsidiary
specialized in iOS, Android, and other mobile platforms and Web technologies Instigate Mobile cjsc, based in Yerevan, Vanadzor, and Stepanakert
(Armenia).
3.11
Exergy - Energy Efficient High Performance Computing (2012)
In 2012 Instigate started spin-out of second start-up, Exergy cjsc, which
is specialized in building High Performance Compute servers and workstations, with up to 64-core AMD CPUs and up to 8-core GPGPUs in single
water cooled high-quality server box, produced in partnership with German
server manufacturer, using our water cooling technology, and using Proximus as Operating System for heterogeneous/cluster computing. It is also
possible to equip Exergy servers with FPGA boards attached to PCIE or
other interfaces and use Proximus to develop applications for such computers. Currently Proximus is developing technologies for hot-swap of modules
on the FPGA fabric without rebooting main operating system. Main experiments are done using Xilinx Zynq platform.
3.12
Yerevak - H.265/HEVC Technology startup (2013)
Next internal product which is currently in process of funding is an H.265
technology and product startup, which researches modern video-coding standards, including up-coming H.265/HEVC and VP9 standards, and builds
universal parallel implementations and models of these algorithms using
Proximus technology and Exergy servers.
14
www.instigatedesign.com
Then it applies the gained knowledge of intrinsics and parallelization possibilities, to implement these algorithms on various platforms and compute
fabrics, to build various products, ranging from ASIC/SOC implementations, which require HW-SW trade-off decisions and architecture exploration, to Heterogeneous chips such as NVIDIA Tegra and Xilinx Zynq,
to high-performance computing heterogeneous servers, such as Exergy computer with 64 AMD CPUs, 6000+ NVIDIA GPGPU cores, and possibility
to add FPGA cards for further optimization and off-loading of computationintensive parts. Latter is applicable in high-end products such as 8K digital cinema servers, teleconferencing solutions, as well as IP-TV back-end
servers.
15
www.instigatedesign.com
4
Coarse-grain reconfigurable computing
Instigate had multiple CGRA customers, involving both development and
verification of both the HW fabric and R&D tool-chain.
4.1
Tool-chain development and verification
For several CGRA devices we have developed various parts of R&D toolchain:
Compiler for embedded custom processors (16 bit architecture, custom instruction set). Compiler is developed completely from scratch, using simplified version of C, with special hooks to access additional HW accelerators
and I/O modules available on system bus via special instructions. I/O modules allow communication with other nodes in the CGRA array.
Compiler for 32-bit RISK processor on a distributed-memory architecture
(Mesh of CPU and RAM modules) with special hooks to access multi-port
RAMs and send/receive information to remote nodes, and remote RAM
blocks, that are not directly accessible from current node.
Design and implementation of custom Assembler-like language for CGRA
fabric, providing combination of declarative language (netlist description)
and imperative language (DSP configurations, CPU programs). Implementation of compiler, linker, loader.
4.2
Early evaluation of the architecture
Instigate was involved in early modeling of CGRA fabric for a customer in
a very early phase of architecture specification. Early SW models of the
half-specified fabric enabled validation of the future HW fabric from performance and programmability (expressiveness, convenience) point of view in
very early phase of the architecture specification.
Applications engineering team was using an IDE/GUI front-end on top of
this early model to develop applications. This enabled early feedback on
(dynamic) routing resources availability and other hard-to-estimate performance metrics in a phase when the HW, ALU specifications, instruction-sets,
and BUS/NoC arbitration logic was not fully designed/chosen.
4.3
Bit-accurate HW models
The early HW model was maintained in parallel with refinement of the architecture specification, and eventually turned into cycle-accurate and bitaccurate model of the actual chip. It was integrated into IDE with rich
GUI, displaying the entire device hierarchy, and allowing to program and
16
www.instigatedesign.com
debug the model interactively, with single clock stepping, register probing/modification, waveform analysis, and many other convenient features.
4.4
HW Verification
For this and other CGRA customers we did HW Verification as well, using
functional and performance tests, developed for verification purposes, and
tried first of all on HW models, then on FPGA emulated prototypes, and
finally on the actual HW. In some cases HW was provided to Instigate
locally (in Yerevan/Gyumri) and in other cases it was made available over
the network, with special power management system controllable over VPN.
4.5
Functional models
In order to speedup execution of functional tests, a special model was developed, which was fully compatible with bit-accurate simulator, but excluded
all the timing characteristics except temporal dependencies between events.
Optimized netlist was generated based on the HW configuration, using graph
arrangement and other combinatorial optimization algorithms. The result
was 100-1000x simulation speedup for running regression tests.
4.6
Core Generators
Instigate developed rich set of Core Generators for several CGRA fabrics.
These are functionally similar to Matlab DSP block-set, providing automatic
synthesis and mapping of the netlist onto the CGRA fabric, instantiating
HW-accelerators and ALU modules available in the fabric, and configuring
the switching fabric according to the interconnect.
4.7
IDE development
All above mentioned tools were integrated into GUI cockpit (IDE) providing convenient access to these tools, integrated with source code editor with
syntax highlighting, visualization of the compute fabric and it’s configuration bits, possibility to visually program both the logical interconnect and
mapping of it onto physical device.
The IDE also integrated library of Core Generators, and Schematic Editor to build hierarchical designs from generated/instantiated cores.
17
www.instigatedesign.com
5
5.1
FPGA IDE/Tool-chain development, Validation,
Testing
FPGA Test designs
For several FPGA customers we have developed test-designs, starting from
simple library-modules to full-blown systems (e.g. several million LUT/DFF),
instantiating also the DSP, DPRAM, and other coarse-grain reconfigurable
nodes available on the fabric. Example of such designs is a multi-core microarchitecture using LEON3 CPU and AMBA bus fabric, fully operational:
with boot-loader and application running inside the system as part of the
simulation.
This was used to validate both the Synthesis/P&R tool-chain, as well as
to validate the actual fabric. IO testing was also performed by Instigate for
several custom IO blocks. Engineers have good skills in reading complex
specs (e.g. SERDES) and developing good test-plans based on these.
5.2
FPGA IP development
IP libraries such as parametric modules for instantiation of DSP, DPRAM
and IO modules were developed by Instigate for customer’s FPGA fabric.
5.3
System Level validation and verification
Instigate offered system level validation services to CGRA fabrics in the
past. Similar project can be implemented for FPGA vendors. Currently we
are building such solution based on Xilinx Zynq for Proximus-DA. The goal
is to prove that Proximus is useful for programming CPU + FPGA combination. Full blown applications are being developed partially in C/C++ and
partially in Verilog and mapped to an Exergy server with PCIE-attached
Xilinx FPGA board, and/or to Zynq card, utilizing embedded ARM fabric.
Instigate has all necessary knowledge to implement complex full-blown reallife applications, which would be mapped to a CPU + FPGA combination
and prove usability of the FPGA fabric and Synthesis/P&R tool-chain in
the complete flow, taking into account all nuances of collaboration between
HW, FW and SW teams in such project, and providing feedback to the
R&D team on usability, functionality, performance and documentation of
the tool-chain.
5.4
Core Generators
For complex IPs, rather than implementing them as parametric RTL modules, we have developed SW core-generators, which produce optimized fully
18
www.instigatedesign.com
or partially synthesized netlists based on the user-specified parameters of
the IP.
5.5
P&R tool-chain
Instigate has experience in building various P&R tools either completely
standalone, or as part of distributed team, with leads working remotely in
the US and/or EU. Due to background of founders, and strong school in
Yerevan State University, Instigate, and Armenian EDA companies in general, are traditionally specialized in Back-End: Floor-planning, Partitioning,
P&R. For several customers we have also worked on STA and elements of
Front-End: synthesis and logic optimization.
5.6
FPGA IDE and IFS development
Instigate has good experience in developing various IDEs and GUI Cockpits
for EDA tools, with and without using it’s Application Framework for EDA
SW development. This also includes database/IFS development, importexport utilities, HDL parsers, etc.
5.7
HW validation and verification
In addition to IDE/Tool-chain verification and validation, Instigate also provides services in development of functional models of HW components (DSP,
I/O, LUT/DFF, etc), as well as their usage in SQA tool-chain, in validation
of HW, as well as other tasks related to HW fabric validation, bit-stream
validation, etc, which require good understanding of all aspects: HW fabric,
Tool-Chain, and application domain (RTL development, simulation).
19
www.instigatedesign.com
6
6.1
Electronic System Level Design
Modeling heterogeneous fabrics
As it has been mentioned in chapter 4, while working on reconfigurable
and heterogeneous fabrics, Instigate had to develop not only tool-chain for
configuring those fabrics, but also SW models of the HW, to enable SW codesign in the early phases of the HW Fabric development, when the actual
chip, or the FPGA emulation was not yet available.
Later on the model was still useful for regression testing, as well as for HW
validation to run unit-tests of the HW IP blocks. Multiple models have
been built by Instigate for different devices at multiple abstraction levels:
fast functional models for functional SW co-design, verification, and HW validation, approximately timed models for SW architecture exploration, HW
performance analysis, and overall system-level performance validation, and
clock-accurate models for detailed SW/FW validation, performance analysis, and SQA.
6.2
Algorithm parallelization and mapping to reconfigurable
devices
Instigate’s main experience is parallelization of algorithms and functional
reference implementations with the purpose of subsequent mapping of the
resulting netlist onto various target fabrics.
These fabrics are ranging from parallel multi-core/many-core CPU fabrics,
to heterogeneous devices such as NVIDIA Tegra and Xilinx Zynq, as well as
pure FPGA implementations. Such experience was put into different EDA
tools, ranging from ESL design and modeling environments such as Proximus, to HLS tools, such as C RTL translators. Instigate has experience in
developing C/C++/SystemC/TLM code parsers, and analysis tools, which
help the user to semi-automatically or fully automatically parallelize the sequential code.
We believe, however, that systems such as Xilinx Zynq should be targeted in
the same manner, as classical SoC design: it’s a multi-discipline team work,
requiring all phases of classical SoC design: algorithmic phase, structural
decomposition phase, HW-FW-SW partitioning (Architecture Exploration),
and subsequent implementation of HW, FW, and SW by corresponding design teams, including the TLM modeling team which would implement the
SW models of the future Hardware, to enable early SW co-design.
20
www.instigatedesign.com
6.3
Proximus - new paradigm for parallel/reconfigurable computing
Targeting wide variety of reconfigurable, parallel, and heterogeneous fabrics, Instigate has come to conclusion that hierarchical netlist with blocking
I/O (FIFO semantics) is the universal approach to logical design of future
electronic systems. Our proposed flow has Logical Design (Front-End) step
based on this paradigm, followed by Physical design (Back-End) which allows actual mapping of this logical hierarchical netlist onto the existing
or future (yet to be designed) platform, such as FPGA, or heterogeneous
reconfigurable devices such as Xilinx Zynq, Nvidia Tegra, or regular computers/servers with FPGA or GPGPU cards plugged into their PCIE slots.
Based on this methodology, Instigate has developed a tool-chain and IDE
for universal parallel design of systems, called Proximus. In 2008 this was
spun-off into independent company, which continues buying services from
Instigate, as well as being the main user of it’s EDA Application Framework, thanks to which Proximus has saved multiple millions of $ on SQA,
Tech-Writers, and GUI/IFS team costs.
21
www.instigatedesign.com
7
7.1
Embedded SW Development
GNU/Linux kernel and driver porting
While working with various CPU’s embedded into heterogeneous/reconfigurable
fabrics, Instigate had multiple projects involving FW development, as well as
OS/Driver porting, testing, fixing. This includes both work on SW models
(instruction-set-simulators) of the CPU’s, as well as actual hardware.
7.2
Development of drivers for IP’s mapped to reconfigurable
fabric
One of currently active projects is an ambitious large-scale platform development for Xilinx Zynq platform, as part of Proximus Runtime Environment. The goal is to enable HW-accelerated IP mapping to the FPGA fabric
available on the Zynq, and activation/deactivation of these HW peripherals without rebooting GNU/Linux or Android/Linux platform running on
the embedded ARM cores. This includes development of special drivers in
combination with bit-stream loading/unloading and partial reconfiguration
of the FPGA.
7.3
Mobile SW development
When the solutions need to include applications for Mobile devices or Webtechnologies, then Instigate Mobile cjsc can provide necessary resources.
For example, for one of our EDA customers our web technology experts are
building fully customized feature-rich automatic build system, with webinterface for control and interactive browsing of consolidated reports, simulation statistics, profile results, etc.
22
www.instigatedesign.com
References
[1] Enno Wein, Linked-In profile http://www.linkedin.com/pub/enno-wein/2/b/661
[2] Vahagn Poghosyan, Linked-In profile http://www.linkedin.com/pub/vahagn-poghosyan/4/284/787
[3] Patents, Enno Wein http://patent.ipexl.com/inventor/Enno_Wein_1.html
[4] Patents, Vahagn Poghosyan http://patent.ipexl.com/inventor/Vahagn_Poghosyan_1.html
[5] Patent, Proximus technology http://www.highbeam.com/doc/1P3-2251949181.html
[6] Armenian IT sector overview http://www.caps.am/UserFiles/File/EIF-ENG.pdf
[7] Commentary on EDA, including reference to Monterey Design’s acquisition by Synopsys (link)
[8] Instigate Web-Site http://www.instigatedesign.com
23
Download