【发布时间】:2017-03-03 10:24:21
【问题描述】:
我是电路综合的初学者,经常遇到net这个词,但一直找不到它的标准定义。在我看来,它指的是任何一种接收输入并产生输出的“黑匣子”。所以它可以是大电路中的子电路,也可以是门阵列。我的理解正确吗?
【问题讨论】:
我是电路综合的初学者,经常遇到net这个词,但一直找不到它的标准定义。在我看来,它指的是任何一种接收输入并产生输出的“黑匣子”。所以它可以是大电路中的子电路,也可以是门阵列。我的理解正确吗?
【问题讨论】:
不,你的理解不正确。
Verilog
在 Verilog 中,net 有一个精确的定义:
IEEE 1800-2012 规定:
6.5 网络和变量
有两组主要的数据对象:变量和网络。这两组的不同之处在于他们 被赋值并保持值。
一个网络可以由一个或多个编写 连续赋值,通过原始输出,或通过模块端口。 多个驱动程序的结果值由 网络类型的解析函数。网络不能在程序上 分配的。
网络可以是多种类型之一,例如:wire、supply0、wand,但目前最常见的类型是 wire。
IEEE 1800-2012 继续说:
变量可以由一个或多个程序语句编写, 包括程序连续分配。 最后一次写入决定 或者,变量可以写成一个连续的 分配或一个端口。
变量和网络之间的主要区别在于它们在从多个位置分配时的行为,如两个引号中的粗体文本突出显示:
对于网络,如果您从多个位置分配给它,则其结果值由解析函数确定,该函数对于内置网络类型(wire 等)。解析函数的行为取决于网络类型,这就是网络类型之间的差异。因此,例如,对于wire,如果1'b0 和1'b1 都被分配给它,那么如果两个分配分配的值具有相同的strength时间>。分辨率函数旨在模拟真实的电子设备。 (还有用户定义的网络类型和驱动强度的额外复杂性,但让我们在讨论中忽略这些。)
对于一个变量,如果您从多个位置分配给它,则其结果值取决于最后写入的任何值(就像普通的软件变量一样)。因此,例如,如果分配了1'b0,然后分配了1'b1,则结果值将是1'b1,因为该值是最后分配的。没有涉及分辨率函数,也没有任何驱动强度的概念。
网络和变量都用于对组合逻辑和时序逻辑进行建模。对于何时可以使用网络以及何时可以使用变量以及使用哪个变量的选择受这些规则的约束(在上面的引号中给出)。这些在 verilog 中是严格的,但在 System-Verilog 中已经放宽到这样的程度,如果您不使用三态逻辑进行设计,则在 System-Verilog 中不需要网络。
VHDL 具有完全相同的区别。 Verilog 网络的 VHDL 等价物是一个信号; Verilog 变量的 VHDL 等效项是 变量。然而,关于在 VHDL 中使用 where 的规则是不同的,而且更严格(这并不奇怪)。
电子产品
在电子学中,网是指电流通过的一块金属。换句话说,网络是一个地方和另一个地方之间的连接。在物理上,它可以是 PCB 轨道、电缆、键合线或 IC 上的金属连接。一般来说,在数字电子中,它最喜欢是IC上的金属连接。
合成
所以,为了回答您的问题,如果有人在谈论逻辑合成器的输出(门级网表)时使用“网络”一词,他们几乎肯定是指第二个想法:门级网表使用的任何格式的构造,用于模拟一个门与另一个门之间的连接。由于合成器通常将其门级网表输出为 Verilog,因此这些门之间的连接可能无论如何都使用 Verilog 网络 建模(可能是wires)。
【讨论】: