Posted on 2012-09-06 by Jaco Naude
Last modified on 2024-06-19
Tagged as: Guest Blog

Guest Blog: Scineric and the ears of the hippo

Jaco Naude Jaco Naude is a firmware and hardware design engineer and has been working for the Experimental Radar Systems group at the CSIR in South Africa for the last 4 years. Before that, he has done technical support at Xilinx on their DSP cores and System Generator for 2 years. Jaco has done a lot of research into ways to make firmware design management, sharing and packaging easier. The result of this effort is a tool called [Scineric Workspace](http://scineric.csir.co.za). Lastly, Jaco is a fan of the Qt C++ framework and the author of an open source Qt library called [Qtilities](http://www.qtilities.org).

The Scineric Workspace logo represents the outline of a hippo, a common animal in South Africa where the product is developed. To understand why a hippo is used, a picture of a hippo underneath water is required first. In the Afrikaans language there is a saying “die oortjies van die seekoei” (the ears of the hippo) which is roughly the same as the English expression “the tip of the iceberg”. This is because there is big hippo behind those two little ears that you see. This expression is perfect to describe Scineric, mainly because it solves many problems and depending on your background, the things you find useful will differ from someone with a different background.

Hippo’s ears above the water

Scineric is a product that is difficult to describe in one or two sentences. But if it needs to be done, one possible way to summarize it is:

Scineric Workspace is a product which can help you to manage sets of files (called a design) with complex dependencies between them in a structured way. Customizable structures can easily be shared and enforced between different designs or team members. In addition it provides many features such as advanced build management, package management and a Tcl scripting interface to manage designs.

Some people use it to manage the academic papers they use in their master’s degree, other people want to use it to manage Latex document generation and clean-up, some people use it to document their C++ code while other people use it to manage and edit IP-XACT component models. However, firmware designs are the main targets for Scineric and it ships with a set of firmware plugins which allows it to easily fit into the daily workflow of a firmware engineer. Another possible two sentence description of what Scineric is from a firmware perspective is to simply say:

Scineric Workspace is a cross-vendor firmware build and management environment. A wrapper for many back-end tools doing the hard work for you by abstracting multiple environments through a modern and intuitive GUI

If you are a firmware engineer you are probably wondering how it can help you. To answer that, see if you’ve ever ran into one of the following problems and if you had, Scineric has a solution for that.

  • Checked files generated by vendor tools into your version control system, even though you’ve set up your ignore lists and you thought you had included everything that is needed. If that hasn’t happened to you (yet?), a team member ends up checking in generated files and when you do a checkout you end up with it on your disk.
  • You had to package a firmware design in a way that someone else can understand it and have all the information at hand on their side to rebuild of edit the design.
  • Struggled to maintain a common directory structure between multiple designs or team members.
  • Technical support has come back to you 3 times asking for more files which you forgot to (or did not realize you had to) send to them in the first place.
  • Tried to convert a firmware design from one format to another, for example a Quartus project to a Xilinx project, or a Xilinx 14.1 project to a 13.1 project.
  • Had to think of a way to store and share metadata related to your design, for example a specific MAP seed which needs to be used in order to make timing.
  • Struggled to maintain version numbering of a design in different places (file names, generics in the build, tagging your design itself with the version number).
  • You’ve created your own build scripts, but maintaining them and adapting them for different versions is a real pain.

This list is only the “oortjies van die seekoei”.

If you think that it will be difficult to get Scineric going, it won’t. We’ve spent a lot of time in order to make it integrate nicely with many different external environments. You are probably using Sigasi because you are reading this blog and if you are, it’s even easier for you than for most other environments. We created a Sigasi Sync plugin which sync’s your design between Scineric and Sigasi. Thus, you can continue to develop your designs in Sigasi like you always did, but with a powerful design management environment at hand where you can manage, build and package your designs. This integration is demonstrated below:

<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
  <iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/axawy0hg8aM?autoplay=0&controls=1&end=0&loop=0&mute=0&start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
  ></iframe>
</div>

Scineric Workspace  is a research tool where we’ve taken the first step to making firmware design management and packaging a trivial task. We’ve realized that most people just want things to work, they don’t care how it happens and we’ve created a platform that attempts to do just that. There is an evaluation version out, try it and let us know what you think. If you are interested and are wondering how we do it, check out our blog post that describes the Scineric architecture .

To finish off, here is an introduction video showing the main parts of Scineric.

<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
  <iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/x89IVHw5Lh0?autoplay=0&controls=1&end=0&loop=0&mute=0&start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
  ></iframe>
</div>

See also