Automation 是否有任何推荐的方法来自动进行模块端口连接?

Automation 是否有任何推荐的方法来自动进行模块端口连接?,automation,verilog,system-verilog,Automation,Verilog,System Verilog,我试图了解或研究verilog中ASIC设计的最佳实践。我正在处理一个中等大小的块,它有20个子模块(每个模块有1000行代码)。手动实例化所有子模块并进行端口连接以创建顶级RTL是一项艰苦的工作 我想写一个脚本来实现自动化。只要我们能够定义所有子模块的输入/输出以及每个子模块之间的连接方式,自动生成顶层应该不会太难。但是我在设计自动化方面没有足够的专业知识。我想知道是否有人能给我一些关于如何开始的建议 有没有开源工具来实现我的目标?到目前为止我还没有找到 有没有标准化的方法来生成这种类型的可

我试图了解或研究verilog中ASIC设计的最佳实践。我正在处理一个中等大小的块,它有20个子模块(每个模块有1000行代码)。手动实例化所有子模块并进行端口连接以创建顶级RTL是一项艰苦的工作

我想写一个脚本来实现自动化。只要我们能够定义所有子模块的输入/输出以及每个子模块之间的连接方式,自动生成顶层应该不会太难。但是我在设计自动化方面没有足够的专业知识。我想知道是否有人能给我一些关于如何开始的建议

  • 有没有开源工具来实现我的目标?到目前为止我还没有找到
  • 有没有标准化的方法来生成这种类型的可合成代码

我将非常感谢任何形式的意见或建议

根据您使用的文本编辑器,您可能可以使用一些预先存在的工具。Emacs有一个插件,支持自动实例化和连接信号,假设您遵循某些命名约定:

对于vim用户,有几个插件允许使用Emacs脚本,例如:


如果专利模块的变量与子模块中的端口名相同,则可以使用
*
隐式端口连接。但是要小心使用它,你可以制作perl脚本和模块的输入文件,并生成一个顶层文件,在这个顶层文件中你可以做一些stings逻辑并实例化顶层文件中的子模块。尝试使用小模块,然后根据您的需求进行扩展。你不能要求直接脚本,但你可以,但这是可能的。这不是一个自动的解决方案,但这里是我经常做的。粘贴子模块定义(即
module#(…)(输入逻辑…,输出逻辑…;
),然后添加实例名称并删除所有端口方向和类型。现在使用编辑器上的宏录制功能执行此操作:
CUT.Paste(粘贴)
。然后双击每个端口名以突出显示它,然后执行宏。这会将
一些端口名
更改为
。一些端口名(一些端口名)
。如果端口名和连接名相同,则完成工作。如果不相同,则很容易进行更多的双击、复制和粘贴。我不喜欢
*