Loading

全定制电路Flow手册

简单做个summary手册,方便后面查阅以及组里统一规范。

全定制电路Flow手册

编写人:袁易扬

联系方式:2861704773@qq.com

文档版本 编写日期 说明
v1.0 2025.3.27 初次发布

1. 工具链

原理图:

Cadence Virtuoso IC617/618(用于22nm及以上的平面CMOS工艺)

Cadence Virtuoso ICADV(用于16nm及以下的Finfet先进工艺)

仿真:

Cadence Spectre(模拟仿真)

Cadence AMS(数模混仿)

版图:

Cadence Virtuoso IC617/618(用于22nm及以上的平面CMOS工艺)

Cadence Virtuoso ICADV(用于16nm及以下的Finfet先进工艺)

后仿真:

Calibre xRC/xACT

Cadence QRC

物理验证:

Calibre DRC/LVS

2. 全定制电路基本流程

设计文档编写->原理图绘制->原理图仿真验证->版图Floorplan->版图Placement->版图Route->版图DRC/LVS->后仿验证

3. 文档规范

原始文档建议使用markdown进行编辑,markdown编写软件推荐使用Typora(可以下载免费版,也可以购买付费版),也可以使用vscode安装markdown插件后作为markdown编辑器使用。

设计文档格式可参考《设计文档模板》,内容需要包括:

  1. 模块/芯片功能描述(描述模块/芯片整体功能)
  2. 模块/芯片架构描述(包含框图以及子模块功能基本描述)
  3. 模块/芯片端口(使用表格进行描述,表格中需要包含以下内容:Port 端口名;Width 端口位宽;Direction 端口方向; Function 功能描述)

如果存在模块/芯片存储器和存储器也需要进行描述:

  1. 模块/芯片寄存器(使用表格进行描述,表格中需要包含以下内容:Address 地址;Name:寄存器名;Type:功能(读写/只读/只写); Function 功能描述;Reset Value 复位值)
  2. 模块/芯片存储器(使用表格进行描述,表格中需要包含以下内容:Start Address 起始地址; End Address 终止地址;Size 存储器尺寸;Name 存储器名;Function 功能描述)

验证文档格式可参考《验证文档模板》,内容需要包括:

  1. 验证说明描述(描述要验证的模块,验证的方案,验证的工具,待验证的功能目标)
  2. 验证平台架构(包含框图以及子模块基本功能描述)
  3. 验证模块/芯片端口(使用表格进行描述,表格中需要包含以下内容:Port 端口名;Width 端口位宽;Direction 端口方向; Function 功能描述)
  4. 验证计划(使用表格进行描述,表格中需要包含以下内容:Test Name 测试名;Test Method 测试方法;Test Target 测试目标)
  5. 验证用例(使用表格进行描述,表格中需要包含以下内容:Case Name 用例名;Description 用例描述; Implementation 用例的验证激励和验证响应)

测试文档格式可参考《测试文档模板》,内容需要包括:

  1. 测试说明描述(描述要测试的模块,测试的方案,测试的工具,待测试的功能目标)
  2. 测试平台架构(包含框图以及子模块基本功能描述)
  3. 测试模块/芯片端口(使用表格进行描述,表格中需要包含以下内容:Port 端口名;Width 端口位宽;Direction 端口方向; Function 功能描述)
  4. 测试计划(使用表格进行描述,表格中需要包含以下内容:Test Name 测试名;Test Method 测试方法;Test Target 测试目标)
  5. 测试用例(使用表格进行描述,表格中需要包含以下内容:Case Name 用例名;Description 用例描述; Implementation 用例的测试激励,预期响应和实际响应)

此外文档需要注明以下信息:

  1. 文档作者
  2. 作者联系方式
  3. 文档版本
  4. 文档编写日期

若文档存在历史版本,需要说明各版本修改信息。

4. 设计规范

4.1 原理图设计

  1. 采用层次化设计,优先实现晶体管直接构成的低层级模块电路,高层次模块尽可能使用低层次模块组合完成,注意模块复用性
  2. 注意原理图中Component的布局,摆放位置、数据流向等需要能够反映layout中的布局情况
  3. 大位宽总线/端口优先考虑采用向量表达式声明的方式来实现,例如A<0:127>,索引一般固定采用低位在前高位在后的方式。小位宽总线可以使用Attach to multiple wires来实现
  4. 需要大量重复的Component可以使用迭代实例声明的方式来实现重复例化,例如Ix<0:127>,索引一般固定采用低位在前高位在后的方式
  5. 使用声明创建总线和Component时一定要注意匹配连接关系,避免出错,一个例子可参考下图,图中的电路的功能实现了将INPUT<7:0>的高4位按位取反后,与低四位进行与非,并将输出顺序比特倒序输出,即OUTPUT<0>=!(INPUT<3>&(!INPUT<7>))OUTPUT<1>=!(INPUT<2>&(!INPUT<6>))OUTPUT<2>=!(INPUT<1>&(!INPUT<5>))OUTPUT<3>=!(INPUT<0>&(!INPUT<4>))

image

  1. 尽管Virtuoso支持复杂的总线向量声明方式,如下表所示,但在使用时需要高度谨慎,需要考虑到走线时的实现情况,原理图中可以简单实现的大量乱序连接,在版图中实现可能是非常困难的

image

  1. 注意原理图完成时进行Save & Check,若无特殊情况,完成的原理图进行Save & Check时不应有Warning/Error
  2. 积极使用Net Highlighting功能检查连线情况,避免出现漏连/误连
  3. 管子参数设置时,需要考虑Layout的匹配以及便捷性,避免设置极端的宽长比,可以通过增大finger或者multiplier来增大total width

4.2 版图设计

  1. 优先使用Layout XL进行版图绘制
  2. 版图绘制开始前需要进行Floorplan,依次规划:电路形状;电路出Pin;电源连接
  3. Floorplan时需要重点关注电路出Pin的层次与方向问题,优先考虑大位宽线的走线,尽可能的处理成可以直接竖直或水平出线的情况,从而规避做大规模绕线的工作量
  4. Placement阶段,管子级电路的布置注意对称性和匹配,版图中添加的dummy需要向原理图中更新
  5. 模块需要注意高度和关键层次的对齐,尽可能将模块电路都设计成标准单元高度的倍数,从而方便在全定制电路中使用标准单元以及和半定制电路进行集成
  6. Route时,Metal层尽量采用一层horizen一层vertical的方式进行走线,走线层次注意与其他电路,尤其是半定制电路部分保持一致。此外重点避免在低层金属走折线,以降低DRC风险和避免走线资源浪费
  7. 确保金属线走在线道(track)上,偏离track会引发走线资源的浪费,导致走线密度下降,track由Metal层最小pitch决定,需要根据工艺规则提前确定
  8. 混合信号电路,高速电路等关键电路注意添加Guard Ring

5. 电路检查

  1. 在绘制电路时,优先采用先DRC后LVS的方式,在检查顶层电路时,优先采用先LVS后DRC的方式
  2. 可在绘制模块电路的每个小步骤完成后进行一次DRC检查,尤其是批量的重复性操作,避免需要修DRC返工
  3. 进行LVS检查时需要检查LVS Option,一般在进行top最终检查时需要特别注意关闭掉虚拟链接的选项
  4. 大型电路积极使用Black Box功能进行层次化的检查,便于多个电路绘制工作的并行推进
posted @ 2025-04-02 00:25  sasasatori  阅读(674)  评论(0)    收藏  举报