Verilog “什么是”呢;净额;在HDL合成中的应用

Verilog “什么是”呢;净额;在HDL合成中的应用,verilog,hdl,synthesis,Verilog,Hdl,Synthesis,我是电路合成的初学者,我经常遇到net这个词,但我从来没有找到它的标准定义。在我看来,它指的是任何一种“黑匣子”,在那里它接收输入并产生输出。所以它可以是大电路中的一个子电路,也可以是一组门。我的理解正确吗?不,你的理解不正确 Verilog 在Verilog中,net有一个精确的定义: IEEE 1800-2012规定: 6.5网络和变量 有两组主要的数据对象:变量和网络。这两组人的工作方式不同 指定并保持值 网络可以由一个或多个用户编写 通过原语输出或通过模块端口进行连续分配。 多个驱动程序

我是电路合成的初学者,我经常遇到net这个词,但我从来没有找到它的标准定义。在我看来,它指的是任何一种“黑匣子”,在那里它接收输入并产生输出。所以它可以是大电路中的一个子电路,也可以是一组门。我的理解正确吗?不,你的理解不正确

Verilog

在Verilog中,net有一个精确的定义:

IEEE 1800-2012规定:

6.5网络和变量

有两组主要的数据对象:变量和网络。这两组人的工作方式不同 指定并保持值

网络可以由一个或多个用户编写 通过原语输出或通过模块端口进行连续分配。 多个驱动程序的结果值由 网络类型的解析函数。无法按程序解析网络 分配的

网络可以是多种类型中的一种,例如:
wire
supply0
wand
,但目前最常见的类型是
wire

IEEE 1800-2012接着说:

变量可以由一个或多个过程语句编写, 包括程序性连续作业最后一次写入决定 值。或者,变量可以由一个连续变量写入 分配或一个端口

变量行为和网络行为之间的主要区别在于,当从多个位置分配时,它们的行为由两个引号中的粗体文本突出显示:

对于网络,如果从多个位置分配给它,其结果值由解析函数确定,该函数适用于内置网络类型(
wire
等)。解析函数的行为取决于网络类型,即网络类型之间的差异。因此,例如,对于
导线
,如果
1'b0
1'b1
都被分配给它,如果两个分配分配的值具有相同的强度,则结果值将是
1'bx
(未知)。分辨率函数用于模拟真实电子设备。(用户定义的网络类型和驱动力的强弱也增加了复杂性,但我们在本次讨论中不讨论这些。)

对于变量,如果从多个位置分配给它,则其结果值由最后写入的值决定(就像普通软件变量一样)。因此,例如,如果分配了
1'b0
,然后分配了
1'b1
,则结果值将是
1'b1
,因为该值是最后分配的。没有涉及分辨率函数,也没有驱动力的概念

网络和变量都用于建模组合逻辑和顺序逻辑。关于何时可以使用网络和何时可以使用变量以及使用哪一个变量的选择受这些规则的约束(在上面的引号中给出),有一些规则。这些在verilog中是严格的,但在System verilog中已经放宽到这样的程度,如果您不使用三态逻辑进行设计,那么在System verilog中就不需要网络

VHDL具有完全相同的区别。Verilog网络的VHDL等价物是一个信号;Verilog变量的VHDL等价物是一个变量。然而,在VHDL中使用where的规则是不同的,而且更严格(这并不奇怪)

电子产品

在电子学中,网络是指电流流过的一块金属。换句话说,网络是一个地方和另一个地方之间的连接。物理上,它可以是PCB轨道、电缆、键合线或IC上的金属连接。通常,在数字电子技术中,它最像是IC上的金属连接

合成

因此,为了回答您的问题,如果有人在谈论逻辑合成器(门级网络列表)的输出时使用术语“net”,那么他们几乎肯定是指第二个想法:门级网络列表使用的任何格式的构造,用于模拟一个门和另一个门之间的连接。由于合成器通常将其门级网络列表输出为Verilog,因此门之间的这些连接可能无论如何都是使用Verilog网络建模的(可能是
wire
s)