【问题标题】:What is the difference between structural Verilog and behavioural Verilog?结构 Verilog 和行为 Verilog 有什么区别?
【发布时间】:2020-09-15 13:50:45
【问题描述】:

如标题所示,结构 Verilog 和行为 Verilog 之间的主要区别是什么?

【问题讨论】:

    标签: verilog


    【解决方案1】:

    根据 IEEE 标准,这些术语没有严格的定义。但是,习惯上,structural 是指使用模块实例来描述设计(尤其是对于较低级别的构建块,例如与门和触发器),而 behavioral 是指使用always 块描述设计。

    门网表总是结构,而 RTL 代码通常是行为。 RTL 通常具有时钟门和同步器单元的实例。

    【讨论】:

      【解决方案2】:

      结构

      这里的功能是使用逆变器等基本组件定义的, 一个多路复用器、一个加法器、一个解码器、基本的数字逻辑门等。它只是 比如连接和安排可用电路的不同部分 实现一个函数。

      行为

      Verilog中的Behavioral描述用于描述功能 以算法的方式进行设计。 Verilog 中的行为建模 使用类似于 C 语言结构的结构。此外,这是 分为 2 个子类别。

      • (a) 连续

      将数据分配给输出是连续的。这将是 使用显式的“分配”语句或通过分配一个 在其声明期间对电线的价值。 如果分配输入中的任何更改将 立即生效输出。因此输出将被声明为 wire

      • (b) 程序

      这里的数据分配不是连续进行的,而是 发生在敏感度列表中指定的特定事件上。这类 建模方案是使用程序块实现的,例如 “总是”或“初始”。

      这里,输出变量必须定义为reg,因为它们需要 在指定的敏感度列表发生任何变化后发生新的分配之前,保持之前的值。

      希望这会有所帮助:)

      【讨论】:

        【解决方案3】:

        Structural Verilog 通常指的是可合成的(具有准确且有意义的硬件实现)的 Verilog 代码,通常以寄存器传输级别 (RTL) 编写。 另一方面,行为 Verilog 通常是对更高级别的硬件或功能的行为描述。行为代码不必是可合成的,例如,当您在按时间尺度缩放的 verilog 代码中定义延迟时,合成器在将代码转换为逻辑和硬件时不会考​​虑它,而是具有模拟目的。 结构和行为 VHDL 也是如此。

        【讨论】:

          【解决方案4】:

          行为不使用逻辑门描述您可以使用已经在 verilog 中定义的 And,Or,Not 门 而结构使用逻辑门描述,您在其中描述您想要一个名为 (And/Or/Not) 的模块并描述它的作用 & / | / ~。

          【讨论】:

            【解决方案5】:

            结构verilog用简单的词处理原语,如and、or、not等。 原语从库中调用/推断,并与输入输出端口连接。 示例

             module structural(y,a,b);
                input a,b;
                output y;
                and a1 (y,a,b); // and is the primitive inferred and a1 is the instance name.
             endmodule
            

            行为verilog处理系统的逻辑或行为。它处理复杂的逻辑实现,这就是为什么在工业上都实现称为 RTL 的系统的行为模型。一旦前端工程师使用 SV/UVM 验证行为 RTL,然后此 RTL 将转换为门级,即用于综合的结构。

            详情请参阅 Samir Palnitkar 编写的 verilog 书。

            【讨论】:

              【解决方案6】:

              Verilog 既是一种行为语言,又是一种结构语言。根据设计的需要,每个模块的内部可以在四个抽象级别上定义。 结构 Verilog 描述了一个模块如何由更简单的模块或基本原语(如门或晶体管)组成。行为 Verilog 描述了如何将输出计算为输入的函数。

              行为层面
              ->这是 Verilog HDL 提供的最高抽象级别。主要构建使用 “总是”和“初始”块。

              数据流级别
              -> 在这一层,通过指定数据流来设计模块。条件描述使用“assign”关键字。

              门级
              -> 模块是根据逻辑门和相互之间的互连来实现的 这些大门。

              切换级别
              -> 这是 Verilog 提供的最低级别的抽象。一个模块可以是 在交换机、存储节点和互连方面实现 他们之间。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2022-08-20
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2016-01-17
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多