没有创造性的工作应该用工具简化
数电实验课非常繁琐,除了用74HC系列芯片在面包板徒手搭电路,还有使用超古早Quartus II 9.1sp2 Web Edition连电线编程FPGA。评价是“非常的落后动力”[开往西直门的DKZ5]。
lz由于被拉电线占用大量时间且难以AI帮助,尝试用文本编辑器打开.bdf一探究竟。这个格式以文本存储,存储了原理图中所有模块的坐标、连线,即完成布局布线的门级网表(名词可能有误
lz尝试让AI直接生成这个格式的文件,效果不佳,导线有短路情况且难以调试,AI理解它的能力有限。于是lz考虑做一个简单的转译脚本,用简化的verilog转译为.bdf。理论基础是:
- 使用与门、或门可以组成任意组合逻辑电路
- 使用DFF即可实现时序逻辑电路
- 数字电路即不断实例化和连线的过程
于是简化版verilog只需声明输入输出信号,然后不断使用实例化语句实例化and2、or2、dff,最后连线即可。转移脚本会非常轻松的把它转换为.bdf,为了简化布线,我们没有任何布线,全是网络标签。 由于非常简陋,所以甚至不支持多位宽写法。不过到这一步已经可以让AI代劳了。
于是我干嘛了无需多言。
之后我觉得简化版的.v还是不对味,为什么不来正经verilog,支持基础语法即可。加入一些简单的AST解析之后,成功支持了正经Verilog,而且可使用更多类型的门电路以简化原理图。同样网络标签。
转译出的.bdf完全不像人画的,原因如下:
- 全是网络标签,没有任何连线
- 格(grid)式布局,没有按功能、分模块布局
想要解决如上问题,我的思路是:
使用开源综合工具,约束其综合时只能使用约定的逻辑门、模块,这可以得到未布局布线的门级网表。然后利用这些Quartus中基础模块的长宽、引脚位置信息,即可进一步布局布线,得到.bdf。
但我可能不会做下去了?毕竟我已经成功解放双手了。而Quartus似乎在较新的版本中删除了拉电线玩法,较新的Vivado的block design已支持大多数情况的布局布线。
很难理解这门实验课全程拉电线的意义,为了理解数字电路理论不如较新的Logisim仿真便利,为了FPGA开发不如广泛使用的verilog有价值。让同学们花时间在拉电线本身,可能是他的目的。
从HDL到网表到布局布线是很有意思的,我可能会在新的基础上再做这件事?(这不是EDA吗)