`uselib Verilog 指令 - 2023.2 简体中文

Vivado Design Suite 用户指南: 逻辑仿真 (UG900)

Document ID
UG900
Release Date
2023-10-18
Version
2023.2 简体中文

支持 Verilog `uselib 指令,该指令用于设置库的搜索顺序。

`uselib 语法

<uselib compiler directive> ::= `uselib [<Verilog-XL uselib directives>|<lib 
directive>]
<Verilog-XL uselib directives> :== dir = <library_directory> | file = <library_file> 
| libext = <file_extension> 
<lib directive>::= <library reference> {<library reference>} 
<library reference> ::= lib = <logical library name>

`uselib 库语义

`uselib lib 指令无法搭配 Verilog-XL `uselib 指令一起使用。例如,下列代码违规:

`uselib dir=./ file=f.v lib=newlib 

在一条 `uselib 指令内可指定多个库。

指定库的顺序决定了搜索顺序。例如:

`uselib lib=mylib lib=yourlib 

指定搜索已例化的模块的操作首先在 mylib 内执行,而后在 yourlib 内执行。

正如 `uselib dir`uselib file`uselib libext 指令,在任一给定的解析和分析调用中,`uselib lib 指令跨 HDL 文件保持有效,就像解析调用保持有效一样。除非遇到另一条 `uselib 指令,否则 HDL 源代码中的 `uselib(包括任何 Verilog XL `uselib)指令保持有效。不含任何实参的 `uselib 会移除当前处于活动状态的任意 `uselib <lib|file|dir|libext> 的效果。

以下模块搜索机制用于通过 Verific Verilog 细化算法来解析已例化的模块或 UDP:

  • 首先,按当前处于活动状态的 `uselib lib(如有)的逻辑库的排序列表来搜索已例化的模块。
  • 如未找到任何结果,请按在 xelab 命令行中搜索库的相同方式,在库的有序列表内搜索已例化的模块。
  • 如未找到任何结果,请在父模块的库中搜索已例化的模块。例如,如果库 work 的模块 A 例化了库 mylib 的模块 B,而 B 例化了模块 C,那么请在模块 B 的 /mylib 库(C 的父级库)中搜索模块 C。
  • 如未找到任何结果,请在 work 库中搜索已例化的模块,此库为下列库之一:
    • HDL 源文件编译到的库
    • 显式设置为 work 库的库
    • 默认 work 库名称为 work

`uselib 示例

表 1. `uselib 示例
已编译到名为 adder_lib 的逻辑库中的 half_adder.v 文件 已编译到名为 Work 的逻辑库中的 full_adder.v 文件
module half_adder(a,b,c,s); 
input a,b;
output c,s;
s = a ^ b;
c = a & b;
endmodule
module
full_adder(c_in, c_out, a, b, sum)
input c_in,a,b;
output c_out,sum;
wire carry1,carry2,sum1;
`uselib lib = adder_lib
half_adder
adder1(.a(a),.b(b),. c(carry1),.s(sum1)); half_adder adder1(.a(sum1),.b(c_in),.c (carry2),.s(sum)); c_out = carry1 | carry2; endmodule