第一部分 静态建模:拓扑模型
GSL层拓扑建模相对简单,由线和节点组成:
一. 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。
根据拓扑模型的特点,值的传播行为如下: