加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • on chip clock的由來
    • 基本OCC結(jié)構(gòu)
    • Systemverilog code of the OCC
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

淺談 dft 之 OCC(on chip clock)

09/27 12:31
18.7萬
閱讀需 7 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

on chip clock的由來

在工藝節(jié)點在130nm以下的時候,很多情形下的物理缺陷都是由于延時來引起的。因此在對這種類型的chip做dft的時候,需要建立一個新的故障模型,業(yè)內(nèi)稱之為延時故障模型(time delay model)。解決的方法就是at-speed test,所謂的at-speed test就是讓芯片工作在自己高倍時鐘頻率上,這個頻率往往是要高過ATE的時鐘的。這樣對掃描模型的建立就提出了新的要求。

大家工作中接觸的一般的dft時鐘是不是頻率不高。

片上時鐘控制器 (On-chip Clock Controllers ,OCC) ,也稱為掃描時鐘控制器 (Scan Clock Controllers,SCC)。OCC 是插入 SOC 的邏輯,用于在 ATE(自動測試設(shè)備)上進(jìn)行回片測試期間控制時鐘。由于?at-speed test在capture mode下需要兩個時鐘脈沖,其頻率續(xù)等于func mode下的最高時鐘頻率,因此在沒有 OCC 的情況下,我們需要通過 I/O??pad提供這些at-speed?clock脈沖。但是這些I/O ?pad它們在可以支持的最大頻率方面存在限制;另一方面,OCC 使用內(nèi)部 PLL clock來生成時鐘脈沖進(jìn)行測試。在?stuck-at test期間,OCC 確保在capture階段僅生成一個時鐘脈沖。同樣,在at-speed test期間,OCC 確保在capture階段生成兩個時鐘脈沖,其頻率等于功能時鐘的頻率。

因此,在scan做的比較好的design中所有的test clock都通過 OCC 進(jìn)行通路控制, OCC 控制scan mode下的時鐘操作(在stuck-at test和at-speed test中)并繞過func mode下的功能時鐘。

基本OCC結(jié)構(gòu)

本文我們將討論一個非?;镜?OCC 設(shè)計,其唯一目的是演示它是如何工作的。與此處討論的 OCC 相比,行業(yè)標(biāo)準(zhǔn) OCC 更先進(jìn),更能抵御時鐘毛刺。

圖1??基本片上時鐘控制器結(jié)構(gòu)示意圖(具有 n 位移位寄存器

當(dāng)電路處于func mode(Test Mode = 0)時,OCC 會傳播功能時鐘(參見圖 1)。但在shift階段(Shift Enable = 1),scan clock在 OCC 的輸出端propagate。在capture階段(Shift Enable = 0),移位寄存器開始shift“1”并啟用Clock Gate,以根據(jù)test type來允許單脈沖或雙脈沖。OCC 在stuck-at test(At-speed Mode = 0)中生成一個時鐘脈沖,在at-speed test(At-speed Mode?= 1)中生成兩個時鐘脈沖。

此 OCC(具有 5 位移位寄存器)在at-speed test的行為如圖 2 所示。兩個捕獲脈沖出現(xiàn)在功能時鐘的 5 個正沿之后(因為我們使用的是 5 位移位寄存器) .

注意:一旦 Shift Enable 置為低電平,n 位移位寄存器根據(jù)功能時鐘的上升沿數(shù)量決定延遲,之后功能時鐘在 OCC 的輸出端propagate。

圖 2??圖 1 中所示 OCC 結(jié)構(gòu)的仿真波形(具有 5 位移位寄存器)

Systemverilog code of the OCC

module occ
#(
parameter SHIFT_REG_BITS = 5
)
(
input logic test_mode,
input logic atspeed_mode,
input logic shift_en,
input logic scan_clk,
input logic func_clk,
output logic occ_out_clk
)
logic cg_en;
logic cg_out_clk;
logic sync_flop;
logic [SHIFT_REG_BITS-1:0]shift_reg;

always @(func_clk or cg_en) begin
if (cg_en == 1)
cg_out_clk = func_clk;
else
cg_out_clk = 0;
end

always_ff @(posedge scan_clk) begin
sync_flop <= ~shift_en;
end

always_ff @(posedge func_clk) begin
shift_reg <= shift_reg << 1;
shift_reg[0] <= sync_flop;
end

assign occ_out_clk = test_mode ? (shift_en ? scan_clk : cg_out_clk) : func_clk;

assign cg_en = atspeed_mode ? (~shift_reg[SHIFT_REG_BITS-1] & shift_reg[SHIFT_REG_BITS-3]) : (~shift_reg[SHIFT_REG_BITS-1] & shift_reg[SHIFT_REG_BITS-2]);

endmodule

END

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

前華為海思工程師;與非網(wǎng)2022年度影響力創(chuàng)作者;IC技術(shù)圈成員。

微信公眾號