New Carpets

Our new carpets were installed yesterday. It took them all of half a day to rip up the old ones and install the new ones. The entire office is now brightly coloured and I hope that means that we’ll be able to work more productively come 2013! PS: There’s but one more thing to do – new furniture!

New Coat of Paint

Although we’ve only been squatting at our current offices for the last few years, we did not renovate the office when we first moved in as the previous tenant had left an office which was mostly what we wanted anyway. However, with the wear and tear of the last couple of years, it is now time to do a little refurbishment. The month of December is great for such things as nobody is around in the office. So, we’ve ordered Read more…

FPGA Dev Boards

In preparation for the development of our new products in 2013, we have ordered a couple of FPGA based development boards to aid in our work. Both of these turned out to be Digilent boards – Atlys and Zedboard. The Atlys will serve as our general purpose development board as it has the necessary I/O devices that we will be integrating into our new product. The Zedboard is going to serve as an experimental platform for future products. Both of Read more…

http://www.sxc.hu/photo/96250
http://www.sxc.hu/photo/206155

NFS v GlusterFS Homes

After spending several months running user home directories under GlusterFS, we have encountered some minor problems of files that get modified or unmodified in a seemingly random fashion. This might be due to us using Gluster in an unsupported way. Therefore, we decided to switch to a tried and true method – storing home user directories under NFS. In the intervening months, we had upgraded our entire office network to a gigabit network and purchased a new dedicated file-server. Therefore, Read more…

Optimising C for T3RAS

After lots of testing i found certain variances that can help in speeding up code. These are a few simple practices. Know your target. If the T3RAS core you’re compiling for contains hardware features like multiplier and barrel shifting, include it when compiling your code using -mattr=barrel,mul . Both instructions take an extra cycle to execute however in most situations using them is more efficient than expanding it to a bunch of simple instructions. Dont use too many variables especially Read more…

http://www.sxc.hu/photo/1160562
http://www.sxc.hu/photo/1160562

T3RAS LLVM Backend Features

The T3RAS backend in llvm is based on the microblaze 6.3 architecture set but without hardware support for floating points and without hardware division. The T3RAS backend contains 3 variants (T3RAS1T, T3RAS2T, T3RAS4T) which is described below. To list all variants and features of T3RAS, simply run: llvm-as < /dev/null | llc -march=T3RAS -mattr=help which would show: T3RAS1T – Select the T3RAS1T processor. T3RAS2T – Select the T3RAS2T processor. T3RAS4T – Select the T3RAS4T processor. Available features for this target: Read more…

LLVM Backend Port Progress

While i was successful in making sure the backend appeared with the right name and features that were needed, there were still many shortcomings that needed to be addressed. After a while of copying, modifying and adapting code, I was finally able to change the names and variants. Instead of differentiating the variants from the pipeline, i removed the 3 staged pipeline and made copies of the 5 staged pipeline for different threaded variants. I found that one way i Read more…

http://www.sxc.hu/photo/1160562
http://www.sxc.hu/photo/1160562

Adding/porting a backend/architecture to LLVM

After finally managing to port an architecture i thought i’d share the steps as there isnt a clear or simple guide on adding your own backend to LLVM. It should be noted that at this time of writing the LLVM documentation at llvm.org is outdated (also mentioned on their website). Assuming you have your architecture code ready there are a few files needed for LLVM to detect, compile and use your backend. It is also recommended to look at other Read more…

LLVM

Finally managed to compile LLVM and clang for microblaze. I find using configure –target= or -target doesnt work while using –enable-targets=”mblaze” worked. I found the documentation to be very poor on this and does not mention anything about the other options available in configure such as using –enable-targets.  I also have found that many others have had the same problem and they never found the solution to it while all the solutions given didnt work. Clang seems to compile fine Read more…

http://www.sxc.hu/photo/1160562