WO2002061633A2 - System, method and article of manufacture for signal constructs in a programming language capable of programming hardware architectures - Google Patents

System, method and article of manufacture for signal constructs in a programming language capable of programming hardware architectures Download PDF

Info

Publication number
WO2002061633A2
WO2002061633A2 PCT/GB2002/000384 GB0200384W WO02061633A2 WO 2002061633 A2 WO2002061633 A2 WO 2002061633A2 GB 0200384 W GB0200384 W GB 0200384W WO 02061633 A2 WO02061633 A2 WO 02061633A2
Authority
WO
WIPO (PCT)
Prior art keywords
handel
value
recited
programming language
clock cycle
Prior art date
Application number
PCT/GB2002/000384
Other languages
French (fr)
Other versions
WO2002061633A3 (en
Inventor
Matt Bowen
Original Assignee
Celoxica Limited
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Celoxica Limited filed Critical Celoxica Limited
Publication of WO2002061633A2 publication Critical patent/WO2002061633A2/en
Publication of WO2002061633A3 publication Critical patent/WO2002061633A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Definitions

  • the present invention relates to programmable hardware architectures and more particularly to programming field programmable gate arrays (FPGA's).
  • FPGA's field programmable gate arrays
  • a software-controlled processor is usually slower than hardware dedicated to that function.
  • a way of overcoming this problem is to use a special software-controlled processor such as a RISC processor which can be made to function more quickly for limited purposes by having its parameters (for instance size, instruction set etc.) tailored to the desired functionality.
  • a system, method and article of manufacture are provided for using a dynamic object in a programming language.
  • an object is defined with an associated first value and second value.
  • the first value is used in association with the object during a predetermined clock cycle.
  • the second value is used in association with the object before or after the predetermined clock cycle.
  • the object may be used to split up an expression into sub-expressions.
  • the sub-expressions may be reused.
  • the first value may be assigned to and read from the object during the predetermined clock cycle.
  • the programming language may be adapted for programming a gate array.
  • the programming language may include Handel-C.
  • Figure 1 is a schematic diagram of a hardware implementation of one embodiment ofthe present invention
  • Figure 2 illustrates a design flow overview, in accordance with one embodiment of the present invention
  • Figures 3A and 3B illustrate a table showing various differences between Handel-C and the conventional C programming language, in accordance with one embodiment ofthe present invention
  • Figure 4 illustrates the manner in which branches that complete early are forced to wait for the slowest branch before continuing
  • FIG. 5 illustrates the link between parallel branches, in accordance with one embodiment ofthe present invention
  • FIG. 6 illustrates the scope of variables, in accordance with one embodiment ofthe present invention
  • Figure 7 illustrates a method for using a dynamic object in a programming language.
  • a preferred embodiment of a system in accordance with the present invention is preferably practiced in the context of a personal computer such as an IBM compatible personal computer, Apple Macintosh computer or UNIX based workstation.
  • a representative hardware environment is depicted in Figure 1, which illustrates a typical hardware configuration of a workstation in accordance with a preferred embodiment having a central processing unit 110, such as a microprocessor, and a number of other units interconnected via a system bus 112.
  • the workstation shown in Figure 1 includes a Random Access Memory (RAM) 114, Read Only Memory (ROM) 116, an I/O adapter 118 for connecting peripheral devices such as disk storage units 120 to the bus 112, a user interface adapter 122 for connecting a keyboard 124, a mouse 126, a speaker 128, a microphone 132, and/or other user interface devices such as a touch screen (not shown) to the bus 112, communication adapter 134 for connecting the workstation to a communication network (e.g., a data processing network) and a display adapter 136 for connecting the bus 112 to a display device 138.
  • a communication network e.g., a data processing network
  • display adapter 136 for connecting the bus 112 to a display device 138.
  • the workstation typically has resident thereon an operating system such as the Microsoft Windows NT or Windows/95 Operating System (OS), the IBM OS/2 operating system, the MAC OS, or UNIX operating system.
  • OS Microsoft Windows NT or Windows/95 Operating System
  • IBM OS/2 operating system the IBM OS/2 operating system
  • MAC OS the MAC OS
  • UNIX operating system the operating system
  • the hardware environment of Figure 1 may include, at least in part, a field programmable gate array (FPGA) device.
  • FPGA field programmable gate array
  • the central processing unit 110 may be replaced or supplemented with an FPGA.
  • FPGA devices include the XC2000TM and XC3000TM families of FPGA devices introduced by Xilinx, Inc. of San Jose, Calif. The architectures of these devices are exemplified in U.S. Pat. Nos. 4,642,487; 4,706,216; 4,713,557; and 4,758,985; each of which is originally assigned to Xilinx, Inc. and which are herein incorporated by reference for all purposes. It should be noted, however, that FPGA's of any type may be employed in the context ofthe present invention.
  • Handel-C is a programming language marketed by Celoxica Limited. Handel-C is a programming language that enables a software or hardware engineer to target directly FPGAs (Field Programmable Gate Arrays) in a similar fashion to classical microprocessor cross- compiler development tools, without recourse to a Hardware Description Language. This allows the designer to directly realize the raw real-time computing capability of the FPGA.
  • FPGAs Field Programmable Gate Arrays
  • Handel-C allows one to use a high-level language to program FPGAs. It makes it as easy to implement complex algorithms by using a software-based language rather than a hardware architecture-based language. One can use all the power of reconfigurable computing in FPGAs without needing to know the details of the FPGAs themselves.
  • a program may be written in Handel-C to generate all required state machines, while one can specify storage requirements down to the bit level.
  • a clock and clock speed may be assigned for working with the simple but explicit model of one clock cycle per assignment.
  • a Handel-C macro library may be used for bit manipulation and arithmetic operations.
  • the program may be compiled and then simulated and debugged on a PC similar to that in Figure 1. This may be done while stepping through single or multiple clock cycles. When one has designed their chip, the code can be compiled directly to a netlist, ready to be used by manufacturers' place and route tools for a variety of different chips.
  • Handel-C optimizes code, and uses efficient algorithms to generate the logic hardware from the program. Because of the speed of development and the ease of maintaining well-commented high-level code, it allows one to use reconfigurable computing easily and efficiently.
  • Handel-C has the tight relationship between code and hardware generation required by hardware engineers, with the advantages of high-level language abstraction. Further features include:
  • Handel-C is thus designed to enable the compilation of programs into synchronous hardware; it is aimed at compiling high level algorithms directly into gate level hardware.
  • the Handel-C syntax is based on that of conventional C so programmers familiar with conventional C will recognize almost all the constructs in the Handel- C language. Sequential programs can be written in Handel-C just as in conventional C but to gain the most benefit in performance from the target hardware its inherent parallelism must be exploited. Handel-C includes parallel constructs that provide the means for the programmer to exploit this benefit in his applications.
  • the compiler compiles and optimizes Handel-C source code into a file suitable for simulation or a net list which can be placed and routed on a real FPGA.
  • Handel-C is a programming language designed to enable the compilation of programs into synchronous hardware.
  • the Handel-C compiler and simulator will now be described.
  • the Handel-C language will be described hereinafter in greater detail.
  • Figure 2 illustrates a design flow overview 200, in accordance with one embodiment of the present invention.
  • the dotted lines 202 show the extra steps 204 required if one wishes to integrate Handel-C with VHDL.
  • Handel-C is halfway between RTL and a behavioral HDL. It is a high-level language that requires one to think in algorithms rather than circuits.
  • Handel-C uses a zero-delay model and a synchronous design style.
  • Handel-C is implicitly sequential. Parallel processes must be specified. • All code in Handel-C (apart from the simulator chanin and chanout commands) can be synthesized, so one must ensure that he or she disables debug code when he or she compiles to target real hardware.
  • Handel-C Signals in Handel-C are different from signals in VHDL; they are assigned to immediately, and only hold their value for one clock cycle.
  • Handel-C has abstract high-level concepts such as pointers.
  • Figures 3 A and 3B illustrate a table showing various differences 3100 between Handel-C and the conventional C programming language, in accordance with one embodiment ofthe present invention.
  • Handel-C uses the syntax of conventional C with the addition of inherent parallelism.
  • One can write sequential programs in Handel-C but to gain maximum benefit in performance from the target hardware one must use its parallel constructs. These may be new to some users.
  • Handel-C is designed to allow one to express the algorithm without worrying about how the underlying computation engine works. This philosophy makes Handel-C a programming language rather than a hardware description language. In some senses, Handel-C is to hardware what a conventional high-level language is to microprocessor assembly language.
  • Handel-C produces is generated directly from the source program. There is no intermediate 'inte ⁇ reting' layer as exists in assembly language when targeting general pu ⁇ ose microprocessors.
  • the logic gates that make up the final Handel-C circuit are the assembly instructions of the Handel-C system.
  • Handel-C is based on the syntax of conventional C, programs written in Handel-C are implicitly sequential. Writing one command after another indicates that those instructions should be executed in that exact order.
  • Handel-C provides constructs to control the flow of a program. For example, code can be executed conditionally depending on the value of some expression, or a block of code can be repeated a number of times using a loop construct.
  • Handel-C parallelism is true parallelism - it is not the time-sliced parallelism familiar from general pu ⁇ ose computers.
  • FIG. 4 illustrates the manner 4900 in which branches that complete early are forced to wait for the slowest branch before continuing.
  • Figure 4 illustrates the branching and re-joining ofthe execution flow.
  • the left hand branch 4902 and middle branch 4904 must wait to ensure that all branches have completed before the instruction following the parallel construct can be executed.
  • FIG. 5 illustrates the link 5000 between parallel branches, in accordance with one embodiment of the present invention.
  • Channels 5001 provide a link between parallel branches.
  • One parallel branch 5002 outputs data onto the channel and the other branch 5004 reads data from the channel.
  • Channels also provide synchronization between parallel branches because the data transfer can only complete when both parties are ready for it. If the transmitter is not ready for the communication then the receiver must wait for it to become ready and vice versa.
  • the channel is shown transferring data from the left branch to the right branch. If the left branch reaches point a before the right branch reaches point b, the left branch waits at point a until the right branch reaches point b.
  • Figure 6 illustrates the scope 6100 of variables, in accordance with one embodiment of the present invention.
  • the scope of declarations is, as in conventional C, based around code blocks.
  • a code block is denoted with ⁇ ... ⁇ brackets. This means that:
  • a Handel-C program consists of a series of statements which execute sequentially. These statements are contained within a mainO function that tells the compiler where the program begins. The body of the main function may be split into a number of blocks using ⁇ ... ⁇ brackets to break the program into readable chunks and restrict the scope of variables and identifiers.
  • Handel-C also has functions, variables and expressions similar to conventional C. There are restrictions where operations are not appropriate to hardware implementation and extensions where hardware implementation allows additional functionality.
  • Handel-C programs can also have statements or functions that execute in parallel. This feature is crucial when targeting hardware because parallelism is the main way to increase performance by using hardware.
  • Parallel processes can communicate using channels.
  • a channel is a one-way point-to-point link between two processes.
  • the overall program structure consists of one or more main functions, each associated with a clock. One would only use more than one main function if he or she needed parts of the program to run at different speeds (and so use different clocks).
  • a main function is defined as follows:
  • the main(3 function takes no arguments and returns no value. This is in line with a hardware implementation where there are no command line arguments and no environment to return values to.
  • the argc, argv and envp parameters and the return value familiar from conventional C can be replaced with explicit communications with an external system (e.g. a host microprocessor) within the body ofthe program.
  • the Handel-C source code is passed through a C preprocessor before compilation. Therefore, the usual #include and #def ⁇ ne constructs may be used to perform textual manipulation on the source code before compilation.
  • Handel-C also supports macros that are more powerful than those handled by the preprocessor.
  • Handel-C uses the standard /* ... */ delimiters for comments. These comments may not be nested. For example:
  • Handel-C also provides the C++ style // comment marker which tells the compiler to ignore everything up to the next newline. For example:
  • Types Handel-C uses two kinds of objects: logic types and architecture types.
  • the logic types specify variables.
  • the architecture types specify variables that require a particular sort of hardware architecture (e.g., ROMs, RAMs and channels). Both kinds are specified by their scope (static or extern), their size and their type.
  • Architectural types are also specified by the logic type that uses them.
  • Both types can be used in derived types (such as structures, arrays or functions) but there may be some restrictions on the use of architectural types.
  • the type specifiers signed, unsigned and undefined define whether the variable is signed and whether it takes a default defined width.
  • Functions can have the storage class inline to show that they are expanded in line, rather than being shared.
  • Handel-C supports the type qualifiers const and volatile to increase compatibility with ISO-C. These can be used to further qualify logic types.
  • Handel-C supports the extension o. This can be used to clarify complex declarations of architectural types.
  • the basic logic type is an int. It may be qualified as signed or unsigned. Integers can be manually assigned a width by the programmer or the compiler may attempt to infer a width from use.
  • Enumeration types allow one to define a specified set of values that a variable of this type may hold.
  • There are derived types (types that are derived from the basic types). These are arrays, pointers, structs bit fields, and functions.
  • the non-type void enables one to declare empty parameter lists or functions that do not return a value.
  • the typeof type operator allows one to reference the type of a variable.
  • the architectural types are channels (used to communicate between parallel processes), interfaces (used to connect to pins or provide signals to communicate with external code), memories (rom , ram , worn and mpram) and signal (declares a wire).
  • the disambiguator ⁇ > has been provided to help clarify the definitions of memories, channels and signals.
  • Handel-C provides channels for communicating between parallel branches of code. One branch writes to a channel and a second branch reads from it. The communication only occurs when both tasks are ready for the transfer at which point one item of data is transferred between the two branches.
  • Channels are declared with the chan keyword. For example:
  • the Handel-C compiler can infer the width of a channel from its usage if it is declared with the undefined keyword. Channels can also be declared with no explicit type. The compiler infers the type and width of the channel from its usage.
  • Arrays of channels Handel-C allows arrays of channels to be declared. For example:
  • An interface consists of data ports, together with information about each port.
  • a port definition consists of the data type that uses it (either defined or inferred from its first use), an optional name and the specification for that port (e.g., input pins for a bus) if needed.
  • RAMs and ROMs may be built from the logic provided in the FPGA using the ram and rom keywords. For example:
  • Figure 7 illustrates a method 7040 for using a dynamic object, i.e. signal, in a programming language.
  • an object is defined with an associated first value and second value.
  • the first value is then used in association with the object during a predetermined clock cycle. See operation 7044.
  • the second value is used in association with the object before or after the predetermined clock cycle, as indicated in operation 7046.
  • the object may be used to split up an expression into sub-expressions.
  • the sub-expressions may be reused.
  • the first value may be assigned to and read from the object during the predetermined clock cycle.
  • the programming language may be adapted for programming a gate array.
  • the programming language may include Handel-C.
  • a signal is an object that takes on the value assigned to it but only for that clock cycle. The value assigned to it can be read back during the same clock cycle. At all other times it takes on its initialisation value. The default initialisation value is 0.
  • the optional disambiguator o can be used to clarify complex signal definitions. Syntax
  • sig is assigned to and read from in the same clock cycle, so b is assigned the value of a. Since the signal only holds the value assigned to it for a single clock cycle, if it is read from just before or just after it is assigned to, one gets its initial value. For example:
  • b is assigned the value of a through the signal, as before. Since there is a clock tick before the last line, a is finally assigned the signal's initial value of 690.
  • Breaking up expressions also enables one to re-use sub-expressions:
  • Type qualifiers Handel-C supports the type-qualifiers const and volatile to increase compatibility with ISO-C. These can be used to further qualify logic types.

Abstract

A system, method and article of manufacture are provided for using a dynamic object in a programming language. In general, an object is defined with an associated first value and second value. The first value is used in association with the object during a predetermined clock cycle. The second value is used in association with the object before or after the predetermined clock cycle.

Description

SYSTEM, METHOD AND ARTICLE OF MANUFACTURE FOR SIGNAL CONSTRUCTS IN A PROGRAMMING LANGUAGE CAPABLE OF PROGRAMMING HARDWARE ARCHITECTURES
FIELD OF THE INVENTION
The present invention relates to programmable hardware architectures and more particularly to programming field programmable gate arrays (FPGA's).
BACKGROUND OF THE INVENTION
It is well known that software-controlled machines provide great flexibility in that they can be adapted to many different desired purposes by the use of suitable software. As well as being used in the familiar general purpose computers, software-controlled processors are now used in many products such as cars, telephones and other domestic products, where they are known as embedded systems.
However, for a given function, a software-controlled processor is usually slower than hardware dedicated to that function. A way of overcoming this problem is to use a special software-controlled processor such as a RISC processor which can be made to function more quickly for limited purposes by having its parameters (for instance size, instruction set etc.) tailored to the desired functionality.
Where hardware is used, though, although it increases the speed of operation, it lacks flexibility and, for instance, although it may be suitable for the task for which it was designed it may not be suitable for a modified version of that task which is desired later. It is now possible to form the hardware on reconfigurable logic circuits, such as Field Programmable Gate Arrays (FPGA's) which are logic circuits which can be repeatedly reconfigured in different ways. Thus they provide the speed advantages of dedicated hardware, with some degree of flexibility for later updating or multiple functionality.
In general, though, it can be seen that designers face a problem in finding the right balance between speed and generality. They can build versatile chips which will be software controlled and thus perform many different functions relatively slowly, or they can devise application-specific chips that do only a limited set of tasks but do them much more quickly.
SUMMARY OF THE INVENTION
A system, method and article of manufacture are provided for using a dynamic object in a programming language. In general, an object is defined with an associated first value and second value. The first value is used in association with the object during a predetermined clock cycle. The second value is used in association with the object before or after the predetermined clock cycle.
In an aspect of the present invention, the object may be used to split up an expression into sub-expressions. As an option, the sub-expressions may be reused. In another aspect, the first value may be assigned to and read from the object during the predetermined clock cycle. In a further aspect, the programming language may be adapted for programming a gate array. As an option, the programming language may include Handel-C.
BRIEF DESCRIPTION OF THE DRAWINGS
The invention will be better understood when consideration is given to the following detailed description thereof. Such description makes reference to the annexed drawings wherein:
Figure 1 is a schematic diagram of a hardware implementation of one embodiment ofthe present invention;
Figure 2 illustrates a design flow overview, in accordance with one embodiment of the present invention; Figures 3A and 3B illustrate a table showing various differences between Handel-C and the conventional C programming language, in accordance with one embodiment ofthe present invention;
Figure 4 illustrates the manner in which branches that complete early are forced to wait for the slowest branch before continuing;
Figure 5 illustrates the link between parallel branches, in accordance with one embodiment ofthe present invention;
Figure 6 illustrates the scope of variables, in accordance with one embodiment ofthe present invention
Figure 7 illustrates a method for using a dynamic object in a programming language.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
A preferred embodiment of a system in accordance with the present invention is preferably practiced in the context of a personal computer such as an IBM compatible personal computer, Apple Macintosh computer or UNIX based workstation. A representative hardware environment is depicted in Figure 1, which illustrates a typical hardware configuration of a workstation in accordance with a preferred embodiment having a central processing unit 110, such as a microprocessor, and a number of other units interconnected via a system bus 112.
The workstation shown in Figure 1 includes a Random Access Memory (RAM) 114, Read Only Memory (ROM) 116, an I/O adapter 118 for connecting peripheral devices such as disk storage units 120 to the bus 112, a user interface adapter 122 for connecting a keyboard 124, a mouse 126, a speaker 128, a microphone 132, and/or other user interface devices such as a touch screen (not shown) to the bus 112, communication adapter 134 for connecting the workstation to a communication network (e.g., a data processing network) and a display adapter 136 for connecting the bus 112 to a display device 138.
The workstation typically has resident thereon an operating system such as the Microsoft Windows NT or Windows/95 Operating System (OS), the IBM OS/2 operating system, the MAC OS, or UNIX operating system. Those skilled in the art will appreciate that the present invention may also be implemented on platforms and operating systems other than those mentioned.
In one embodiment, the hardware environment of Figure 1 may include, at least in part, a field programmable gate array (FPGA) device. For example, the central processing unit 110 may be replaced or supplemented with an FPGA. Use of such device provides flexibility in functionality, while maintaining high processing speeds. Examples of such FPGA devices include the XC2000™ and XC3000™ families of FPGA devices introduced by Xilinx, Inc. of San Jose, Calif. The architectures of these devices are exemplified in U.S. Pat. Nos. 4,642,487; 4,706,216; 4,713,557; and 4,758,985; each of which is originally assigned to Xilinx, Inc. and which are herein incorporated by reference for all purposes. It should be noted, however, that FPGA's of any type may be employed in the context ofthe present invention.
A preferred embodiment is written using Handel-C. Handel-C is a programming language marketed by Celoxica Limited. Handel-C is a programming language that enables a software or hardware engineer to target directly FPGAs (Field Programmable Gate Arrays) in a similar fashion to classical microprocessor cross- compiler development tools, without recourse to a Hardware Description Language. This allows the designer to directly realize the raw real-time computing capability of the FPGA.
Handel-C allows one to use a high-level language to program FPGAs. It makes it as easy to implement complex algorithms by using a software-based language rather than a hardware architecture-based language. One can use all the power of reconfigurable computing in FPGAs without needing to know the details of the FPGAs themselves. A program may be written in Handel-C to generate all required state machines, while one can specify storage requirements down to the bit level. A clock and clock speed may be assigned for working with the simple but explicit model of one clock cycle per assignment. A Handel-C macro library may be used for bit manipulation and arithmetic operations. The program may be compiled and then simulated and debugged on a PC similar to that in Figure 1. This may be done while stepping through single or multiple clock cycles. When one has designed their chip, the code can be compiled directly to a netlist, ready to be used by manufacturers' place and route tools for a variety of different chips.
As such, one can design hardware quickly because he or she can write high-level code instead of using a hardware description language. Handel-C optimizes code, and uses efficient algorithms to generate the logic hardware from the program. Because of the speed of development and the ease of maintaining well-commented high-level code, it allows one to use reconfigurable computing easily and efficiently.
Handel-C has the tight relationship between code and hardware generation required by hardware engineers, with the advantages of high-level language abstraction. Further features include:
C-like language allows one to program quickly
Architecture specifiers allow one to define RAMs, ROMs, buses and interfaces.
Parallelism allows one to optimize use ofthe FPGA
Close correspondence between the program and the hardware
Easy to understand timing model
Full simulation of owner hardware on the PC
Display the contents of registers every clock cycle during debug
Rapid prototyping
Convert existing C programs to hardware
Works with manufacturers' existing tools
Rapid reconfiguration
Logic estimation tool highlights code inefficiencies in colored Web pages
Device-independent programs
Generates EDIFand XNF formats (and XBLOX macros) Handel-C is thus designed to enable the compilation of programs into synchronous hardware; it is aimed at compiling high level algorithms directly into gate level hardware. The Handel-C syntax is based on that of conventional C so programmers familiar with conventional C will recognize almost all the constructs in the Handel- C language. Sequential programs can be written in Handel-C just as in conventional C but to gain the most benefit in performance from the target hardware its inherent parallelism must be exploited. Handel-C includes parallel constructs that provide the means for the programmer to exploit this benefit in his applications. The compiler compiles and optimizes Handel-C source code into a file suitable for simulation or a net list which can be placed and routed on a real FPGA.
For more information regarding the Handel-C programming language, reference may be made to "EMBEDDED SOLUTIONS Handel-C Language Reference Manual: Version 3," "EMBEDDED SOLUTIONS Handel-C User Manual: Version 3.0," "EMBEDDED SOLUTIONS Handel-C Interfacing to other language code blocks: Version 3.0," and "EMBEDDED SOLUTIONS Handel-C Preprocessor Reference Manual: Version 2.1," each authored by Rachel Ganz, and published by Embedded Solutions Limited, and which are each incorporated herein by reference in their entirety.
Conventions
A number of conventions are used throughout this document. These conventions are detailed below. Hexadecimal numbers appear throughout this document. The convention used is that of prefixing the number with 'Ox' in common with standard C syntax.
Sections of code or commands that one must type are given in typewriter font as follows:
"void mainO;" Information about a type of object one must specify is given in italics as follows:
"copy SourceFileName DestinationFileName"
Menu items appear in narrow bold text as follows:
"insert Project into Workspace"
Elements within a menu are separated from the menu name by a > so Edit>Find means the Find item in the Edit menu.
Introduction
Handel-C is a programming language designed to enable the compilation of programs into synchronous hardware. The Handel-C compiler and simulator will now be described. The Handel-C language will be described hereinafter in greater detail.
Overview
Design flow overview
Figure 2 illustrates a design flow overview 200, in accordance with one embodiment of the present invention. The dotted lines 202 show the extra steps 204 required if one wishes to integrate Handel-C with VHDL.
HARDWARE EMBODIMENTS
If one is approaching Handel-C from a hardware background, one should be aware of these points: • Handel-C is halfway between RTL and a behavioral HDL. It is a high-level language that requires one to think in algorithms rather than circuits.
• Handel-C uses a zero-delay model and a synchronous design style.
• Handel-C is implicitly sequential. Parallel processes must be specified. • All code in Handel-C (apart from the simulator chanin and chanout commands) can be synthesized, so one must ensure that he or she disables debug code when he or she compiles to target real hardware.
• Signals in Handel-C are different from signals in VHDL; they are assigned to immediately, and only hold their value for one clock cycle. • Handel-C has abstract high-level concepts such as pointers.
Points of difference
Figures 3 A and 3B illustrate a table showing various differences 3100 between Handel-C and the conventional C programming language, in accordance with one embodiment ofthe present invention.
LANGUAGE REFERENCE
This section deals with some of the basics behind the Handel-C language. Handel-C uses the syntax of conventional C with the addition of inherent parallelism. One can write sequential programs in Handel-C, but to gain maximum benefit in performance from the target hardware one must use its parallel constructs. These may be new to some users.
If one is familiar with conventional C he or she may recognize nearly all the other features. Handel-C is designed to allow one to express the algorithm without worrying about how the underlying computation engine works. This philosophy makes Handel-C a programming language rather than a hardware description language. In some senses, Handel-C is to hardware what a conventional high-level language is to microprocessor assembly language.
It is important to note that the hardware design that Handel-C produces is generated directly from the source program. There is no intermediate 'inteφreting' layer as exists in assembly language when targeting general puφose microprocessors. The logic gates that make up the final Handel-C circuit are the assembly instructions of the Handel-C system.
Handel-C programs
Since Handel-C is based on the syntax of conventional C, programs written in Handel-C are implicitly sequential. Writing one command after another indicates that those instructions should be executed in that exact order.
Just like any other conventional language, Handel-C provides constructs to control the flow of a program. For example, code can be executed conditionally depending on the value of some expression, or a block of code can be repeated a number of times using a loop construct.
Parallel programs
Because the target of the Handel-C compiler is low-level hardware, massive performance benefits are made possible by the use of parallelism. It is possible (and indeed essential for writing efficient programs) to instruct the compiler to build hardware to execute statements in parallel. Handel-C parallelism is true parallelism - it is not the time-sliced parallelism familiar from general puφose computers.
When instructed to execute two instructions in parallel, those two instructions may be executed at exactly the same instant in time by two separate pieces of hardware. When a parallel block is encountered, execution flow splits at the start ofthe parallel block and each branch ofthe block executes simultaneously. Execution flow then rejoins at the end of the block when all branches have completed. Figure 4 illustrates the manner 4900 in which branches that complete early are forced to wait for the slowest branch before continuing.
Figure 4 illustrates the branching and re-joining ofthe execution flow. The left hand branch 4902 and middle branch 4904 must wait to ensure that all branches have completed before the instruction following the parallel construct can be executed.
Channel communications
Figure 5 illustrates the link 5000 between parallel branches, in accordance with one embodiment of the present invention. Channels 5001 provide a link between parallel branches. One parallel branch 5002 outputs data onto the channel and the other branch 5004 reads data from the channel. Channels also provide synchronization between parallel branches because the data transfer can only complete when both parties are ready for it. If the transmitter is not ready for the communication then the receiver must wait for it to become ready and vice versa.
Here, the channel is shown transferring data from the left branch to the right branch. If the left branch reaches point a before the right branch reaches point b, the left branch waits at point a until the right branch reaches point b.
Scope and variable sharing
Figure 6 illustrates the scope 6100 of variables, in accordance with one embodiment of the present invention. The scope of declarations is, as in conventional C, based around code blocks. A code block is denoted with {...} brackets. This means that:
Global variables must be declared outside all code blocks. • An identifier is in scope within a code block and any sub-blocks of that block.
Since parallel constructs are simply code blocks, variables can be in scope in two parallel branches of code. This can lead to resource conflicts if the variable is written to simultaneously by more than one of the branches. Handel-C syntax states that a single variable must not be written to by more than one parallel branch but may be read from by several parallel branches. This provides some powerful operations to be described later.
If one wishes to write to the same variable from several processes, the correct way to do so is by using channels which are read from in a single process. This process can use a prialt statement to select which channel is ready to be read from first, and that channel is the only one which may be allowed to write to the variable
while (1) prialt
{ case chanl ? y: break; case chan2 ? y: break; case chan3 ? y: break; }
In this case, three separate processes can attempt to change the value of y by sending data down the channels, chanl, chan2 and chan3. y may be changed by whichever process sends the data first. A single variable should not be written to by more than one parallel branch..
1.1 Alternate Embodiments Introduction
This section summarizes some new features in Handel-C version 3 for those familiar with previous versions. It also details incompatibilities between the current version and Handel-C version 2.1.
The following constructs have been added or changed. Terms specific to Handel-C have been given in bold. All other terms are fully compatible with ISO-C (ISO/IEC 9899:1999) unless otherwise stated. (ISO-C was previously known as ANSI-C.)
Architecture
There is a new type to represent signals. One can have multi-dimensional arrays of RAMs and dual-ported RAMs. Interfaces have been extended to allow one to connect to undefined input or output ports. One can also define the sorts of interface and use them to link to blocks of external code (currently VHDL or EDIF). Interfaces declarations have changed, and the previous style is deprecated.
LANGUAGE BASICS
Introduction
This section of the present description deals with the basics of producing Handel-C programs
Program structure
Sequential structure
As in a conventional C program, a Handel-C program consists of a series of statements which execute sequentially. These statements are contained within a mainO function that tells the compiler where the program begins. The body of the main function may be split into a number of blocks using {...} brackets to break the program into readable chunks and restrict the scope of variables and identifiers.
Handel-C also has functions, variables and expressions similar to conventional C. There are restrictions where operations are not appropriate to hardware implementation and extensions where hardware implementation allows additional functionality.
Parallel structure
Unlike conventional C, Handel-C programs can also have statements or functions that execute in parallel. This feature is crucial when targeting hardware because parallelism is the main way to increase performance by using hardware. Parallel processes can communicate using channels. A channel is a one-way point-to-point link between two processes.
Overall structure
The overall program structure consists of one or more main functions, each associated with a clock. One would only use more than one main function if he or she needed parts of the program to run at different speeds (and so use different clocks).. A main function is defined as follows:
Global Declara tions
Clock Defini tion void main (void)
{
Local Declara tions Body Code
) The main(3 function takes no arguments and returns no value. This is in line with a hardware implementation where there are no command line arguments and no environment to return values to. The argc, argv and envp parameters and the return value familiar from conventional C can be replaced with explicit communications with an external system (e.g. a host microprocessor) within the body ofthe program.
Using the preprocessor
As with conventional C, the Handel-C source code is passed through a C preprocessor before compilation. Therefore, the usual #include and #defιne constructs may be used to perform textual manipulation on the source code before compilation.
Handel-C also supports macros that are more powerful than those handled by the preprocessor.
Comments
Handel-C uses the standard /* ... */ delimiters for comments. These comments may not be nested. For example:
/* Valid comment */
/* This is /* NOT */ valid */
Handel-C also provides the C++ style // comment marker which tells the compiler to ignore everything up to the next newline. For example:
x = x + 1 ; // This is a comment
Comments are handled by the preprocessor.
Types Handel-C uses two kinds of objects: logic types and architecture types. The logic types specify variables. The architecture types specify variables that require a particular sort of hardware architecture (e.g., ROMs, RAMs and channels). Both kinds are specified by their scope (static or extern), their size and their type. Architectural types are also specified by the logic type that uses them.
Both types can be used in derived types (such as structures, arrays or functions) but there may be some restrictions on the use of architectural types.
Specifiers
The type specifiers signed, unsigned and undefined define whether the variable is signed and whether it takes a default defined width. One can use the storage class specifiers extern and static to define the scope of any variable.
Functions can have the storage class inline to show that they are expanded in line, rather than being shared.
Type qualifiers
Handel-C supports the type qualifiers const and volatile to increase compatibility with ISO-C. These can be used to further qualify logic types.
Disambiguator
Handel-C supports the extension o. This can be used to clarify complex declarations of architectural types.
Logic types The basic logic type is an int. It may be qualified as signed or unsigned. Integers can be manually assigned a width by the programmer or the compiler may attempt to infer a width from use. Enumeration types (enums) allow one to define a specified set of values that a variable of this type may hold. There are derived types (types that are derived from the basic types). These are arrays, pointers, structs bit fields, and functions. The non-type void enables one to declare empty parameter lists or functions that do not return a value. The typeof type operator allows one to reference the type of a variable.
Architectural types
The architectural types are channels (used to communicate between parallel processes), interfaces (used to connect to pins or provide signals to communicate with external code), memories (rom , ram , worn and mpram) and signal (declares a wire). The disambiguator < > has been provided to help clarify the definitions of memories, channels and signals.
Channels
Handel-C provides channels for communicating between parallel branches of code. One branch writes to a channel and a second branch reads from it. The communication only occurs when both tasks are ready for the transfer at which point one item of data is transferred between the two branches. Channels are declared with the chan keyword. For example:
chan int 7 link;
As with variables, the Handel-C compiler can infer the width of a channel from its usage if it is declared with the undefined keyword. Channels can also be declared with no explicit type. The compiler infers the type and width of the channel from its usage.
Arrays of channels Handel-C allows arrays of channels to be declared. For example:
chan unsigned int 5 x[6];
This is equivalent to declaring 6 channels each of which is 5 bits wide. It is also possible to declare multi-dimensional arrays of channels. For example:.
chan unsigned int 6 x[4][5][6];
This declares 4 * 5 * 6 = 120 channels each of which is 6 bits wide
Interfaces
One may use an interface to communicate with an external device or component. An interface consists of data ports, together with information about each port. A port definition consists of the data type that uses it (either defined or inferred from its first use), an optional name and the specification for that port (e.g., input pins for a bus) if needed.
Internal RAMs and ROMs
RAMs and ROMs may be built from the logic provided in the FPGA using the ram and rom keywords. For example:
ram int 6 a[43]; rom int 16 b[4]; = { 23, 46, 69, 92 }; This example constructs a RAM consisting of 43 entries each of which is 6 bits wide and a ROM consisting of 4 entries each of which is 16 bits wide.
Multidimensional arrays
It is possible to create simple multi-dimensional arrays of memory using the ram, rom and worn keywords. The definitions can be made clearer by using the optional disambiguator o. signal
Figure 7 illustrates a method 7040 for using a dynamic object, i.e. signal, in a programming language. In general, in operation 7042, an object is defined with an associated first value and second value. The first value is then used in association with the object during a predetermined clock cycle. See operation 7044. The second value is used in association with the object before or after the predetermined clock cycle, as indicated in operation 7046.
In an aspect of the present invention, the object may be used to split up an expression into sub-expressions. As an option, the sub-expressions may be reused. In another aspect, the first value may be assigned to and read from the object during the predetermined clock cycle. In a further aspect, the programming language may be adapted for programming a gate array. As an option, the programming language may include Handel-C.
More information regarding the above concept will now be set forth in greater detail.
A signal is an object that takes on the value assigned to it but only for that clock cycle. The value assigned to it can be read back during the same clock cycle. At all other times it takes on its initialisation value. The default initialisation value is 0. The optional disambiguator o can be used to clarify complex signal definitions. Syntax
signal [<type data-width>] signal Name
Example
int 15 a, b; signal <int> sig; a = 7; par { sig = a; b = sig; }
sig is assigned to and read from in the same clock cycle, so b is assigned the value of a. Since the signal only holds the value assigned to it for a single clock cycle, if it is read from just before or just after it is assigned to, one gets its initial value. For example:
int 15 a, b; static signal <int sig : = 690; a = 7; par { sig = a; b = sig;
sig; Here, b is assigned the value of a through the signal, as before. Since there is a clock tick before the last line, a is finally assigned the signal's initial value of 690.
Using signals to split up complex expressions
One can split up complex expressions. E.g., b = (((a * 2) - 55) « 2) + 100; could also be written
int 17 a, b; signal si, s2, s3, s4; par
{ si = a; s2 = sl * 2; s3 = s2 - 55; s4 = s3 « 2; b = s4 + 100; }
Breaking up expressions also enables one to re-use sub-expressions:
unsigned 15 a, b; signal sigl; par { sigl = x + 2; a = sigl * 3; b = sigl 12;
Type qualifiers Handel-C supports the type-qualifiers const and volatile to increase compatibility with ISO-C. These can be used to further qualify logic types.

Claims

CLAIMSWhat is claimed is:
1. A method for using a dynamic object in a programming language, comprising the steps of: (a) defining an object with an associated first value and second value; (b) using the first value in association with the object during a predetermined clock cycle; and (c) using the second value in association with the object before or after the predetermined clock cycle.
2. A method as recited in claim 1, wherein the object is used to split up an expression into sub-expressions.
3. A method as recited in claim 2, wherein the sub-expressions are reused.
4. A method as recited in claim 1, wherein the first value is assigned to and read from the object during the predetermined clock cycle.
5. A method as recited in claim 1, wherein the programming language is adapted for programming a gate array.
6. A method as recited in claim 1, wherein the programming language includes Handel-C.
7. A computer program product for using a dynamic object in a programming language, comprising: (a) computer code for defining an object with an associated first value and second value; (b) computer code for using the first value in association with the object during a predetermined clock cycle; and (c) computer code for using the second value in association with the object before or after the predetermined clock cycle.
8. A computer program product as recited in claim 7, wherein the object is used to split up an expression into sub-expressions.
9. A computer program product as recited in claim 8, wherein the sub- expressions are reused.
10. A computer program product as recited in claim 7, wherein the first value is assigned to and read from the object during the predetermined clock cycle.
11. A computer program product as recited in claim 7, wherein the programming language is adapted for programming a gate array.
12. A computer program product as recited in claim 7, wherein the programming language includes Handel-C.
13. A system for using a dynamic object in a programming language, comprising: (a) logic for defining an object with an associated first value and second value; (b) logic for using the first value in association with the object during a predetermined clock cycle; and (c) logic for using the second value in association with the object before or after the predetermined clock cycle.
14. A system as recited in claim 13, wherein the object is used to split up an expression into sub-expressions.
15. A system as recited in claim 14, wherein the sub-expressions are reused.
16. A system as recited in claim 13, wherein the first value is assigned to and read from the object during the predetermined clock cycle.
17. A system as recited in claim 13, wherein the programming language is adapted for programming a gate array.
18. A system as recited in claim 13, wherein the programming language includes Handel-C.
PCT/GB2002/000384 2001-01-29 2002-01-29 System, method and article of manufacture for signal constructs in a programming language capable of programming hardware architectures WO2002061633A2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/772,616 2001-01-29
US09/772,616 US6691301B2 (en) 2001-01-29 2001-01-29 System, method and article of manufacture for signal constructs in a programming language capable of programming hardware architectures

Publications (2)

Publication Number Publication Date
WO2002061633A2 true WO2002061633A2 (en) 2002-08-08
WO2002061633A3 WO2002061633A3 (en) 2003-12-11

Family

ID=25095657

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/GB2002/000384 WO2002061633A2 (en) 2001-01-29 2002-01-29 System, method and article of manufacture for signal constructs in a programming language capable of programming hardware architectures

Country Status (2)

Country Link
US (1) US6691301B2 (en)
WO (1) WO2002061633A2 (en)

Families Citing this family (254)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7426429B2 (en) * 1998-04-27 2008-09-16 Joseph A Tabe Smart seatbelt control system
US6718533B1 (en) * 1999-02-26 2004-04-06 Real-Time Innovations, Inc. Method for building a real-time control system with mode and logical rate
DE19914407A1 (en) * 1999-03-30 2000-10-05 Deutsche Telekom Ag Method for deriving identification numbers converts a customer's personal data into a binary number of a set bit length with the help of a secret key.
US8160863B2 (en) * 2000-03-28 2012-04-17 Ionipas Transfer Company, Llc System and method for connecting a logic circuit simulation to a network
US7266490B2 (en) 2000-12-28 2007-09-04 Robert Marc Zeidman Apparatus and method for connecting hardware to a circuit simulation
US7139743B2 (en) 2000-04-07 2006-11-21 Washington University Associative database scanning and information retrieval using FPGA devices
US6724220B1 (en) 2000-10-26 2004-04-20 Cyress Semiconductor Corporation Programmable microcontroller architecture (mixed analog/digital)
US8176296B2 (en) * 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
US8103496B1 (en) 2000-10-26 2012-01-24 Cypress Semicondutor Corporation Breakpoint control in an in-circuit emulation system
US7765095B1 (en) 2000-10-26 2010-07-27 Cypress Semiconductor Corporation Conditional branching in an in-circuit emulation system
US8149048B1 (en) 2000-10-26 2012-04-03 Cypress Semiconductor Corporation Apparatus and method for programmable power management in a programmable analog circuit block
US7905900B2 (en) * 2003-01-30 2011-03-15 Integrated Vascular Systems, Inc. Clip applier and methods of use
US7302670B2 (en) * 2000-12-21 2007-11-27 Bryan Darrell Bowyer Interactive interface resource allocation in a behavioral synthesis tool
US20070016396A9 (en) * 2000-12-28 2007-01-18 Zeidman Robert M Apparatus and method for connecting a hardware emulator to a computer peripheral
US6922665B1 (en) * 2001-01-08 2005-07-26 Xilinx, Inc. Method and system for device-level simulation of a circuit design for a programmable logic device
US9256356B2 (en) * 2001-03-29 2016-02-09 International Business Machines Corporation Method and system for providing feedback for docking a content pane in a host window
US6817007B2 (en) * 2001-04-20 2004-11-09 David Gaines Burnette Interactive loop configuration in a behavioral synthesis tool
US7272542B1 (en) * 2001-04-30 2007-09-18 Xilinx, Inc. Method and system for re-targeting integrated circuits
US6836884B1 (en) * 2001-06-04 2004-12-28 Microsoft Corporation Method and system for editing software programs
US7401015B1 (en) * 2001-06-17 2008-07-15 Brian Bailey Coherent state among multiple simulation models in an EDA simulation environment
US7260517B2 (en) * 2001-06-17 2007-08-21 Brian Bailey Synchronization of multiple simulation domains in an EDA simulation environment
US7337430B2 (en) * 2001-07-20 2008-02-26 The Mathworks, Inc. Optimized look-up table calculations in block diagram software
US7454746B2 (en) * 2001-07-24 2008-11-18 The Mathworks, Inc. Function call translation
JP2003085001A (en) * 2001-09-12 2003-03-20 Toshiba Corp Source code debugger, debugging method and debugging program
US7406674B1 (en) 2001-10-24 2008-07-29 Cypress Semiconductor Corporation Method and apparatus for generating microcontroller configuration information
JP4099974B2 (en) * 2001-10-30 2008-06-11 日本電気株式会社 Method, apparatus, and program for verifying equivalence between behavior level description and register transfer level description
US8078970B1 (en) 2001-11-09 2011-12-13 Cypress Semiconductor Corporation Graphical user interface with user-selectable list-box
US8042093B1 (en) 2001-11-15 2011-10-18 Cypress Semiconductor Corporation System providing automatic source code generation for personalization and parameterization of user modules
US7844437B1 (en) 2001-11-19 2010-11-30 Cypress Semiconductor Corporation System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit
US7770113B1 (en) 2001-11-19 2010-08-03 Cypress Semiconductor Corporation System and method for dynamically generating a configuration datasheet
US8069405B1 (en) 2001-11-19 2011-11-29 Cypress Semiconductor Corporation User interface for efficiently browsing an electronic document using data-driven tabs
US6971004B1 (en) 2001-11-19 2005-11-29 Cypress Semiconductor Corp. System and method of dynamically reconfiguring a programmable integrated circuit
US20030149962A1 (en) * 2001-11-21 2003-08-07 Willis John Christopher Simulation of designs using programmable processors and electronically re-configurable logic arrays
AU2003224667A1 (en) * 2002-03-08 2003-09-22 Mentor Graphics Corporation Array transformation in a behavioral synthesis tool
US7640529B2 (en) * 2002-07-30 2009-12-29 Photronics, Inc. User-friendly rule-based system and method for automatically generating photomask orders
US8103497B1 (en) 2002-03-28 2012-01-24 Cypress Semiconductor Corporation External interface for event architecture
US8868544B2 (en) * 2002-04-26 2014-10-21 Oracle International Corporation Using relational structures to create and support a cube within a relational database system
US7308608B1 (en) 2002-05-01 2007-12-11 Cypress Semiconductor Corporation Reconfigurable testing system and method
US8001112B2 (en) * 2002-05-10 2011-08-16 Oracle International Corporation Using multidimensional access as surrogate for run-time hash table
US6931612B1 (en) * 2002-05-15 2005-08-16 Lsi Logic Corporation Design and optimization methods for integrated circuits
JP3867013B2 (en) * 2002-05-17 2007-01-10 東芝テック株式会社 Programming support program
US7039908B2 (en) * 2002-06-26 2006-05-02 Microsoft Corporation Unification-based points-to-analysis using multilevel typing
US7293247B1 (en) * 2002-07-02 2007-11-06 Cadence Design Systems, Inc. Encapsulating parameterized cells (pcells)
US7107585B2 (en) * 2002-07-29 2006-09-12 Arm Limited Compilation of application code in a data processing apparatus
US7000221B2 (en) * 2002-07-31 2006-02-14 International Business Machines Corporation Script evaluator
US7711844B2 (en) * 2002-08-15 2010-05-04 Washington University Of St. Louis TCP-splitter: reliable packet monitoring methods and apparatus for high speed networks
US20040045007A1 (en) * 2002-08-30 2004-03-04 Bae Systems Information Electronic Systems Integration, Inc. Object oriented component and framework architecture for signal processing
US7017140B2 (en) * 2002-08-29 2006-03-21 Bae Systems Information And Electronic Systems Integration Inc. Common components in interface framework for developing field programmable based applications independent of target circuit board
US7761845B1 (en) 2002-09-09 2010-07-20 Cypress Semiconductor Corporation Method for parameterizing a user module
US7062755B2 (en) * 2002-10-16 2006-06-13 Hewlett-Packard Development Company, L.P. Recovering from compilation errors in a dynamic compilation environment
WO2004038620A1 (en) * 2002-10-28 2004-05-06 Renesas Technology Corp. System development method and data processing system
US7302680B2 (en) * 2002-11-04 2007-11-27 Intel Corporation Data repacking for memory accesses
US7243319B2 (en) * 2003-02-03 2007-07-10 Cadence Design (Israel) Ii Ltd. Race condition detection and expression
US7194705B1 (en) * 2003-03-14 2007-03-20 Xilinx, Inc. Simulation of integrated circuitry within a high-level modeling system using hardware description language circuit descriptions
US7823077B2 (en) 2003-03-24 2010-10-26 Microsoft Corporation System and method for user modification of metadata in a shell browser
US7421438B2 (en) * 2004-04-29 2008-09-02 Microsoft Corporation Metadata editing control
US7627552B2 (en) * 2003-03-27 2009-12-01 Microsoft Corporation System and method for filtering and organizing items based on common elements
US7240292B2 (en) * 2003-04-17 2007-07-03 Microsoft Corporation Virtual address bar user interface control
US8612421B2 (en) * 2003-05-07 2013-12-17 Oracle International Corporation Efficient processing of relational joins of multidimensional data
US7984434B1 (en) * 2003-05-21 2011-07-19 Altera Corporation Nondestructive patching mechanism
US10572824B2 (en) 2003-05-23 2020-02-25 Ip Reservoir, Llc System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines
EP2511787B1 (en) 2003-05-23 2017-09-20 IP Reservoir, LLC Data decompression and search using FPGA devices
US7757197B1 (en) 2003-05-29 2010-07-13 Altera Corporation Method and apparatus for utilizing constraints for the routing of a design on a programmable logic device
US7171653B2 (en) * 2003-06-03 2007-01-30 Hewlett-Packard Development Company, L.P. Systems and methods for providing communication between a debugger and a hardware simulator
US7350161B1 (en) * 2003-07-11 2008-03-25 Altera Corporation System design tools
US8024335B2 (en) 2004-05-03 2011-09-20 Microsoft Corporation System and method for dynamically generating a selectable search extension
US20080052687A1 (en) * 2003-11-03 2008-02-28 Agustin Gonzales-Tuchmann Development environment for data transformation applications
US20050154573A1 (en) * 2004-01-08 2005-07-14 Maly John W. Systems and methods for initializing a lockstep mode test case simulation of a multi-core processor design
US7454696B2 (en) * 2004-04-09 2008-11-18 International Business Machines Corporation Method and apparatus for stream based markup language post-processing
US8037102B2 (en) 2004-02-09 2011-10-11 Robert T. and Virginia T. Jenkins Manipulating sets of hierarchical data
US7890996B1 (en) 2004-02-18 2011-02-15 Teros, Inc. Using statistical analysis to generate exception rules that allow legitimate messages to pass through application proxies and gateways
US7774834B1 (en) 2004-02-18 2010-08-10 Citrix Systems, Inc. Rule generalization for web application entry point modeling
US7617531B1 (en) 2004-02-18 2009-11-10 Citrix Systems, Inc. Inferencing data types of message components
US7788078B1 (en) * 2004-02-27 2010-08-31 Synopsys, Inc. Processor/memory co-exploration at multiple abstraction levels
US7295049B1 (en) 2004-03-25 2007-11-13 Cypress Semiconductor Corporation Method and circuit for rapid alignment of signals
US7412699B2 (en) * 2004-04-14 2008-08-12 International Business Machines Corporation Using behavioral annotations in source code to build middleware applications
US20050232218A1 (en) * 2004-04-19 2005-10-20 Broadcom Corporation Low-power operation of systems requiring low-latency and high-throughput
US7765520B2 (en) * 2004-05-21 2010-07-27 Bea Systems, Inc. System and method for managing cross project dependencies at development time
US7412684B2 (en) * 2004-05-28 2008-08-12 Peter Pius Gutberlet Loop manipulation in a behavioral synthesis tool
US9646107B2 (en) 2004-05-28 2017-05-09 Robert T. and Virginia T. Jenkins as Trustee of the Jenkins Family Trust Method and/or system for simplifying tree expressions such as for query reduction
US7620632B2 (en) 2004-06-30 2009-11-17 Skyler Technology, Inc. Method and/or system for performing tree matching
US7386825B2 (en) 2004-07-29 2008-06-10 International Business Machines Corporation Method, system and program product supporting presentation of a simulated or hardware system including configuration entities
US7389490B2 (en) * 2004-07-29 2008-06-17 International Business Machines Corporation Method, system and program product for providing a configuration specification language supporting selective presentation of configuration entities
US8069436B2 (en) * 2004-08-13 2011-11-29 Cypress Semiconductor Corporation Providing hardware independence to automate code generation of processing device firmware
US8286125B2 (en) * 2004-08-13 2012-10-09 Cypress Semiconductor Corporation Model for a hardware device-independent method of defining embedded firmware for programmable systems
US8082531B2 (en) * 2004-08-13 2011-12-20 Cypress Semiconductor Corporation Method and an apparatus to design a processing system using a graphical user interface
US7181384B1 (en) * 2004-08-16 2007-02-20 Altera Corporation Method and apparatus for simulating a hybrid system with registered and concurrent nodes
US8261246B1 (en) * 2004-09-07 2012-09-04 Apple Inc. Method and system for dynamically populating groups in a developer environment
US20060070042A1 (en) * 2004-09-24 2006-03-30 Muratori Richard D Automatic clocking in shared-memory co-simulation
US7457794B2 (en) * 2004-10-14 2008-11-25 Sap Ag Searching for customized processing rules for a computer application
US7457792B2 (en) * 2004-10-14 2008-11-25 Sap Ag Customizing transaction processing in a computer application by using pre-defined functions
US7260558B1 (en) * 2004-10-25 2007-08-21 Hi/Fn, Inc. Simultaneously searching for a plurality of patterns definable by complex expressions, and efficiently generating data for such searching
US7801923B2 (en) 2004-10-29 2010-09-21 Robert T. and Virginia T. Jenkins as Trustees of the Jenkins Family Trust Method and/or system for tagging trees
US7627591B2 (en) 2004-10-29 2009-12-01 Skyler Technology, Inc. Method and/or system for manipulating tree expressions
US7353437B2 (en) * 2004-10-29 2008-04-01 Micron Technology, Inc. System and method for testing a memory for a memory failure exhibited by a failing memory
US7342415B2 (en) * 2004-11-08 2008-03-11 Tabula, Inc. Configurable IC with interconnect circuits that also perform storage operations
US20060112397A1 (en) * 2004-11-18 2006-05-25 Makaram Raghunandan Cross-architecture software development
US7636727B2 (en) 2004-12-06 2009-12-22 Skyler Technology, Inc. Enumeration of trees from finite number of nodes
US7630995B2 (en) 2004-11-30 2009-12-08 Skyler Technology, Inc. Method and/or system for transmitting and/or receiving data
US7496879B2 (en) * 2004-12-01 2009-02-24 Tabula, Inc. Concurrent optimization of physical design and operational cycle assignment
US7236009B1 (en) 2004-12-01 2007-06-26 Andre Rohe Operational time extension
US7428721B2 (en) 2004-12-01 2008-09-23 Tabula, Inc. Operational cycle assignment in a configurable IC
US7739656B2 (en) * 2004-12-15 2010-06-15 International Business Machines Corporation Generating asynchronous interfaces and methods from synchronous interfaces and methods
US7779430B2 (en) * 2004-12-15 2010-08-17 International Business Machines Corporation Method, system, and article of manufacture for providing service components
US8316059B1 (en) 2004-12-30 2012-11-20 Robert T. and Virginia T. Jenkins Enumeration of rooted partial subtrees
US8615530B1 (en) 2005-01-31 2013-12-24 Robert T. and Virginia T. Jenkins as Trustees for the Jenkins Family Trust Method and/or system for tree transformation
US7332976B1 (en) 2005-02-04 2008-02-19 Cypress Semiconductor Corporation Poly-phase frequency synthesis oscillator
US7681177B2 (en) 2005-02-28 2010-03-16 Skyler Technology, Inc. Method and/or system for transforming between trees and strings
EP1859378A2 (en) 2005-03-03 2007-11-28 Washington University Method and apparatus for performing biosequence similarity searching
US7493578B1 (en) * 2005-03-18 2009-02-17 Xilinx, Inc. Correlation of data from design analysis tools with design blocks in a high-level modeling system
US20060236303A1 (en) * 2005-03-29 2006-10-19 Wilson Thomas G Jr Dynamically adjustable simulator, such as an electric circuit simulator
US8356040B2 (en) 2005-03-31 2013-01-15 Robert T. and Virginia T. Jenkins Method and/or system for transforming between trees and arrays
US7899821B1 (en) 2005-04-29 2011-03-01 Karl Schiffmann Manipulation and/or analysis of hierarchical data
JP4774237B2 (en) * 2005-05-02 2011-09-14 株式会社リコー Program development support apparatus, program operation comparison method, and semiconductor integrated circuit manufacturing method
US7400183B1 (en) 2005-05-05 2008-07-15 Cypress Semiconductor Corporation Voltage controlled oscillator delay cell and method
US9407608B2 (en) 2005-05-26 2016-08-02 Citrix Systems, Inc. Systems and methods for enhanced client side policy
US9621666B2 (en) 2005-05-26 2017-04-11 Citrix Systems, Inc. Systems and methods for enhanced delta compression
US7756826B2 (en) 2006-06-30 2010-07-13 Citrix Systems, Inc. Method and systems for efficient delivery of previously stored content
US9692725B2 (en) 2005-05-26 2017-06-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
US8943304B2 (en) * 2006-08-03 2015-01-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
US7509619B1 (en) * 2005-06-22 2009-03-24 Xilinx, Inc. Auto generation of a multi-staged processing pipeline hardware implementation for designs captured in high level languages
US8089461B2 (en) 2005-06-23 2012-01-03 Cypress Semiconductor Corporation Touch wake for electronic devices
US7464105B2 (en) * 2005-07-06 2008-12-09 International Business Machines Corporation Method for performing semi-automatic dataset maintenance
US7665028B2 (en) 2005-07-13 2010-02-16 Microsoft Corporation Rich drag drop user interface
US7548085B2 (en) 2005-07-15 2009-06-16 Tabula, Inc. Random access of user design states in a configurable IC
US7496869B1 (en) 2005-10-04 2009-02-24 Xilinx, Inc. Method and apparatus for implementing a program language description of a circuit design for an integrated circuit
JP2007122589A (en) * 2005-10-31 2007-05-17 Matsushita Electric Ind Co Ltd Mixed signal circuit simulator
US8136101B2 (en) * 2005-11-04 2012-03-13 Oracle America, Inc. Threshold search failure analysis
US7797684B2 (en) * 2005-11-04 2010-09-14 Oracle America, Inc. Automatic failure analysis of code development options
US20070168969A1 (en) * 2005-11-04 2007-07-19 Sun Microsystems, Inc. Module search failure analysis
US7372297B1 (en) 2005-11-07 2008-05-13 Tabula Inc. Hybrid interconnect/logic circuits enabling efficient replication of a function in several sub-cycles to save logic and routing resources
US7366998B1 (en) 2005-11-08 2008-04-29 Xilinx, Inc. Efficient communication of data between blocks in a high level modeling system
US7679401B1 (en) 2005-12-01 2010-03-16 Tabula, Inc. User registers implemented with routing circuits in a configurable IC
US7924884B2 (en) 2005-12-20 2011-04-12 Citrix Systems, Inc. Performance logging using relative differentials and skip recording
US7673259B2 (en) * 2005-12-30 2010-03-02 Cadence Design Systems, Inc. System and method for synthesis reuse
US7783985B2 (en) * 2006-01-04 2010-08-24 Citrix Systems, Inc. Systems and methods for transferring data between computing devices
US20070162268A1 (en) * 2006-01-12 2007-07-12 Bhaskar Kota Algorithmic electronic system level design platform
US20070162531A1 (en) * 2006-01-12 2007-07-12 Bhaskar Kota Flow transform for integrated circuit design and simulation having combined data flow, control flow, and memory flow views
GB0601135D0 (en) * 2006-01-20 2006-03-01 Spiratech Ltd Modelling and simulation method
US20070174571A1 (en) * 2006-01-25 2007-07-26 Safenet, Inc. Binding a protected application program to shell code
US7735050B2 (en) 2006-02-09 2010-06-08 Henry Yu Managing and controlling the use of hardware resources on integrated circuits
US8402409B1 (en) * 2006-03-10 2013-03-19 Xilinx, Inc. Method and apparatus for supporting run-time reconfiguration in a programmable logic integrated circuit
US9064076B1 (en) * 2006-03-23 2015-06-23 Synopsys, Inc. User interface for facilitation of high level generation of processor extensions
US7606694B1 (en) * 2006-03-24 2009-10-20 Xilinx, Inc. Framework for cycle accurate simulation
US8067948B2 (en) 2006-03-27 2011-11-29 Cypress Semiconductor Corporation Input/output multiplexer bus
US20070283319A1 (en) * 2006-04-01 2007-12-06 Mza Associates Corporation Software development framework using component-based architecture
CA2543304A1 (en) * 2006-04-11 2007-10-11 Ibm Canada Limited - Ibm Canada Limitee Code highlight and intelligent location descriptor for programming shells
US8091064B2 (en) * 2006-04-14 2012-01-03 Panasonic Corporation Supporting system, design supporting method, and computer-readable recording medium recorded with design supporting program
US7840482B2 (en) * 2006-06-19 2010-11-23 Exegy Incorporated Method and system for high speed options pricing
US7921046B2 (en) 2006-06-19 2011-04-05 Exegy Incorporated High speed processing of financial information using FPGA devices
US7451420B1 (en) 2006-08-11 2008-11-11 Xilinx, Inc. Determining reachable pins of a network of a programmable logic device
US7451423B1 (en) 2006-08-11 2008-11-11 Xilinx, Inc. Determining indices of configuration memory cell modules of a programmable logic device
US7584448B1 (en) * 2006-08-11 2009-09-01 Xilinx, Inc. Constructing a model of a programmable logic device
US7451424B1 (en) 2006-08-11 2008-11-11 Xilinx, Inc. Determining programmable connections through a switchbox of a programmable logic device
US7451425B1 (en) 2006-08-11 2008-11-11 Xilinx, Inc. Determining controlling pins for a tile module of a programmable logic device
US7536668B1 (en) 2006-08-11 2009-05-19 Xilinx, Inc. Determining networks of a tile module of a programmable logic device
US7472370B1 (en) 2006-08-11 2008-12-30 Xilinx, Inc. Comparing graphical and netlist connections of a programmable logic device
US7921418B2 (en) * 2006-08-15 2011-04-05 International Business Machines Corporation Compile time evaluation of library functions
US8365137B2 (en) * 2006-08-29 2013-01-29 Wave Semiconductor, Inc. Systems and methods using an invocation model of process expression
US20080059433A1 (en) * 2006-08-30 2008-03-06 Econiq Ltd. System and method for communicating between graphical user interfaces
US8230406B2 (en) * 2006-09-11 2012-07-24 International Business Machines Corporation Compiler option consistency checking during incremental hardware design language compilation
US7847730B2 (en) * 2006-09-27 2010-12-07 Bae Systems Information And Electronic Systems Integration, Inc. Software defined navigation signal generator
WO2008047650A1 (en) * 2006-10-11 2008-04-24 Zuken Inc. Processing method, processing device, program and computer readable storage medium
US8015556B2 (en) * 2006-10-12 2011-09-06 International Business Machines Corporation Efficient method of data reshaping for multidimensional dynamic array objects in the presence of multiple object instantiations
US20080092113A1 (en) * 2006-10-12 2008-04-17 Weinstein Randall K System and method for configuring a programmable electronic device to include an execution engine
US8326819B2 (en) * 2006-11-13 2012-12-04 Exegy Incorporated Method and system for high performance data metatagging and data indexing using coprocessors
US7962886B1 (en) * 2006-12-08 2011-06-14 Cadence Design Systems, Inc. Method and system for generating design constraints
US9274820B2 (en) * 2006-12-21 2016-03-01 International Business Machines Corporation Specifying user defined or translator definitions to use to interpret mnemonics in a computer program
US8234624B2 (en) * 2007-01-25 2012-07-31 International Business Machines Corporation System and method for developing embedded software in-situ
US8490148B2 (en) 2007-03-12 2013-07-16 Citrix Systems, Inc Systems and methods for managing application security profiles
US7853679B2 (en) * 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring handling of undefined policy events
US7870277B2 (en) * 2007-03-12 2011-01-11 Citrix Systems, Inc. Systems and methods for using object oriented expressions to configure application security policies
US7853678B2 (en) 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring flow control of policy expressions
US8631147B2 (en) 2007-03-12 2014-01-14 Citrix Systems, Inc. Systems and methods for configuring policy bank invocations
US7865589B2 (en) 2007-03-12 2011-01-04 Citrix Systems, Inc. Systems and methods for providing structured policy expressions to represent unstructured data in a network appliance
US7525344B2 (en) * 2007-03-20 2009-04-28 Tabula, Inc. Configurable IC having a routing fabric with storage elements
US8516025B2 (en) 2007-04-17 2013-08-20 Cypress Semiconductor Corporation Clock driven dynamic datapath chaining
US8026739B2 (en) 2007-04-17 2011-09-27 Cypress Semiconductor Corporation System level interconnect with programmable switching
US9564902B2 (en) 2007-04-17 2017-02-07 Cypress Semiconductor Corporation Dynamically configurable and re-configurable data path
US8130025B2 (en) 2007-04-17 2012-03-06 Cypress Semiconductor Corporation Numerical band gap
US8040266B2 (en) 2007-04-17 2011-10-18 Cypress Semiconductor Corporation Programmable sigma-delta analog-to-digital converter
US8092083B2 (en) 2007-04-17 2012-01-10 Cypress Semiconductor Corporation Temperature sensor with digital bandgap
US7737724B2 (en) * 2007-04-17 2010-06-15 Cypress Semiconductor Corporation Universal digital block interconnection and channel routing
US8234619B2 (en) * 2007-04-20 2012-07-31 Sap Ag System, method, and software for facilitating business object development testing
US7987446B2 (en) * 2007-04-24 2011-07-26 International Business Machines Corporation Method for automating variables in end-user programming system
US9720805B1 (en) 2007-04-25 2017-08-01 Cypress Semiconductor Corporation System and method for controlling a target device
US8065653B1 (en) 2007-04-25 2011-11-22 Cypress Semiconductor Corporation Configuration of programmable IC design elements
US8266575B1 (en) 2007-04-25 2012-09-11 Cypress Semiconductor Corporation Systems and methods for dynamically reconfiguring a programmable system on a chip
US8756557B2 (en) * 2007-05-09 2014-06-17 Synopsys, Inc. Techniques for use with automated circuit design and simulations
US7904859B2 (en) * 2007-05-09 2011-03-08 Synopsys, Inc. Method and apparatus for determining a phase relationship between asynchronous clock signals
US8312427B2 (en) * 2007-05-15 2012-11-13 International Business Machines Corporation Selecting a set of candidate code expressions from a section of program code for copying
US8069425B2 (en) 2007-06-27 2011-11-29 Tabula, Inc. Translating a user design in a configurable IC for debugging the user design
US8918772B1 (en) * 2007-07-25 2014-12-23 Google Inc. Statically analyzing program correctness for a dynamic programming language
US8049569B1 (en) 2007-09-05 2011-11-01 Cypress Semiconductor Corporation Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes
US8990651B2 (en) * 2007-09-19 2015-03-24 Tabula, Inc. Integrated circuit (IC) with primary and secondary networks and device containing such an IC
US7752585B2 (en) * 2007-10-15 2010-07-06 International Business Machines Corporation Method, apparatus, and computer program product for stale NDR detection
US8190707B2 (en) 2007-10-20 2012-05-29 Citrix Systems, Inc. System and method for transferring data among computing environments
US10229453B2 (en) 2008-01-11 2019-03-12 Ip Reservoir, Llc Method and system for low latency basket calculation
US8863067B1 (en) 2008-02-06 2014-10-14 Tabula, Inc. Sequential delay analysis by placement engines
WO2009017849A1 (en) * 2008-03-11 2009-02-05 Phybit Pte. Ltd. Method and system for creating fixed-point software code
US8266582B2 (en) * 2008-03-31 2012-09-11 Oracle America, Inc. Method for creating unified binary files
US8121825B2 (en) 2008-04-30 2012-02-21 Synopsys, Inc. Method and apparatus for executing a hardware simulation and verification solution
US8555218B2 (en) 2008-05-24 2013-10-08 Tabula, Inc. Decision modules
US8166435B2 (en) 2008-06-26 2012-04-24 Tabula, Inc. Timing operations in an IC with configurable circuits
WO2010016857A1 (en) 2008-08-04 2010-02-11 Tabula, Inc. Trigger circuits and event counters for an ic
US20100070951A1 (en) * 2008-09-15 2010-03-18 Horizon Semiconductors Ltd. Generic assembler
US8149431B2 (en) * 2008-11-07 2012-04-03 Citrix Systems, Inc. Systems and methods for managing printer settings in a networked computing environment
US8161090B2 (en) * 2008-12-05 2012-04-17 Crossfield Technology LLC Floating-point fused add-subtract unit
CA2744746C (en) 2008-12-15 2019-12-24 Exegy Incorporated Method and apparatus for high-speed processing of financial market depth data
US8843862B2 (en) * 2008-12-16 2014-09-23 Synopsys, Inc. Method and apparatus for creating and changing logic representations in a logic design using arithmetic flexibility of numeric formats for data
US8307351B2 (en) * 2009-03-18 2012-11-06 Oracle International Corporation System and method for performing code provenance review in a software due diligence system
US9448964B2 (en) 2009-05-04 2016-09-20 Cypress Semiconductor Corporation Autonomous control in a programmable system
US20100305933A1 (en) * 2009-06-01 2010-12-02 Chang Chioumin M Method and Apparatus for Verifying Logic Circuits Using Vector Emulation with Vector Substitution
US20100318974A1 (en) * 2009-06-16 2010-12-16 Sap Ag Business object mockup architecture
US8072234B2 (en) 2009-09-21 2011-12-06 Tabula, Inc. Micro-granular delay testing of configurable ICs
WO2011123151A1 (en) 2010-04-02 2011-10-06 Tabula Inc. System and method for reducing reconfiguration power usage
US20120011483A1 (en) * 2010-07-06 2012-01-12 Lsi Corporation Method of characterizing regular electronic circuits
EP2649522B1 (en) * 2010-12-06 2020-04-01 Google LLC Method for providing an application as a library in a virtual machine
US10037568B2 (en) 2010-12-09 2018-07-31 Ip Reservoir, Llc Method and apparatus for managing orders in financial markets
US8555217B1 (en) * 2011-06-20 2013-10-08 Lattice Semiconductor Corporation Integrated circuit design software with cross probing between tool graphical user interfaces (GUIs)
US8984464B1 (en) 2011-11-21 2015-03-17 Tabula, Inc. Detailed placement with search and repair
US8656345B2 (en) 2012-03-19 2014-02-18 National Instruments Corporation Managing hardware implementation and deployment of a graphical program
US8539440B1 (en) 2012-03-19 2013-09-17 National Instruments Corporation Interactively designing a hardware implementation of a graphical program
US10650452B2 (en) 2012-03-27 2020-05-12 Ip Reservoir, Llc Offload processing of data packets
US11436672B2 (en) 2012-03-27 2022-09-06 Exegy Incorporated Intelligent switch for processing financial market data
US10121196B2 (en) 2012-03-27 2018-11-06 Ip Reservoir, Llc Offload processing of data packets containing financial market data
US9990393B2 (en) 2012-03-27 2018-06-05 Ip Reservoir, Llc Intelligent feed switch
US8893065B2 (en) * 2012-07-11 2014-11-18 Mentor Graphics Corporation Biometric markers in a debugging environment
TW201416686A (en) * 2012-10-26 2014-05-01 Hon Hai Prec Ind Co Ltd System and method for searching signals on a hardware circuit diagram
US9043757B2 (en) * 2012-12-13 2015-05-26 Oracle International Corporation Identifying differences between source codes of different versions of a software when each source code is organized using incorporated files
US8789001B1 (en) 2013-02-20 2014-07-22 Tabula, Inc. System and method for using fabric-graph flow to determine resource costs
US9015643B2 (en) * 2013-03-15 2015-04-21 Nvidia Corporation System, method, and computer program product for applying a callback function to data values
US9323502B2 (en) 2013-03-15 2016-04-26 Nvidia Corporation System, method, and computer program product for altering a line of code
US20140278328A1 (en) * 2013-03-15 2014-09-18 Nvidia Corporation System, method, and computer program product for constructing a data flow and identifying a construct
US9171115B2 (en) 2013-04-10 2015-10-27 Nvidia Corporation System, method, and computer program product for translating a common hardware database into a logic code model
US9021408B2 (en) 2013-04-10 2015-04-28 Nvidia Corporation System, method, and computer program product for translating a source database into a common hardware database
US9015646B2 (en) 2013-04-10 2015-04-21 Nvidia Corporation System, method, and computer program product for translating a hardware language into a source database
US9449196B1 (en) 2013-04-22 2016-09-20 Jasper Design Automation, Inc. Security data path verification
CN103324435B (en) * 2013-05-24 2017-02-08 华为技术有限公司 Multi-screen display method and device and electronic device thereof
US9154137B2 (en) 2013-07-04 2015-10-06 Altera Corporation Non-intrusive monitoring and control of integrated circuits
US9361407B2 (en) * 2013-09-06 2016-06-07 Sap Se SQL extended with transient fields for calculation expressions in enhanced data models
US9606525B2 (en) * 2013-12-23 2017-03-28 Mitutoyo Corporation Remote accessory for generating customized and synchronized reference notes for a programmable metrology system
KR20150090707A (en) * 2014-01-29 2015-08-06 삼성전자주식회사 Method and apparatus for creating symbols in a high level programming language
US9659137B2 (en) * 2014-02-18 2017-05-23 Samsung Electronics Co., Ltd. Method of verifying layout of mask ROM
US9520180B1 (en) 2014-03-11 2016-12-13 Hypres, Inc. System and method for cryogenic hybrid technology computing and memory
US9501594B2 (en) * 2014-04-13 2016-11-22 Vtool Ltd. Graphical design verification environment generator
CN105468797B (en) * 2014-08-22 2019-10-22 深圳市中兴微电子技术有限公司 A kind of information processing method and device
WO2018119035A1 (en) 2016-12-22 2018-06-28 Ip Reservoir, Llc Pipelines for hardware-accelerated machine learning
US20180285241A1 (en) * 2017-03-28 2018-10-04 Carnegie Mellon University Energy-interference-free debugger for intermittent energy-harvesting systems
JP6919338B2 (en) * 2017-05-30 2021-08-18 オムロン株式会社 Program development support device, program development support system, program development support method, and program development support program
US10762262B1 (en) * 2017-11-03 2020-09-01 Synopsys, Inc. Multi-dimensional constraint solver using modified relaxation process
US10747932B2 (en) * 2018-08-09 2020-08-18 International Business Machines Corporation Smart placement, visualization and optimization methodology for component placement and planning
US10585650B1 (en) * 2018-12-21 2020-03-10 Dspace Digital Signal Processing And Control Engineering Gmbh Method and system for generating program code
EP4004724A1 (en) * 2019-08-22 2022-06-01 Google LLC Compilation for synchronous processor

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4241418A (en) * 1977-11-23 1980-12-23 Honeywell Information Systems Inc. Clock system having a dynamically selectable clock period
US5802290A (en) * 1992-07-29 1998-09-01 Virtual Computer Corporation Computer network of distributed virtual computers which are EAC reconfigurable in response to instruction to be executed
US5648913A (en) * 1993-03-29 1997-07-15 Xilinx, Inc. Frequency driven layout system and method for field programmable gate arrays
US5778250A (en) * 1994-05-23 1998-07-07 Cirrus Logic, Inc. Method and apparatus for dynamically adjusting the number of stages of a multiple stage pipeline
US5778237A (en) * 1995-01-10 1998-07-07 Hitachi, Ltd. Data processor and single-chip microcomputer with changing clock frequency and operating voltage
US5996083A (en) * 1995-08-11 1999-11-30 Hewlett-Packard Company Microprocessor having software controllable power consumption
US6384630B2 (en) * 1996-06-05 2002-05-07 Altera Corporation Techniques for programming programmable logic array devices
US6567837B1 (en) * 1997-01-29 2003-05-20 Iq Systems Object oriented processor arrays
JPH11306026A (en) * 1998-04-22 1999-11-05 Toshiba Corp Code optimization device and method and computer readable recording medium recording code optimization program
US6308311B1 (en) * 1999-05-14 2001-10-23 Xilinx, Inc. Method for reconfiguring a field programmable gate array from a host
US6560665B1 (en) * 1999-05-14 2003-05-06 Xilinx Inc. Embedding firmware for a microprocessor with configuration data for a field programmable gate array
JP4748828B2 (en) * 1999-06-22 2011-08-17 ルネサスエレクトロニクス株式会社 Semiconductor memory device
US20030033514A1 (en) * 2000-07-20 2003-02-13 John Appleby-Allis System, method and article of manufacture for controlling peripherals and processing data on a system having no dedicated storage program and no central processing unit.

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BUSKA D E ET AL: "ADL: A DYNAMIC OBJECT-ORIENTED MODELING LANGUAGE" OOPS MESSENGER, ASSOCIATION FOR COMPUTING MACHINERY, NEW YORK, US, vol. 2, no. 1, 1991, pages 8-27, XP000330051 *
MATTHEW BOWEN:: ""Handel-C Language Reference Manual, pages 79-96" [Online] 2000 XP002252632 Retrieved from the Internet: <URL: http://panou.act.uji.ex/doctorada/langrefh an2.1.1.pdf> [retrieved on 2003-07-30] the whole document *

Also Published As

Publication number Publication date
WO2002061633A3 (en) 2003-12-11
US20030046671A1 (en) 2003-03-06
US6691301B2 (en) 2004-02-10

Similar Documents

Publication Publication Date Title
WO2002061633A2 (en) System, method and article of manufacture for signal constructs in a programming language capable of programming hardware architectures
WO2002061630A2 (en) System, method and article of manufacture for distributing ip cores
WO2002061631A2 (en) System, method and article of manufacture for using a library map to create and maintain ip cores effectively
WO2002061580A2 (en) System, method and article of manufacture for successive compilations using incomplete parameters
WO2002061636A2 (en) System, method and article of manufacture for parameterized expression libraries
Page et al. Compiling Occam into field-programmable gate arrays
WO2002061632A2 (en) System, method and article of manufacture for extensions in a programming language capable of programming hardware architectures
Koch et al. FPGAs for software programmers
JP3835754B2 (en) Integrated circuit design method and integrated circuit designed thereby
Cardoso et al. Compilation techniques for reconfigurable architectures
Gokhale et al. Reconfigurable computing: Accelerating computation with field-programmable gate arrays
WO2002061576A2 (en) System, method and article of manufacture for interface constructs in a programming language capable of programming hardware architectures
Chou et al. The chinook hardware/software co-synthesis system
Lin et al. Synthesis of concurrent system interface modules with automatic protocol conversion generation
US8930892B2 (en) System and method for computational unification of heterogeneous implicit and explicit processing elements
Akella et al. SHILPA: A high-level synthesis system for self-timed circuits
JP6001873B2 (en) Stream scheduling method and apparatus in parallel pipelined hardware
Gajski et al. Essential issues in codesign
Heyse et al. Efficient implementation of virtual coarse grained reconfigurable arrays on FPGAs
Stripf et al. A compilation-and simulation-oriented architecture description language for multicore systems
Greaves A Verilog to C compiler
Morra et al. FELIX: using rewriting-logic for generating functionally equivalent implementations
Bosse A Unified System Modelling and Programming Language based on JavaScript and a Semantic Type System
Villar et al. Synthesis applications of VHDL
WO2002061581A2 (en) System, method and article of manufacture for generating libraries utilizing pre-compiled macros

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SD SE SG SI SK SL TJ TM TN TR TT TZ UA UG US UZ VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP