一、读入电路文件
首先是需要读入一个电路文件,格式可以有很多种,比如verilog、aig、truth table等。常用命令有read_aiger、read_verilog、read_blif等等。
strash:将读入的电路格式转变为AIG的格式。注:不会改变电路中锁存器的位置。
二、对电路进行逻辑综合
balance:采用拓扑排序,选择每个多输入与门的最小延迟树分解,在不增加节点数的基础上去优化深度。分为两步:covering和tree-balancing。
covering将子集之间没有反相器且没有外部扇出的两输入与门组合在一起形成一个多输入与门。
tree-balancing将covering得到的多输入与门分解为两输入与门,试图减少AIG深度。
cleanup:清除电路中所有的悬浮节点(悬浮节点指那些没有扇出的节点,且不指向PO或锁存器)。
collapse:递归地将扇出节点以BDD的方式构建成一个网络(仅限小电路)。
dsd