DFT是確保芯片在制造過程中具有可測試性的一種技術(shù)。DFT友好的ECO是指在進(jìn)行ECO時(shí), 不會破壞芯片的DFT功能或降低DFT覆蓋率的設(shè)計(jì)方法。DFT不友好的ECO會對芯片的測試和調(diào)試帶來很大的困難,可能導(dǎo)致芯片測試效率降低甚至無法測試。
因此,在進(jìn)行功能性ECO時(shí),需要特別注意DFT功能的保護(hù)。一般來說,可以將DFT邏輯設(shè)置為非活動(dòng)模式,以防止任何功能性更改對其產(chǎn)生影響。但是,在進(jìn)行ECO時(shí)需要特別注意,涉及DFT路徑的ECO是否會對DFT邏輯產(chǎn)生影響。如果ECO涉及DFT路徑,可能需要重新評估ECO的影響,以確保DFT邏輯不受影響。
此外,DFT友好的ECO應(yīng)確保掃描鏈完整,時(shí)鐘和復(fù)位信號可控。這是為了確保芯片在測試和調(diào)試過程中可以正確地工作。因此,在進(jìn)行ECO時(shí),需要注意這些方面的設(shè)計(jì)和實(shí)現(xiàn)。如果一個(gè)功能ECO破壞了DFT功能或降低了DFT覆蓋率,則稱其為DFT不友好的ECO。而DFT友好的ECO應(yīng)確保DFT功能不受影響,掃描鏈完整,時(shí)鐘和復(fù)位信號可控。
一、在相鄰寄存器中插入ECO
其中一個(gè)例子是在部分掃描鏈中在相鄰寄存器上執(zhí)行ECO插入,例如從A_REG到D_REG所示的鏈路,其中B_REG和C_REG形成相鄰路徑。在這種情況下,ECO之前, C_REG可以是非掃描寄存器, 而DFT是完好的。
圖1
如果ECO在從A_REG到D_REG的掃描鏈中的B_REG和C_REG之間插入組合邏輯,并且C_REG是非掃描寄存器,則掃描鏈將被打破,如圖 2 所示。Conformal ECO會通過在此類ECO中直接插入后續(xù)路徑中的邏輯,而不考慮保持掃描鏈的需要,從而破壞DFT。
圖2
為了解決ECO引起的掃描鏈斷裂問題,GOF的解決方案涉及將C_REG的類型從非掃描寄存器更改為掃描寄存器,并根據(jù)圖 3 所示的方式正確連接掃描鏈。
圖3
二、選擇適合的DFT信號
為確保在功能ECO期間DFT邏輯保持不活動(dòng)狀態(tài),需要將DFT_MODE信號設(shè)置為零。然而,有些信號可能是等效的,但不適合用于DFT,這可能會導(dǎo)致DFT失效。例如,在圖 4 中,一個(gè)ECO必須選擇mux_in或mux_out信號來驅(qū)動(dòng)寄存器的復(fù)位引腳。雖然這兩個(gè)信號是等效的,但是Conformal ECO選擇了mux_in,這破壞了DFT。相比之下,GOF可以識別MUX并選擇mux_out作為復(fù)位引腳的正確信號,從而保持DFT邏輯的完整性。
圖4
三、可重置和可設(shè)置型寄存器交換
在執(zhí)行功能性網(wǎng)表 ECO 時(shí),常常需要在可重置和可設(shè)置型寄存器之間進(jìn)行交換。這個(gè)操作被認(rèn)為是一種簡單和直接的方式,只需交換相同的寄存器實(shí)例。然而,在圖 5 中,Cadence Conformal 引入了一種冗余的方法,使用了一個(gè)新的可設(shè)置型寄存器 reg1_1,而不是直接將原始的寄存器轉(zhuǎn)換為可設(shè)置型。新的寄存器 reg1_1 驅(qū)動(dòng)原始的功能電路,而舊的寄存器 reg1 驅(qū)動(dòng)掃描鏈扇出 reg2。這種方法存在兩個(gè)主要問題。
首先,新的寄存器 reg1_1 沒有包含在掃描鏈中。在存在許多這樣的重置/設(shè)置型寄存器交換的情況下(約占所有寄存器數(shù)量的 0.2%),將會導(dǎo)致 ATPG at-speed覆蓋率約 0.2% 的損失。其次,Conformal LEC 未將新的寄存器 reg1_1 視為寄存器 reg1 的等效關(guān)鍵點(diǎn),在 ECO 后的等效性報(bào)告中會出現(xiàn)大量的非等效點(diǎn)。
圖5
圖 6 所示的ECO中,GOF采用了一種直接的方法,將寄存器類型從可復(fù)位更改為可設(shè)置,從而保留了掃描鏈并確保DFT覆蓋率不受影響。
圖6
Cadence Conformal ECO中常見的一個(gè)錯(cuò)誤是 "Error: Duplicate fanout branch # for net 'IN#'"。
這個(gè)問題通常出現(xiàn)在一個(gè)場景中,其中一個(gè)寄存器(REG1)的Q輸出連接到父級,而相同的輸出也連接到另一個(gè)寄存器(REG2)的掃描輸入(SI)引腳。當(dāng)對REG1執(zhí)行ECO(例如將其類型更改為可設(shè)置寄存器)時(shí),可能會導(dǎo)致Conformal ECO出現(xiàn)錯(cuò)誤,從而可能導(dǎo)致工具停止操作。
圖7
四、將新的寄存器插入掃描鏈中
ECO中插入的新寄存器應(yīng)該被縫合到現(xiàn)有的掃描鏈中,以避免DFT覆蓋率的損失。從工業(yè)數(shù)據(jù)來看,在具有100K個(gè)寄存器的設(shè)計(jì)中,100個(gè)新的非掃描寄存器可能會導(dǎo)致超過0.1%的DFT覆蓋率損失。對于像汽車IC這樣的高可靠性芯片,DFT覆蓋率的損失是不可接受的。因此,如果在功能ECO中有新的寄存器,則應(yīng)重新設(shè)計(jì)掃描鏈以包括新的寄存器。
圖8
GOF提供了幾種將新寄存器插入掃描鏈的方法。可以使用API "stitch_scan_chain" 自動(dòng)縫合掃描鏈來插入新寄存器。還可以通過使用多個(gè)網(wǎng)表處理API來手動(dòng)執(zhí)行。
4.1 自動(dòng)模式將寄存器插入本地模塊的掃描鏈中
可以使用自動(dòng)方法將寄存器集成到本地模塊的掃描鏈中。在以下示例腳本中,假設(shè)'fix_design'命令添加了名為'state_new_reg_0'到'state_new_reg_7'的8個(gè)新寄存器。要將這些寄存器集成到本地模塊的掃描鏈中,請執(zhí)行以下步驟:
# API stitch_scan_chain without any argument to insert new flops in the local modules stitch_scan_chain();4.2 自動(dòng)模式在一個(gè)寄存器之前插入新的寄存器
GOF提供了一種自動(dòng)方法,可以在指定寄存器實(shí)例之前插入新的寄存器。用戶可以標(biāo)識一個(gè)寄存器實(shí)例的名稱,然后GOF將在該實(shí)例之前將所有新寄存器插入到掃描鏈中。
例如,假設(shè)需要將所有新寄存器插入到名稱為'u_pixel_ctrl/pulse_reg'的寄存器實(shí)例之前,請執(zhí)行以下步驟:
# API stitch_scan_chain with -to option stitch_scan_chain('-to', 'u_pixel_ctrl/pulse_reg');4.3 手動(dòng)模式連接所有新寄存器
掃描鏈可以通過ECO APIs手動(dòng)重新連接,并且可以創(chuàng)建新的掃描輸入/輸出端口。
# GofCall ECO script, run_manual_stitch_scan_chain_example.pl use strict; undo_eco; # Discard previous ECO operations setup_eco("eco_manual_stitch_scan_chain_example");# Setup ECO name read_library("art.5nm.lib"); # 讀lib庫 read_svf("-ref", "reference.svf.txt"); # 可選讀入svf read_svf("-imp","implementation.svf.txt");#可選讀入svf read_design("-ref","reference.gv"); #讀參考網(wǎng)表 read_design("-imp","implementation.gv"); #讀實(shí)現(xiàn)網(wǎng)表,ECO目標(biāo) set_top("topmod"); #設(shè)置頂層名字 set_ignore_output("scan_out*"); set_pin_constant("scan_enable", 0); set_pin_constant("scan_mode", 0); fix_design; save_session("current_eco_name"); # Save a session for future restoration set_error_out(0); # Don't exit if finds error my @flops = get_cells("-hier", "-nonscan"); # Find all new flops that are not in scan chain yet # @flops can be defined by reading a list file if(scalar(@flops)){ # If there are new flops, start the work new_port("so1", "-output"); # New a scan out port so1 new_port("si1", "-input"); # New a scan in port si1 my $cnt = 0; my $now_si; foreach my $flop (@flops){ $cnt++; if(is_scan_flop($flop)==0){ my $flop_name = get_ref($flop); my $scanflop = get_scan_flop($flop_name); # If the flop is not scan type, change to scan type flop change_gate($flop, $scanflop); } if($cnt==1){ change_port("so1", "$flop/Q"); # The first flop drives the new scan out port }else{ change_pin($now_si, "$flop/Q"); } $now_si = "$flop/SI"; change_pin("$flop/SE", "te"); # All scan enable pin is connected to scan enable signal } change_pin($now_si, "si1"); # The last flop has the new scan in port driving SI pin } write_verilog("eco_verilog.v");# Write out ECO result in Verilog exit;
五、結(jié)論
總之,DFT友好的ECO是電子設(shè)計(jì)自動(dòng)化(EDA)流程中非常理想的解決方案,因?yàn)樗葌鹘y(tǒng)方法提供了多種好處。其中最顯著的優(yōu)點(diǎn)之一是能夠確保生成的設(shè)計(jì)是DFT友好的,這簡化了測試和驗(yàn)證過程。在現(xiàn)代復(fù)雜集成電路的時(shí)代,確保DFT兼容性對于有效和可靠的測試至關(guān)重要。
DFT友好的ECO的一個(gè)關(guān)鍵特征是它能夠在優(yōu)化改變設(shè)計(jì)功能的情況下不影響可測試性。這是通過考慮設(shè)計(jì)的特定DFT要求的先進(jìn)算法和方法實(shí)現(xiàn)的。相比之下,傳統(tǒng)的EDA流程可能不會為DFT進(jìn)行優(yōu)化,從而導(dǎo)致測試和驗(yàn)證方面的重大挑戰(zhàn)。
此外,使用DFT友好的ECO可以在市場上提供競爭優(yōu)勢。這是因?yàn)樗梢詫?shí)現(xiàn)更快的上市時(shí)間,減少設(shè)計(jì)迭代,并提高整體產(chǎn)品質(zhì)量。相比之下,沒有使用DFT友好方法的競爭對手可能難以實(shí)現(xiàn)類似的結(jié)果,導(dǎo)致延遲、成本增加和產(chǎn)品競爭力降低。
總的來說,DFT友好的ECO是現(xiàn)代EDA流程的一種非常有效的解決方案,比傳統(tǒng)方法提供了重要的優(yōu)勢。它優(yōu)化設(shè)計(jì)以實(shí)現(xiàn)DFT兼容性,可以實(shí)現(xiàn)更快的上市時(shí)間、減少設(shè)計(jì)迭代并提高產(chǎn)品質(zhì)量,從而在市場上提供競爭優(yōu)勢。
審核編輯:劉清
-
寄存器
+關(guān)注
關(guān)注
31文章
5336瀏覽量
120230 -
EDA工具
+關(guān)注
關(guān)注
4文章
267瀏覽量
31785 -
DFT
+關(guān)注
關(guān)注
2文章
231瀏覽量
22712 -
ECO
+關(guān)注
關(guān)注
0文章
52瀏覽量
14885 -
時(shí)鐘信號
+關(guān)注
關(guān)注
4文章
448瀏覽量
28542
原文標(biāo)題:什么是DFT友好的功能ECO?
文章出處:【微信號:ExASIC,微信公眾號:ExASIC】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論