Conformal LEC:官方學習教程

相關閱讀

Conformal LEChttps://blog.csdn.net/weixin_45791458/category_12993839.html?spm=1001.2014.3001.5482


????????本文是對Conformal?Equivalence Checking User Guide中附錄實驗的翻譯(有刪改),實驗文件可見安裝目錄Conformal/share/cfm/lec/demo/doc_testcase,該目錄下還提供了其他案例。

? ? ? ? 本實驗將通過一個小型的案例幫助用戶熟悉圖形界面(GUI)下Conformal LEC的使用流程,實驗內容是驗證非掃描門級網表(Golden)與插入掃描鏈后的門級網表(Revised)的等價性。

啟動Conformal

????????在shell中切換到實驗目錄并且使用lec命令啟動Conformal LEC,如下所示。

$ cd demo/doc_testcase
$ lec

????????此操作將打開Conformal LEC的圖形界面窗口,如圖1所示。

圖1 LEC的圖形界面窗口

讀取庫文件

? ? ? ? 由于本實驗的Golden和Revised設計都是門級網表,需要讀取庫文件以確定各標準單元的功能,Conformal LEC支持兩種格式的庫文件:第一種是Verilog仿真庫,即只包含原語的模塊定義;第二種是Synopsys?Liberty格式的庫(.lib文件)。下面分別展示了這兩種格式的庫文件。

// lib.v
module EXN(A1, A2, X);
input  A1, A2;
output X;
wire  A12;xor  (A12, A1, A2);not  (X, A12);
endmodulemodule EXO(A1, A2, X);
input  A1, A2;
output X;xor  (X, A1, A2);
endmodulemodule MEXN(A1, A2, X);
input  A1, A2;
output X;
wire  A12;xor  (A12, A1, A2);not  (X, A12);
endmodulemodule MEXO(A1, A2, X);
input  A1, A2;
output X;xor  (X, A1, A2);
endmodulemodule OB2(OUT, X);
input  OUT;
output X;buf  (X, OUT);
endmodulemodule OB1(OUT, X);
input  OUT;
output X;buf  (X, OUT);
endmodulemodule BUF1(A, X);
input  A;
output X;buf  (X, A);
endmodulemodule IBT(X, IN);
input  X;
output IN;buf  (IN, X);
endmodule
// demo.lib
library(lib_demo) {cell(AN2) {area : 2;pin(A) {direction : input;capacitance : 1;}pin(B) {direction : input;capacitance : 1;}pin(Z) {direction : output;function : "A B";}
}
cell(OR2) {area : 2;pin(A) {direction : input;capacitance : 1;}pin(B) {direction : input;capacitance : 1;}pin(Z) {direction : output;function : "A+B";}
}
cell(IV) {area : 1;pin(A) {direction : input;capacitance : 1;}pin(Z) {direction : output;function : "A'";}
}
}

? ? ? ? 本實驗使用Verilog仿真庫,請按照下面描述的步驟操作進行庫文件的讀取。

1、在菜單中選擇File-Read Library或者點擊圖標即可打開庫讀取窗口。

2、保持Format的默認值Verilog,以及Type默認值Both,這代表庫文件將同時用于Golden和Revised設計。

3、選擇Verilog仿真庫文件lib.v。

4、點擊Add Selected將庫文件添加到File List中(或者雙擊文件)。

5、點擊OK,讀取庫文件,庫讀取窗口將關閉,主窗口中會顯示已成功讀取庫的提示信息。

Warning: (VLG5.5) Internal primitive is recognized (occurrence:6)

? ? ? ? 這是由于Verilog仿真庫中除了使用了Verilog標準門級原語外,還使用了MUX、DFF等Conformal LEC內部原語,可以忽略這個警告。

讀取設計文件

????????非掃描門級網表是Golden設計,插入掃描鏈后的門級網表是Revised設計,請按照下面描述的步驟操作進行設計文件的讀取。

1、在菜單中選擇File-Read Design或者點擊圖標即可打開設計讀取窗口。

2、保持Format的默認值Verilog,以及Type默認值Golden,這代表設計文件將作為Golden設計。

3、選擇設計文件golden.v。

4、點擊Add Selected將設計文件添加到File List中(或者雙擊文件)。

5、點擊OK,讀取庫文件,設計讀取窗口將關閉,主窗口中會顯示已成功讀取設計的提示信息。

6、以相同的方法讀取revised.v作為Revised設計,注意需要將Type設置為Revised

切換系統模式

????????對于這個小型案例,假設沒有需要指定的約束,直接點擊右上角的圖標切換系統模式為LEC,此時Conformal LEC將對設計進行建模(Model)和關鍵點(Key Point)映射。映射完成后,主窗口中會顯示警告信息和已映射和未映射的關鍵點匯總表,在之后的步驟中,會檢查這些結果。

查看未映射和已映射的關鍵點

????????要查看關鍵點的詳細信息,請選擇Tools-Mapping Manager或者點擊圖標,此時Mapping Manager窗口將打開,如圖2所示。

圖2 Mapping Manager窗口

????????當查看Mapping Manager中的Unmapped Points部分時,請注意以下信息:

  • 表示的是額外的輸入/輸出端口,該端口并未在另一個設計中找到對應的映射點。
  • Revised設計包含三個額外的掃描端口,這是可以接受的,因為Golden設計是一個非掃描設計。
  • Golden和Revised設計都多了一個額外的輸出端口,因為它們的名稱不同,Golden設計中的端口名稱是n3104gat,而Revised設計中的端口名稱是m3104gat。

????????請按照以下步驟將這對因為名稱不同導致未映射的關鍵點手動設置為映射。

1、選擇Golden設計中的n3104gat關鍵點,此時其將高亮顯示。

2、右鍵點擊,并在彈出菜單中選擇Set Target Mapping Point,此時n3104gat關鍵點的文字顏色會從黑色變為紅色。

3、選擇Revised設計中的m3104gat關鍵點,此時其將高亮顯示。

4、右鍵點擊,并在彈出菜單中選擇Add Mapping Point-Non-invert,Conformal LEC會將這兩個關鍵點從Unmapped Points部分移除,并將它們顯示在Mapped Points部分列表的底部,如圖3所示。

圖3 Mapped Points列表

????????在之后的步驟中,將對所有已映射的關鍵點進行比較,以確定它們是等價還是不等價。

進行比較驗證

1、在Mapping Manager仍然打開的情況下的Mapped Points部分,點擊圖標將所有已映射的關鍵點添加為比較點。比較點現在顯示在Compared Points部分,如圖4所示,每對比較點前的圖標表示比較點尚未進行驗證。

圖4 Compared Points列表

2、?點擊圖標開始比較,主窗口中的狀態欄會顯示比較的進度(以百分比形式)。驗證完成后,每對等價的比較點會用綠色圓圈標記,不等價的比較點會用紅色圓圈標記。

3、向下滾動Compared Points列表以查找不等價的比較點,或在Compared Points部分點擊圖標,并在彈出菜單中取消勾選Equivalent復選框,僅查看不等價的比較點,如圖5所示。

圖5 查看不等價的比較點

診斷不等價的比較點

????????在此步驟中,將診斷一對不等價的比較點,以了解它們為何不等價。當比較完成后,用戶可以查看不等價點的診斷信息,例如邏輯錐(logic cone)及其支持點(support)。

1、在Mapping Manager中,選擇任意一對不等價的比較點(比如Golden設計中的U100/DF和Revised設計中的U100/DFSCAN這對比較點)。

2、右鍵點擊,并在彈出菜單中選擇Diagnose,打開Diagnosis Manager,如圖6所示。

圖6?Diagnosis Manager窗口

????????Diagnosis Manager顯示之前步驟中選擇的不等價的比較點相關的信息。該信息分為兩列Golden和Revised。在Diagnosis Manager中,找到以下部分:

Compared Point

? ? ? ? 顯示之前步驟中選擇的不等價的比較點。

Diagnosis Point (active)

? ? ? ? 顯示診斷點(一般為比較點的輸入)及其仿真值。請注意,Golden設計和Revised設計的仿真值(在括號中顯示)并不相同,Golden設計的值為0,而Revised設計的仿真值為1。

Corresponding Support

????????此部分顯示診斷點的邏輯錐中對應的支持點(即作為邏輯錐輸入的關鍵點)及其仿真值(在括號中顯示)。

Non-corresponding Support

????????此部分列出了只出現在某一個設計診斷點的邏輯錐中的支持點。例如,scan_en輸入端口是Revised設計診斷點的邏輯錐中的未映射關鍵點,不存在Golden設計診斷點的邏輯錐中對應的關鍵點。Revised設計診斷點的邏輯錐中的U99/DFFSCAN是一個已映射的關鍵點,但其對應的Golden設計中的U99/DF卻不是該邏輯錐的支持點。

? ? ? ? 對于Corresponding SupportNon-corresponding Support,支持點可以有多種顏色:綠色表示支持點也進行了比較并證明為與其對應關鍵點是等價的,例如Golden設計中的U149/DF與Revised設計中的U149/DF進行了比較并且是等價的;紅表示支持點也進行了比較并證明為與其對應關鍵點是不等價的,例如Golden設計中的U147/DF與Revised設計中的U149/DFSCAN進行了比較并且是不等價的;黑色表示支持點尚未進行比較或者不能比較(比如其是未映射的,或者其是輸入端口),例如Revised設計中scan_en即是未映射的,也是輸入端口。

Error Pattern

????????此部分列出了導致不等價的Pattern,它們證明了Golden和Revised診斷點仿真值之間的差異。每個錯誤Pattern的仿真值與支持點(不管是對應或不對應)相關聯,當選擇一個支持點時,Pattern中的關聯列用粉色高亮顯示,例如當選擇n3100gat時,Pattern窗口的第一列變成粉色,如圖7所示。

圖7 選擇支持點

? ? ? ? 可以看出有兩列用紅色或綠色標出來了,這紅色列表示在列出的所有Pattern中都為1,紅色列表示在列出的所有Pattern中都為0,這很可能是錯誤的來源。

????????請按照以下步驟查看診斷點的仿真值差異:

1、點擊列表中的任意錯誤模式。

2、再點擊另一個錯誤模式,比較對應支持點仿真值的變化(在括號中顯示)。

Error Candidate

????????此部分列出了導致錯誤的原語門候選項及其加權百分比,例如反相器和選擇器,這表示最有可能導致診斷點仿真值差異的原因。

查看原理圖

????????要查看電路圖表示,請在Diagnosis Manager中,點擊頂部工具欄中的圖標,原理圖查看器會分別為Golden設計和Revised設計的邏輯錐打開兩個單獨的窗口,如圖8和圖9所示。

圖8 Golden設計的原理圖

圖9 Revised設計的原理圖

? ? ? ? 在圖8和圖9中,比較點用藍色表示,診斷點用青色表示,錯誤候選項用紅色表示,支持點用紫色表示。邏輯錐中各處的仿真值用數字1或0列在圖中表示,每當切換pattern時,這些仿真值也會相應切換。

? ? ? ? 在Revised設計的原理圖中可以看出,由于scan_en輸入端口位1,導致進入了掃描模式,觸發器的輸入直接連接到另一個觸發器的輸出了,必須將scan_en信號約束為邏輯0,以便MUX門的功能路徑生效。

添加引腳約束

????????為了添加約束,執行以下步驟,將系統模式切換為Setup模式,并添加約束來使Revised設計中的scan_en引腳為0:

1、退出Diagnosis Manager窗口并?直接點擊右上角的圖標切換系統模式為SETUP。

2、在菜單中選擇Setup-Pin Constraints打開Pin Constraints窗口。

3、點擊Revised設計。

4、選擇scan_en輸入端口,右鍵點擊,在彈出菜單中選擇Add Constraint 0,如圖10所示。

圖10 設置端口約束

重新進行比較驗證

? ? ? ? 重新按照之前的步驟進行比較驗證,此時的結果如圖11所示,可以看出不存在不等價的比較點了。

圖11?重新查看不等價的比較點

退出

????????現在已經確認Golden設計和Revised設計是等價的,可以按照以下步驟退出Conformal結束本次實驗了。

1、選擇File-Exit

2、在彈出的確認對話框中點擊Yes

Do腳本

? ? ? ? 下面的Dofile可以完成本實驗的相同操作,相比于使用GUI進行驗證,使用腳本更加高效。

read library lib.v -both
read design golden.v -verilog -golden
read design revised.v -verilog -revised
set system mode lec
add mapped points n3104gat m3104gat
add compare points -all
compare
diagnose /U100/DF -golden
set system mode setup
add pin constraint 0 scan_en -revised
set system mode lec
add mapped points n3104gat m3104gat
add compare point -all
compare
exit -f

? ? ? ? Dofile可以使用Cadence的綜合工具RTL Compiler或Genus生成。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/912176.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/912176.shtml
英文地址,請注明出處:http://en.pswp.cn/news/912176.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Torch】nn.Embedding算法詳解

1. 定義 nn.Embedding 是 PyTorch 中的 查表式嵌入層(lookup‐table),用于將離散的整數索引(如詞 ID、實體 ID、離散特征類別等)映射到一個連續的、可訓練的低維向量空間。它通過維護一個形狀為 (num_embeddings, emb…

cdq 三維偏序應用 / P4169 [Violet] 天使玩偶/SJY擺棋子

最近學了 cdq 分治想來做做這道題,結果被有些毒瘤的代碼惡心到了。 /ll 題目大意:一開始給定一些平面中的點。然后給定一些修改和詢問: 修改:增加一個點。詢問:給定一個點,求離這個點最近(定義…

System.Threading.Tasks 庫簡介

System.Threading.Tasks 是 .NET 中任務并行庫(Task Parallel Library, TPL)的核心組件,它提供了基于任務的異步編程模型,是現代 .NET 并發編程的基礎。 設計原理 1. 核心目標 抽象并發工作:將并發操作抽象為"任務"概念 資源高效…

Python爬蟲實戰:研究jieba相關技術

1. 引言 1.1 研究背景與意義 隨著互聯網技術的飛速發展,網絡新聞已成為人們獲取信息的主要渠道之一。每天產生的新聞文本數據量呈爆炸式增長,如何從海量文本中高效提取有價值的信息,成為信息科學領域的重要研究課題。文本分析技術通過對文本內容的結構化處理和語義挖掘,能…

github 淘金技巧

1. 效率,搜索,先不管。后面再說。 2. 分享的話, 其實使用默認的分享功能也行。也是后面再說。此 app , 今天先做到這里。 下面我們再聊點其他東西。其實我還想問,這個事情,其他人是否也做了, ht…

RAG技術發展綜述

摘要 檢索增強生成(Retrieval-Augmented Generation, RAG)技術已成為大語言模型應用的核心技術棧。RAG有效解決了LLM的幻覺問題、知識截止和實時更新挑戰,目前正處于全面產業化階段。本文系統性地分析RAG的全棧技術架構,包括檢索…

集群聊天服務器---muduo庫(3)

使用muduo網絡庫進行編譯和鏈接的示例 項目的目錄結構 bin: 存放可執行文件。 lib: 存放庫文件。 include: 存放頭文件。 src: 存放源代碼文件。 build: 存放編譯生成的中間文件。 example: 存放示例代碼。 thirdparty: 存放第三方庫。 CMakeLists.txt: CMake構建系統…

雙核SOC/5340 應用和網絡核間通訊

1: 可以在 nRF Connect SDK 文件夾結構的 samples/ipc/ipc_service 下找到示例,應用和網絡核心在由 CONFIG_APP_IPC_SERVICE_SEND_INTERVAL 選項指定的時隙內相互發送數據。可以更改該值并觀察每個核心的吞吐量如何變化 nRF5340 DK 可以使用 RPMsg 或 IC…

Spring Cloud Ribbon核心負載均衡算法詳解

Ribbon 作為 Spring Cloud 生態中的客戶端負載均衡工具,提供多種動態負載均衡算法,根據后端服務狀態智能分配請求。其核心算法及適用場景如下: 🧠 一、Ribbon 負載均衡算法 算法名稱工作原理引用來源輪詢 (RoundRobinRule)按服務…

網站圖片過于太大影響整體加載響應速度怎么辦? Typecho高級圖像處理插件

文章目錄 LeleImges - Typecho高級圖像處理插件 ???插件介紹 ??插件架構 ???主要功能 ?性能優勢 ??系統要求 ??安裝方法 ??詳細配置說明 ??圖片質量設置 ???最大寬度/高度限制 ??壓縮格式選擇 ???壓縮方法選擇 ??GIF處理方式 ???備份源文件 ??…

VUE3入門很簡單(1)--- 響應式對象

前言 重要提示:文章只適合初學者,不適合專家!!! 什么是響應式對象? 在Vue3中,響應式對象就是這種智能溫控器。當你修改JavaScript對象的數據時,Vue會自動更新網頁上顯示的內容&am…

廣州華銳互動攜手中石油:AR 巡檢系統實現重大突破?

廣州華銳互動在 AR 技術領域的卓越成就,通過一系列與知名企業、機構的成功合作案例得以充分彰顯。其中,與中石油的合作項目堪稱經典,展現了廣州華銳互動運用 AR 技術解決實際難題、達成目標的強大實力。? 中石油作為能源行業的巨擘&#xff…

權威認證!華宇TAS應用中間件榮獲CCRC“中間件產品安全認證”

近日,華宇TAS應用中間件順利通過了中國網絡安全審查認證和市場監管大數據中心(CCRC)的信息安全認證,獲得了IT產品信息安全認證證書。此次獲證,標志著華宇TAS應用中間件在安全性、可靠性及合規性等方面達到行業領先水平,可以為政企…

BI財務分析 – 反映盈利水平利潤占比的指標如何分析(下)

之前的文章重點把構成銷售凈利率、主營業務利潤率、成本費用利潤率、營業利潤率、銷售毛利率的分母像銷售收入、營業收入、主營業務收入凈額、成本費用總額做了比較細致的說明,把這幾個基本的概念搞明白后,再來看這幾個指標就比較容易理解了。 銷售凈利…

竹云受邀出席華為開發者大會,與華為聯合發布海外政務數字化解決方案

6月20日-22日,華為開發者大會(HDC 2025)在東莞松山湖盛大召開。作為華為一年一度面向全球開發者的頂級科技盛會,今年的HDC不僅帶來了HarmonyOS 6.0 Beta版本、盤古大模型5.5等多項重磅技術和產品更新,更聚集了全球極客…

AI助力游戲設計——從靈感到行動-靠岸篇

OK,朋友,如果你到了這里,那就證明這趟旅程,快要到岸了。 首先,恭喜你,到了需要這一步的時候。其實,如果你有一天真的用到了,希望你可以回來打個卡。行了,不廢話&#xf…

vue將頁面導出pdf,vue導出pdf ,使用html2canvas和jspdf組件

vue導出pdf 需求:需要前端下載把當前html下載成pdf文件–有十八頁超長,之前使用vue-html2pdf組件,但是這個組件有長度限制和比較新瀏覽器版本限制,所以改成使用html2canvas和jspdf組件 方法: 1、第一步:我…

024 企業客戶管理系統技術解析:基于 Spring Boot 的全流程管理平臺

企業客戶管理系統技術解析:基于Spring Boot的全流程管理平臺 在企業數字化轉型的浪潮中,高效的客戶管理系統成為提升企業競爭力的關鍵工具。本文將深入解析基于Java和Spring Boot框架構建的企業客戶管理系統,該系統涵蓋員工管理、客戶信息管…

JavaScript性能優化代碼示例

JavaScript性能優化實戰大綱 性能優化的核心目標 減少加載時間、提升渲染效率、降低內存占用、優化交互響應 代碼層面的優化實踐 避免全局變量污染,使用局部變量和模塊化開發 減少DOM操作頻率,批量處理DOM更新 使用事件委托替代大量事件監聽器 優化循…

樹的重心(雙dfs,換根)

思路: 基于樹形 DP 的兩次遍歷(第一次dfs計算以某個初始根(這里選了 1)為根時各子樹的深度和與節點數,第二次zy進行換根操作,更新每個節點作為根時的深度和) 換根原理: 更換主根&…