【发布时间】:2020-11-03 03:43:50
【问题描述】:
TLDR
为了使我能够拥有尽可能自动生成的基于文本的图形文档,我希望能够定义多种节点类型,并让这些定义可导入
更长的解释
我正在研究project,我在其中为用 VHDL 编写的硬件设计自动生成 Graphviz 点 RTL 图。我正在定义的节点的定义是复杂和粗略的,应该对用户隐藏。我希望能够定义几种节点类型,并使这些定义可导入并易于实例化。我开始感觉 graphviz/dot 可能不是正确的解决方案,我很乐意放弃 Graphviz 以获得更好的东西。我只想生成尽可能自动生成的基于文本的图形文档。目前我生成了一个复杂的节点定义,例如:
Full_Adder_1bit [shape=plaintext, label=<
<table border='1' cellborder='0' cellspacing='0'>
<tr><td>Full_Adder_1bit</td></tr>
<tr>
<td><table border='0' cellborder='1' cellspacing='0' color='green'>
<tr><td port='A'> A </td></tr>
<tr><td port='B'> B </td></tr>
<tr><td port='Cin'> Cin </td></tr>
</table></td>
<td><table border='0' cellborder='1' cellspacing='0' color='red'>
<tr><td port='Sum'> Sum </td></tr>
<tr><td port='Cout'> Cout </td></tr>
</table></td>
</tr>
</table> >]
为了让用户使用它来记录他们的设计,他们必须正确使用 node 关键字,然后创建节点/端口来连接。
node [shape=plaintext, label=<
<table border='1' cellborder='0' cellspacing='0'>
<tr><td>Full_Adder_1bit</td></tr>
<tr>
<td><table border='0' cellborder='1' cellspacing='0' color='green'>
<tr><td port='A'> A </td></tr>
<tr><td port='B'> B </td></tr>
<tr><td port='Cin'> Cin </td></tr>
</table></td>
<td><table border='0' cellborder='1' cellspacing='0' color='red'>
<tr><td port='Sum'> Sum </td></tr>
<tr><td port='Cout'> Cout </td></tr>
</table></td>
</tr>
</table> >]
// -- MAIN --
add1:Cout -> add2:Cin
add2:Cout -> add3:Cin
add3:Cout -> add4:Cin
This question 没有回答我的问题,因为我想做的是:
lib.dot
Full_Adder_1bit [shape=plaintext, label=<
<table border='1' cellborder='0' cellspacing='0'>
<tr><td>Full_Adder_1bit</td></tr>
<tr>
<td><table border='0' cellborder='1' cellspacing='0' color='green'>
<tr><td port='A'> A </td></tr>
<tr><td port='B'> B </td></tr>
<tr><td port='Cin'> Cin </td></tr>
</table></td>
<td><table border='0' cellborder='1' cellspacing='0' color='red'>
<tr><td port='Sum'> Sum </td></tr>
<tr><td port='Cout'> Cout </td></tr>
</table></td>
</tr>
</table> >]
rtl.dot
include(`lib.dot')
add1 : instance of (Full_Adder_1bit)
add2 : instance of (Full_Adder_1bit)
add3 : instance of (Full_Adder_1bit)
add4 : instance of (Full_Adder_1bit)
// -- MAIN --
add1:Cout -> add2:Cin
add2:Cout -> add3:Cin
add3:Cout -> add4:Cin
【问题讨论】:
标签: vhdl documentation graphviz register-transfer-level