最近参与一个稍微大一点的 C++工程,里面涉及很多模块之间的连接和数据传输,需要整理清楚。我之前一直是写 VHDL 的,用的设计软件有原理图功能,所以可以比较容易弄懂数据的连接和流通,便于调整和修改设计。但是其他语言的工程好像不太有现成的软件可以直接生成数据流图了,现有的数据流图画图工具感觉画出来的图都比较简易,不太容易画出那种能精确到每个单独数据的名称和类型的具体的图,也就是类似下面 Quartus 原理图的这种:
https://www.researchgate.net/figure/QUARTUS-schematic-bloc-of-the-INC-Fuz-command_fig11_337004268大概总结一下需求,其实就是可以比较方便地把模块画成一个方框,方框上显示模块名和配置参数之类的信息,然后输入输出变成方框上的端口,输入输出的名字、类型也一起标注在端口边上。然后模块和模块之间的数据传递就是图里面的连接线,并可以标注箭头说明方向。周围可以插入一些附注做笔记。另外连接线的颜色可以修改,便于交叉比较多的时候用作区分。并且模块的信号名称、数量可以比较方便地调整。
如果能有 Highlighting 的功能就更好了,就是可以选中一个连接线网络并将其高亮的,或者类似 Cadence 原理图这样的:
https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/35225/net-highliting-with-bindkey目前我是用 Visio 在画这样的数据流图,能画清楚并且画出满足需求的图。因为工程文档里只有总体设计文档和简易框图,和没画数据流图之前比起来,和其他人交流具体设计或者要做需求变更的时候确实方便了很多,节省了很多沟通时间成本,做实现的时候也有了一个比较具体的参考。
但是感觉 Visio 操作起来比较繁琐,就理清几个模块和画图就花了一下午时间,感觉节省的沟通时间成本和设计实现中的时间成本全变成画图时间成本了。而且 Visio 的连接线的高亮选中不是很明显,线连多了以后就密密麻麻的不容易看清楚,所以想找找其他方便一些的软件,节省画图的时间。但是找了一圈实在没找到合适的,所以来问问 V 友有没有用过类似的值得推荐的软件,开源的、免费的、收费的都可以。