DC工具的基本使用(一)

本文主要参考 DC WorkShop Lab2_w1152715961的博客-CSDN博客

        一直以来,我都是把代码直接扔到vivado里面,从来没有考虑过它的实际综合的过程是怎么实现,这周有时间来研究一下design compiler工具的使用。

(一)原理

        逻辑综合工具实际上就是将RTL代码映射到具体的工艺库上(一般由制造厂家提供),再通过添加约束信息(时序约束,线载模型,面积,功耗等,主要以tcl语言形式),对RTL代码进行逻辑综合,形成门级网表(netlists)。

        一般先将VHDL/Verilog/Systemverilog转化为GTECH网表(中间网表),再映射到不同的工艺库上,生成TSMC网表。

        Synthesis = Translation + Gate Mapping + Loigic Optimization

(二)一些路径的设置

下面这张图片引用来自知乎

Target_library: 由半导体厂商提供,包含工艺技术参数和单元的功能,DC使用库里的单元构成电路。工艺库一般是.dbDE 的格式,这种格式是DC认识的一种内部文件格式;
Link_library: 设置模块或者单元电路的引用,对于所有DC可能用到的库,都需要在Link_library中进行指定,包括要使用到的IP文件。此处还要将search_path添加进来,这样才能找到.db文件;
Symbol_library: 包含工艺库中的单元图形表示的库名称;
Search_Path: 包括所有必需文件的指定路径都需要在此进行声明。

其中lib文件可以打开,工程师可以看懂。

(三)DC工具的四种打开方式

dcsh  modedc_shell支持调用dcsh脚本,不支持tcl,仅支持文本界面,没有图形界面可以通过dc_shell -f script方式来调用脚本
design_analyzer对应的dc_shell格式的图形化界面,故不能调用tcl脚本

会产生command.log以及view_command.log来记录执行命令以及参数,会在运行中产生临时的filenames.log用于记录访问的目录,退出会自动删除。

tcl modedc_shell -tdc_shell的扩展,支持tcl脚本可以通过dc_shell-t  -f script方式来调用脚本

design_vision

对应的dc_shell-t格式的图形化界面,故能调用tcl脚本只会产生command.log的日志文件

      其中dcsh不能调用tcl,tcl也不能调用dcsh。

//执行tcl脚本
source my.tcl

//dc执行tcl
dc_shell-t -f  my.tcl

//dc执行tcl,并将输出定向到对应的log文件中
dc_shell-t -f  my.tcl  > my.log

//dc执行tcl,并将输出定向到对应的log文件中,并且在linux屏幕中输出
dc_shell-t -f  my.tcl  | tee my.log

(四)lab2  2007.03

        本来想跑通一个2012.06的lab1,但是因为找到的文件缺失一些东西,最后还是决定使用2007.3的lab来跑一遍试试看。这个lab的文件可以在EETOP上面找到,包括了实验文件以及对应的手册,还是写的非常详细的。

        准备工作:安装DC2016版本的虚拟机,lab2的文件,DC1_200703_LG_02_setup.doc对应的手册。

Task1   

        flow的第一个工作是将不完整的.synopsys_dc.setup文件补齐。.synopsys_dc.setup它本身是一个隐藏文件,需要用ls -la来查看,之后去修改它对应的路径设置,包括search_path、target_library、link_library、symbol_library。我们先不关心这个.synopsys_dc.setup自己去写应该怎么写。

link_library的设置中必须包含’*’, 表示DC在引用实例化模块或者单元电路时首先搜索已经调进DC memory的模块和单元电路,如果在link library中不包含’*’,DC就不会使用DC memory中已有的模块,因此,会出现无法匹配的模块或单元电路的警告信息(unresolved design reference)。

Task2   

     输入design_vision打开DC界面,并查看File->setup,观察路径是否正确。

//tcl查看对应的路径
printvar target_library
printvar link_library
printvar symbol_library
printvar search_path

Task3   

     在File->read中选择TOP.vhd,选中top右下角会出现top字样。点击红色的1可以查看对应的schematic。 

   在 File->Link Design 中点击ok

//Save the unmapped design in ddc fromat,将没有映射的网表文件以ddc格式保存起来
write –hier –f ddc –out unmapped/TOP.ddc
//see a list of designs and libraries in memory,可以看到对应的design和lib清单
list_designs
list_libs

Task4  

   source TOP.con,这实际上就是一个约束文件。下面是TOP.con文件内容,包括了时钟约束以及线载模型的约束过程。

set lib_name cb13fs120_tsmc_max
current_design TOP

# Reset all constraints 
reset_design

# Create clock object and set uncertainty
create_clock -period 2 [get_ports Clk]
set_clock_uncertainty 0.2 [get_clocks Clk]

# Set constraints on input ports
suppress_message UID-401
set_driving_cell -library $lib_name -lib_cell sdcfq1 [remove_from_collection [all_inputs] [get_ports Clk]]
set_input_delay 0.1 -max -clock Clk [remove_from_collection [all_inputs] [get_ports Clk]]
set_input_delay 1.2 -max -clock Clk [get_ports Neg_Flag]

# Set constraints on output ports
set_output_delay 1 -max -clock Clk [all_outputs]
set_load [expr [load_of $lib_name/an02d0/A1] * 15] [all_outputs]

# Set the wire load model 
set_wire_load_mode top
set_wire_load_model -name 16000

Task5

   compile  编译

   ultra 超级编译

执行编译的过程中有三个层次的优化过程:

(1)架构的优化(插入bufio)

(2)逻辑的优化/GTECH网表的优化(卡诺图的优化)

(3)门级优化

在满足时序约束的条件下,保证面积的最小。

gate clock 可以用来控制功耗

incremental mappping  增量映射,原理图之间可以进行跳转的过程。

auto ungroup 把模块打散

 

Task6

   查看所有违例          report_constraint -all_violators

   查看各种报告    

Task7

   保存文件到 mapped中,仍然以ddc的格式来进行保存文件。

    

        保存tcl脚本,先点击history,再鼠标全部选中,然后点击save contents as,将tcl脚本保存下来。之后可以通过 design_vision –f scripts/run_history.tcl 直接一键执行全部dc过程。

Task8

   remove_design -designs 退出所有设计,然后exit退出。

  • 9
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jun_luo_yu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值