一个logic network实际上是一个netlist去掉nets后的网络,代写毕业论文SIS就是用logic network网络所表示。在ABC,默认的表示是AIG网络,但logic network是一种很有效的中间过渡网络表示形式。在logic network网络中只保存 了PI/PO/latch/latch-input/latch-output这几种数据结构的名字,抛弃了内部node的名字。因为ABC采用AIG进行深层次的综合时,一些AIG操作很难保留AIG结点的名字,比方重写。在logic network中,nodes 能与另一个nodes直接相连。PI/PO端点与node直接相连。一个PO端点与一个PI端点如果有一样的名字和功能,能直接相连。一个PI端点可能有两个扇出但没有扇入。一个PO端点只有一个输入但没有输出。端点并不是一个逻辑node也没有逻辑功能。指向端点的指针聚集不能通过一个内部node的DFS遍历方法来获取。在logic network网络中,代写论文指向PI/PO端点的指针集合贮存在相应的数组。
代写硕士论文但ABC自身就能输入.mv文件,我们是否省去Mv2blif的步骤,让ABC直接读入mv,从而也能减少错误,进步效力,因为再好的软件或多或少总会存在一些过错,少用一个软件象征着我们能减少更多的毛病。所以下面就是我们想要得到的版本:
if (f == one) return(g);
//得到结点的正则状态,假如结点取过反,则返回没有取反的状况
4 算法实现及举例
SHAPE \* MERGEFORMAT
2.2 发现问题及其根本原因
论文代写在研讨的过程中,咱们发明会发生ABC输入mv文件经过优化后的blif 文件的输入输出的个数与本来读入mv文件的输入输出个数的不一致问题。这是由于ABC输入mv文件时,重要经由了两步处置。输入mv时,ABC把mv文件转成了NetList,这一步是完整正确的,但在NetList转成AIG时,呈现了问题,ABC把latch的输入当成了主输出,把latch的输出当成了主输入,从而造成了有几个latch,就多了几个输出输入。
2.1 ABC中采用的 网络 介绍
在读入特定电路设计文件经过软件处理,就构成当前的网络。ABC通过一系列对当前网络的转换来处理这个电路设计相似于SIS。ABC中的网络有其特定类型,包含NetList,Logic Network跟AIG网络,下面扼要先容各个网络。
1 电路逻辑综合的一些常用方法
然后,我们查看了ABC处理blif文件的过程,如下:
{
if (G == one) {
DdNode *F, *fv, *fnv, *G, *gv, *gnv;
SHAPE \* MERGEFORMAT
F = Cudd_Regular(f);
2.1.1 NetList网络
如果编程者在输入文件中参加一个新的类型,想胜利通过解析就必需熟习NetList网络的表示形式,因为解析一个输入文件,NetList网络是必定被创立的。NetList能够说是一个基础原始的网络表示形式,它与输入文件的设计逐一对应,包括nets,logic nodes,latches和PI/PO 端点。每个net有一个独一的名字。Nodes和latches是由它们所驱动的net来辨别。每个nodes和latches只有一个输出。每个PI端点、Node和latch驱动一个net。同样每个latch、PO端点和功能结点(有一个或多个输入)由一个net驱动。一个net能驱动有仅只有一个latch、node或者PO端点。例如,一个net不能同时驱动一个node和一个latch。在NetList中,net与net之间不能相连,非net结点与非net结点也不能相连,只能通过net相连。功能结点采用SOPs或者AIGs来表示。
1.2 应用ABC优化
输入.mv文件,经过mv2blif软件处理后,产生.blif文件,而后送入ABC处理,生成优化后的blif文件,如下图所示:
SHAPE \* MERGEFORMAT
2.1.3 AIG网络
AIG网络是ABC中所采用网络的内部主要表现情势。AIG是ABC所特有的,其每个node是两输入的与门和一个扇入/扇出边,并且这个边有一个可选属性唆使是否对该边进行取反。在构造AIG的同时,AIG能被紧缩通过使用一级结构散列,它使得每一对边最多只能做为一个结点输入。这样,构造散列就能保障:对于每个与门结点,就没有其它带雷同子结点的与门;不仅一个输入的结点;每个与门的层次就能反映输入的档次。所有这些,使得操作AIGs比拟操作Logic networks要快良多。
unsigned int topf, topg, index;
3 问题的解决计划及生成blif
SHAPE \* MERGEFORMAT
笔者以为基本起因在于,ABC对mv文件中的时序电路支撑得有限,在将时序转化为组合的进程中,也就是在NetList转成AIG时,采取了不准确的方法去除了Latch,从而造成了有几个latch,就多了多少个输出输入。
2 研究中发现问题及其原因
if (F->ref != 1 || G->ref != 1) {
图 1.2
图 1.1
SHAPE \* MERGEFORMAT
if (F == G) {
G = Cudd_Regular(g);
3.2 天生blif文件
ABC中读入mv文件后造成AIG网络,要想输出blif文件,可进行如下操作:
DdNode * cuddBddAndRecur( DdManager * manager, DdNode * f, DdNode * g)
else return(g);
DdNode *one, *r, *t, *e;
3.1 解决问题
在尝试直接把NetList网络转成AIG网络时,来处理这个问题,都归于失败。最后不得不斟酌在生成的旁边网络上找解决方法。
经过研究,我们发现这条路是可行的。但在解决的过程中我们发现,.mv文件生成的NetList网络与.blif文件生成的NetList网络存在不同。在前面Mv2blif软件的实现方法中追求灵感,我们试着将这两个相同类型网络转化,最后我们成功解决了这个问题,从而实现了ABC对.mv文件能直接进行处理,并且解决了输入输出个数与原先的输入输出个数的不一致的问题。终极实现了如下版本:
1.1 使用SIS优化
输入.mv文件,经过mv2blif软件处理后,产生.blif文件,然后送入SIS综合软件处理,生成优化后的blif文件,如下图所示:
else return(Cudd_Not(one)); //Cudd_Not为取反
首先,ABC处理mv文件的过程如下:
经过探讨,我们试想能不能结构出如下的一种处理办法来解决问题:
}
else return(f);
if (f == g) return(f);
if (F == one) {
SHAPE \* MERGEFORMAT
1.3 对照两种方式
使用SIS优化已经是比较陈腐的方法,现在更多的是使用ABC进行优化。我们晓得,数据结构和算法是一个软件能否成功利用的中心,SIS在近几年一些最新的转变中没能供给一个良好的编程环境,好比对技巧映射和延迟的整合。而且SIS在处理大型电路显得力不从心,效率低下。而ABC使用了一种更为简略的数据结构AIGs(由两输入的与门和非门组成的多层逻辑网),使得电路综合和验证的品质和运行时光方面都得到很大改良。ABC提供了时序和组合的综合算法,其当初版本在优化延迟和启示式的缩小电路面积方面已能优化包含100K门和10K时序元素的门级设计。
one = DD_ONE(manager); //返回manger->one,即常数结点1
}
SHAPE \* MERGEFORMAT
/* 检讨缓存 */
对网络中的功能node进行转换,以下是转换node从AIG功效到BDD功能的算法,对网络只须要用一个遍历,把其所有node转换即可。
}
if (g == one) return(f);
statLine(manager); //轮回次数加1
“一个logic network实际上是一个netlist去掉nets后的网络”版权归作者所有,转载请著名出处。