Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
System verilog SystemVerilog接口中modports的优点和动机是什么?_System Verilog - Fatal编程技术网

System verilog SystemVerilog接口中modports的优点和动机是什么?

System verilog SystemVerilog接口中modports的优点和动机是什么?,system-verilog,System Verilog,我是SystemVerilog的新手 我正在阅读以下教程: 我不确定SystemVerilog接口中modports的优点和动机是什么?modports用于指定特定模块/组件的信号方向 它们还用于限制对来自某些模块/类的特定信号的访问 通常,testbench modport包含一组刺激驱动信号作为输出,而相同的信号作为RTL的输入。另外,一些输出到RTL的响应信号被作为modport的输入 考虑下面的例子: interface my_interface(input logic clk, re

我是SystemVerilog的新手

我正在阅读以下教程:


我不确定SystemVerilog接口中modports的优点和动机是什么?

modports用于指定特定模块/组件的信号方向

它们还用于限制对来自某些模块/类的特定信号的访问

通常,testbench modport包含一组刺激驱动信号作为输出,而相同的信号作为RTL的输入。另外,一些输出到RTL的响应信号被作为modport的输入

考虑下面的例子:

interface my_interface(input logic clk, reset);

logic a;
logic b;
logic c;
logic sum;
logic carry;

modport tb  (input sum,carry,  output a,b,c,reset);
modport dut (output sum,carry, input a,b,c,reset);

endinterface
这里,允许测试台驱动
a
b
c
重置
。但是,如果测试台驱动
sum
carry
信号,则是错误的

如果我们不使用modport,并且testbench/RTL意外地驱动了它们各自的输入信号,那么它将导致意外行为

此后,modports通常用于限制驱动/采样信号的组件

此外,它们还可以方便地查看接口内信号的不同视图。我们只需查看modport,就可以知道它是特定模块/类的输入还是输出


请参阅更多信息。

尽管模拟器在访问过程中应该检查方向,但通常会忽略它。合成工具着眼于实现的方向。

通常,接口不需要捕获模块之间或模块与测试台之间使用的信号的方向信息

示例:主/从

主设备可能需要一组信号作为输入和输出,而从设备可能需要一组信号作为输出和输入。因此,我们在接口内部使用MOD port对这些信号进行分组并指定特定方向

Mod端口示例:

与modports的接口

interface arb_if (input bit clk);
  logic [1:0] grant, request;
  logic reset;

  modport TEST (output request, reset,
                     input grant,clk);

  modport DUT (input request, reset ,clk,
               output grant);
  modport MONITOR (input request, grant, reset, clk);

  endinterface

举例来说,tb指的是测试的顶层模块,dut是设计模块,对吗?是的。它是顶级测试台模块/类。明确地说,我指的是中的“测试台”模块。