# US 9,436,438 B2 · Graphical specification and constraint language for developing programs for hardware implementation and use

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 9,436,438 B2
- Document ID: US9436438B2
- Status: Granted
- Kind: B2
- Application number: 14/500,285
- Filed: 2014-09-29
- Published: 2015-01-15
- Granted: 2016-09-06
- Earliest claimed: 2010-07-30
- Assignees: National Instruments Corporation
- Applicants: National Instruments Corporation
- Inventors: Kaushik Ravindran; Jacob Kornerup; Rhishikesh Limaye; Guang Yang; Guoqiang Wang; Jeffrey N. Correll; Arkadeb Ghosal; Sadia B. Malik; Charles E. Crain, II; Michael J. Trimborn
- Web page: https://patentgrep.com/patent/US9436438B2

## CPC

- G06F 8/20: Software design
- G06F 8/34: Graphical or visual programming
- G06F 9/4494: {data driven}
- G06F 3/048: Interaction techniques based on graphical user interfaces [GUI]
- G06F 9/44: Arrangements for executing specific programs
- G06F 16/212: {with details for data modelling support}
- G06F 16/26: Visual data mining; Browsing structured data
- G06F 30/13: Architectural design, e.g. computer-aided architectural design [CAAD] related to design of buildings, bridges, landscapes, production plants or roads
- G06F 30/30: Circuit design
- G06F 30/333: Design for testability [DFT], e.g. scan chain or built-in self-test [BIST]
- G06F 2111/02: CAD in a network environment, e.g. collaborative CAD or distributed simulation
- G06F 2111/04: Constraint-based CAD
- G06F 2111/10: Numerical modelling
- G06F 2111/12: Symbolic schematics
- G06F 2111/20: Configuration CAD, e.g. designing by assembling or positioning modules selected from libraries of predesigned modules
- G06F 2119/18: Manufacturability analysis or optimisation for manufacturability
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

System and method for specifying and implementing programs. A graphical program is created in a graphical specification and constraint language that allows specification of a model of computation and explicit declaration of constraints in response to user input. The graphical program includes a specified model of computation, a plurality of interconnected functional blocks that visually indicate functionality of the graphical program in accordance with the specified model of computation, and specifications or constraints for the graphical program or at least one of the functional blocks in the graphical program. The specified model of computation and specifications or constraints are useable to analyze the graphical program or generate a program or simulation.

## Claims

### Claim 1

A non-transitory computer-accessible memory medium that stores program instructions executable by a computer system to perform:
providing a graphical program development environment comprising a graphical specification and constraint language that allows specification of a model of computation and explicit declaration of constraints; and
creating a graphical program in the graphical specification and constraint language in response to user input, wherein the graphical program comprises:
a specified model of computation;
a plurality of interconnected functional blocks that visually indicate functionality of the graphical program in accordance with the specified model of computation; and
graphically indicated specifications or constraints for at least one of the functional blocks in the graphical program;
wherein the specifications or constraints comprise:
initiation interval (II), comprising a minimum number of cycles between firings of the at least one functional block;
input pattern (IP), comprising a sequence of Boolean values of length at most II, wherein the sequence of Boolean values aligns with the beginning of firing of the at least one functional block, wherein each true value in the sequence denotes consumption of a token at an input terminal of the at least one functional block; and
output pattern (OP), comprising a sequence of Boolean values of length at most II, wherein the sequence of Boolean values aligns with the end of firing of the at least one functional block, wherein each true value in the sequence denotes production of a token at an output terminal of the at least one functional block; and
automatically generating an output program based on the graphical program, wherein the output program implements the functionality of the graphical program in accordance with the specified model of computation, and further implements the specifications or constraints;
wherein the output program is useable to configure a programmable hardware element to perform the functionality subject to the specifications or constraints.

### Claim 2 (depends on 1)

The non-transitory computer-accessible memory medium of claim 1, wherein the program instructions are further executable to perform:
analyzing the graphical program, including analyzing the specifications or constraints, thereby producing analysis results;
wherein said automatically generating the output program is performed based on the analysis results.

### Claim 3 (depends on 2)

The non-transitory computer-accessible memory medium of claim 2, wherein the specification or constraints comprise one or more user-provided specifications, and wherein the program instructions are further executable to automatically convert the one or more user-provided specifications into a corresponding one or more constraints before said analyzing and said automatically generating the output program.

### Claim 4 (depends on 2)

The non-transitory computer-accessible memory medium of claim 2, where at least some of the model of computation, and specifications or constraints, are projected onto a lower dimensional space to simplify and speed at least a portion of said analyzing.

### Claim 5 (depends on 2)

The non-transitory computer-accessible memory medium of claim 2,
where simple analysis is performed in real-time; and
wherein complex and more time-consuming analysis is performed as a background process as time permits in an asynchronous manner.

### Claim 6 (depends on 2)

The non-transitory computer-accessible memory medium of claim 2, where the steps of the analysis are remembered as a model transformation, during exploration, and they can be reproduced for either code generation, or secondary exploration.

### Claim 7 (depends on 2)

The non-transitory computer-accessible memory medium of claim 2, wherein the number of tokens consumed and produced are respectively restricted to be 0 or 1 at each phase.

### Claim 8 (depends on 1)

The non-transitory computer-accessible memory medium of claim 1, wherein at least some of the specifications or constraints are with respect to one or more of:
throughput of terminals on the functional blocks;
throughput of the graphical program;
clock rate of the graphical program;
buffer sizes between functional blocks; or
latency between functional block inputs and corresponding functional block outputs.

### Claim 9 (depends on 1)

The non-transitory computer-accessible memory medium of claim 1, wherein at least one of the specifications or constraints specifies tokens consumed and produced in a plurality of graphically indicated phases or modes.

### Claim 10 (depends on 1)

The non-transitory computer-accessible memory medium of claim 1,
wherein the number of tokens consumed and produced are resolved at the time the functional blocks are connected; and
wherein the number of tokens consumed and produced are specified as a different functional block in the graphical program.

### Claim 11 (depends on 1)

The non-transitory computer-accessible memory medium of claim 1, wherein the specifications or constraints for the at least one functional block are with respect to one or more of:
throughput of terminals on the at least one functional block; or
latency between inputs and corresponding outputs of the at least one functional block.

### Claim 12 (depends on 1)

The non-transitory computer-accessible memory medium of claim 1, wherein the graphical program further comprises one or more specifications or constraints on the graphical program, comprising one or more of:
throughput of the graphical program; or
buffer sizes between functional blocks of the graphical program.

### Claim 13 (depends on 1)

The non-transitory computer-accessible memory medium of claim 1, wherein the specifications or constraints further comprise an execution time (ET) that specifies a number of cycles needed by the at least one functional block to complete firing and a flag denoting whether the execution time is exact or worst case.

### Claim 14 (depends on 1)

The non-transitory computer-accessible memory medium of claim 1, wherein the program instructions are further executable to:
configure the at least one functional block;
wherein said configuring is performed when the functional blocks are connected, and wherein said configuring determines values for IC, OC, ET, IP, and OP for the at least one functional block.

### Claim 15 (depends on 1)

The non-transitory computer-accessible memory medium of claim 1, wherein the program instructions are further executable to:
determine a configuration scope for the at least one functional block when the at least one functional block is connected; and
configure the at least one functional block at runtime in accordance with the determined configuration scope;
wherein said configuring determines values for IP and OP for the at least one functional block.

### Claim 16 (depends on 15)

The non-transitory computer-accessible memory medium of claim 15, wherein the program instructions are further executable to perform:
automatically determining harnessing logic for the at least one functional block to ensure that runtime updates to the at least one functional block's configuration occur on iteration boundaries.

### Claim 17 (depends on 16)

The non-transitory computer-accessible memory medium of claim 16, wherein the program instructions are further executable to perform:
automatically selecting harnessing logic for the at least one functional block to ensure that data flow for the at least one functional block occurs according to the runtime updates of the at least one functional block's configuration.

### Claim 18 (depends on 1)

The non-transitory computer-accessible memory medium of claim 1, wherein the program instructions are further executable to perform:
automatically determining harnessing logic for the at least one functional block based on functional block interconnects.

### Claim 19 (depends on 1)

The non-transitory computer-accessible memory medium of claim 1, wherein the program instructions are further executable to perform:
automatically determining harnessing logic for the at least one functional block based on configuration of the at least one functional block.

### Claim 20 (depends on 1)

The non-transitory computer-accessible memory medium of claim 1, wherein the specifications or constraints further comprise:
input count (IC), comprising a number of tokens consumed at an input terminal of the at least one functional block by one firing of the at least one functional block;
output count (OC), comprising a number of tokens produced at an output terminal of the at least one functional block by one firing of the at least one functional block; and
execution time (ET), comprising a number of cycles needed by the at least one functional block to complete firing.

### Claim 21 (depends on 20)

The non-transitory computer-accessible memory medium of claim 20, wherein the IC of a first functional block and the OC of a second functional block correspond in rate to each other one to one, and ET, II, IP and OP match, and wherein the corresponding generated output program is optimized or simplified with a control structure that is re-used for the first and second functional blocks.

### Claim 22 (depends on 20)

The non-transitory computer-accessible memory medium of claim 20,
wherein the IC of a first functional block and the OC of a second functional block correspond in rate to each other n to m, and ET, II , IP and OP match; and
wherein the generated output program is optimized or simplified with a control structure that is re-used for the first and second functional blocks at corresponding rates.

### Claim 23 (depends on 20)

The non-transitory computer-accessible memory medium of claim 20,
wherein the IC of a first functional block and the OC of a second functional block correspond in rate to each other one to one, and ET, II , IP and OP match and sum to be less than one; and
wherein the generated output program is optimized or simplified with a control structure that is collapsed into a single control structure for one cycle.

### Claim 24 (depends on 20)

The non-transitory computer-accessible memory medium of claim 20, wherein the at least one functional block has multiple possible configurations of IC, OC, ET, II, IP, and OP, and wherein the program instructions are further executable to determine a configuration from the possible configurations based on the specifications or constraints of the at least one functional block, of another functional block, or of the graphical program.

### Claim 25 (depends on 1)

The non-transitory computer-accessible memory medium of claim 1, wherein one or more of the functional blocks comprise respective hierarchical elements.

### Claim 26 (depends on 25)

The non-transitory computer-accessible memory medium of claim 25, wherein the hierarchical elements comprise:
a case structure; or
a sub-diagram, comprising a respective plurality of interconnected functional blocks.

### Claim 27

A computer-implemented method, comprising:
utilizing a computer to perform:
providing a graphical program development environment comprising a graphical specification and constraint language that allows specification of a model of computation and explicit declaration of constraints; and
creating a graphical program in the graphical specification and constraint language in response to user input, wherein the graphical program comprises:
a specified model of computation;
a plurality of interconnected functional blocks that visually indicate functionality of the graphical program in accordance with the specified model of computation; and
graphically indicated specifications or constraints for at least one of the functional blocks in the graphical program;
wherein the specifications or constraints comprise:
initiation interval (II), comprising a minimum number of cycles between firings of the at least one functional block;
input pattern (IP), comprising a sequence of Boolean values of length at most II, wherein the sequence of Boolean values aligns with the beginning of firing of the at least one functional block, wherein each true value in the sequence denotes consumption of a token at an input terminal of the at least one functional block; and
output pattern (OP), comprising a sequence of Boolean values of length at most II, wherein the sequence of Boolean values aligns with the end of firing of the at least one functional block, wherein each true value in the sequence denotes production of a token at an output terminal of the at least one functional block; and
automatically generating an output program based on the graphical program, wherein the output program implements the functionality of the graphical program in accordance with the specified model of computation, and further implements the specifications or constraints;
configuring, using the output program, a programmable hardware element to perform the functionality subject to the specifications or constraints.

### Claim 28

A system, comprising:
a processor; and
a memory medium, coupled to the processor, wherein the memory medium stores program instructions executable by a computer system to:
provide a graphical program development environment comprising a graphical specification and constraint language that allows specification of a model of computation and explicit declaration of constraints; and
create a graphical program in the graphical specification and constraint language in response to user input, wherein the graphical program comprises:
a specified model of computation;
a plurality of interconnected functional blocks that visually indicate functionality of the graphical program in accordance with the specified model of computation; and
graphically indicated specifications or constraints for at least one of the functional blocks in the graphical program;
wherein the specifications or constraints comprise:
initiation interval (II), comprising a minimum number of cycles between firings of the at least one functional block;
input pattern (IP), comprising a sequence of Boolean values of length at most II, wherein the sequence of Boolean values aligns with the beginning of firing of the at least one functional block, wherein each true value in the sequence denotes consumption of a token at an input terminal of the at least one functional block; and
output pattern (OP), comprising a sequence of Boolean values of length at most II, wherein the sequence of Boolean values aligns with the end of firing of the at least one functional block, wherein each true value in the sequence denotes production of a token at an output terminal of the at least one functional block; and
automatically generate an output program based on the graphical program, wherein the output program implements the functionality of the graphical program in accordance with the specified model of computation, and further implements the specifications or constraints;
wherein the output program is useable to configure a programmable hardware element to perform the functionality subject to the specifications or constraints.
