1 / 84

数字 IC 的逻辑综合 及可测性设计

数字 IC 的逻辑综合 及可测性设计. 2013 年 12 月 17 日. 主要内容. 逻辑综合基本概念 逻辑综合工具 --Design Compiler 可测性基础 可测性设计工具. 功能要求. 功. 能. 要. 求. 系统建模. 系统建模. 行为设计. 不满足. Verilog. /. VHDL. (. ). 不满足. 电路仿真. 行为仿真. 满足. 满足. 综合. 、. 优化. 手工设计. 网表. 版图. 不满足. 不满足. 时序仿真. 满足. 后仿真. 版图自动. 满足. 布局.

min
Download Presentation

数字 IC 的逻辑综合 及可测性设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 数字IC的逻辑综合 及可测性设计 2013年12月17日

  2. 主要内容 • 逻辑综合基本概念 • 逻辑综合工具--Design Compiler • 可测性基础 • 可测性设计工具 共84页

  3. 功能要求 功 能 要 求 系统建模 系统建模 行为设计 不满足 Verilog / VHDL ( ) 不满足 电路仿真 行为仿真 满足 满足 综合 、 优化 手工设计 网表 版图 不满足 不满足 时序仿真 满足 后仿真 版图自动 满足 布局 、 布线 流片 、 封装 、 测试 不满足 后仿真 满足 流片 、 封装 、 测试 IC典型流程 数字VLSI 流程 模拟IC 流程 Matlab Matlab 半定制?全定制 Modelsim Questasim Muxplus II Spectre Virtuoso, laker Design Compiler Astro(IC Compiler) Encounter Calibre 参数提取 共84页

  4. 主要内容 • 逻辑综合基本概念 • 逻辑综合工具--Design Compiler • 可测性设计基础 • 可测性设计工具 共84页

  5. 逻辑综合基本概念 • 什么是逻辑综合? • 时间路径 • 时序:setup/hold • 常见术语 共84页

  6. 什么是逻辑综合? • 综合就是把HDL 代码转换为门级电路的过程,用公式表示 就是:综合= 翻译  + 优化  + 映射( Synthesis  = Translation  + Optimization  + Mapping  ) 共84页

  7. assign mux_out=!mux_control&mux_in1 |mux_control&mux_in2|mux_in1&mux_in2; 翻译 映射 assign mux_out=mux_control ?mux_in1:mux_in2; 共84页

  8. 时间路经 • 时间路径:信号传播经过的逻辑通道,简称路径。 • 起点一般为:基本输入端口或寄存器的时钟CK端口; • 终点一般为:基本输出端口或寄存器的数据D端口。 • 时间路径通常分为4种: • 基本输入到基本输出: • 基本输入到寄存器: • 寄存器到基本输出: • 寄存器到寄存器: 共84页

  9. 时间路经 基本输入到基本输出 基本输入到寄存器 寄存器到寄存器 寄存器到基本输出 共84页

  10. 时序:setup/hold • 建立(setup)时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。 • 保持(hold)时间是指触发器的时钟信号上升沿到来以后,数据稳定不变的时间。 • 裕度(slack):是时序要求与实际时序之间的差值,反映了时序是否满足要求。裕度为正,满足要求;反之不满足。 裕度=要求的时间-实际的时间 共84页

  11. DC常见术语 • 库(Library) • 设计(Design) • 单元(Cell or Instance) • 参考(Reference) • 端口(Port) • 管脚(Pin) • 线网(Net) • 时钟(Clock) 共84页

  12. DC常见术语—库 • 库:一组逻辑单元的集合。 • 库包括库申明、库属性、库应用环境和每个单元的功能描述、时间延时、面积、功耗等。 • 逻辑综合库包含两种格式: 1.自由文件格式 .lib(任何文本编辑器都可以打开) 2. synopsys应用程序可使用的格式.db(不可查看) 存放路径 Astro布局布线库 LVS文件 文本文件,datasheet, handbook 可测性矢量压缩文件 标准单元版图 Cadence布局布线库 物理参数库 符号库 逻辑综合库 标准单元verilog模型 标准单元清单 库说明文件 共84页

  13. DC常见术语 design • module top(A,B,C,D,CLK,OUT1); • input A,B,C,D,CLK; • output OUT1; • …. • INV U2(.A(BUS0),.Z(INV0)); • …. • endmodule clock port net reference cell pin 共84页

  14. 主要内容 • 逻辑综合基本概念 • 逻辑综合工具--Design Compiler • 可测性设计基础 • 可测性设计工具 共84页

  15. 逻辑综合工具介绍 • Design Compiler, Synplify, ISE– XST, Precision. RTL • Design Compiler(DC)是业界流行的、功能强大的逻辑综合工具。用户只需输入满足要求的HDL描述和设计约束,就可能得到较为优化的门级综合网表。 • 初学者通过图形界面,然后熟悉DC的综合命令,采用批处理的方式提高综合的工作效率。 共84页

  16. DC启动 工作站启动方法: 创建启动软件目录 mkdir syn 进入到启动软件目录 cd syn source /opt/demo/synopsys.env design_vision & 共84页

  17. DC图形界面 命令窗口 共84页

  18. 逻辑综合流程 • 1.HDL准备 • 2.准备工艺库 • 3.读入HDL代码 • 4.添加约束 • 5.编译 • 6.查看报告 • 7.文件导出 共84页

  19. 1.HDL准备 • 设计文件 • 带IO的顶层文件。 共84页

  20. module top_pad (clk_pad, en_pad, data_in_pad, fsk_out_pad ); • input clk_pad,en_pad,data_in_pad; • output fsk_out_pad; • fsk_modulator fsk_modulator(clk_wire,en_wire,data_in_wire,fsk_out_wire); • PULLHS1 pull_high (.Z(high_wire)); • PULLHS0 pull_low (.Z(low_wire)); • //input • PBCD2RN data_in_block (.PAD(data_in_pad),.IE(high_wire), .OEN(high_wire), .REN(high_wire), .C(data_in_wire)); • PBCD2RN clk_block (.PAD(clk_pad),.IE(high_wire), .OEN(high_wire), .REN(high_wire), .C(clk_wire)); • PBCD2RN en_block (.PAD(en_pad),.IE(high_wire), .OEN(high_wire), .REN(high_wire), .C(en_wire)); • //output • PBCD2RN fsk_out_block (.PAD(fsk_out_pad),.IE(low_wire), .OEN(low_wire), .REN(high_wire), .I(fsk_out_wire)); • endmodule 查看库的handbook 共84页

  21. 2.准备工艺库1/4 • 工艺库要到相关Foundry代工厂网站下载,上传至服务器。 • 准备软件启动文件.synopsys_dc.setup .synopsys_dc.setup 定义工艺库的路径和其他用于逻辑综合的参数。 在启动软件的时候,DC按下列顺序读入启动文件的。 • 1) Synopsys安装目录下的启动文件: $synopsys/admin/setup • 2) 用户根目录下的启动文件; • 3) 软件 启动的目录下的启动文件; 共84页

  22. 2.准备工艺库2/4--启动文件.synopsys_dc.setup • set lib_path /home/smic/smic_40/SCC40NLL_HS_RVT_V0p1a • set smic_stdlib_path ${lib_path}/synopsys/1.1v/ • set smic_iolib_path /home/smic/smic_40/SP40NLLD2RN_3P3V_V0p2/syn/3p3v/ • set smic_stdsymlib_path ${lib_path}/symbol/ • set search_path "$search_path $smic_stdlib_path $smic_iolib_path \ $smic_stdsymlib_path " • set target_library [list scc40nll_hs_rvt_ff_v1p21_-40c_basic.db\ scc40nll_hs_rvt_ss_v0p99_125c_basic.db\ scc40nll_hs_rvt_tt_v1p1_25c_basic.db] • set link_library [list "*" SP40NLLD2RN_3P3V_V0p1_ff_V1p21_125C.db\ SP40NLLD2RN_3P3V_V0p1_ss_V0p99_-40C.db\ SP40NLLD2RN_3P3V_V0p1_tt_V1p10_25C.db\ scc40nll_hs_rvt_ff_v1p21_-40c_basic.db\ scc40nll_hs_rvt_ss_v0p99_125c_basic.db\ scc40nll_hs_rvt_tt_v1p1_25c_basic.db] set symbol_library [list SCC40NLL_HS_RVT_V0p1.sdb] 注意:\后面不要跟空格 共84页

  23. 2.准备工艺库3/4 • search_path定义库文件所在的搜索路径 • 目标库(targe_library):是DC在mapping时将设计映射到特定工艺所使用的库,就是使用目标库中的元件综合成设计的门级网表 • 连接库(link_library):是提供门级网表实例化的基本单元,也就是门级网表实例化的元件或单元都来自该库。连接库定义为标准单元的db格式的库文件加上IO pad db格式的库文件,加上ROM,RAM等宏单元库文件 • 符号库(symbol_library):是工艺库元件的图形符号表示,用来图形化显示生成的门级网表。 共84页

  24. 2.准备工艺库4/4 • 软件启动后 要先查看库添加成功与否 共84页

  25. 3.读入设计文件1/3 • DC提供了下面两种方式读入设计: 1.read命令 2.analyze&elaborate命令(先分析语法等,再构成具体逻辑) 共84页

  26. 3.读入设计文件2/3 read 方式下一次只能读入一个文件,要采取自下而上的方式。 共84页

  27. 3.读入设计文件3/3 • read -format verilog [list \ /home/liuxp/sim/rtl/fsk_modulator.v] • read -format verilog [list \ /home/liuxp/sim/rtl/fsk_modulator_pad.v] 共84页

  28. 4.添加约束 工作温度条件 共84页

  29. 4.添加约束 • set_operating_conditions -min_library scc40nll_hs_rvt_ff_v1p21_-40c_basic -min ff_v1p21_-40c -max_library scc40nll_hs_rvt_ss_v0p99_125c_basic -max ss_v0p99_125c -analysis_type bc_wc 共84页

  30. 4.设置负载 • 打开电路图,选中要设置负载的输出管脚。 • set_load 5 [all_outputs] 共84页

  31. 4.创建时钟 共84页

  32. 4.创建时钟 • create_clock -name clk -period 15 -waveform [list 0 7.5] clk_pad • set_clock_latency 1.0 [all_clocks] • set_clock_uncertainty -setup 1.0 clk • set_clock_uncertainty -hold 0.5 clk • set_clock_transition 1 [get_clocks clk] • set_dont_touch_network [list clk_pad] 共84页

  33. 5.编译 • compile 共84页

  34. 编译前后电路结构比较 编译前 编译后 共84页

  35. 6.Timing 报告 • report_timing -delay max • report_timing -delay min 共84页

  36. 7.文件导出 • top_pad.sv和top_pad.sdc提供给布局布线工具去做后端。 • 在启动软件的目录里面创建netlist目录 • mkdir netlist(在term里面输入) • write -format verilog -hierarchy -output ./netlist/top_pad.sv(在软件的命令栏输入) • 在启动软件的目录里面创建sdc目录 • mkdir sdc • write_sdc ./sdc/top_pad.sdc 共84页

  37. 需要导出的网表文件--.sv • module fsk_modulator ( clk, en, data_in, fsk_out ); • input clk, en, data_in; • output fsk_out; • wire N17, N18, N19, n1, n2, n3, n4, n5, n6, n7; • wire [1:0] count; • DQHSV1 \count_reg[0] ( .D(N17), .CK(clk), .Q(count[0]) ); • DQHSV1 \count_reg[1] ( .D(N18), .CK(clk), .Q(count[1]) ); • DQHSV1 \count_reg[2] ( .D(N19), .CK(clk), .Q(fsk_out) ); • XOR2HSV2 U4 ( .A1(n5), .A2(fsk_out), .Z(n4) ); • CLKNAND2HSV2 U5 ( .A1(count[0]), .A2(count[1]), .ZN(n5) ); • XNOR2HSV2 U7 ( .A1(count[0]), .A2(count[1]), .ZN(n6) ); • AOI211HSV2 U8 ( .A1(n7), .A2(fsk_out), .B(n2), .C(count[0]), .ZN(N17) ); • NOR2HSV3 U9 ( .A1(data_in), .A2(n1), .ZN(n7) ); • CLKNHSV4 U11 ( .I(en), .ZN(n2) ); • INOR3HSV1 U12 ( .A1(fsk_out), .B1(n1), .B2(data_in), .ZN(n3) ); • NOR3HSV2 U3 ( .A1(n2), .A2(n3), .A3(n4), .ZN(N19) ); • NOR3HSV2 U6 ( .A1(n2), .A2(n3), .A3(n6), .ZN(N18) ); • INHSV2 U10 ( .I(count[1]), .ZN(n1) ); • endmodule 共84页

  38. 需要导出的约束文件--.sdc • set_operating_conditions -analysis_type bc_wc -max ss_v0p99_125c -max_library \ • scc40nll_hs_rvt_ss_v0p99_125c_basic\ • -min ff_v1p21_-40c -min_library \ • scc40nll_hs_rvt_ff_v1p21_-40c_basic • create_clock [get_ports clk_pad] -name clk -period 15 -waveform {0 7.5} • set_clock_latency 1 [get_clocks clk] • set_clock_uncertainty -setup 1 [get_clocks clk] • set_clock_uncertainty -hold 0.5 [get_clocks clk] • set_clock_transition -rise 1 [get_clocks clk] • set_clock_transition -fall 1 [get_clocks clk] 共84页

  39. 主要内容 • 逻辑综合基本概念 • 逻辑综合工具--Design Compiler • 可测性设计基础 • 可测性设计工具 共84页

  40. 可测性基础 • 什么是可测性设计? • 物理瑕疵及故障模型 • 单一故障模型:SAF Model • 检测SAF的算法:D算法 • 可测性设计常用方法 • 测试矢量集 • 故障覆盖率 共84页

  41. 什么是可测性设计? • 可测性设计, Design For Test,即DFT 。 为了测试所设计IC有没有被正确的制造出来(测试半导体生产处理过程中的瑕疵,不是测试芯片设计的对错)。 DFT=增加芯片逻辑+生成测试矢量集(供测试设备用) 共84页

  42. 物理瑕疵和故障模型 1.开路和短路 2.金属线之间的电桥 3.漏源穿通 CMOS 反相器 中的物 理缺陷 共84页

  43. 物理故障 逻辑故障 封装引脚间的漏电或短路 单一固定故障 芯片焊接点到管脚连线断裂 延时故障 表面玷污、含湿气 短路或者开路故障 金属层迁移、应力、脱皮 … 金属层开路、短路 … … … 共84页

  44. 单一固定故障:stuck-at fault 固定1故障: U0的输入端A固定接在高 电平上,其值一直为“1” 固定0故障: U1的输出端Y固定接在 低电平上,其值一直为“0” 共84页

  45. D算法 D算法是20世纪60年代IBM提出测试SAF(stuck-at fault model,简称SAF模型)的,D算法在没有故障和 有故障的电路之间产生了逻辑的差异(Discrepan cy),D为Discrepancy缩写,D算法即为差异算法。 • 经典的D算法如下: 1、瞄准特定的SAF。 2、驱动故障节点为反向值。 3、把错误传送到输出端口。 4、记录测试向量,减掉已测试过的故障。 共84页

  46. D算法 • 第一步:是把某个节点作为测试目标,我们把U1的输出 端作为测试的目标,探测它有无SA0的故障。 共84页

  47. D算法 • 第二步:是通过驱动该节点为相反的值以激活 (activate)目标的故障。我们可以通过ATE在 输入端口输入逻辑“0”,如U1输出没有SA0的故 障,其逻辑“1”;如U1输出有SA0的故障,其逻 辑为“0”。我们可以通过测试其逻辑值来判断值 该节点是否有SA0的故障。 共84页

  48. D算法 • 第三步:是把故障效应传送到输出端口,ATE可以在输出端口观测到其逻辑值,有故障节点的逻辑值通过组合电路后可能会反向,但是差异还保留着。 共84页

  49. D算法 • 第四步:记录向量。成功的测试向量被记录在内存里,已测试的故障从目标故障的清单里减掉。 • 这个算法要重复多次,以测试设计中所有的故障。测试程序包含一系列的测试向量,这些测试向量用来测出芯片中所有可能的故障。测试程序可以用STIL格式来描述。 共84页

  50. DFT常用方法 • 功能点测试 需在每个测试点增加可控的输入和输出,I/O增加 • 扫描测试 结构化的DFT技术,全扫描和部分扫描 • 内建自测试 消除了对ATE的存储能力和频率的限制,更具发展潜力 共84页

More Related