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