Mentor-dft 学习笔记 day12-Multi-Mode ChainsScan Insertion Flows
1.如果EDT IP未使用一個bypass構建,則構建bypass(單鏈bypass/多鏈bypass)。
2.為EDT模式創建多個配置。
3.如果使用分層DFT,則需要對包裹的核心進行內部和外部模式掃描鏈。
一個簡單的例子。該設計包括26個紫色和綠色掃描單元類型的掃描元件。在模式A中,使用整個完整的掃描單元群,并將其連接到9的鏈長度以形成3條鏈。在模式B中,只有綠色類型的掃描元件用于在圖5-11中,模式a使用黑色si1、si2和si3作為掃描鏈輸入,其相應的掃描輸出端口為so1、so2和so3。在模式B中,只有2條鏈,綠色端口標記為so1和so2。
Multi-Mode Gating Logic 一旦完成了每個模式的掃描元件分布,就可以確定每個模式中的掃描路徑發散的位置。這些掃描路徑位置稱為拐點。當給定掃描元件存在多個掃描路徑源時,識別拐點。在第圖5-11中,這些是添加多路復用器的點。 Multi-Mode Scan Insertion 這種新的掃描插入基礎結構的主要優點之一是能夠分配掃描元素并為多個模式分配掃描鏈。當指定了多個模式時,掃描插入工具將自動插入能夠根據所選模式重新配置掃描鏈的選通邏輯。如果使用多模式,則您可以查看掃描鏈在所有不同模式下的縫合方式,并且可以更改特定和/或所有模式的規格。你也有能力分析,看看掃描鏈是如何平衡的。在下面的示例中,添加了前兩個模式mode1和mode2。在模式1中,chain_length指定為200,因此工具將平衡掃描鏈,每個掃描鏈包含大約200個觸發器。在模式2中,觸發器的總數被劃分為20個鏈。
Example: >add_scan_mode mode1 -type unwrapped \ -single_clock_domain_chains on \ -single_clock_edge_chains on -chain_length 200 >add_scan_mode mode2 -type unwrapped \ -chain_count 20 # Before scan gets inserted, you can analyze the different scan modes and scan chains >analyze_scan_chains >report_scan_chains 這里的report_scan_chains命令告訴在模式1中將有多少個鏈,以及在模式2的20個掃描鏈中的每個掃描鏈中將有多少觸發器。如果決定一個鏈中有太多觸發器,并且希望查看如果分配了30個鏈,那么在一個鏈中將識別出多少觸發器,使用修改的約束重新指定,然后analyze_scan_chains和report_scan_chain。 >delete_scan_modes mode2 >add_scan_mode mode2 -type unwrapped -chain_count 30 >analyze_scan_chains >report_scan_chains 現在,如果確定每條鏈的觸發器數是可以接受的,那么使用insert_test_logic縫合掃描鏈。 >insert_test_logic -write_in_tsdb On insert_test_logic-write_in_tsdb On命令將設計和TCD文件寫入tsdb_outdir目錄結構,以便atpg生成可以使用它。 Chain Port Sharing 可以在不同模式的鏈之間共享掃描輸入和掃描輸出連接。額外的選通邏輯插入到掃描輸出側(在鏈的最后一個元素之后),以僅在其活動模式期間使用2x1 MUX(2-mode共享)或AND/or邏輯(多模式共享)啟用每條鏈路徑。可以共享現有端口/管腳或生成的端口。? Existing Ports/Pins 通過在add_scan_mode或create_scan_chain_family命令。例如,以下命令將導致端口MY_SCAN_IN和MY_SSCAN_OUT在Core和Wrapper模式之間共享。core和wrapper是類型類的內置開關。 > add_scan_mode Core \ -include_elements [get_scan_elements -class core] \ -si_connections MY_SCAN_IN \ -so_connections MY_SCAN_OUT \ > add_scan_mode Wrapper \ -include_elements [get_scan_elements -class wrapper] \ -si_connections MY_SCAN_IN \ -so_connections MY_SCAN_OUT Generated Ports 通過使用-si_port_format和-so_port_format選項指定忽略%s模式名稱字段的相同格式規則,可以在模式之間共享該工具生成的端口。例如,以下命令將導致端口EXT_SCAN_IN1到EXT_SCAN _IN10和EXT_SCAN-OUT1到EXT_SCAN_OUT10在模式Basic和Wrapper之間共享: > create_scan_chain_family ext_chains -chain_count 10 \ -si_port_format “EXT_SCAN_IN%d” \ -so_port_format “EXT_SCAN_OUT%d” \ -include_elements [get_scan_elements -class wrapper] > add_scan_mode Basic -chain_count 100 \ -include_elements [get_scan_elements] \ -include_chain_families { ext_chains } > add_scan_mode Wrapper -include_chain_families { ext_chains } Population Control 可以明確指定每個掃描模式中考慮分配的掃描單元集。可以使用add_scan_mode選項“-include_elements”和/或“-incrude_chain_families”完成。只有狀態為“可用”的scan_element對象才能添加到population.因此,可能需要將“activechildscanmode”屬性設置為特定的子模式值,以便將其相應的現有分段包括在總體中。
? Default Population 為方便主流用戶,如果add_scan_mode命令沒有調用“-include_…”選項,那么該命令將對此時定義的每個對象隱式調用,即: > add_scan_mode Implicit_population really maps to: > add_scan_mode Implicit_population \ -include_chain_families [get_scan_chain_families] \ -include_elements [get_scan_elements] 這可能不一定是模式所需的population,因此在使用此功能時應謹慎。 Population prioritization 如果同一掃描元素包含在多個“-include_…”選項中,則以下優先級規則規定了如何使用它:
1.-include_chain_families
2.-include_elements
Scan_chain_family包含和-include_elements選項包含的掃描元素將分配給Scan_chain_family對象指定的鏈。應該注意的是,現有鏈會自動從考慮分配的總體中排除,因此永遠不會連接到其他掃描元素。
Scan Insertion Flow Steps
當創建新的掃描鏈時,新的掃描插入能力提供了對掃描元素分組/排序的更好控制。flow有三個主要步驟。
首先,在設置期間,在加載設計和Tessent Cell library(也接受ATPG庫文件)的同時,還必須描述任何現有掃描段(也稱為子鏈)和現有掃描鏈(來自先前掃描插入過程)。add_scan_segments和add_scan_chains命令可分別用于此目的。?
第二,在系統模式從SETUP轉換到ANSYSTEM期間,該工具將運行DRC并從手頭的設計中提取所有可用的庫單元/葉單元掃描元素。此時,所有現有的掃描元素都已定義,可以使用get_scan_elements命令進行自檢。
第三,在分析過程中,可能會根據一些命令創建虛擬掃描元素;例如,如果請求插入用包裝單元。同樣,可以使用get_scan_elements命令對所有創建的虛擬掃描元素進行自檢。
Controlling Scan Insertion
命令set_scan_insertion_options允許控制一些影響掃描插入的參數。例如,如果希望所有鏈的最大鏈長度為1024,請使用以下命令:
> set_scan_insertion_options -chain_length 1024
當使用add_scan_mode命令添加掃描模式時,您可以通過簡單地用新值重新指定它們來覆蓋大多數常規掃描插入設置。該命令基本上獲取活動掃描插入設置的簡單描述,并覆蓋任何add_scan_mode中明確指定的選項。如果要為模式ext_mode創建具有長度為512的較短鏈的外部模式,可以按如下操作:
> add_scan_mode ext_mode –type external -chain_length 512
或者,如果想在full_mode中創建一個沒有長度限制的單個OCC鏈,對于其余的掃描元素填充,該鏈長度為256,您可以按如下方式操作:
> create_scan_chain_family occ \ -chain_count 1 \ -chain_length unlimited \ // overrides to no length limit! -include_elements [get_scan_elements -filter is_occ] > add_scan_mode full_mode -chain_length 256 \ -include_elements [get_scan_elements] \ -include_chain_families occScan Insertion for Unwrapped Core
本節介紹未包裹核心的掃描插入。對于unwrapped的核心,沒有創建包裝單元,因此掃描插入流程使用之前描述的通用掃描插入步驟。
在此掃描插入流程中,首先識別設計中存在的掃描元素。接下來,可以創建scan_chain_family對象,指示工具如何分配特定的掃描元素子總體。在此階段,定義一個或多個掃描模式。每個掃描模式的填充是通過包括scan_element和scan_chain_family對象來定義的。如果您沒有明確添加至少一個掃描模式,該工具將推斷一個默認模式,其中包括每個scan_element和scan_chain_family對象。一旦讀入了預掃描縫合的網表以及所需的庫,就可以詳細設計(使用set_current_design)。如果已經使用DftSpecification插入了EDT IP,并且使用了DFT信號,則在掃描插入期間,這些信號在此處可用,并且工具知道并使用它們。例如,如果掃描啟用被聲明為DFTSignal,則無需再次聲明掃描啟用。該工具知道哪個端口被聲明為scan enable,并在不使用set_scan_enable屬性的情況下使用它。?如果已插入EDT IP,并且DFT信號用于指定不同的模式,那么對于EDT_mode,在指定時可以使用-EDT_instance連接到EDT IP添加掃描模式。工具自動理解此模式的啟用解碼。Example 1: If EDT IP was inserted and an ICL for EDT IP exists then use:
>set edt_instance [get_instances -of_icl_instances \
[get_icl_instances -filter tessent_instrument_type==mentor::edt]] >add_scan_mode edt_mode -type unwrapped -edt_instance $edt_instance Example 2: If EDT IP was inserted and an ICL for EDT IP does not exist, then use: >set edt_instance [get_instance -of_modules *_edt_c1 ] >add_scan_mode edt_mode -type unwrapped -edt_instance $edt_instance 在check_design_rules期間,運行DRC。如果存在任何預先存在的掃描段,請之前文章中的“預先存在掃描段”,了解如何處理它們。如果請求包括多個模式并且使用DFT信號,那么下面的示例將說明如何做到這一點。 Example 3: EDT IP未內置bypass。可使用DFT信號edt_mode、multi_mode和single_mode。默認類型是unwrapped的,因此沒有必要指定它們。 >set edt_instance [get_instance -of_modules *_edt_c1 ] >add_scan_mode int_edt_mode -edt_instance $edt_instance >add_scan_mode multi_mode -chain_count 6 >add_scan_mode single_mode -chain_count 1 下面的示例分為三個主要部分。第一部分-設計、庫和設計精化,展示您如何閱讀Tessent Cell Library和Synthesized Verilog Gate級設計。如果已插入EDT IP,則使用set_tsdb_output_directory指向tsdb數據庫所在的位置。然后使用read_design從最后一次插入中讀取所有其他支持文件,如ICL、PDL、TCD,并詳細說明設計。 # Design, Library loading and design elaboration. >set_context dft -scan -hierarchical_scan_insertion # Sets and opens the tsdb_output directory. >set_tsdb_output_directory ../tsdb_outdir >read_cell_library ../../../library/tessent/adk.tcelllib # Read synthesized netlist >read_verilog ../3.synthesis/processor_core_synthesized.vg # Use read_design to read in information(DFT signals etc) performed in previous pass. >read_design processor_core -design_identifier rtl2 -icl_only >set_current_design processor_core 本示例的第二部分定義了需要聲明的時鐘和設計約束(如果存在) # Define clocks and design constraints if any >add_clock clock1 >add_clock clock2 # Run DRCs, specify different scan insertion options, and write scan stitched design >check_design_rules >report_clocks >report_dft_signals 最后一部分是運行DRC的地方,如果使用了DFTSignal,那么可以使用add_scan_mode命令來指定它們。如果未指定tsdb_outdir,可以使用insert_test_logic-write_in_tsdb On指定它,以將設計文件和相鄰文件寫入tsdb目錄數據庫。 # Find edt_instance >set edt_instance [get_instances -of_icl_instances [get_icl_instances \ -filter tessent_instrument_type==mentor::edt]] # Specify different modes the chains need to be stitched # EDT is built-in with Bypass >add_scan_mode edt_mode \ -edt_instance $edt_instance # Before scan gets inserted can analyze the different scan modes and scan chains >analyze_scan_chains >report_scan_chains # Insert scan chains and writes the scan inserted design into tsdb_outdir directory >insert_test_logic >report_scan_chains >exit Example 1: 1 mode: 32 flat scan chains 這個非常基本的示例中,使用默認分布約束(多個時鐘域、多個時鐘邊沿、功率域和每條鏈的單個簇),在32個掃描鏈上分配(展開/平坦)所有掃描元素。該工具將鏈連接到名為ts_si[31:0]和ts_so[31:0]的新頂級端口。 > add_scan_mode unwrapped_mode -chain_count 32 > analyze_scan_chains > insert_test_logic Example 2: 2 modes: edt, multi bypass (EDT controller already present) 在此示例中,對于edt模式,從所有掃描元件分配200條鏈,并連接到指定的edt控制器si/so引腳。對于多旁路模式,所有掃描元素都分布到12個多旁路鏈,并連接到新的頂級端口,稱為ts_multi_bypass_si[11:0]和ts_multi_bypass_so[11:0]。還創建了名為ts_stm0s0和ts_stm1s0的默認頂級ScanTestMode端口,以控制兩種模式的激活
> add_scan_mode edt \ -si_connections edt_inst/to_si[199:0] \ -so_connections edt_inst/from_so[199:0] > add_scan_mode multi_bypass -chain_count 12 > analyze_scan_chains > insert_test_logic Example 3: 3 modes: edt, multi bypass, single chain (EDT controller already present) 這個例子是前一個例子的變體。edt模式由200條鏈組成多模式旁路有12條連接到頂級端口的鏈,在單鏈時有只需一次掃描輸入和一次掃描輸出。頂層ScanTestMode端口稱為edt_mode_enable,創建multi_bypass_mode_enable和single_modeenable以控制3種模式。對于多旁路模式,所有掃描元件分配到12個多旁路并連接到名為tsmulti_bypasssi[11:0]和ts_多通道_ so[11:0]。對于單鏈模式,所有掃描元素都分布到1個并連接到名為tssingle_chain_si和tssingle-chain_so的新top-level端口。
> add_scan_mode edt -si_connections edt_inst/to_si[199:0] \ -so_connections edt_inst/from_so[199:0] -enable_connections edt_mode_enable > add_scan_mode multi_bypass -chain_count 12 -enable_connections \ multi_bypass_mode_enable > add_scan_mode single_chain -single_class_chains off \ -single_power_domain_chains off -single_cluster_chains off -chain_count 1 \ -enable_connections single_mode_enable > analyze_scan_chains > insert_test_logic總結
以上是生活随笔為你收集整理的Mentor-dft 学习笔记 day12-Multi-Mode ChainsScan Insertion Flows的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 接电路要用计算机测试嘛,ZY6502-P
- 下一篇: android微信怎么建群,微信群空间是