張家訓
(深圳市國微電子有限公司,廣東 深圳 518057)
NanoTime在65nm高速SRAM IP設計中的應用
張家訓
(深圳市國微電子有限公司,廣東 深圳 518057)
隨著集成電路制造工藝發展到90nm以下,納米級效應對時序的影響越來越顯著。對于全定制數字電路,精確評估內部信號完整性(SI)尤為重要。高速SRAM IP采用65nm工藝全定制設計,我們選擇Synopsys公司的NanoTime來分析信號完整性。本文詳細介紹了NanoTime靜態時序分析、SI分析、時序模型提取在SRAM IP設計中的應用。
NanoTime;靜態時序分析;SI分析;時序模型提取
NanoTime是Synopsys公司的晶體管級靜態時序分析工具。它集對晶體管級全定制模塊電路完整的靜態時序分析(包括SI分析)和提取時序模型等強大功能于一身。本文采用版本是J-2014.12。
2.1 NanoTime靜態時序分析基本流程
NanoTime支持兩種分析流程,Flatten Analysis flow和Hierarchical Analysis flow。前者相對耗時較多,比較適合用于較小的底層模塊的時序分析和lib生成。當我們需要對一個大的模擬IP進行數模混合集成時序分析時,建議采用HierarchicalAnalysis flow。分析過程分為以下幾個主要步驟:
2.1.1 網表讀入
(1)首先設置NanoTime的網表讀入路徑,在該路徑下需要存放設計網表、底層模塊的.db文件,晶體管的model文件等,并使用命令讀入這些文件,例如
set search_path{./designs./basic_blocks}
set library_path{./spice_models}
read_library basic_blocks.db
register_netlist–format spice{sram4K16_cmax.sp}
read_spice_model–name tech_tt./designs/tech.sp
(2)讀入網表后,在link_design時,NanoTime會自動根據網表中的模塊名稱,用底層模塊的.db時序模型替代該模塊的Spice網表。
2.1.2 時鐘傳播和拓撲結構識別
(1)在該階段需要指定時鐘類型以及任何NanoTime不能自動識別的拓撲結構。該階段以check_topology命令結束,該命令對定義的時鐘信號進行傳播并識別電路包含的拓撲結構。
(2)NanoTime擁有強大的邏輯電路拓撲識別能力,可自動識別諸如:inverter、mux、xor、nand、nor、clockgate、turnoff、cross_coupled、latch、precharge、pulldown、pullup、feedback、weak_pullup等大多數常見的電路結構。
(3)對于部分復雜的電路如latch、ram、flip-flop,可以借助某些命令加以識別,例如 mark_latch、mark_flip_flop、mark_register_file等。
(4)在識別這些邏輯電路并設置了時序約束和工作條件后,NanoTime會提取所有的數據和時鐘路徑的延遲信息(trace path)并會根據設置的時序約束(constrain)對內部的時序電路,如latch、DFF等進行setup/hold,recovery/remove等檢查。
2.1.3 時序約束指定
在此階段需要指定輸入/輸出時序約束、時序期望、運行條件以及讀入寄生參數數據。該階段以check_design命令結束,該命令檢查時序的要求和一致性。
2.1.4 時序路徑分析
在此階段,trace_paths命令用來運行正常的時序分析,extract_model命令用來創建時序模型,characterize_context命令用來提取設計的特征內容。
2.1.5 分析報告輸出
(1)在此階段報告時序分析的結果,用戶可以使用re-port_paths/report_constraint等命令產生結果報告文件。
(2)在進行timing library提取前,我們要首先對時序分析的結果進行檢查,保證IP內部的時序是完全覆蓋的,可以使用下面的命令報告時序分析結果:當有路徑的slack為正時說明內部的時序是足夠的。
report_paths-max-max_paths 10
report_paths-min-max_paths 10
report_paths-max-clock_only
(3)我們可以通過write_spice命令將某條時序路徑的Spice網表提取出來,調用HSPICE進行動態仿真,對比靜態時序分析和動態仿真的結果可以對NanoTime時序分析的精度有更深刻的了解。
2.2 全定制4K×16bit IP靜態時序分析
由于無法識別SRAM IP中的靈敏放大器電路,所以不能精確分析出與靈敏放大器相關的時序路徑。該項目進行NanoTime靜態時序分析有以下三個主要目的:
(1)電路CDL網表分析結果與版圖C+CC寄生參數網表分析結果對比;
(2)檢查時序均衡性,如各地址到cell單元的使能端時序是否均衡;
(3)檢查時序路徑上是否有延時比較大的線或單元。下面列出部分NanoTime時序分析報告。
圖1是電路CDL網表的地址到靈敏放大器使能端的時序分析結果:

圖1 電路CDL網表的地址到靈敏放大器使能端的時序分析結果

圖2 版圖帶C+CC寄生參數網表與上面電路CDL對應的時序分析結果
圖2 是版圖帶C+CC寄生參數網表與上面電路CDL對應的時序分析結果,對比可以看到,版圖帶寄生參數網表的時序比電路網表時序慢了30%左右,模擬人員用Nanosim仿真SRAM IP結果顯示,版圖帶寄生參數網表的時序(5.55ns)比電路網表時序(4.23ns)也慢了30%左右。
圖3是單條路徑的時序分析,從報告中看出沒有大的延時單元。

圖3 單條路徑的時序分析
3.1 NanoTime噪聲分析基本流程
對于65nm工藝的設計而言,噪聲是一個不得不考慮的嚴重問題。而使用HSPICE之類的工具來分析大規模電路中的耦合噪聲影響是不現實的。NanoTime Ultra版提供了分析耦合噪聲對時序影響的強大功能。在進行NanoTime SI分析之前,需要在抽取寄生參數文件時保留耦合電容的信息。在進行耦合噪聲對信號影響的分析時,NanoTime綜合評估入侵線和受侵線之間的耦合電容、兩者的驅動強度以及互相施加影響的窗口重疊程度等因素,然后經過多次的反復迭代分析,保證最后計算出耦合噪聲對受侵線的影響是最悲觀的情況。噪聲分析包括對信號延時和對信號串擾大小的分析。
噪聲分析需要通過set si_enable_analysis true打開噪聲分析功能,通過set si_xtalk_exit_on_max_iteration_count 3設置迭代分析的次數。
(1)延時影響分析
通過report_path–path_type full–nets報出時序路徑上串擾帶來的延時。
(2)串擾影響分析
通過update_noise打開串擾噪聲幅度分析功能,report_noise命令可以報出噪聲幅值。
噪聲類型如圖4所示,分為above low、below low、above high、below high四種。

圖4 噪聲類型
3.2 全定制4K×16bit IP噪聲分析
下面是NanoTime進行噪聲分析的部分結果,可以看出噪聲對信號延時的影響小于0.08ns,噪聲幅度都在230mV以下,并且最大噪聲不在靈敏放大器電路上。
(1)對信號延時影響分析

圖5 信號延時影響
(2)AH-Above high類型串擾

圖6 AH-Above high類型串擾
(3)AL-Above low類型串擾

圖7 AL-Above low類型串擾
(4)BH-Below high類型串擾

圖8 BH-Below high類型串擾
(5)BL-Below low類型串擾

圖9 BL-Below low類型串擾
4.1 NanoTime時序模型提取基本流程
NanoTime的Hierarchical Analysis flow可以跟Prime-Time無縫鏈接。Top-down(PrimeTime SDC Constraints to NanoTime)和Bottom-up(NanoTime Export Model to Prime-Time)相結合的流程實現了定制IP在芯片中的精確集成。NanoTime通過自動生成符合Liberty語法規范格式的timing library文件,IP設計用戶可以根據應用實際情況設置輸入端口信號transition和輸出端口負載。根據設置值在lib文件中查表即可獲取該模塊內部準確的時序信息以完成IP集成后的時序檢查。
timing library的提取是在完成靜態時序分析基礎上進行的。
(1)timing library的提取步驟其實非常方便,示例腳本如下:
reset_design–path
時序路徑分解:
set_model_input_transition_index– nomina 0.1{0.05 0.1 0.3 0.5}{A,B,C}
輸入端口transition列表設置:
set_model_load_indexes{0.05 0.1 0.5 1.0}{D,E,F}
輸出端口load列表設置:
extract_model–name analog_top–bus–debug_paths
(2)執行完上述命令就可以完成Timing library提取。
4.2 全定制IO時序模型提取
高速SRAM項目采用的高速IO是全定制設計的電路,我們需要對IO電路進行時序模型提取,包括輸入PAD、輸入上拉PAD、輸入下拉PAD、雙向PAD四種IO的五個Corner時序模型。時序模型提供給前端PrimeTime和后端Encounter進行時序分析。
下面是提取的輸入PAD的部分時序描述:
pin("IN"){
direction:output;
max_capacitance:0.819877;
min_capacitance:0.023877;
capacitance:0.019877;
rise_capacitance_range(0.019877,0.019877);
fall_capacitance_range(0.019877,0.019877);
timing(){
min_delay_flag:true;
related_pin:"PAD_I";
timing_type:combinational;
timing_sense:positive_unate;
/*comment:block combinational(combinational), path 5,path 8;*/
cell_rise(f_itrans_ocap){
index_1("0.112000,1.937600,3.920000, 4.640000,6.400000");
index_2("0.023877,0.127877,0.221877, 0.431877,0.819877");
values ("0.414613,0.434118,0.445821, 0.472251,0.521945", "0.500900, 0.520406, 0.532109, 0.558539,0.608233", "0.466224, 0.485730, 0.497432, 0.523863,0.573556", "0.443048, 0.462554, 0.474256, 0.500687,0.550380", "0.375176, 0.394681, 0.406384, 0.432814,0.482508");
}
rise_transition(f_itrans_ocap){
index_1("0.112000,1.937600,3.920000, 4.640000,6.400000");
index_2("0.023877,0.127877,0.221877, 0.431877,0.819877"); values("0.020502,0.045251,0.069034, 0.125630,0.235773", "0.020502, 0.045251, 0.069034, 0.125630,0.235773", "0.020502, 0.045251, 0.069034, 0.125630,0.235773", "0.020502, 0.045251, 0.069034, 0.125630,0.235773", "0.020502, 0.045251, 0.069034, 0.125630,0.235773");
}
cell_fall(f_itrans_ocap){
index_1("0.112000,1.937600,3.920000, 4.640000,6.400000");
index_2("0.023877,0.127877,0.221877, 0.431877,0.819877");
values("0.343788,0.358353,0.369156, 0.394108,0.440498", "0.677281, 0.692083, 0.702910, 0.727849,0.774232", "0.914579, 0.929382, 0.940208, 0.965147,1.011530", "0.995558, 1.010596, 1.021447, 1.046372,1.092749", "1.181865, 1.197029, 1.207892, 1.232810,1.279184");
}
fall_transition(f_itrans_ocap){
index_1("0.112000,1.937600,3.920000, 4.640000,6.400000");
index_2("0.023877,0.127877,0.221877, 0.431877,0.819877");
values("0.014476,0.034802,0.056102, 0.106900,0.203564", "0.014717, 0.035113, 0.056344, 0.107025,0.203577", "0.014717, 0.035113, 0.056344, 0.107025,0.203577", "0.014957, 0.035423, 0.056584,0.107149,0.203591", "0.015085, 0.035588, 0.056712, 0.107215,0.203598");
}
}/*end of arc PAD_I_IN_una_min*/
}/*end of pin IN*/
在65nm高速SRAM項目中,NanoTime的時序分析和SI分析功能對全定制電路和版圖設計有重要指導作用,Nano-Time的時序模型提取功能節約了電路時序建模時間。
[1]Lin Wei,Yao Gang,Ji Bingwu,Zhao Tanfu,Transistor Level STA and SI Analysis with NanoTime on Custom Digital Blocks,SNUG 2009.
[2]Synopsys,NanoTime and NanoTime Ultra User Guide,Version 1.0,August 2009.
[3]Synopsys,PrimeTime User Guide,Version B-2008.06,June 2008.
TheApplication of NanoTime in High Speed SRAM IP Designing with 65nm Process
Zhang Jiaxun
(Shenzhen State Microelectronics Co.,Ltd.,Shenzhen 518057,Guangdong)
As the IC process below 90nm,nanometer effect is more evident.For custom digital logic,how to analyze Signal Integrity(SI)is very important.The high speed SRAM IP is designed by 65nm process.Our design team used NanoTime for signal integrity checking.This paper introduces NanoTime application of static timing analysis,timing model generation and SI analysis in the high speed SRAM IP design.
NanoTime;static timing analysis;SI analysis;timing model generation
TP333
A
1008-6609(2017)07-0051-05
張家訓(1982-),男,山東煙臺人,碩士研究生,工程師,研究方向為集成電路設計。