关于analyze和elaborate
时间:10-02
整理:3721RD
点击:
大家好,
最近遇到一个问题。我用DC做一个设计的综合,这个设计的一个子模块是带参数的,这个子模块在实例化的时候是经过参数传递的。
用read_verilog读入设计时报错说找不到这个带参数的子模块。于是上网搜了一下,说应该用analyze+elaborate的步骤。现在的问题是:
我在用analyze之后使用current_design定义当前设计,但是报错说找不到当前设计。然后我在analyze后加了一条list_desgins,结果说没有任何设计在内存里。接着,我用elaborate+顶层模块名 之后,current_design就自动变成了顶层模块。这个结果是想要的,但是过程有些疑惑。analyze读入的设计不存在内存里吗?elaborate+module_name会自动把这个module 设为current_design吗?请知情人解说一二。谢谢!
最近遇到一个问题。我用DC做一个设计的综合,这个设计的一个子模块是带参数的,这个子模块在实例化的时候是经过参数传递的。
用read_verilog读入设计时报错说找不到这个带参数的子模块。于是上网搜了一下,说应该用analyze+elaborate的步骤。现在的问题是:
我在用analyze之后使用current_design定义当前设计,但是报错说找不到当前设计。然后我在analyze后加了一条list_desgins,结果说没有任何设计在内存里。接着,我用elaborate+顶层模块名 之后,current_design就自动变成了顶层模块。这个结果是想要的,但是过程有些疑惑。analyze读入的设计不存在内存里吗?elaborate+module_name会自动把这个module 设为current_design吗?请知情人解说一二。谢谢!
analyze: 读入RTL代码,分析每个文件的语法是否正确。(这个时候每个module还是独立的,没有instance的关系)
elaborate: 用analyze已经读入的RTL代码来构建hierarchy。顶层是可以设置的。这个时候整个design的层次就有了,instance的关系也明确了。
谢谢回复。另外还想问一下,如果不设置的话,elaborate会自动识别top module吗?
rm flow中就采用的是analyze+elaborate
