A simple summary on DC1 WS: part 1

suncup

自从四月以来陆陆续续的学习,希望小结一下。 Design Compiler E-2010.12 (or above) Workshop 1

1. 基本的综合概念 Synthesis, 即综合,简言之就是将抽象的设计概念,加以工艺数据和约束,转化成实际的逻辑门网表的过程。涵盖转换、优化、门级单元映射(Translation + Optimization + Gate Mapping)三部分。粗略的步骤是:

约束 Constrain 综合 Synthesize 分析 Analyze 生成 Write out

DC在读入HDL Design以及约束以后,将设计转化为没有timing和load信息的逻辑门单元,即GTECH门级网表,也是未映射的DDC文件(DDC是SNPS制定的用于存储网表数据的二进制数据库文件格式,用于代替旧式的.db格式),随后工具会对读入内存的设计加以优化,从实际的工艺库中映射逻辑单元,不断迭代满足DRC rules, timing & area constraints,最后输出映射后的DDC文件。

自2010.12版以来,DC Ultra的一大重大改进在于对综合过程中有关线网寄生RC阻抗的估算,采用了与Wire Load Model(WLM)模式不同的处理方式,名为Topological Mode,因此该产品有时也称为DC Topological。与WLM预估面积并选取工艺库的RC统计值进行RC阻抗估算的方式相比,Topo模式面向的是当前Design的RC预估计算而不是参考以往的统计值,Topo模式依靠更偏向后端的工艺库文件,使用内置粗略的版图规划和虚拟布局布线工具进行线网RC阻抗的计算。主要优点在于对整个ASIC设计流程中与后端流程的衔接更好,避免出现综合网表很好没有时序问题面积问题却无法布局布线从而返工,QoR和TTR更佳。具体的区别和对比以后会讲。

2.Topo模式下推荐的两步综合流程: first pass: 初步综合 => 首次DDC网表 => (后端工具)IC Compiler 进行Floorplan second pass: 结合Floorplan结果进行二次综合 => 二次综合DDC网表,带有实际RC信息 => (后端工具)ICC等,进行布局布线、时钟树综合等步骤

Topo模式的调用命令

% design_vision -topographical_mode #gui mode
% dc_shell -topographical_mode #cli mode
% dc_shell -topo -f run.tcl tee -i run.log #cli batch mode

与基本综合概念相关的术语: Target Library: 存放工艺库的库文件 Symbol Library: 指定在GUI模式下逻辑单元符号的库文件 Link Library: 链接库,共link命令进行例化元件解析的源 Synthetic Library: 标准DesignWare库之外的DW库文件 DC大量使用tcl脚本语言作为交互工具,在设置变量时,DC保留的变量使用”set_app_var”比tcl的变量赋值”set”更加安全。这是由于”set_app_var”是DC内建的变量赋值语句,会对变量进行关键字审查,被DC保留的变量关键字才会进行赋值。举例说明

# illegal variable keyword to DC
set_app_var targgt_library libs/65nm.db
# tcl assgin a string to variable targgt_library
set targgt_library libs/65nm.db

# more example on set_app_var, now set link library
# a '*' refers to DC memory
set_app_var link_library "* $target_library"

# plus, a command useful to get modified value or attribute
get_app_var -list -only_changed_vars *

[recommendation or good practise]层次化的设计 top.v
--HDL submodule // read_verilog or analyze
--third IP // set_app_var link_library “* $target_library $IP”
--netlist, ddc //read_ddc 关于读取design后current_design默认指向的module,即reading order是:1. 读取最后一个文件包含的module; 2. 使用filelist载入方式时读取的第一个文件包含的module; 3. 读取一个文件时的第一个module。因此,显性指定current_design会是好习惯:

read_verilog TOP.v
current_design MY_TOP
if { [link] == 0} {
echo "Link error, aborted."
exit;
}
check_design
...
compile_ultra

关于使用analyze-elaborate读取design的方式,link的解析顺序等,以后补充。

  • Post title:A simple summary on DC1 WS: part 1
  • Post author:suncup
  • Create time:2012-06-21 00:25:41
  • Post link:https://blog.suncup.info/2012/06/21/a-simple-summary-o-dc1-ws-part-1/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
On this page
A simple summary on DC1 WS: part 1