一、读入电路文件

首先是需要读入一个电路文件,格式可以有很多种,比如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:对电路进行disjoint-support decomposition分解操作。具体内容可以参考文献“An Efficient Disjunctive Decomposition Algorithm and Its Application to Logic Synthesis”。

rewrite:通过迭代地选择一个节点上的AIG子图,预先计算其所有NPN结果并保存子图,用子图中效果更佳的子图来替换当前AIG子图,以此来达到最小化节点数量的目的。

renode:对当前这个AIG中创建边界,并重定义中间的部分以形成更大的节点(类似于将一块AIG子图封装成一个节点)。

refactor:对AIG中的逻辑锥(10-20个输入)进行迭代collapsing 和refactoring ,减少AIG节点的数量和逻辑层的数量。

resub:对于当前节点,重新使用网络中已经出现过的节点进行表示,如果节点数或者深度得到了优化,则进行替换。resub的过程可以分为三步:首先,确定以某个节点为root的k-cut(k为该cut集所能包含的最大pi个数,一般按编号顺序取);其次,确定该root节点所对应的最大扇出自由锥(MFFC);最后,比对该MFFC的真值表和cut集中除MFFC部分外的其他节点真值表,如果匹配上了即用后者取代前者,即省去了原先的MFFC。此外,还可以通过外加与门来进行上述操作,不过一般推荐外加门数量不超过MFFC内部门个数。

fx:通过提取双立方分解和两个文字的单立方分解来检测逻辑共享。具体内容可以参考文献“The testability-preserving concurrent decomposition and factorization of Boolean expressions”。

multi:将两输入AIG扩展为多输入与门的结构。

rr:将AIG中的冗余部分移除。

sweep:移除悬空节点,将buffers和反向器折叠到它们的扇出中,传播常数,并移除重复的扇出。sweep不能应用于AIG,因为AIG在结构上经过哈希处理,因此没有buffers、反向器和未传播的常量节点。所以想要使用sweep需要先删除逻辑网络中的buffers节点。

ABC command 逻辑综合流程(后续更新)相关推荐

  1. LTE信令流程——位置更新

    LTE信令流程 位置更新 如果UE的位置发生了改变,就需要通过相应的流程通知网络侧进行位置更新,否则网络侧无法获取正确的UE的位置,从而导致寻呼失败. 1. 触发条件 UE发现当前的跟踪区域码(TAC ...

  2. SpringBoot2.0基础案例分类总结,后续更新计划说明

    一.基础案例 1.基础案例概览 历时一个半月,SpringBoot2.0基础案例的文章基本更新完毕了,基础案例包含了SpringBoot的基础教程,高级应用,日志配置,数据库使用,事务管理等.关于Sp ...

  3. 【Arthas】Arthas Command处理流程

    1.概述 转载:Arthas Command处理流程 2.开篇 这篇文章主要是为了分析Arthas的命令的执行过程,整体过程包括任务的创建和任务的执行. arthas的命令都是实现统一的接口,对外通过 ...

  4. R语言大全(后续更新和优化结构)

    R语言和社会统计分析-个人总结(后续更新和优化结构) 基本语法 包的安装和下载 # 获取包含R包的库位置 > .libPaths() # 查看已经安装的包 > library() # 安装 ...

  5. java 逻辑思维题 后续更新

    java 逻辑思维题 后续更新 1. 比如 输入一个 n=5 打印结果如下: 解题思想:1.通过奇偶数 判端拼写顺寻 2.用个变量 记录每行的个数 不等 直接写 * 代码: private stati ...

  6. 【Logic synthesis】ABC Command

    ABC Command Combinational synthesis resyn,resyn2,resyn2rs(delay) rewrite;refactor;balance;多次迭代 balan ...

  7. 云原生专栏后续更新计划

    前言 云原生的内容比较多,为了提高更新速度,以及在后面的更新中更有条理一些,我整理了接下来的更新计划,一方面让专栏更系统,另一方面不至于落下某个知识点. 其实很多时候所谓的迷茫,不知道前路如何走,在写 ...

  8. 一文入门HTML+CSS+JS(样例后续更新)

    一文入门HTML+CSS+JS(样例后续更新) 前言 HTML,CSS和JS的关系 HTML head元素 title link meta body元素 设置网页正文颜色与背景颜色 添加网页背景图片 ...

  9. 正向代理和反向代理的区别Nginx配置虚拟主机流程(后续更新)

    目录 目标 安装Nginx 配置虚拟主机 准备 方法一 方法二(推荐) 验证虚拟主机 正向代理和反向代理的区别 区别&案例 正向代理和反向代理流程 目标 熟练在Linux安装单机Nginx: ...

最新文章

  1. 解决INVALID BOUND STATEMENT (NOT FOUND)(MYBATIS的MAPPER绑定问题)
  2. 设计模式 — 创建型模式 — 原型模式
  3. 皮一皮:所以说女生的好奇心不能太大...
  4. 六大举措建云管理模式助力企业转型升级
  5. js中的类、继承、闭包
  6. Linux软件安装解决方案
  7. C++ —— C++常量和变量
  8. java如何快速抛出异常,异常 - 如何抛出异常 - 《Java 编程要点(Essential Java)》 - 书栈网 · BookStack...
  9. OpenCV blur和boxFilter (方框型滤波器)
  10. Git学习的简单笔记
  11. 常用iOS URL Scheme附录 大全
  12. iphone手机 ios系统 无法更新app 跳转到AppStore 显示 打开
  13. Qt 鼠标点击事件穿透
  14. 03-word 中插入图片和表格
  15. assimp批量转模型_IGS模型批量转换成STL模型
  16. python爬虫requests模块
  17. win10系统下,KMSpico安装过程中出现“无法完成操作,因为文件包含病毒或潜在的垃圾软件”
  18. 申请上计算机课的申请,诺丁汉大学计算机学院课程申请通道将即将关闭,抓紧上车了...
  19. All flavors must now belong to a named flavor dimension
  20. maya 白天室内灯光_maya室内灯光问题

热门文章

  1. 新浪与腾讯的开放平台对比(上)
  2. 【组图】宝马车主 嚣张打伤路人 围观市民群情激愤砸车
  3. 老婆和老公(保证不哭再看)
  4. 杰里695N系列(soundbox)之 1.1 SDK快速入门(2)
  5. Oracle中to_Char详解,Oracle to_char 函数详解
  6. 半导体物理实验 03 - | 高频光电导法测少子寿命
  7. Block Sparse Row matrix(BSR)
  8. oracle bbde,实现treeset
  9. 2011年一级建造师教材《水利水电》变化内容
  10. 『Linux笔记』查看磁盘空间大小和所有用户各自占用空间