在模拟时,您可能会在 Synopsys VCS 或 VCS MX 中看到此错误,在此设计中是否包含在 Quartus® II 软件中由 MegaWi™ 插件管理器创建的两个或多个 IP 变体。当您的设计具有相同 IP 内核的多个变体或具有不同的 IP 内核,但是该内核有重复的模拟文件时,可能会发生此错误。对于每个 IP 内核,都会将一个完整的模拟文件集添加到 _sim目录中,包括一些可能与其他 IP 内核共享的文件。例如, 某些 SystemVerilog 包可能对多功能 IP 内核很常见。
如果将所有 IP 实例(包括重复的文件名)的所有模拟文件名的级列表添加到 VCS 命令行中时,系统便会发生此错误。该文件集不包括安装在 >/eda/sim_lib 目录结构中的仿真库文件的副本。
要解决此问题,执行以下步骤之一:
- 您可以手动消除 VCS 命令行中的重复文件名,只需从每组重复文件中指定一个文件。您可以通过查找具有相同名称但位于不同目录的文件(例如 变体_sim/foo.sv 和 _sim/foo.sv)来识别重复的文件。您还应比较重复文件名的内容,以确保文件是重复的。
- 或者,使用
vlogan命令的记录在 VCS MX 用户指南中, 这包括在 VCS MX 安装, 但不包括在 VCS (VCSi) 安装。您还可以从 Synopsys 网站获取 VCS MX 用户指南。要单独编译库,请按照以下步骤操作:- 识别所有 IP 变体并为每个其中每个变体创建一个目录。每个目录都会保存关于其 IP 变体的中间 VCS 库文件。例如,如果您有两个 IP 变
ip_var1体ip_var2,并创建两个目录:./ip_var1_lib以及./ip_var2_lib. - 如果不存在,则创建一个称为 synopsys_sim.setup.此文件包含从逻辑库名称到其物理目录位置的映射。将逻辑库名称的映射添加到每个 IP 实例的物理目录名称。例如,两个 IP 变体
ip_var1和ip_var2, 请将以下两行添加到 synopsys_sim.setup 文件:ip_var1: ./ip_var1_lib
ip_var2: ./ip_var2_lib - 如果在第 2 步中添加了 Quartus® II 仿真库目录中的库(>/eda/sim_lib),则为Altera模拟模型库创建库子目录,并将他们的映射添加到synopsys_sim.setup文件中的逻辑库名称。这些库在Quartus II 手册卷 3的"模拟"部分中有所说明。
- 创建工作库
./work目录并映射到逻辑work库和添加以下行到 synopsys_sim.setup 文件:work: ./work - 创建包含以下命令的 shell 脚本:
- 对于每个 IP 实例,通过添加以下命令编译所有 SystemVerilog 文件:
vlogan -sverilog -work ip_var1 - 对于每个 IP 变体,通过添加以下命令编译所有标准 Verilog HDL 文件:
vlogan v2k -work ip_var1 - 通过手动编译 Quartus® II 模拟库,将其编译为独立的库
vlogan命令(类似于编译每个 IP 变体的模拟文件)。或者,通过执行以下命令,使用 EDA 仿真库编译器编译 Quartus II 仿真库:
有关使用 EDA 仿真库编译器编译仿真库的更多信息,请参阅 在 Quartus II 软件中编译仿真库 in Quartus® II 帮助和 仿真Altera设计 第 3 卷中的章节 Quartus® II 手册.quartus_sh --simlib_comp -tool vcsmx -language verilog -family
- 对于每个 IP 实例,通过添加以下命令编译所有 SystemVerilog 文件:
- 使用这些文件将您的测试台文件和任何其他文件编译到工作库中
vlogan命令。例如,vlogan -work work - 使用以下 VCS 命令详细介绍顶级模块和生成模拟器可执行文件:
VCS 自动搜索在 synopsys_sim.setup 文件以获取未解决的模块。如果您希望对库搜索顺序进行更多的控制,请随之指定库vcs-lib选项已在 VCS MX 用户指南中记录。
- 识别所有 IP 变体并为每个其中每个变体创建一个目录。每个目录都会保存关于其 IP 变体的中间 VCS 库文件。例如,如果您有两个 IP 变