Tools are great, but here's the million-dollar question: how do you make people maintain the docs?
It keeps things simple - you can't have a super complex ASCII diagram; even crossing lines look terrible - and there's at least a fighting chance that when someone changes the code they will at least notice the diagram is out of date.
To prevent insanity, I use a tool to help draw them: Monodraw in my case.