目录
对于硬件的建模其实有很多方式,前面一章中提到了的有使用HDL进行建模,当然硬件建模肯定不仅仅限于这一种方式。建模方式往往是根据需求来进行选择。为了方便分析系统的性能抑或是方便理解优化表达逻辑使用的硬件布局方式,这里使用了abstract model。这一类模型和HDL model一样可以分为不同的抽象等级,这里着重介绍在logic-level 下和architectural/RT-level 下的几个模型,方便进行schedule 上的优化。
在logic level下有两种:
- logic networks(BDD,AIG)
- state diagrams
在Architecture/RTL level下有两种:
- dataflow graphs
- sequencing dataflow graphs
下面我将使用图示加注解的方式对这些模型一一解释
logic networks
这一类模型是为了方便表达数字电路的模型的,即将介绍的两种都是DAG(direct acyclic graph,有向无环图)。BDD可以由truth table导出,其每一个节点都是一个变量,而edge表示的是这个变量的取值如下Fig1所示为F=(a+b)c的truth table导出的BDD模型。这个并不是模型的最终形态。其还可以进一步在图中化简,化简步骤如下:
- 将结果相同的子树合并,从最下层开始。
- 将有同样子节点的节点去掉,即不论取值为0或1都指向同一个节点
最终化简结果如Fig2 所示
Fig1 BDD
Fig2 化简BDD
AIG(And-Inverter Graph)的节点有两种情况,一种是terminal node 另一种是two-input node,它们分别表示的是输入变量和AND操作。连接各个节点的箭头有点的代表取非操作没点的就按原来AND的结果输出,如Fig3所示。
Fig3 AIG
state diagrams
State diagram是用于表示FSM的如图Fig4所示,这里就不具体介绍了自行百度。
Fig4 State diagram
Dataflow Graphs
Dataflow Graphs(FDG)表示的也是逻辑和操作,但是这里表示的操作更加多种多样,而且每一个操作就是一个节点一个节点可以代表一种实体的运算器件(这个叫做binding在后面章节中会讲到),而egde代表的是信号的流向如Fig5所示。
Fig5 DFG
如果说要分析scheduling的问题的话就要在这里引入一个操作时间先后的概念,于是由这个DFG引申出了Sequencing DFG。图中不仅仅有所有DFG能表述的内容还能知道每一个操作是在哪一个始终周期内发生的。如图Fig6. 使用这种图除了这种顺序逻辑以外还可以表达hierachy, branching等逻辑。其每一个Vertex因为可以表示一个具体的操作器件因此都有其自己的某一些属性:Area cost, Delay cost, Data-dependent execution delays等等。
Fig6 sequencing DFG