goFB

module
v0.0.0-...-aee3c85 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 2, 2021 License: MIT

README

goFB, an IEC61499 Function Block toolchain

This repository provides all source code for the goFB project, which aims to supply a complete toolchain for IEC61499 design, validation, and compilation. It typically generates C code from your Function Block networks which executes synchronously (the default behaviour), but also has experimental support for a more-standard event-driven network. Both approaches generate code amenable to static timing analysis given suitable target architectures.

Furthermore, there is yet additional experimental support for compiling Function Block networks to Verilog for synchronous execution in reconfigurable hardware.

goFB was inspired by FBC, BlokIDE, and Structured Text.

There are two major components to this toolchain:

  • goFB/goTFB provides a commandline text-based methodology for design of IEC61499 function blocks and networks, and
  • goFB/goFB provides the compiler goFB for IEC61499 to C.

goTFB creates intermediary IEC61499-compliant XML files as its output, and goFB uses those same intermediary IEC61499-compliant XML files as its input. This means that goTFB may be paired with any suitable compiler (e.g. FBC), and goFB may be paired with any other IEC61499 design tool (e.g. BlokIDE).

Support

The goFB toolchain currently supports the following aspects of the IEC61499 standard

  • Basic Function Blocks
  • Service Interface Function Blocks
  • Composite Function Blocks
  • Resources (partial - goFB but not goTFB)
  • Devices
  • Systems

There is also some work into IEC61499 extensions:

  • Hybrid Function Blocks (partial - goFB but not goTFB)
  • Enforcer Function Blocks

Examples

Examples can be found in the examples directory.

For complete usage of the toolchain, refer to the examples in the examples/goTFB directory. examples/goFB_only has examples that utilize the compiler in different ways, such as adding CVODE, and building for the T-CREST platform.

Output languages

Primarily, this tool is designed to compile IEC61499 to C.

There is also Verilog support for compiling BFBs/CFBs for FPGAs.

Build

The goFB toolchain is designed using the Go programming language.

To compile it, firstly you will need to install/set up Go version 1.8+.

Then, you can go get this repository, and run bash build.sh.

You will need to add the bin directory of the repostory to your $PATH, for instance, in ~/.profile.

Publications

The goFB toolchain was used in the following publications:

For the purposes of replicating results, these and other examples are kept pre-compiled within the repository for your convenience.

Directories

Path Synopsis
eca

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL