2016-04-08 120 views
5

我试图理解或研究verilog中ASIC设计的最佳实践。我正在研究一个具有〜20个子模块的中等大小的块(每个〜1000行代码)。手动实例化所有子模块并执行端口连接以创建顶层RTL是一项艰巨的工作。有没有推荐的方法来自动模块端口连接?

我想编写一个脚本来自动执行此操作。只要我们可以定义所有子模块的输入/输出以及每个子模块如何相互连接,自动生成顶层应该不会太难。虽然我没有足够的设计自动化专业知识。我想知道是否有人可以给我一些关于如何入门的指导。

  • 是否有任何开源工具可以实现我想要做的事情?到目前为止我没有找到任何东西。
  • 是否有任何标准化的方法来生成这种合成代码?

我会高度赞赏任何形式的输入或建议。

+2

如果专利模块具有相同的变量子模块端口名称,您可以使用'*'隐含的端口连接。但仔细使用它。 – rahulcodesinverilog

+0

您可以制作perl脚本并输入模块的文件,并生成一个顶级文件,您可以在顶级文件中执行一些刺击逻辑并实例化子模块。尝试使用小模块,然后根据您的要求进行扩展。你不能要求直接脚本,但你可以,但这是可能的。 –

+0

不是一个自动解决方案,但这是我经常做的。粘贴子模块定义(即'module#(...)(输入逻辑...,输出逻辑...);'然后添加实例名称并删除所有的端口方向和类型现在使用宏记录函数在您的编辑器中执行此操作:'CUT。PASTE(PASTE)'。然后双击每个端口名称以突出显示它,然后执行宏,并将'some_name'改为'.some_name(some_name)'如果端口和连接名称是相同的,然后工作完成,如果没有,很容易做更多的双击,复制和粘贴,我不喜欢'。*'。 –

回答

相关问题