ABSTRACT Title of Thesis: LOGIC FOUNDRY: A DESIGN ENVIRONMENT FOR
kajima
Department of Electrical and Computer Engineering
Professor Shuvra Bhattacharyya
Department of Electrical and Computer Engineering
We introduce the Logic Foundry, a system for the rapid creation and integration
of FPGA-based digital signal processing systems. Recognizing that some of the
greatest challenges in creating FPGA-based systems occur in the integration of the
various components, we have proposed a system that targets the following four areas of
integration: design flow integration, component integration, platform integration, and
software integration. Using the Logic Foundry, a system can easily be specified, and
then automatically constructed and integrated with system-level software.
LOGIC FOUNDRY: A DESIGN ENVIRONMENT FOR THE RAPID
PROTOTYPING OF FPGA-BASED DSP SYSTEMS
by
Gary Elwyn Spivey
Dissertation submitted to the Faculty of the Graduate School of the
University of Maryland, College Park in partial fulfillment
of the requirements for the degree of
Doctor of Philosophy
2002
Advisory Committee:
Professor Kazuo Nakajima, Chair/Advisor
Professor Shuvra S. Bhattacharyya, Co-Advisor
Professor Bruce L. Jacob
Professor Martin C. Peckerar
Professor Peter A. Sandborn
ii
List of Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
List of Figures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
Chapter 1:
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Chapter 2:
Example of Current Methodology . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1 Design Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Design Methodology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.1 Design Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.2 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.3 Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.4 Logic Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.5 Place and Route. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Chapter 3:
Prior Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.1 POLIS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2 Ptolemy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3 GRAPE-II. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4 JHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.5 C-Level Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.6 Handel-C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.7 SystemC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.8 Xilinx System Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.9 MATCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
TABLE OF CONTENTS
iii
3.10 DEFACTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.11 Sanders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.12 Champion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.13 SLAAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.14 CoWare N2C Design System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Chapter 4:
EP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.1 The EP3 Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2 The Standard EP3 Directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2.1 The define Directive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2.2 The replace Directive . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.2.3 The eval Directive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.2.4 The include Directive . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.2.5 The enum Directive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2.6 The ifdef and ifndef Directives . . . . . . . . . . . . . . . . . . . . . 39
4.2.7 The if Directive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2.8 The elif [elsif] Directive . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2.9 The else Directive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2.10 The endif Directive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2.11 The comment Directive. . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2.12 The ep3 Directive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.2.13 The perl_begin and perl_end Directives . . . . . . . . . . . . . 42
4.3 Verilog Directive Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3.1 The signal Directive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
iv
4.3.2 The denum Directive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.3 The step and edgename Directives . . . . . . . . . . . . . . . . . . 46
4.4 VHDL Directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.4.1 The vhdl_port Directive . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.4.2 The vhdl_generic Directive. . . . . . . . . . . . . . . . . . . . . . . . 48
4.4.3 The vhdl_entity_port Directive . . . . . . . . . . . . . . . . . . . . . 49
4.4.4 The vhdl_entity_generic Directive . . . . . . . . . . . . . . . . . . 50
4.4.5 The vhdl_port_printer Directive . . . . . . . . . . . . . . . . . . . . 51
4.5 EP3 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Chapter 5:
Design Flow Integration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.1 MEADE Microkernel Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.2 MEADE Methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.3 The Blackboard Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.4 Microkernel Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.4.1 Agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.4.2 Actions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.4.3 Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.5 MEADE Kernel Modules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.5.1 MEADE Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.5.2 MEADE Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.6 MEADE EP3 Directives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.6.1 The vhdl_nodelib Directive. . . . . . . . . . . . . . . . . . . . . . . . 88
5.7 MEADE Application Modules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
v
5.7.1 Node Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.7.2 Preprocessing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.7.3 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.7.4 Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.7.5 Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.7.6 Place and Route. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.8 Design Flow Integration Example . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.9 Design Flow Integration Summary . . . . . . . . . . . . . . . . . . . . . . . . . 96
Chapter 6:
Component Integration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
6.1 The Attribute Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
6.2 Data Portals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
6.3 The Component Specification File. . . . . . . . . . . . . . . . . . . . . . . . . 103
6.4 Packet Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.5 The Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6.6 EP3 Algorithm and Component Directives . . . . . . . . . . . . . . . . . . 108
6.6.1 The attribute Directive. . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.6.2 The attribute_portal Directive . . . . . . . . . . . . . . . . . . . . . 109
6.6.3 The vhdl_alg_attribute_portal Directive . . . . . . . . . . . . . 109
6.6.4 The vhdl_comp_attribute_portal Directive . . . . . . . . . . . 111
6.6.5 The data_portal Directive . . . . . . . . . . . . . . . . . . . . . . . . 111
6.6.6 The vhdl_alg_instance Directive. . . . . . . . . . . . . . . . . . . 113
6.6.7 The vhdl_fifo_instance Directive . . . . . . . . . . . . . . . . . . 114
6.6.8 T