首先要搞清楚三个概念
❑逻辑库
❑编译前的文件,文件夹(比如rtl源文件)
❑编译后的物理文件夹(里面放编译后的数据: *.pak文件)
cds.lib文件中的 'define'
举例:
DEFINE unisims_ver ../../../scr/xilinx/work/unisims_ver
DEFINE unimacro_ver ../../../scr/xilinx/work/unimacro_ver
DEFINE unifast_ver ../../../scr/xilinx/work/unifast_ver
DEFINE simprims_ver ../../../scr/xilinx/work/simprims_ver
DEFINE xilinxcorelib ../../../scr/xilinx/work/xilinxcorelib
DEFINE xilinxcorelib_ver ../../../scr/xilinx/work/xilinxcorelib_ver
DEFINE secureip ../../../scr/xilinx/work/secureip
DEFINE proc_common_v3_00_a ../../../scr/xilinx/work/edk/proc_common_v3_00_a
DEFINE lib_common_v1_00_a ../../../scr/xilinx/work/edk/lib_common_v1_00_a
DEFINE axi_lite_ipif_v1_01_a ../../../scr/xilinx/work/edk/axi_lite_ipif_v1_01_a
DEFINE {logic_lib} {physical_lib}
映射逻辑库名称到物理文件夹
可以将不同的逻辑名称映射到同一个物理文件夹
candence的cds.lib里的define并不是verilog语法,不能将两者混淆
hdl.var 参数:LIB_MAP
将文件和文件夹映射到逻辑库名上
举例
DEFINE LIB_MAP ( \
./design/lib1/... => lib1, \
./source => lib2, \
top.v => lib3, \
+ => worklib )
在这个例子中
❑ 所有在目录 ./design/lib1下的所有文件和文件夹被映射到 library lib1
❑ 所有在目录 ./source下的文件被映射到 library lib2
❑ 文件 top.v 被映射到 library lib3.
❑ 其他的未指定的区别映射到 library worklib.
HDL compile command option: -work
-work是将编译好的pak放到指定的逻辑库里,只能是逻辑库,就是只能指定个名字,不能指定物理库,就是路径和文件名,必须要靠cds.lib的define定义
-work 和 LIB_MAP必须二选一
-work 和 LIB_MAP必须二选一,这样编译器才能知道编译好的文件放在具体的物理位置
注意:
❑ hdl.var里的LIB_MAP是指定文件夹里的文件在编译的时候统一放到某个逻辑库中,这个参数可以通过-work取代,但是推荐使用LIB_MAP,因为LIB_MAP更方便,有一定的语法更高效的指定,因为不需要每行编译命令加上-work指定对应逻辑库
❑ cadence只能指定物理库所在文件夹,不能自动建立对应的文件夹,需要环境中的shell脚本对应
转载于:https://www.cnblogs.com/hwcomcn/p/3579659.html