1

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

# 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)有没有办法通过向库添加约束(时间/面积/优先级?...)来减少或最大化指定门的数量(例如异或)

或者

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

提前谢谢了...

4

1 回答 1

1

内置单元格类型的“成本”在kernel/cost.h.

映射到自定义单元库时,您可以在自由文件中指定成本(面积)。参见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.

于 2017-05-22T10:58:19.460 回答