RISC-V MCU中文社区

【求助】 CICC-2033:关于使用DC对e203 SoC进行综合的一些说明

发表于 全国大学生集成电路创新创业大赛 2023-05-31 20:14:18
1
1055
1

除了仿真与FPGA验证,我们还将基于e203的可配置CNN加速SoC在180nm下进行了流片验证,最终的面积为6.9平方毫米,功耗为1.28毫瓦,在前端工作中,我们对设计进行了综合,相关的DC综合脚本参考了n200/syn中提供的DC脚本,响应的综合指令、概念以及脚本编写过程中的疑问解答如下。

concept

QoR(Quality of Result = Timing and/or Area),使用group命令可提高

wire_load_model 线性负载模型是由半导体工艺厂商根据自身工艺特点开发的,该模型包含单位长度面积因子、电容、电阻和一个扇出与线长查找表。在RTL代码综合阶段进行静态时序分析时,工艺库里面提供了标准单元的延时和功耗信息,但是互联线仍没有物理信息,这时就通过线负载模型来估算物理实现后的线负载大小,这种模型简单来说就是根据扇出预估连线长度,再根据连线长度来进行线上电阻、电容和面积等参数预估

getch.db,getch.db只包含有用 boolean 表达式描述的单元电路逻辑。在dc时dc首先将RTL代码转换为通用的布尔表达式,就是getch格式,这个是与具体工艺无关的,是未优化的电路。target_library,是综合的目的库,里面是要映射的逻辑单元,将目标库中的文件设计成门级网表

综合主要包括三个阶段:转换(translation)、优化 (optimization)与映射(mapping)。转换阶段综合工具将高层语言描述的电路用门级的逻辑来实现,对于 Synopsys 的综合工具 DC 来说,就是使用 gtech.db1库 中的门级单元来组成 HDL 语言描述的电路,从而构成初始的未优化的电路。优化与映射是综合工具对已有的初始电路进行分析,去掉电路中的冗余单元,并对不满足限制条件的路径进行优化,然后将优化之后的电路映射到由制造商提供的工 艺库上

综合需要的文件

  • RTL文件;

  • 标准单元的库文件;

  • 其他库文件。如IO库P库等等(不一定有)

    约束文件

综合输出的文件

  • 综合后的门级网表;
  • 带时序约束信息的sdc文件:
  • 其他一些后端需要用的特殊配置,如dont_touch设置等;
  • 保留综合结果的ddc文件(之后可以直接load这个文件,查看综合结果)

综合脚本的要求

综合脚本必须是可重用的。脚本的可重用主要有两方面的含义:
1)在 整个电路设计过程中,当后端工具提取出线负载模型后作综合或者在布局 布线完成之后再做综合,保证添加的限制条件与初始时的综合是相同的
2) 当系统的一些参数改变时,比如,一个模块从 16 位变为 32 位,而模块的功能没有改变,可以不改变综合的脚本,只需要改变其中的参数就可以实现该目标。即要保证综合脚本是参数化的

在添加限制条件时,必须对如下的对象施加限制条件:
1)、电路中需要有时钟的定义一般情况下,希望综合之后的电路是同步的数字电路(异步电路以及模拟电路需要单独处理),而同步电路中都需要设置时钟或者虚拟时钟。
2)、保留时钟网络,不对时钟网络做综合
3)、综合的时候需要指定线负载模型,用于估计连线延迟。
4)、限制模块中组合路径的输入输出延迟。
5)、限制输出的带负载能力(Loading budget)以及输入的驱动单元(driving cell)。 6)、模块同步输出的输出延迟(output delay)的限制,以及同步输入的输入 延迟(input delay)的限制。
7)、多周期路径(multicycle path)以及非法路径(false path)的限制。
8)、工作环境的给定。

综合结果的要求

1)、综合的结果中没有时序违反(timing violation),即综合的结果必须满足时序性能的要求。
2)、综合之后的门级网表必须已经映射到工艺库上。
3)、综合之后的门级网表中应避免包含如下电路结构:

  • 在同一个电路中同时含有触发器和锁存器两种电路单元。
  • 在电路中出现有反馈的组合逻辑
  • 用一个触发器的输出作为另外一个触发器的时钟
  • 异步逻辑和模拟电路未单独处理
  • 使用的单元电路没有影射到工艺库中

综合流程步骤具体内容

1、设置综合环境:

设置环境变量,如顶层的名字;
创建目录结构,rpt,out等文件夹;
指定临时文件存放目录等;
设置一些自定义命令等;
指定综合库文件

2、指定综合库文件:

设置 search_path, target_library,link_library,symbol_library,(所有的Library文件都是二进制db文件 ,只有工具能够识别,.lib设计者可读)

search_path: 设定好后,综合工具只会从该指定的路径去寻找各种库文件

目标库(target_library):把RTL映射成门级网表式时参考的库文件,一般就是与工艺对应的标准单元库。

target_library 用于设置综合时所要映射的库,target_library 中包含有单元电路的延迟信息,DC 综合时就是根据 target_library 中给出的单元电路的延迟信息来计算路径的延迟。Link_library 与 target_library 是定义了半导体制造商提供的单元电路及其 相关信息的技术库,这些信息包括单元名字、引脚名字、单元延迟信息、引脚 的带负载能力、工作环境等。

链接库(link_library):包含target_library,在此基础上再加上IO库文件,IP库文件等。

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

symbol_library:定义单元显示的图形库,当用design_vision查看图形界面时使用。(没有也没关系)

另外gtech.db和standard.sldb分别包含了GTECH逻辑单元和基本DW。工具会自动加载。

指定前三个就够了,后面的知道就行。

3、读取RTL文件(或网表文件)

读入所有RTL文件后,指定顶层模块并Link(current design)

  • 方法1:一个个读取(读100个需要写100次)
    read_verilog rtl_file1.v
    read_verilog rtl_file2.v
  • 方法2:一次性读取整个flist (实际中肯定推荐方法2)
    analyze -format sverilog -vcs “-f $RTL_FILE/flist.f”

补充:
在这里插入图片描述

生成

.sdc文件:write_sdc -version 1.7 filename.sdc

  标准延时约束文件:里面都是一些约束,用来给后端的布局布线提供参考

DC中为什么要用Uniquify?

为了在layout中进行时钟树的综合,网表在DC中必须被uniquified.所谓uniquified 就是在设计中使子模块的实例和子模块的定义一一对应,消除一个模块的定义被多次引用的现象。因为大部分layout工具以一种flat的方式完成设计的物理实现。对于多次引用同一定义的各个实例的物理模块的位置是不同的,而这些模块内部的flop都需要各自的时钟,从而时钟树上这些模块的clocknet名是不同的。如果Non uniquified 网表,来自layout 工具的时钟树的信息和DC中原网表无法对应,因为被多次实例化模块在网表中只有一个定义,所以会出现两个不同的net和一个相同的port连结

translate

在设计完成转换后(.db,已经完成了映射),你可以对它进行优化(使用compiler命令),改善新工艺的实现

喜欢1
用户评论 (1)
CICC2033-陈挺然

CICC2033-陈挺然 实名认证

懒的都不写签名

积分
问答
粉丝
关注
个人开发者
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板