2

我正在尝试使用 graphviz 显示数字电路网表。

我诉诸:

  • 记录形状以表示输入/输出端口。
  • rankdir=LR 建议从左到右对齐

以下代码工作正常。但是,在布局期间,某些输入(此处为“i3”)可能未对齐:我希望 i3 与 i1 和 i2 一样左对齐。

我怎样才能做到这一点 ?

digraph G {
  graph [rankdir = LR];
  node[shape=record];
  c1[  label="{ {<i1>i1|<i2>i2}| c1 | {<f>f} }"];
  c2[  label="{ {<i0>i0}| c2 | {<out_0>out_0} }"];
  c3[  label="{ {<i0>i0}| c3 | {<out_0>out_0} }"];
  c4[  label="{ {<i0>i0|<i1>i1}| c4 | {<out_0>out_0} }"];
  i1;   i2;   i3;   f;   i1 -> c2:i0[ label="w(1)"];
  i2 -> c3:i0[ label="w(2)"];
  i3 -> c4:i1[ label="w(4)"];
  c1:f -> c4:i0[label="w(3)"];
  c2:out_0 -> c1:i1[label="w(5)"];
  c3:out_0 -> c1:i2[label="w(6)"];
  c4:out_0 -> f[label="w(7)"];
}

在此处输入图像描述

4

1 回答 1

2

只需指定 i1、i2 和 i3 共享相同的排名:

digraph G {
  graph [rankdir = LR];
  node[shape=record];
  c1[  label="{ {<i1>i1|<i2>i2}| c1 | {<f>f} }"];
  c2[  label="{ {<i0>i0}| c2 | {<out_0>out_0} }"];
  c3[  label="{ {<i0>i0}| c3 | {<out_0>out_0} }"];
  c4[  label="{ {<i0>i0|<i1>i1}| c4 | {<out_0>out_0} }"];
  i1;   i2;   i3;   f;   i1 -> c2:i0[ label="w(1)"];
  i2 -> c3:i0[ label="w(2)"];
  i3 -> c4:i1[ label="w(4)"];
  c1:f -> c4:i0[label="w(3)"];
  c2:out_0 -> c1:i1[label="w(5)"];
  c3:out_0 -> c1:i2[label="w(6)"];
  c4:out_0 -> f[label="w(7)"];

  {rank=same; i1; i2; i3}
}
于 2014-10-14T18:37:59.153 回答