DC入门篇——read和analyze&elaborate的区别

引言

  DC读入设计文件有两种方式,一是read指令,二是 analyze&elaborate 的组合。下文将介绍两者的异同。

read

请添加图片描述

  具体为

read -format verilog[db,vhdl...] file   #dcsh model
read_db file.db                         #tcl model
read_verilog file.v                     #tcl model
read_vhdl file.vhd                      #tcl model

  如果读入单个文件可以使用指令。

read_verilog alu.v

  如果需要读入多个文件可以使用以下指令。

# 设置verilog文件所在的目录rtl
set design_path "rtl"
set verilog_files [glob -nocomplain -type f $design_path/*.v]
foreach file $verilog_files {
    read_file -format verilog $file
}

analyze & elaborate

在这里插入图片描述

  语法格式为:

analyze [-library library_name] [-format verilog | vhdl | sverilog] file_list
# library:指定中间结果存放的库,即 Linux 系统下的一个目录,默认为当前目录,也可以用 define_design_lib 命令指定
# format:HDL 源文件的类型,即 verilog 或 vhdl
# file_list:源代码文件名列表,文件名的指定可以通过TCL的链表命令 {}、“”、[list file_name] 等三种方法之一完成
elaborate design_name [-library library_name] [-parameters param_list]
# deisgn_name:指需要进行描述的设计
# library:用于保存设计的结构级描述
# parameters:指定给设计传递的参数,若省略则参数使用缺省值;参数用“”括起来

  如果需要读入多个文件可以使用以下指令。

set top_design top
set source_file [sh find ./rtl/*.v]
analyze -format verilog $source_file
elaborate $top_design

  当然以上脚本是可以正确的,但是他会在默认目录下(dc运行的路径)生成一系列analyze生成的中间文件(.mr,.syn…),这会导致该目录很乱。
在这里插入图片描述

  有两种解决方法,法一是新建一个work文件夹,在work文件夹下运行dc。法二是通过define_design_lib指定library,将中间结果存放在该lib种,指令如下。

set work_path work
define_design_lib work -path $work_path
set top_design top
set source_file [sh find ./rtl/*.v]
analyze -format verilog -lib work $source_file
elaborate $top_design

异同

  其实read命令其实是一步完成analyze&elaborate的工作,而analyze&elaborate仅限用于VHDL和verilog。虽然两者都是读入设计文件,但是存在一些区别。
在这里插入图片描述

  需要特别关注的是以下三点:

  • 对于已经analyze过的工程只需要elaborate,不需要重新读入,可以减少综合时间;
  • read可以读除了verilog和VHDL外,还可读db等文件;
  • analyze&elaborate可以对parameter进行操作,read中parameter只能保持默认综合,不可改变。
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值