请教关于DC Compiler的两个问题
时间:12-12
整理:3721RD
点击:
初学DC Compiler,问题比较幼稚,还请见谅:)
过程如下:
综合多模块的设计的时候,先用
cat *.v > design.v
将顶层模块和所有子模块放在design.v中
然后用DC综合,script用了如下语句
uniquify -force
ungroup -flatten -all
有两个问题请教,谢谢
1.
log.txt文件没有看到有子模块被综合掉了,那么什么情况下需要使用set_dont_touch属性呢?
是否如果有子模块被综合掉了,或者某个寄存器被综合掉了,
才在script中针对被综合掉的部分添加set_dont_touch语句呢?
2.
在用cat *.v > design.v 之后,design.v中已包含了 顶层模块和所有子模块,
但是否需要编辑design.v,把其中的 顶层模块文件 放在最前面,子模块 放在后面,还是无所谓?
因为发现如果顶层模块文件放在中间的话,log.txt就会输出
current design is now '/home/.../top.db:top' loaded 11 designs
current design is 'design.v文件中放在最前面的子模块的名字'
current design is 'top'
非常感谢大家的帮助!
过程如下:
综合多模块的设计的时候,先用
cat *.v > design.v
将顶层模块和所有子模块放在design.v中
然后用DC综合,script用了如下语句
uniquify -force
ungroup -flatten -all
有两个问题请教,谢谢
1.
log.txt文件没有看到有子模块被综合掉了,那么什么情况下需要使用set_dont_touch属性呢?
是否如果有子模块被综合掉了,或者某个寄存器被综合掉了,
才在script中针对被综合掉的部分添加set_dont_touch语句呢?
2.
在用cat *.v > design.v 之后,design.v中已包含了 顶层模块和所有子模块,
但是否需要编辑design.v,把其中的 顶层模块文件 放在最前面,子模块 放在后面,还是无所谓?
因为发现如果顶层模块文件放在中间的话,log.txt就会输出
current design is now '/home/.../top.db:top' loaded 11 designs
current design is 'design.v文件中放在最前面的子模块的名字'
current design is 'top'
非常感谢大家的帮助!
为啥非要把所有.v合成一个,用一个file list不好吗?
用current_design 命令指定顶层,.v中的顺序无关紧要。
下面是一个例子:
set TOP xxxx
source ../file_list_.tcl
#Read in your RTL code, in format verilog or vhdl, firstly analyze.
analyze -format verilog $file_list
#Secondly elaborate, only need to elaborate the top level of your design.
elaborate ${TOP}
#Make sure current design is top level.
current_design ${TOP}
#Ensure every instance has a unique name.
uniquify
#link reference library.
link
#Check current design to see if it could be synthesised, the return value must be 1.
check_design > ../rpt/${TOP}_check.rpt
#Add your constraints to design.
source ./constraint.tcl
#compile
compile_ultra -no_autoungroup -no_seq_output_inversion -no_boundary_optimization