The Open RVC-CAL Compiler (Orcc) can generate code for any platform, including hardware (Verilog, VHDL), software (C, Java), heterogeneous platforms (mixed hardware/software), and multi-softcore platforms, from a platform-agnostic, high-level description.

The Orcc project also provides a dedicated Virtual Machine, the Just-in-time Adaptive Decoder Engine (Jade) based on LLVM infrastructure, that can dynamically produce machine code for a wide range of software platforms.

Introduction

Orcc is a collection of support tools under BSD license. The primary purpose of Orcc is to provide developers with a compiler infrastructure to allow several languages and combination of languages (in the case of co-design) to be generated from RVC-CAL actors and XDF networks. Orcc does not generate assembly or executable code directly, rather it generates source code that must be compiled by another tool.

What is a network?

Something like this:

What is an actor?

Something like this:

package org.mpeg4.part10.cbp.selectMacroblock;

import org.mpeg4.part10.cbp.MacroBlockInfo.BLOCK_TYPE_INTRA_MAX;

actor SelectMb()
	uint(size=6) MbType,
	uint(size=8) MbFromIntra,
	uint(size=8) MbFromInter
		==>
	uint(size=8)  MbOut
		:
	uint(size=6) mbType;

	getMbType: action MbType:[valMbType] ==>
	do
		mbType := valMbType;
	end

	forwardMb.intra: action MbFromIntra:[x] repeat 64 ==>
		MbOut:[x] repeat 64
	guard
		mbType <= BLOCK_TYPE_INTRA_MAX
	end  

	forwardMb.inter: action MbFromInter:[x] repeat 64 ==>
		MbOut:[x] repeat 64
	guard
		mbType > BLOCK_TYPE_INTRA_MAX
	end

	schedule fsm GetMbType:
		GetMbType (getMbType  ) --> ForwardMb;
		ForwardMb (forwardMb  ) --> GetMbType;
	end
end

Hosted by
Get Open RVC-CAL Compiler at SourceForge.net