target_library与link_library的区别
现在有必要解释target_library和link_library系统变量间的区别。targetlibrary 指定工艺库的名称,其单元对应于设计人员想让DC推断出并最终映射到的库单元。link_library定义其库单元只用于参考的库名称,也就是DC不是使用link_library中的单元进行推断。例如,你可能指定一个标准单元工艺库作target_library,而在link_ library列表中则指定压焊块工艺库名称和所有其他的宏单元(RAM、ROM等)。这就意味着用户将用标准单元库中的单元来综合设计,而同时连接设计中例化的压焊块和宏单元。如果target_ library列表中包括了压焊块库,那么DC可用压焊块来综合核心逻辑。
如例3.1所示,link_library 列表中应包含目标库名,这在DC中读取门级网表时是很重要的。如果连接库列表中不包含目标库名,DC就不能连接网表中的已映射的单元,在这种情况下,DC生成表示其不能解析网表中单元的警告。target_library 和link_library系统变量允许设计人员更好地控制单元的映射。这些变量也提供了--种有用的方法将门级网表从一-种工艺重新映射到另一种工艺。在这种情况下,link_library 可包括旧的工艺库名,而target_library 可包含新的工艺库名。可通过dc_shell 中的translate命令来完成重新映射。
symbol_library 系统变量是包含工艺库中的单元图形表示的库名称。当使用图形化前端工具DA时,它用于表示这些门电路原理图。符号库以扩展名“sdb"为标识。如果设置文件忽略了这一变量,DA将会使用一个名为“generic.sdb”的通用符号库来生成原理图。通常,所有库厂商提供的工艺库都包含一个相应的符号库。工艺库和符号库间的单元名和引脚名必须准确地匹配。单元中的任何不匹配都可引起DA拒绝符号库中的单元而使用通用库中的单元。
例3.1
set target_library [liststd_cells_lib.db]
set link_libraty [list {*}std_cells.db pad_lib.db]
set symbol_library [liststd_cells_lib.sdb pad_lib.sdb]