线网(net)用于表示结构体(如逻辑门)之间的连接。除了trireg之外,所有其他的线网类型都不能保存值,线网的值时由driver决定的,例如由连续赋值驱动或由逻辑门驱动。如果driver没有驱动线网,那么线网的值是z,但是tri0、tri1、trireg除外,tri0将是0,tri1将是1,而trireg将保持之前driver驱动的值。
线网有以下这些类型:wire、wand、wor、tri、triand、trior、tri0、tri1、trireg、uwire、supply0、supply1。
1.1 wire和tri
wire和tri是一样的,具有同样的语法和功能,提供两个名字是用于不同方面的建模:wire用于逻辑门的驱动或连续赋值的驱动,而tri用于多driver驱动。
当多个具有相同驱动强度的driver驱动同一个wire或tri线网出现逻辑冲突时,线网的值是x(unknown)。
1.2 wor、wand、trior、triand
线逻辑(model wired logic)类型的线网有wor、wand、trior和triand,它们用于解决多个driver驱动同一个线网时出现的逻辑冲突。wor和trior实现线或(or)逻辑,wand和triand实现线与(and)逻辑。
wor和trior是一样的,wand和triand是一样的,都是为了不同方面的建模。
1.3 tr0、tr1
tri0用于表示带有下拉电阻(pulldown)的线网。当没有driver驱动tri0线网时,它的值是0,强度是pull。
tri1用于表示带有上拉电阻(pullup)的线网。当没有driver驱动tri1线网时,它的值是1,强度是pull。
1.4 uwire
Verilog-2005增加了uwire,只能被一个driver驱动,如果被多个driver驱动,那么编译时就会出错。但是不知为什么VCS现在还不支持uwire。
1.5 supply0、supply1
supply0和supply1用于模型电源,就是只能提供0和1值的线网,通常只在Vendor提供的标准单元库中使用,平时不用。
1.6 驱动强度
线网驱动强度(drive strength)包括:
- 用于表示0的强度:highz0、supply0、strong0、pull0、weak0。
- 用于表示1的强度:highz1、supply1、strong1、pull1、weak1。
1.7 默认 net
在Verilog-1995中,由连续赋值驱动而且不是端口的1-bit线网必须声明,用于端口连接的1-bit线网可以不必声明。但是在Verilog-2001中,就去掉了这个限制。