DC lab5学习笔记

DC_Lab5笔记

使用前的检查:

1、检查lab5目录下是否有:  common_setup.tcl文件

2、检查lab5目录下是否有:  dc_setup.tcl文件

3、检查lab5目录下是否有: .synopsys_dc.setupl文件(有的可能没有,没有的话自己编写一下)

一、查看处理器核心数量:

./num_cores.sh

如图:

二、以topo模式运行DC 并将报告输出到tee.log中

dc_shell -topo | tee -i dc.log

使用快捷键CTRL+SHIFT+N新建一个lab5下的终端。在script目录下创建dc.tcl文件,后续每一个步骤的dc命令都粘贴在这个tcl文件里面

touch scripts/dc.tcl

如图:

三、在读取RTL文件之前,先建立一个.svf文件。用于存放后面的时序优化信息

set_svf STOTO.svf

如图

四、读取、链接、检验设计;加载检验脚本

1、读取rtl文件:

read_verilog ./rtl/STOTO.v

窗口信息如下

2、设置STOTO为TOP文件

current_design STOTO

         窗口信息如下

3、链接文件:

link

窗口信息如下:

4、检验设计:

check_design

窗口信息如下:

5、加载scripts文件夹下的STOTO.con脚本:

source TOTO.con

6、检验脚本规定的时序:

check_timing

窗口信息如下:

7、加载scripts文件夹下的STOTO.pcon脚本(这个脚本是用来对LAYOUT进行位置约束)

source STOTO.pcon

窗口信息如下:

五、参考Design Specification 的步骤1-6,执行如下命令进行约束:

group_path -name clk -critical 0.21 -weight 5   

group_path -name INPUTS -from [all_inputs ]

group_path -name OUTPUTS -to [all_output]

group_path -name COMBO -from [all_inputs] -to [all_output]

set_ungroup [get_designs “INPUT”] false

set_dont_retime [get_cells I_MIDDLE/I_DONT_PIPELINE] true

set_optimize_registers true -design PIPELINE

set_dont_retime [get_cells I_MIDDLE/I_PIPELINE/z_reg*] true

对命令用法的解释:

group_path -name clk -critical 0.21 -weight 5   

#创建一个clock相关的group path 从reg到reg

group_path -name INPUTS -from [all_inputs ]

#从INPUT到reg

group_path -name OUTPUTS -to [all_output]

#从reg到OUTPUT

group_path -name COMBO -from [all_ inputs] -to [all output]

#INPUT到OUTPUT

set_ungroup [get_designs “INPUT”] false

#保留,不分组

set_dont_retime [get_cells I_MIDDLE/I_DONT_PIPELINE] true

#前后一致,不进行PIPELINE(不改变寄存器的位置与数量)

set_optimize_registers true -design PIPELINE

#能改变寄存器的位置与数量

set_dont_retime [get_cells I_MIDDLE/I_PIPELINE/z_reg* ] true

# I_MIDDLE/I_PIPELINE/z_reg*这个寄存器不能做PIPELINE(retiming)

六、保存.ddc文件(这里如果报错了就在lab5里面新建一个unmapped文件夹,重新执行,就可以保存了)

write -f ddc -hier -out unmapped/STOTO.ddc

七、设定编译时使用多少处理器核心,我这里用4个

set_host_options -max_cores 4

八、编译

compile_ultra -scan -timing -retime

补充: 

 -scan:会插入一些扫描寄存器

-timing:以约束时间为主要目的

-retime:告诉工具可以进行retiming

九、报告没有被编译的一些层次化结构

report_hierarchy -noleaf

十、生成约束报告:

redirect -tee -file rc_compile_ultra.rpt {report_constraint -all}

十一、生成时序报告:

redirect -tee -file rc_compile_ultra.rpt {report_timing}

十二、保存.ddc文件(先新建一个map文件夹)

write -f ddc -hier -out mapped/STOTO.ddc

十三、停止SVF文件记录

set_svf -off

十四、输入以下命令,查看被移除的寄存器

get_cells -hier *r_REG*_S*   

hierarchy 层次化结构

十五、输入以下命令,查看被移动的寄存器

get_cells -hier R_*

十六、查看layout图像:

打开图形化界面

gui_start

打开window->New Layout Window查看layout

移动鼠标查看坐标是否满足约束

在Object栏中,选择Placement Blockage以及cell栏中的standard查看标准单元摆放情况。

十七、退出DC

exit

 点击OK

十八、补充内容

  .synopsys_dc.setup文件的内容

#History                                                                             #
history keep 200
#   Aliases
#
alias h history
alias rc "report_constrain -all_violators"
alias rt report_timing
alias ra report_area
alias rq report_qor
alias page_on {set sh_enable_page_mode true}
alias page_off {set sh_enable_page_mode false}
alias fr "remove_design -designs"
#
#
#  Other lab specific settings
#
#
set_app_var alib_library_analysis_path .. ;   #Common Alib location
define_design_lib WORK -path ./work      ;        #Location of "analyzed" files
suppress_message "LINT-99 CMD-041 TFCHK-049 TFCHK-050 TFCHK-084 MWLIBP-300 MWLIBP-301 MWLIBP-324" ; #Message irrelemant
#
#
# Additional Setup Files
#
source common_setup.tcl
source dc_setup.tcl
#
#Verify Settings
#
echo "\n============================================================"
echo "\nLibrary Settings:"
echo "search_path:             $search_path"
echo "link_library:            $link_library"
echo "target_library:          $target_library"
echo "symbol_library:          $symbol_library"
echo "mw_reference_library:    $mw_reference_library"
echo "mw_design_library:       $mw_design_library"
echo "\n============================================================"
echo "\nI am read ...\n"

STOTO.pcon的内容

第一行:设置电路大小

第二行:规定的位置不可以摆放期间

dc.tcl的内容

set_svf STOTO.svf
read_verilog ./rtl/STOTO.v
current_design STOTO
link
check_design
source STOTO.con
check_timing
source STOTO.pcon
group_path -name clk -critical 0.21 -weight 5
group_path -name INPUTS -from [all_inputs ]
group_path -name OUTPUTS -to [all_output]
group_path -name COMBO -from [all_inputs] -to [all_output]
set_ungroup [get_designs "INPUT"] false
set_dont_retime [get_cells I_MIDDLE/I_DONT_PIPELINE] true
set_optimize_registers true -design PIPELINE
set_dont_retime [get_cells I_MIDDLE/I_PIPELINE/z_reg* ] true
write -f ddc -hier -out unmapped/STOTO.ddc
set_host_options -max_cores 4
compile_ultra -scan -timing -retime
report_hierarchy -noleaf
redirect -tee -file rc_compile_ultra.rpt {report_constraint -all}
redirect -tee -file rc_compile_ultra.rpt {report_timing}
write -f ddc -hier -out mapped/STOTO.ddc
set_svf -off
get_cells -hier *r_REG*_S*
get_cells -hier R_*
gui_start

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值