Design compiler学习记录(一)


DC将综合分成三个步骤:translation + mapping + optimization。

  Translation是指把设计的HDL描述转化为GTECH库元件组成的逻辑电路;

  Mapping是指将GTECH库元件映射到某一特定的半导体工艺库上,此时的电路网表包含了相关的工艺参数。

  Optimization是根据设计者设定的时延、面积、线负载模型等综合约束条件对电路网表进一步优化的过程。

 

1.read_design的几种方式

  • read_file:对指定filelist进行分析(analysis)并且执行translate到GTECH的过程
    • -autoread 自动分析filelist的文件的先后顺序关系,根据 -top指定的name设置综合顶层,不选用的话默认第一个file是顶层
    • -param 指定top的顶层参数 eg,-param “p_xx=>1,p_xxx=>2”
    • -format/-f 指定filelist的文件类型,一般有verilog、vhdl、sverilog、ddc、db等选项
    • -define 指定宏
  • analyze + elaborate
    • analyze对file进行预编译,寻找代码错误等信息,这个过程中可以加入-format -define -autoread等
    • alaborate执行translate过程,可以加入-param等

2.link

  mapping的过程,将GTECH库文件映射到具体的工艺库。

  搜索library的顺序为:local_link library --> link library --> search_path,先找到哪个用哪个,没找到报warning,重复报warning

  

  tips:DC中有好几个library的设置,一个是set_synthetic_library/set_target_library,这两个主要用于compile阶段的library的指定,也就是

指定在compile_ultra,不涉及具体的mapping过程,真正对应到工艺库信息的是set_link_library,set_link_library可以

指定多个工艺库信息,位于前面的优先被找到,所以一般类似于PAD,PHY,USB等library放在前面,再放置具体工艺库信息。

 

 

1、目标库(targe_library):一般就是std cell db;放的是标准单元工艺库; 是你的综合目的库,存放的是你索要映射的逻辑单元。一般为standard cell library & io cell library 的type;是DC在mapping时将设计映射到特定工艺所使用的库,就是使用目标库中的元件综合成设计的门级网表。

2、连接库(link_library):指定压焊块工艺库名称和所有其他的宏单元(RAM、ROM等);除了std cell,还有IO ,MACRO ,MEMORY db;一般为宏单元等其他库;一般可以放算法库和设计库等,比如DW;是提供门级网表实例化的基本单元,也就是门级网表实例化的元件或单元都来自该库。连接库定义为标准单元的db格式的库文件加上pad db格式的库文件,加上ROM,RAM等宏单元库文件。

3、符号库(symblo_library):包含工艺库中的单元图形表示的库名称。使用DV时,用于表示门电路原理图。如果忽略这一设置,DV会使用一个名为“generic.sdb”的通用符号库来生成原理图。如果你设置了symbol_library,但是假如你的单元的工艺库和符号库不匹配,DV会拒绝你的符号库,而调用通用库中的单元符号。

4、简单地讲,所有用到的库都要放到link_library,因为DC自动到那里去找。只有作综合用的库放在target_library,象ROM,PAD等不用synthesis的就不要放进去了。

5、link_library列表中应包含目标库名,这在DC中读取门级网表是很重要的。如果连接库列表中不包含目标库名,DC就不能连接网表中已经映射的单元,在这种情况下,DC会生成表示其不能解析网表中单元的警告。

6、link_library可以包含旧的工艺库名称,而target_library可以包含新的工艺库名称。

7、简单来说link library就是解决实例化引用的,如果实例化的就是一个与非门,DC就从target library中找到,如果例化的是一个fifo,DC就从fifo的库中找到,如果例化的是一个模块,DC就从内存中找到,因为这个模块的代码在编译过程中已经读进内存中去了。

8、pt和fm工具只有link_library,DC使用变量link_library,而PT使用link_path,除了名称和格式不一样之外,这两个变量的应用时相同的。PT是一个门级静态时序分析器,它只是用于结构化门级网表,因而,PT不使用变量target_library。

  

3.compile_ultra/compile

  执行具体的综合过程,compile_ultra相对于compile对timing分析更加严格,performance会更好,compile更加均衡。一般都用compile_ultra在IP的使用。

  具体选项man一下就能看到,比较实用的有-no_boundary_optimization

 

4.uniquify

  有的时候一个reference被实例化成多份,使用这个让工具显式将这多个实例化成不同的名字


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM