我使用以下基本脚本来合成简单的加法器设计
# 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命令?
非常感谢...
答案 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。