Yosys和/或ABC中的约束(时间/区域..)

时间:2017-05-21 16:08:37

标签: constraints abc yosys

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

# 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 syhthesis设计只使用AND,XOR和NOT(NOT自动添加)门。

我对此问题的疑问是;

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

&安培;

使用后

abc -g AND,XOR    
像命令一样。

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

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

非常感谢...

1 个答案:

答案 0 :(得分:1)

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

映射到自定义单元库时,您可以指定自由文件中的成本(区域)。有关示例,请参阅examples/cmos/cmos_cells.lib

ABC在细胞库中需要一个NOT门。但是你总是可以映射到例如的单元库。 NAND和NOT然后使用techmap命令用NAND替换NOT的所有实例,两个输入由相同的信号驱动(或者一个输入由常数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。