Function Verilog中的异常函数声明

Function Verilog中的异常函数声明,function,verilog,Function,Verilog,为了试着理解,我在互联网上查找了一些代码,发现下面的声明是我认为是函数的,但我一点也不懂 sext #(.inwidth(1), .outwidth(32)) scc_sext_i0( .i0(paw_0_i0_outport0[32]), .o0(scc_sext_i0_o0)); combine2_wn #(.inwidth0(32), .inwidth1(32)) scc_combine2_wn_i0(

为了试着理解,我在互联网上查找了一些代码,发现下面的声明是我认为是函数的,但我一点也不懂

sext #(.inwidth(1), .outwidth(32))  scc_sext_i0(
                  .i0(paw_0_i0_outport0[32]),
                  .o0(scc_sext_i0_o0));

combine2_wn #(.inwidth0(32), .inwidth1(32))  scc_combine2_wn_i0(
                  .i0(paw_0_i0_outport0[31 : 0]),
                  .i1(scc_sext_i0_o0),
                  .o0(scc_combine2_wn_i0_o0));


combine2_wn #(.inwidth0(32), .inwidth1(32))  scc_combine2_wn_i1(
                  .i0(scc_combine2_wn_i2_o0[31 : 0]),
                  .i1(scc_combine2_wn_i2_o0[63 : 32]),
                  .o0(scc_combine2_wn_i1_o0));
我的问题如下:

  • 这些函数真的是映射吗
  • 如果是,则不会在任何其他较低级别的.v文件中定义它们(并且顶级文件中也不包含任何库)。那么它们有什么用呢
  • #
    符号是什么意思
  • .inwidth(32)
    是什么意思?32位的输入?(在互联网上找不到…)
  • 如果是,那么
    combine2\u wn
    块应该只有2个输入,为什么每次都有一个输出映射

  • 更一般地说,这些是任何类型的串联函数吗?

    这些最有可能是模块实例化,而不是函数调用

    您应该在Verilog搜索路径的文件中声明一个名为
    sext
    的模块和另一个名为
    combine2\u wn
    的模块

    #()
    表示您正在为命名模块内的
    参数
    赋值

    sext
    模块中有一个名为
    inwidth
    的参数。您正在将其赋值为1


    网上有很多参考资料。查看verilog wiki站点。

    这些很可能是模块实例化,而不是函数调用

    您应该在Verilog搜索路径的文件中声明一个名为
    sext
    的模块和另一个名为
    combine2\u wn
    的模块

    #()
    表示您正在为命名模块内的
    参数
    赋值

    sext
    模块中有一个名为
    inwidth
    的参数。您正在将其赋值为1

    网上有很多参考资料。查看verilog wiki站点