【问题标题】:Constraints(Time/area..) in Yosys and/or ABCYosys 和/或 ABC 中的约束(时间/区域..)
【发布时间】:2017-05-21 16:08:37
【问题描述】:

我正在使用以下基本脚本来合成简单的加法器设计

# read design
read_verilog fulladder1.v
hierarchy -check

# high-level synthesis
proc; opt; fsm; opt; memory; opt

# low-level synthesis
techmap; opt

# map to target architecture
abc -g AND,XOR

# split larger signals
splitnets -ports; opt

show

使用

abc -g AND,XOR    

命令,ABC 只使用 AND、XOR 和 NOT(不自动添加)门来合成设计。

我对这个问题的问题是:

1) 有没有办法强制 YOSYS 和/或 ABC 工具在整个设计中只使用一个通用门(例如 NAND)?

&

使用后

abc -g AND,XOR    

喜欢命令。

2) 有没有办法通过向库添加约束(时间/区域/优先级?...)来减少或最大化指定门的数量(例如 XOR)

使用特殊的 YOSYS 和/或 ABC 命令?

提前非常感谢...

【问题讨论】:

    标签: constraints abc yosys


    【解决方案1】:

    内置单元格类型的“成本”在kernel/cost.h 中硬编码。

    映射到自定义单元库时,您可以在 liberty 文件中指定成本(面积)。示例见examples/cmos/cmos_cells.lib

    ABC 在单元库中需要一个非门。但是你总是可以映射到一个单元库,例如NAND 和 NOT,然后使用 techmap 命令将 NOT 的所有实例替换为 NAND,其中两个输入由相同的信号驱动(或一个输入由常数 1 驱动,无论您喜欢什么)。


    编辑: 使用 techmap 将 NOT 映射到 NAND 很容易。只需创建一个名为not2nand.v 的文件,其内容如下:

    module \$_NOT_ (input A, output Y);
      \$_NAND_ _TECHMAP_REPLACE_ (.A(A), .B(A), .Y(Y));
    endmodule
    

    然后您可以使用 techmap -map not2nand.v 将 NOT 门映射到 NAND。

    【讨论】:

    • 嗨@Clifford,感谢您的回答,我可以添加区域约束并更改设计中指定单元格的数量。但是我无法用“NAND单元”替换“NOT单元”。我是 yosys 的新用户,我已经尝试过“techmap”和“setparam”命令,但我找不到简单的例子来说明如何一步一步地做以及在我的脚本文件中插入这个命令的位置。你能不能指导我和/或分享一些简单的例子?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多