【问题标题】:Manual manipulation of verilog connections手动操作verilog连接
【发布时间】:2017-09-17 21:59:18
【问题描述】:

我正在尝试使用 Yosys 来实现连接的综合后操作。即,我想在合成过程完成后手动操作 verilog 模块之间的连接。

我尝试研究了一段时间的代码,发现我需要创建一个“Pass”结构的子类来实现我需要的确切功能。

我需要了解如何自己操作连接。因此,我需要知道“设计”结构是否包含用作工具输入的 Verilog 设计的表示形式。如果这是真的,我在哪里可以找到连接(哪些变量用于表示连接)?

另外,如果我需要自动操作连接,我需要知道该工具如何为每个连接分配特定名称,以便我能够实现可以自动选择要删除的特定连接的自动化算法,或者根据现有连接的名称添加新连接。连接的名称是指 Yosys 显示的名称,以防使用 GraphViz 以图形方式呈现设计。

提前致谢。 最好的问候

【问题讨论】:

    标签: yosys


    【解决方案1】:

    我在哪里可以找到连接(哪些变量用于表示连接)?

    如果两个模块端口连接到同一个网络,或者两个网络相互连接(Module::connections()),则端口已连接。

    SigMap 类可以帮助您处理电线相互连接的情况。

    我需要知道该工具如何为每个连接分配特定名称

    连接没有名称。

    电线有名字。它们的名称要么来自 HDL 设计,要么是自动生成的(在大多数情况下通过使用 NEW_ID 宏)。

    如果您需要猜测自动生成的电线的名称,那么您肯定做错了。不幸的是,你没有描述你到底想要做什么以及为什么你认为你必须猜测自动生成的电线的名称,所以我不能告诉你你做错了什么......

    确保您已阅读并理解 CodingReadme 文件、examples/cxx-api/ 中的示例以及处理 Yosys API 的presentation slides(在该幻灯片的末尾)。

    【讨论】:

    • 我正在尝试遍历电路,并有选择地删除一些特定连接,以便端口仍然存在,但它们不再相互连接。即,如果设计包含一个与门,其输出连接到或门的输入之一,我想移除连接它们的电线。可能不需要知道生成的电线名称,但我需要遍历整个设计,并根据具体情况移除一些电线。
    猜你喜欢
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 2019-08-08
    相关资源
    最近更新 更多