AML: a visual programming language for ASM lithography