翻译netlist.txt

这只是一个概览,具体怎么样运作是在netlist.h中介绍

NETLIST 格式

parse和elaboration步骤结束输出的netlist由Design产生。首先将初始的源文件解析为临时pform文件;通过elaboration拓展设计,解析引用并且拓展层次化结构生成一个扁平化的netlist。大概就是这个流程吧。设计优化都会操作netlist去生成更好的betlist。最终生成最终代码。

 

数据成员:NETNODE 和 NETNET

components、wires、memories和registers这些都是在NetNode和NetNet基础上的成员变量,并且他们都是NetObj;

所有的NetNode和NetNet都有一个名字和一定数量的pins。这些名字通常来自于Verilog文件的定义,尽管某些对象有自动生成?(有可能是不可读)的名字。pins是进入设备的端口。NetNode对他表示的组件的每一个pin都定义pin,而NetNet则对向量中的每一个信号定义pin

Node和Net 的pins可以通过connect函数连接在一起。并且联接是可传递的。联接的net和node在析构时回自动删除,所以netlist在处理时会改变。

 

数据成员 LINKS

NetNode和NetNets类中包含一个Link对象的数组,每个pin一个对象。每个pin是一个信号量。Link对象联接所有的NetNode和NetNet对象的links和Nexus对象。这样,检查设计节点的代码可以发现连接到每个pin的是什么。

被联接的links还具有存储或从Nexus对象访问的公共属性。所有连接在一起的links也连接到单个Nexus对象。此对象对于访问来自连接的链接集的属性和值非常有用。Nexus对象对于迭代连接的links也很方便。

在netlist.h中详细介绍了link方法,Nexus类在nexus全局方法中介绍。

一个link有三个属性:

passive:

input:

output:

 

动作单元:NetProcTop,NetProc和derived classes

动作单元并不是联接netlist的,但是他们代表这动作语句。这种类型隐含着语句的动作。比如NetCOndit对象代表着if语句,并且包含这一个条件语句。

在根目录上是NetProcTop对象。这个类包含了一个类型标签(initial或者always)和一个NetProc对象。根据派生类的不同,包含的语句可能引用其他语句、复合语句等。但树的根是NetProcTop对象。Design类保存一个详细的NetProcTop对象的列表。该列表表示设计中的进程列表。

 

行为与结构的相互作用:NetAssign_

Verilog设计中的行为语句通过对Registers的赋值来影响结构方面。Registers是被NetNet类表示的结构单元,通过pins与赋值语句关联。

 

MEMORIES

netlist表单包含NetMemory类型来保存内存的内容。此类型的实例表示内存的声明,每个内存发生一次。对内存的引用由netemory和NetAssignMem_u类管理。

 

EXPRESSIONS

表达式表示为NetExpr节点的树。NetExpr基类包含表示表达式节点的核心方法,包括帮助处理表达式嵌套复杂性的虚拟方法。

表达式(如源代码和p-form中所表达的那样)也可以在结构上进行阐述,只要有意义。例如,赋值l值表达式表示为到管脚的连接。此外,连续分配模块项被描述为门而不是过程表达式。事件表达式也在结构上进行了阐述,因为事件就像触发行为语句的设备。

然而,行为描述的典型表达式表示为NetExpr节点树。节点的派生类对节点表示的运算符类型进行编码。

 

posted on 2020-11-04 20:32  QzZq  阅读(292)  评论(0)    收藏  举报

导航