[ Content | Sidebar ]

Ely Cathedral

November 28th, 2022

I’ve been meaning to go back to Ely ever since I walked there a month or so ago but arrived after dark. Well I finally did this weekend and went inside the cathedral, and very impressive it is too!

It seems a bit silly having enormous cathedral in such a tiny town (one of England’s smallest). You can see it from miles around too owing to the fens being completely flat. The entrance ticket is a pretty reasonable £8.50: take that, York Minster!

RH&DR Again

November 6th, 2022

It was my birthday last weekend so we took my niece for her first ever trip on the Romney, Hythe, and Dymchurch railway which has been feature multiple times previously on this blog.

The train is indeed minature

It rained a lot in the morning but still a great day out. And I found something interesting! Here we see an earlier version of your correspondent standing next to engine number 12 in the distant past:

Around 1988 ish

And in exactly the same location, here’s number 12 again! (It’s the same engine, I asked, they just painted it black at some point.)

2022, note the platform refurbishment

Restoring the old Mu4e message view look and feel

October 30th, 2022

I’ve used mu4e as an email client for several years now and by and large I’m happy with it. However one big change with the 1.8 release was the switch from the “old” message view to the new one based on Gnus article mode. Functionally it’s fine but I did prefer the look and feel of the old message view. Despair not, as Gnus is sufficiently customisable that we can tweak it to look almost the same.

First we do the easy bit which is just setting the font-lock highlighting to match the old message view:

(use-package gnus
  :custom-face
  (gnus-signature ((t (:inherit font-lock-comment-face))))
  (gnus-header-name ((t (:inherit message-header-name :weight bold))))
  (gnus-header-from ((t (:inherit font-lock-variable-name-face))))
  (gnus-header-subject ((t (:inherit font-lock-type-face))))
  (gnus-header-content ((t (:inherit font-lock-type-face))))
  (gnus-cite-attribution ((t (:inherit default))))
  ...)

(I’m using the excellent use-package.)

These aren’t strictly the same as the original message view, but I prefer them to Gnus default of multiple subtly different shades of blue:

(gnus-cite-1 ((t (:foreground "light salmon"))))
(gnus-cite-2 ((t (:foreground "turquoise"))))
(gnus-cite-3 ((t (:foreground "light goldenrod"))))
(gnus-cite-4 ((t (:foreground "chartreuse2"))))

Mu4e used to highlight some of the header fields in different faces:

:config
(add-to-list 'gnus-header-face-alist '("To" nil font-lock-variable-name-face))
(add-to-list 'gnus-header-face-alist '("Reply-To" nil font-lock-variable-name-face))
(add-to-list 'gnus-header-face-alist '("Cc" nil font-lock-variable-name-face))

Restore the previous sort order for header fields:

(setq gnus-sorted-header-list '("^From:" "^To:" "^Reply-To:" "^Cc:" "^Subject:"
                                "^Flags:" "^Summary:" "^Keywords:" "^Newsgroups:"
                                "^Followup-To:" "^Date:" "^Organization:"))

Highlight the >, >>, etc. at the start of quote lines in addition to the quoted text itself (this really bothered me for some reason):

(defun filter-gnus-cite-args (args)
  "Replace PREFIX argument with the empty string."
  (setf (cadr args) "")
  args)
 
(advice-add 'gnus-cite-add-face :filter-args 'filter-gnus-cite-args)

Cambridge to Ely

October 23rd, 2022

Another surprise relocation! I’ve moved to Cambridge after being turfed out of my parents’ home. Earlier this month I set off northwards on an initial exploration towards the city of Ely.

I ended up doing this over two days due to illness (not covid) but still I somehow didn’t manage to arrive in Ely until after dark so I didn’t really see anything of England’s third smallest city.

Oh, how flat and featureless the fens are! Flat terrain can sometimes be interesting to walk through if there’s some navigation challenges or other obstacles (see my recent adventures on the Romney marsh) but as I was along this river for most of the journey the middle section after leaving Cambridge was really boring. The scenery picked up a little bit towards the end though when I could see Ely cathedral in the distance from miles away.

Channel Tunnel

September 16th, 2022

I went for another walk along the Kent coast a few weeks ago, this time around the back of Folkestone near the Channel Tunnel and on to Dover.

Channel Tunnel terminal

I thought maybe I’d get a good view of the tunnel entrance from the hills above but it wasn’t as impressive as I’d imagined. Back when it first opened there was an exhibition centre somewhere around here but it must have been demolished.

A precipitous drop near Dover

The section of cliff-top path between Folkestone and Dover was awesome, I’ll give it 9/10 for walking experience. Dover itself doesn’t seem to have a lot worth visiting except the castle and the port. I dimly remember a family trip to the castle, but might warrant a repeat visit.

New NVC version 1.7

August 7th, 2022

I’ve just released another version of my VHDL simulator. The highlight of this release is greatly improved VHDL-2008 support. It’s now sufficiently complete to run OSVVM, UVVM, and NEORV32.

A special thank you to Brian Padalino and T. Meissner for sponsoring me!

Download: nvc-1.7.0.tar.gz

This release is signed with my PGP key ID 74319F1A: nvc-1.7.0.tar.gz.sig

  • Breaking change: In-tree builds are no longer supported: use a separate build directory instead.
  • Breaking change: The --force-init command is deprecated and has no effect.
  • Added support for VHDL-2008 type generics on packages and entities.
  • Diagnostic messages have been enhanced with more contextual information.
  • Added support for record element constraints and record fields with unconstrained array types.
  • Alias of multidimensional array allowed in VHDL-2008 mode.
  • Implemented VHDL-2008 rules for aggregates with slices.
  • VHPI is now always enabled at build time and the --enable-vhpi configure option has no effect.
  • Arithmetic operations that overflow the underlying machine type now produce an error (#101).
  • Added support for VHDL-2008 force/release assignments.
  • Basic support for external names in VHDL-2008.
  • Matching case case? statements are supported in VHDL-2008 mode.
  • Fixed several bugs in the implementation of guarded signals.
  • Implemented VHDL-2008 rules for generic visibility.
  • Shared variable declaration permitted in entity declaration.
  • Case expression no longer requires a locally static subtype in VHDL-2008 mode (#460).
  • The VHDL heap is now garbage collected as required by VHDL-2019 and the deallocate operator has no effect other than setting the access to null.
  • A new global option -H specifies the size of the simulation heap and defaults to 16 megabytes.
  • Concurrent procedure call allowed in entity statement part.
  • Added support for 'SUBTYPE and 'ELEMENT attributes in VHDL-2008.
  • The new top-level --init command creates a new empty library directory.
  • The -a analysis command now reads from the standard input if the file name is -.
  • Added support for array element constraints in VHDL-2008.
  • The --prefer-explicit analysis option which was deprecated before the 1.0 release has been removed.
  • A new --relaxed analysis option enables “relaxed rules” mode. This has the same effect as enabling all the existing --relax= options. However some constructs will still produce warnings.
  • The --relax= analysis option is deprecated and is now equivalent to passing --relaxed. The individual options are ignored.
  • Added support for generic subprograms in VHDL-2008.
  • New command --install allows easy installation of common third-party packages such as OSVVM and UVVM.
  • Identifiers in waveform dumps are now in lower case instead of upper case.
  • The function CURRENT_DELTA_CYCLE in NVC.SIM_PKG can be used to query the current delta cycle number.

Filed in vhdl - Comments closed

Saltwood Castle

August 3rd, 2022

I went for a walk last weekend near Folkestone and to my surprise I discovered a castle!

It’s Saltwood castle and is, somewhat incredibly, someone’s private residence so you can’t go inside which is a shame.

Glynde to Eastbourne

July 22nd, 2022

A little walk I did recently along the South Downs Way near Eastbourne.

Nothing really remarkable happened but I got free tea and cake from a church (thanks Jesus!) and the scenery was nice. I missed these open chalk downlands.

Wind Farm

June 30th, 2022

As promised I went out to explore the nearby wind farm and in doing so made another crossing of the Romney marsh!

The place is called Little Cheyne Court wind farm and it was built in 2008 after a lot of local opposition. There’s a public footpath running right through it so you can get up really close to the turbines. It’s actually pretty scary standing underneath them with the blades spinning.

After that I plodded over the marsh to Dymchurch. Dymchurch is lovely! It’s a very stereotypical slightly-tacky British seaside resort, like a time capsule from the 60s or 70s. I had a 99 with a flake from an ice cream van, it was wonderful.

VHDL generic subprograms

June 25th, 2022

I recently added support for VHDL-2008 generic subprograms to NVC. As far as I know it’s the first open source VHDL simulator to support them and allows you to write type-generic functions and procedures like this:

function fact generic (type t;
                       function "*"(l, r : t) return t is <>;
                       function "-"(l, r : t) return t is <>;
                       function "<"(l, r : t) return boolean is <>;
                       one : t)
        (n : t) return t is
begin
    if n < one then
        return one;
    else
        return n * fact(n - one);
    end if;
end function;

And then make concrete instances of the generic function:

function fact_int is new fact
    generic map (t => integer, one => 1);
function fact_real is new fact
    generic map (t => real, one => 1.0);

The is <> syntax in the declaration above picks up the default *, -, and < operators for that type from the context so there’s no need to specify them in the generic map.

assert fact_int(5) = 120;
assert fact_real(4.0) = 24.0;

Filed in vhdl - Comments closed