Verilog 编译+;精心设计,单元名称相同

Verilog 编译+;精心设计,单元名称相同,verilog,Verilog,我正在编译一个使用2个lib文件中定义的单元格的设计 在两个lib文件中都有一个单元,如下面的示例所示:ff,具有相同的名称, 这会导致编译器失败 我所尝试的: 编辑lib_file1.v-将ff名称更改为d_ff(啊!lib_file1.v是第三方,我们不想碰它) 包括不带-v选项的文件。这是可行的,但随后会编译大量冗余单元 编译到不同的库中-这不起作用,因为fail处于精化阶段 有没有一种方法可以告诉编译器只使用在其实例化的lib文件中定义的单元,而不编辑lib_文件 文件列表如下所示: t

我正在编译一个使用2个lib文件中定义的单元格的设计

在两个lib文件中都有一个单元,如下面的示例所示:
ff
,具有相同的名称, 这会导致编译器失败

我所尝试的:

  • 编辑lib_file1.v-将ff名称更改为d_ff(啊!lib_file1.v是第三方,我们不想碰它)
  • 包括不带-v选项的文件。这是可行的,但随后会编译大量冗余单元
  • 编译到不同的库中-这不起作用,因为fail处于精化阶段
  • 有没有一种方法可以告诉编译器只使用在其实例化的lib文件中定义的单元,而不编辑lib_文件

    文件列表如下所示:

    top.v
    -v lib_file1.v
    -v lib_file2.v
    
    文件lib_file1.v

    //other cells which use ff
    module slow_ff(....);
        ............
        ff i_ff(D, Q, CP);
    endmodule
    
    module ff(D, Q, CP);
    .....
    endmodule
    
    文件lib_file2.v

    //other cells which use ff
    module fast_ff(...);
        ..........
        ff i_ff(D, Q, CP, EN);
    endmodule
    
    module ff(D, Q, CP, EN)
    .....
    endmodule
    
    编辑:top.v不直接实例化ff,它使用“包装单元”(示例中为slow\u-dff和fast\u-dff)。问题是,如果首先编译lib_file1.v,链接器将使用lib_file1.v中定义的ff,lib_file_2.v也将使用Verilog中的配置,但我认为解决问题的简单方法可能是:

    module top (...);
      ...
      `uselib file=lib_file1.v
      ff ff1 (...);
      `uselib file=lib_file2.v
      ff ff2 (...);
      ...
    endmodule
    
    Verilog中有一些配置,但我认为解决您问题的简单方法可能是:

    module top (...);
      ...
      `uselib file=lib_file1.v
      ff ff1 (...);
      `uselib file=lib_file2.v
      ff ff2 (...);
      ...
    endmodule
    

    @Mathew Taylor我编辑这个问题是为了更好地解释这个问题。在verilog标准中没有这样的指令。@serge没有。它在某些模拟器中有效,而在其他模拟器中无效。@Mathew Taylor我编辑这个问题是为了更好地解释这个问题。在verilog标准中没有这样的指令。@serge不,没有。它在某些模拟器中有效,而在其他模拟器中无效。您使用的是vcs吗?标准verilog中没有synopsys'-v'库。因此,可能需要去掉-v并使用标准的v2k配置。顺便提一下它总是编译所有的模块,不管是-v。我没有时间写完整的答案。Reffer§;33配置设计的内容。看到我对一个类似问题的回答了吗?你在使用风投吗?标准verilog中没有synopsys'-v'库。因此,可能需要去掉-v并使用标准的v2k配置。顺便提一下它总是编译所有的模块,不管是-v。我没有时间写完整的答案。Reffer§;33配置设计的内容。请看我对类似问题的回答