About
CoreTML framework is an open-source template-based configuration system (template engine). It allows the developer to create parametrized templates by inserting special content to any text files. These templates are intended to be used to generate output files depending upon parameters chosen by the user.
CoreTML framework was created primarily as an IP core generator platform for the design and deployment of semiconductor IP cores on a register transfer level (RTL) using hardware description languages (HDL). It provides a few advantages over the other approaches:
Complete language neutrality;
CoreTML's tagging system using Lua scripting language as a backend is much more versatile than Verilog parameters or VHDL generics;
Unlike general-purpose programming languages, CoreTML provides a standard way to instantiate templates and pass parameters between them;
Streamlined configuration GUI creation (example screenshot).
CoreTML framework has been successfully used as a code generation tool in complex FPGA and ASIC projects. The CoreTML distribution includes a couple of IP core generator examples.
CoreTML framework is not limited to any particular task and can be also used for purposes other than semiconductor IP design.
Language
TML stands for Template Markup Language. A template is simply a text file which incorporates some TML tags. These tags are inserted using an escape character (backslash). Some tags allow the developer to invoke Lua scripts. It is also possible to invoke a TML template from another TML template.
A few examples:
Template | Parameters | Output |
---|---|---|
Hello, world! | - | Hello, world! |
architecture \eval{archname} of \eval{entityname} is | archname="behavioral" entityname="mycore" |
architecture behavioral of mycore is |
always @(\if{edge=="rising"}\then{posedge}\else{negedge} clk) begin | edge="rising" | always @(posedge clk) begin |
z<=\eval{2^m-x} | m=3 x=2 |
z<=6 |
\include{scriptlib.tml} y<='1' when \script{ for i=1,n do
} else '0';
write("x=\\""..binarystring(2^(i-1),n).."\\"")
endif i<n then write(" or ") end |
n=8 | y<='1' when x="00000001" or x="00000010" or x="00000100" or x="00001000" or x="00010000" or x="00100000" or x="01000000" or x="10000000" else '0'; |
Structure
From the user's standpoint, CoreTML has two processing stages:
- TMLconf creates user interface from a TML-c interface description. This user interface allows the user to configure template parameters. As a result, an invocation script is generated.
- TMLgen parses invocation script and TML template(s) and generates output file(s).
![](/images/coretml-workflow-whitebg.png)
CoreTML also includes a Windows-only CoreTML Editor (heavily based on SciTE) supporting TML syntax highlighting.
Contacts
To submit a bug report or a feature request, use our tracker system. Otherwise, send a message to the developer.
Copyright © 2010-2015 by Alex I. Kuznetsov.
All product and company names mentioned here are trademarks or registered trademarks of their respective owners.