I want to generate the following graph in Graphviz:

For the reasons explained here , this is:
digraph { layout=dot; rankdir="LR"; overlap = true; node[shape=record, height="0.4", width="0.4"]; edge[dir=none]; A; B; C; D; E; F; G; H; I; A -> B -> C; D -> E -> F; G -> H -> I; edge[constraint=false]; A -> D -> G; subgraph clusterX { label="Cluster 1"; A; B; } subgraph clusterY { label="Cluster 2"; E; F; H; I; } }
produces the following:

Following some careful tuning of the appearance order of the nodes :
F; E; I; H; D; G; A; B; C;
I get the correct result.
While this works, I would like to get more direct control over the placement of nodes, so I tried switching to neato so that I could force node locations to use pos:
graph g { layout=neato; node[shape=record, height="0.4", width="0.4"]; edge[dir=none]; A [pos="1,3!"]; B [pos="2,3!"]; C [pos="3,3!"]; D [pos="1,2!"]; E [pos="2,2!"]; F [pos="3,2!"]; G [pos="1,1!"]; H [pos="2,1!"]; I [pos="3,1!"]; A -- B -- C; D -- E -- F; G -- H -- I; A -- D -- G; subgraph clusterX { label="Cluster 1"; A; B; } subgraph clusterY { label="Cluster 2"; E; F; H; I; } }
This gives the following result:

How can I get neato to add padding between the borders of the cluster and the nodes in the cluster (just like the dot does)?