[ Content | Sidebar ]

Archives for December, 2013

Writes Your Makefiles For You

December 31st, 2013

I’ve been dogfooding my VHDL compiler for a project at work and now that it’s gotten to the point where it can simulate non-trivial designs, compile times are becoming significant. Especially when files use Xilinx primitives as the vcomponents library takes a while to load.

At the moment I’m re-analysing every source file for each change I make, so obviously an improvement would be to write a makefile and only re-analyse the files that have changed and those that depend on them (e.g. an architecture must be re-analysed if the corresponding entity changed). But figuring out and maintaining the dependencies by hand is tedious and error prone so I’ve written a makefile generator that recursively finds the dependencies for previously analysed or elaborated units in a library. Invoke it like this:

nvc --make my_top_level >Makefile

Then running make will do the minimum amount of work to rebuild all the out of date files. If the argument to --make is an elaborated design then two convenience targets run and wave will be added to run the simulation and run with waveform output respectively.

The code is fairly compact: only 400 or so lines of C.

This also turned out to be handy for solving a long-standing problem of not being able to bootstrap the standard and IEEE libraries with parallel make (make -j). Previously the dependencies in the automake input file were incomplete, but now these are generated automatically by a gen-deps target. The output (e.g. here) is then mangled with sed and committed into the git repository (this solves a chicken-and-egg problem where the gen-deps target can only be run in an already built tree).

Gotta Catch Them All

December 31st, 2013

After a hiatus of over 20 years I got another Pirate Lego set for Christmas! My parents tracked down from eBay the one set I was missing from the 1989/90 Pirate range, 6270 “Forbidden Island”. Got all the bits and the original instructions! Flag was a bit borked by I replaced it with a spare on I had.


Here it is with the big pirate ship and raft. Probably acquired those on some previous Christmas. Apparently there’s some newfangled “Pirates of the Caribbean” themed pirate Lego: kids these days…

Winter Wander

December 22nd, 2013

I went for another adventure today from Farnham Common near Slough to West Drayton just inside the M25. You might recall I’ve been roughly this way on several previous adventures. A really nice sunny day despite the pessimistic weather forecast.

A lot of the photos below are from Stoke Common a really lovely area of boggy grassland north east of Slough. I’ve been here several times and always enjoyed walking through it. Definitely worth visiting if you live in the area.

Near the end of the trip, just inside the M25, I had to take a less pleasant detour around a sewage works as a vital foot bridge over the canal had been inconsiderately demolished.

Impeccable Timing

December 16th, 2013

This evening I went running for exactly 41 minutes 41 seconds and 41 hundredths of a second.


Compressed Air

December 16th, 2013

Ah, the humble can of compressed air: is there any problem it can’t solve? Just now with his sidekick Henry he managed to repair my dead CPU fan!

New Lunar Lander Version

December 15th, 2013

Almost a year since I released the last one, there’s a new lander-0.6.5.tar.gz package available. Nothing exciting: just fixing bit rot and some FreeBSD build fixes Dmitry Marakasov. Glad someone’s using it! 🙂


December 14th, 2013

I saw some pretty red berries when I was out adventuring near Marlow today. Probably highly toxic.


Really lovely winter morning today: cold and a sunny and muddy. I saw a robin which must mean it’s nearly Christmas! 😀