第一部分 静态建模:拓扑模型
GSL层拓扑建模相对简单,由线和节点组成:
- 节点上带有input/output/inout三种类型的接口(Port),供线连接;
一. Port
线与节点接触的地方为接口。
从微观层面看,线和节点连接,实际上为线的接口和节点的接口连接。一根线的两端各有一个接口,节点则根据input/output/inout可以有很多个接口。
二. Wire
线有两个接口,分别处在线的两端。
线是有方向的,输入端的端口为input port,输出端的端口为output port。
线的输入端被驱动(driven),称为assign,即被赋值。微观上看,是上一个节点的output port连接到该线的input port。
线的输出端连接(connect)下一个连接的节点。微观上看,是线的output port连接下一个节点的input port。
三. Node
节点可以有多个接口,分为三类:input, output, inout(暂不支持)。
节点分为原子节点和复合节点。
原子节点内部没有其他节点,实现自身的逻辑。复合节点内部包含其他节点,与内部节点也通过接口(port)连接。
四. WireVec
辅助类型,多根线组成一排,简化处理。
五. Propagatable
抽象类型,具有传播能力的元素。接口、线和节点都是。用于处理值的传播。
第二部分 动态建模:值传播(propagation)
一. 四值逻辑
GSL层支持0, 1, x, z 四种值。
二. 接口有值
值存在于任何可传播的位置。比如不仅存在于线的两端,存在于线的任何位置,存在于节点的所有接口处。
但值主要存在于接口处,并通过接口进行传播。
原因为:
- 值在接口处被测量;反过来看,线如果包皮,则无法在线身测量,只能在两端测量。节点如芯片可能被封装,只有针脚处可被测量;
所以在建模时,值存放于接口处,最为恰当。
三. 值的传播
值在port之间传播:前一个port的值传递给连接在一起的下一个port。
根据拓扑模型的特点,值的传播行为如下:
- 如果Propagatable为线,则值从输入接口,传入输出接口,值不变;
- 如果Propagatable为原子节点,则值经由原子节点定义的逻辑处理之后,传导至输出接口;
- 如果Propagatable为复合节点,则值传播至input port时直接穿越复合节点的边界,传播至内部的子节点(参考2进行传播)。最终传导至output port,直接穿越边界。也就是说,复合节点在传播过程中是不可见的。