Skip to content
/ goFB Public

An IEC61499 Function Block toolchain written in the Go programming language

License

Notifications You must be signed in to change notification settings

PRETgroup/goFB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

An IEC61499 Function Block toolchain written in the Go programming language

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published