促進認證的劃分設計的制作方法
【專利摘要】本發(fā)明涉及促進認證的劃分設計。本發(fā)明一般地涉及現場可編程門陣列(FPGA)。一些實施方式涉及用于劃分FPGA電路設計以促進認證的方法和系統。在一個方面,一種方法包括生成電路設計的硬件描述語言(HDL)實施方式。該方法另外地包括將設計劃分成第一部分和第二部分。在一些實施方式中,第二部分對應于設計的安全關鍵部分然而第一部分對應于非安全關鍵部分。該方法另外地包括為第一部分生成第一配置設定以及為第二部分生成第二配置設定。該方法另外地包括驗證用于第一部分的第一配置設定和用于第二部分的第二配置設定或者將其提供給第三方認證機構以用于驗證。該方法進一步包括提供用于第二部分的配置設定以用于編程到PLD中。
【專利說明】促進認證的劃分設計
【技術領域】
[0001] 本公開一般地涉及現場可編程門陣列(FPGA),并且更具體地,涉及用于劃分FPGA 電路設計以促進認證的方法和系統。
【背景技術】
[0002] 在許多現代應用中,FPGA電路開發(fā)者僅設計整個FPGA設計的一部分。例如,一個 FPGA電路開發(fā)者能夠設計處理器核,另一 FPGA開發(fā)者能夠設計存儲器塊,另一人能夠設計 存儲器控制器,以及然而其它人能夠設計FPGA設計的其它部分。各種電路開發(fā)者可以作為 不同團隊的一部分為單個實體或者為不同的實體(例如,為不同的商業(yè)企業(yè)中的不同的電 路開發(fā)者)而工作。例如,因為設計和驗證電路設計的困難和費用以及設計的"商用可能", 設計實體可能期望使電路設計保密,或者至少期望不公開,或者將電路設計的公開限制于 諸如其它開發(fā)者、用戶、設計者或客戶的其它方。半導體知識產權核或簡單地" IP核"或" IP 塊"能夠指的是邏輯的單位、單元、芯片布局,或者另外指的是要被作為更大FPGA電路設計 的一部分與其它電路相結合地使用的電路設計。IP塊是特定電路開發(fā)者的設計,并且典型 地是特定電路開發(fā)者的知識產權。IP開發(fā)者(或"設計者")可以將IP塊的使用出售或者授 權給之后將IP塊實現到用戶自己的更大設計中的另一開發(fā)者或用戶,該用戶自己的更大 設計它本身可以是更大設計的一部分。
[0003] 盡管IP塊能夠作為網表被發(fā)送到其它方,諸如FPGA的用戶,但是IP塊典型地在 寄存器傳送級(RTL)級被發(fā)送,諸如以可合成硬件描述語言(HDL)實現的設計的形式。因 為設計被以HDL形式傳遞,所以用戶能夠在功能級修改設計。然而,如上所述,因為開發(fā)者 可能因為驗證所牽涉的時間和費用或由于其它原因而希望使設計保密(例如,作為商業(yè)秘 密),所以開發(fā)者可能不想用戶能夠具有對電路設計的功能描述的這樣的訪問。例如,因為 如果設計被修改了則電路開發(fā)者無法提供對IP塊的授權或支持,所以電路開發(fā)者可能期 望防止FPGA用戶能夠訪問電路設計的功能描述。將電路設計作為軟件網表提供給用戶能 夠比以HDL形式提供設計提供對逆向工程的更好保護,但仍然能夠實現逆向工程。IP開發(fā) 者還可以出于開發(fā)者自己的好意而簡單地期望確保終端用戶或客戶收到已驗證實施方式 的利益。另外地,一些IP開發(fā)者被要求讓他們的IP塊被諸如認證機構(諸如總部設在德國 科隆的萊茵丁 ?ν)的第三方獨立地驗證以確保集成該設計的產品將滿足功能安全要求。例 如,認證機構可以認證IP塊滿足電氣/電子/可編程電子安全相關系統規(guī)范一IEC61508- 行業(yè)中應用的規(guī)則的國際標準的功能安全。這可能是顯著地代價高的且常常費時的過程。
【發(fā)明內容】
[0004] 本公開一般地涉及諸如現場可編程門陣列(FPGA)的可編程邏輯器件(PLD)。一些 實施方式涉及用于劃分FPGA電路設計以促進認證的方法和系統。在所公開的主題的一個 方面,一種方法包括生成要被實現在可編程邏輯器件(PLD)器件上的電路設計的硬件描述 語言(HDL)實施方式。所述方法另外地包括將電路設計劃分成第一部分和第二部分,第一 部分包括用于耦接第一部分和第二部分的接口。所述方法另外地包括基于HDL實施方式為 第一部分生成第一配置設定以及基于HDL實施方式為第二部分生成第二配置設定。所述方 法另外地包括驗證用于第一部分的第一配置設定和用于第二部分的第二配置設定或者將 其提供給第三方認證機構以用于驗證。所述方法進一步包括提供用于第二部分的配置設定 以用于編程到PLD中。
[0005] 在一些實施方式中,所述方法進一步包括對第一部分進行修訂、為修訂后的第一 部分生成修訂后的第一配置設定、以及將用于修訂后的第一部分的修訂后的第一配置設定 與用于第二部分的第二配置設定合并。在一些這樣的實施方式中,提供用于第二部分的配 置設定以用于編程到PLD中包括為修訂后的第一部分和第二部分兩者提供經合并的配置 設定以用于編程到PLD中。在一些實施方式中,所述第二部分是包括要求認證為滿足功能 安全要求的功能的安全關鍵部分。
[0006] 在一些實施方式中,所述方法進一步包括分析HDL實施方式以生成電路設計的層 次實施方式,其中將電路設計劃分成第一部分和第二部分在層次表不級被執(zhí)行。在一些實 施方式中,所述方法進一步包括生成要為第二部分而保留的資源的排他列表。在一些實施 方式中,用于第二部分的配置設定被以編程位的形式生成并且其中用于第二部分的編程位 作為第一編程文件的一部分被包括。在一些實施方式中,用于修訂后的第一部分的配置設 定被以編程位的形式生成并且其中用于修訂后的第一部分的編程位作為第二編程文件的 一部分被包括。在一些實施方式中,所述方法進一步包括生成位掩碼,所述位掩碼包括其中 每一個位都具有第一邏輯值的第一組位和其中每一個位都具有第二邏輯值的第二組位,所 述第一組位中的每一個位都處于所述位掩碼的如下位置中,即,該位置與所述第一編程文 件或所述第二編程文件中的被所述第二部分使用的編程位相對應。在一些這樣的實施方式 中,將用于修訂后的第一部分的修訂后第一配置設定與用于第二部分的第二配置設定合并 包括使用位掩碼來將第一編程文件與第二編程文件合并以生成合并的編程文件。例如,在 一些實施方式中,當CAD工具用位掩碼對第一編程文件操作時,工具被使得能夠從第一編 程文件中提取用于第二部分的編程位。在一些實施方式中,所述方法進一步包括使用位掩 碼來驗證用于第二部分的編程位在經合并的編程文件中尚未被變更。
[0007] 在另一方面,公開了一種可編程邏輯器件(PLD),其由包括生成要被實現在可編程 邏輯器件(PLD)器件上的電路設計的硬件描述語言(HDL)實施方式的過程來形成。所述過 程另外地包括將電路設計劃分成第一部分和第二部分,第一部分包括用于耦接第一部分和 第二部分的接口。所述過程另外地包括基于HDL實施方式為第一部分生成第一配置設定以 及基于HDL實施方式為第二部分生成第二配置設定。所述過程另外地包括驗證用于第一部 分的第一配置設定和用于第二部分的第二配置設定或者將其提供給第三方認證機構以用 于驗證。所述過程進一步包括提供用于第二部分的配置設定以用于編程到PLD中。
[0008] 在一些實施方式中,所述過程進一步包括對第一部分進行修訂、為修訂后的第一 部分生成修訂后的第一配置設定、以及將用于修訂后的第一部分的修訂后的第一配置設定 與用于第二部分的第二配置設定合并。在一些這樣的實施方式中,提供用于第二部分的配 置設定以用于編程到PLD中包括為修訂后的第一部分和第二部分兩者提供經合并的配置 設定以用于編程到PLD中。在一些這樣的實施方式中,所述第二部分是包括要求認證為滿 足功能安全要求的功能的安全關鍵部分。
[0009] 在一些實施方式中,所述過程進一步包括分析HDL實施方式以生成電路設計的層 次實施方式,其中將電路設計劃分成第一部分和第二部分在層次表不級被執(zhí)行。在一些實 施方式中,所述過程進一步包括生成要為第二部分而保留的資源的排他列表。在一些實施 方式中,用于第二部分的配置設定被以編程位的形式生成并且其中用于第二部分的編程位 作為第一編程文件的一部分被包括。在一些實施方式中,用于修訂后的第一部分的配置設 定被以編程位的形式生成并且其中用于修訂后的第一部分的編程位作為第二編程文件的 一部分被包括。在一些實施方式中,所述過程進一步包括生成位掩碼,所述位掩碼包括其中 每一個位都具有第一邏輯值的第一組位和其中每一個位都具有第二邏輯值的第二組位,所 述第一組位中的每一個位都處于所述位掩碼的如下位置中,即,該位置與所述第一編程文 件或所述第二編程文件中的被所述第二部分使用的編程位相對應。在一些這樣的實施方式 中,將用于修訂后的第一部分的修訂后第一配置設定與用于第二部分的第二配置設定合并 包括使用位掩碼來將第一編程文件與第二編程文件合并以生成合并的編程文件。在一些實 施方式中,所述過程進一步包括使用位掩碼來驗證用于第二部分的編程位在經合并的編程 文件中尚未被變更。
[0010] 在另一方面,公開了一種方法,其包括生成要被實現在可編程邏輯器件(PLD)上的 電路設計的硬件描述語言(HDL)實施方式。所述方法包括將電路設計劃分成第一部分和第 二部分,第一部分包括用于耦接第一部分和第二部分的接口。所述方法另外地包括生成第 二部分的網表表示。所述方法進一步包括驗證第二部分。在驗證第二部分之后,所述方法 包括對第一部分進行修訂。所述方法然后包括生成修訂后的第一部分的網表表示。所述方 法另外地包括將經先前驗證的第二部分的網表表示與修訂后的第一部分的網表表示合并。 [0011] 在一些實施方式中,所述第二部分是包括要求認證為滿足功能安全要求的功能的 安全關鍵部分。在一些實施方式中,所述方法進一步包括分析HDL實施方式以生成電路設 計的層次實施方式,其中將電路設計劃分成第一部分和第二部分在層次表示級被執(zhí)行。在 一些實施方式中,所述方法進一步包括生成包括用于修訂后的第一部分和第二部分兩者的 編程設定的編程文件。在一些這樣的實施方式中,所述方法進一步包括生成位掩碼,所述位 掩碼包括其中每一個位都具有第一邏輯值的第一組位和其中每一個位都具有第二邏輯值 的第二組位,所述第一組位中的每一個位都處于所述位掩碼的如下位置中,即,該位置與所 述編程文件中的被所述第二部分使用的編程位相對應。在一些這樣的實施方式中,所述方 法另外地包括使用位掩碼來驗證用于第二部分的編程位在所述編程文件中尚未被變更。
[0012] 參考附圖在下面進一步對這些和其它方面進行描述。
【專利附圖】
【附圖說明】
[0013] 圖1示出了 FPGA架構的示例實施方式。
[0014] 圖2示出了邏輯單元的示例實施方式。
[0015] 圖3示出了示例4輸入LUT。
[0016] 圖4示出了圖示用于設計IP塊的示例過程的流程圖。
[0017] 圖5示出了圖示用于為IP塊的秘密部分生成配置設定的示例過程的流程圖。
[0018] 圖6A示出了示例位掩碼。
[0019] 圖6B示出了由圖6A的位掩碼到示例IP開發(fā)者的編程文件的逐位應用產生的位 流。
[0020] 圖7示出了圖示用于將IP塊集成到IP用戶的設計中的示例過程的流程圖。
[0021] 圖8A示出了其中將被秘密部分使用的位標識有默認值的IP用戶的編程文件的示 例部分。
[0022] 圖8B示出了由圖6B的結果與圖8A的IP用戶的編程文件的部分的逐位應用產生 的合并的編程文件(或其一部分)。
[0023] 圖9示出了用于將用于IP塊的秘密部分的配置設定合并到IP用戶的配置設定中 的示例過程的流程圖。
[0024] 圖10示出了用于將用于IP塊的秘密部分的配置設定合并到IP用戶的配置設定 中的示例過程的流程圖。
[0025] 圖11A示出了 IP開發(fā)者的編程文件的一部分的示例位陣列。
[0026] 圖11B示出了在用于秘密部分的編程位的易位之后圖11A的陣列。
[0027] 圖12示出了圖示用于生成包括安全關鍵部分以及非安全關鍵部分兩者的電路設 計(諸如用于FPGA的IP塊)的示例過程的流程圖。
[0028] 圖13示出了圖示用于將修訂后的非安全關鍵部分與先前驗證的安全關鍵部分合 并的示例過程的流程圖。
[0029] 圖14示出了圖示用于將修訂后的非安全關鍵部分與先前驗證的安全關鍵部分合 并的另一示例過程的流程圖。
[0030] 圖15示出了一般地示出能夠被用來實現上面所描述的CAD和其它工具的功能性 中的一些或全部的計算機系統的圖解框圖表示。
【具體實施方式】
[0031] 在以下描述中,許多特定細節(jié)被闡述以便提供對所呈現的實施方式的徹底理解。 可以在沒有這些特定細節(jié)中的一些或全部的情況下實踐所公開的實施方式。在其它實例 中,尚未對眾所周知的過程操作進行詳細的描述以便不必要地使所公開的實施方式混淆。 雖然將與特定實施方式相結合地描述所公開的實施方式,但是將理解的是,它不旨在限制 所公開的實施方式。
[0032] 本公開一般地涉及諸如現場可編程門陣列(FPGA)的可編程邏輯器件(PLD),并且 更具體地,涉及用于劃分、傳送以及集成FPGA電路設計的方法和系統。例如,一些實施方式 涉及用于劃分、傳送一個或多個知識產權(IP)塊以及將其與另一用戶的設計的一個或多個 其它IP塊相集成的方法和系統。特定實施方式使得IP塊開發(fā)者能夠將IP塊發(fā)送或者以 其它方式提供給另一 IP設計者、IP用戶或客戶(在下文中共同地稱為"用戶"),而不用公開 IP塊的秘密部分的功能描述以及附加地確保秘密部分被以相同的方式實現在PLD上。在 一些實施方式中,術語"用戶"可以指的是正將一個或多個IP塊或電路設計集成到要被配 置或編程到物理FPGA器件中的最后的電路設計中的一方。在一些實施方式中,IP開發(fā)者 設計IP塊以包括秘密部分和公共部分兩者。在一些實施方式中,IP開發(fā)者在寄存器傳送 級(RTL)級將公共部分作為硬件描述語言(HDL)實現的設計或者作為可合成網表提供給IP 用戶。在一些實施方式中,用戶然后能夠接收例如IP塊的公共部分的HDL實現的表示,并 且將公共部分與用戶自己的設計相集成。用戶然后能夠基于包含配置設定或"編程位"的 已集成HDL設計來生成編程文件以將用戶的設計(包括IP塊的公共部分)實現在物理FPGA 器件中。
[0033] 在一些實施方式中,IP開發(fā)者以編程位的形式將IP塊的秘密部分提供給用戶,而 不用提供秘密部分的HDL、RTL或網表實施方式。能夠以可以為整個編程文件的一部分的位 流的形式將用于秘密部分的編程位提供給IP用戶。在其中用于秘密部分的編程位作為包 括用于整個物理FPGA器件的位的整個編程文件被提供的一些實施方式中,用戶使用由IP 開發(fā)者所生成的并且同樣提供給IP用戶的位掩碼來使來自IP開發(fā)者的編程文件的用于秘 密部分的編程位與IP用戶的編程文件合并。經合并的編程文件然后能夠被加載到存儲器 中以用于編程到物理FPGA器件中。在一些其它實施方式中,諸如在對于部分可配置的FPGA 器件有用的實施方式中,包含用于秘密部分的編程位的位流能夠在FPGA設計的剩余部分 已被編程到FPGA器件之后被編程到FPGA器件中。在一些這樣的實施方式中,當包含用于 秘密部分的編程位的位流被編程到FPGA器件中時已經編程到FPGA器件中的電路設計的剩 余部分可以是運作的。
[0034] 附加地或替換地,在一些實施方式中,IP塊可以包括向認證機構要求功能安全認 證的功能或設計部分以及不要求這樣的認證的功能。如上所述,在一些情況下,在這樣的設 計被認證為與功能安全要求兼容之后,IP設計者或用戶可以尋求改變不要求功能安全認證 的設計的一些功能或部分。然而,如上面同樣描述的那樣,常規(guī)技術要求IP塊的所有部分 被重新認證。然而,通過利用特定實施方式,IP開發(fā)者能夠設計IP塊以包括安全關鍵部分 (要求功能安全要求由認證機構認證的部分)以及非安全關鍵部分(不要求這樣的認證的部 分)兩者。在一些實施方式中,開發(fā)者以CRAM編程位的形式至少將設計的安全關鍵部分提 供給第三方認證機構(諸如萊茵Τ?Υ)。能夠以位流的形式將用于安全關鍵部分的編程位提 供給第三方認證機構以用于驗證和認證,所述位流可以是整個編程文件的一部分。在安全 關鍵部分與非安全關鍵部分的正確設計和劃分的情況下,開發(fā)者或下游用戶能夠對設計的 非安全關鍵部分做出改變同時確保用于安全關鍵部分的CRAM編程位保持不變一并且仍然 有權通過認證機構認證滿足認證機構的功能安全要求一而不管必須為非安全關鍵部分重 新合成和重新生成編程位。
[0035] 隨著數字電路的增加的使用和復雜性,電路開發(fā)者已使用硬件描述語言在高級別 上設計數字電路的數字邏輯描述和其它方面。一般地,硬件描述語言(HDL)是能夠被用來 描述電路的操作、其設計以及組織和測試以借助于模擬來驗證其操作的計算機說明或建模 語言。HDL的示例包括Verilog (IEEE1364)、VHDL (VHSIC硬件描述語言)、Abel (高級布 爾表達式語言)以及Altera HDL (AHDL)。HDL使得電路開發(fā)者能夠在高級別上指定電路的 功能性,而無需開發(fā)者指定特定電子技術和物理布局。典型地,開發(fā)者使用HDL來用定時信 息指定電路的數據流模型。例如,開發(fā)者能夠使用諸如電路或系統的空間和時間結構以及 行為的基于HDL文本的表達式來指定他的設計。用HDL所實現的這種抽象級能夠被稱為寄 存器傳送級(RTL)。RTL設計抽象根據例如硬件寄存器之間的數字信號(例如,數據)以及由 組合邏輯對這些信號所執(zhí)行的邏輯操作將電路設計建模為同步數字電路。
[0036] HDL實現的設計能夠使用計算機輔助設計(CAD)工具來創(chuàng)建。例如,還被稱為電 子CAD (ECAD)的電子設計自動化(EDA)指的是用于設計包括諸如專用集成電路(ASIC)門 陣列的集成電路以及諸如現場可編程門陣列(FPGA)的可編程邏輯器件(PLD)的電子系統 的軟件工具(例如,CAD工具)。使用這樣的配置有HDL的CAD工具,開發(fā)者能夠寫或者以其 它方式指定電路設計。如上所述,開發(fā)者能夠使用HDL代碼來指定設計中的一些或全部。 開發(fā)者還能夠使用高級合成語言來生成HDL實現的設計的一部分。例如,這樣的高級合 成抽象語言包括來自 National Instruments 公司的 LabVIEW FPGA、來自 Annapolis Micro Systems, Inc.的 CoreFire 設計套件、SystemVerilog、Handel-C 以及 SystemC 等等。開發(fā) 者或用戶能夠導入已經在HDL指定的設計中的一些或全部,并且使用CAD工具基于或者以 其它方式修改所導入的設計。
[0037] 當開發(fā)者用HDL完成設計時,CAD工具然后執(zhí)行分析(例如,代碼評審或審查)為合 成作準備。在分析期間,HDL實現的設計經受各種錯誤檢查操作以幫助在HDL實現的設計 被合成之前解析錯誤。在一些實施方式中,CAD工具能夠基于分析來生成包括模塊和模塊 之間的調用的設計的層次表示。使用HDL設計,能夠被結合到用來設計HDL的CAD工具中 或者與其相集成的邏輯合成工具(并且在下文中還被一般地稱為CAD工具)然后根據例如 邏輯電路和邏輯門將HDL實現的設計合成為設計實施方式。在一些實例中,邏輯合成的結 果是物理上可實現的門網表。網表一般地是作為邏輯門或過程特定的標準單元所實現的電 路設計的功能的布爾代數表示。和HDL對比,網表語言一般地僅表達塊或邏輯元件的層次 之間的電路連通性。也就是說,雖然HDL能夠被用來表達包括時間特性的結構、行為或RTL 架構,但是網表語言不指定時間特性。網表然后能夠被輸出,并且在一些實例中,以例如"模 擬"或"切換"網表的形式、或作為通用工業(yè)標準EDIF (電子設計互換格式)提供給另一方 (例如,IP用戶)。
[0038] 用來設計PLD的CAD工具能夠生成包括位流的二進制編程文件,所述位流包含用 于配置PLD的編程位。FPGA是設計成在物理FPGA器件被制造之后被配置用于供用戶使用 的一個這種類型的PLD。FPGA包含可編程邏輯塊和允許可編程邏輯塊被以不同配置互連的 可配置互連。圖1示出了示例FPGA架構100 (還被在本文中稱為FPGA器件100)的代表性 部分的示例實施方式。FPGA架構100包括可配置邏輯塊(CLB) 102 (還被稱為邏輯陣列塊 (LAB))以及可配置輸入/輸出(1/0)墊104、開關106以及布線架構或"結構(fabric)"108 的陣列。例如,布線架構108能夠包括連接邏輯塊102和1/0墊104的多條垂直地定向的 線路或通道110和多條水平的線路或通道112。每個邏輯塊102 -般地包括一個或多個輸 入114和一個或多個輸出116。各種FPGA邏輯塊102能夠被配置成表現為簡單的邏輯門 (例如,與門、與非門、或門、或非門以及異或門等等),表現為邏輯電路(例如,復用器和算術 邏輯單元(ALU)等等),表現為復雜組合功能,表現為存儲器元件(例如,鎖存器、觸發(fā)器以及 寄存器,或甚至存儲器的整個塊)、存儲器控制器,以及表現為完整微處理器或處理器核。盡 管在圖1中出于說明的目的示出了六個邏輯塊102,但是一般地,FPGA100或其它PLD能夠 包括布置在例如由布線架構108所互連的二維陣列中的幾十個、幾百個或更多邏輯塊102。 本公開中所描述的特定實施方式不限于任何特定類型的FPGA或FPGA硬件布局(例如,邏輯 塊、布線架構以及1/0墊的布局)。一些實施方式也可以適合于其它類型的PLD。
[0039] 典型的FPGA邏輯塊102包括一個或多個還被稱為邏輯元件的邏輯單元218。圖2 示出了邏輯單元218的示例實施方式。在一些實施方式中,每個邏輯單元218都包括查找 表(LUT) 220。例如,在一些FPGA器件中,每個邏輯單元218包括4輸入LUT220。在一些 其它實施方式中,每個LUT220具有7個輸入或另一數目的輸入。在一些實施方式中,每個 LUT220被實際上實現為兩個或更多個的更少輸入LUT。例如,4輸入LUT能夠被實現為兩個 互連的3輸入LUT。
[0040] 許多FPGA是基于靜態(tài)隨機存取存儲器(SRAM)。典型地,2"個SRAM單元和對應的位 被用來實現η輸入LUT-將"η"個輸入或輸入功能映射到單個輸出的LUT。因此,為了實現 4輸入LUT,典型地能夠需要16個SRAM編程位。SRAM單元常常被稱為配置RAM或"CRAM"。 編程到CRAM中(例如,在加電時或在部分再配置期間)以實現諸如IP塊的電路設計的編程 位還被稱為"配置設定"。在一些實施方式中,每個LUT220都能夠被實現為2 n: 1復用器(或 "MUX"),其中每個CRAM將輸入提供給復用器的對應輸入。在一些這樣的實施方式中,2n:l 復用器能夠被實現為2n-l個單獨的2:1復用器。圖3示出了示例4輸入LUT220。4輸入 LUT包括每個都將輸入提供給第一級的復用器324a的2:1復用器的16個CRAM322。第一 級的復用器324a的輸出是到第二級的復用器324b的輸入。第二級的復用器324b的輸出 是到第三級的復用器324c的輸入。最后,第三級的復用器324c的輸出是到第四級的復用 器324d的輸入,所述第四級的復用器324d具有單個輸出E。給定級的復用器中的每一個復 用器都由到LUT220的輸入中的對應一個來控制。例如,第一級復用器324a被第一輸入A 控制,第二級復用器324b被第二輸入B控制,第三級復用器324c被第三輸入C控制,以及 第四級復用器324d被第四輸入D控制?;谳斎胄盘朅、B、C以及D,復用器組選擇位來驅 動輸出E。CRAM322中的位規(guī)定哪一個邏輯操作或功能將被LUT220執(zhí)行。每個LUT220能 夠一般地實現能夠利用到LUT的輸入的數目來指定的任何邏輯操作。因此,η輸入LUT能 夠一般地實現能夠利用η個或較少二進制輸入指定的任何邏輯功能。
[0041] 其它CRAM322控制或者規(guī)定開關106和包括在邏輯塊102之間的布線以及在各種 其它輸入與輸出之間(包括在邏輯單元208之間)和在邏輯塊102與I/O墊104之間的布 線的布線架構108的配置。為了將一個或多個電路設計的功能性編程到FPGA器件100中, 艮Ρ,為了配置由電路設計所需的邏輯塊102、1/0墊104、開關106以及布線架構108,用戶的 CAD工具典型地生成包括對于整個FPGA設計的IP塊和其它電路設計中的全部所要求的編 程位的編程文件。編程文件還能夠包括不在所實現的FPGA設計中使用的在物理FPGA器件 中的CRAM的默認值。編程文件還能夠一般地包括一個或多個命令或指令。在一些實施方 式或應用中,FPGA器件100被連接到電路板。在一些過程流中,編程工具將編程文件傳送 到在與FPGA100相同的板上的非易失性存儲器,諸如Flash存儲器或EEPR0M。在加電時或 者基于指令,FPGA100進入編程或"配置"模式或狀態(tài)(與關斷狀態(tài)或正常操作狀態(tài)相反)。 例如,在板加電時,在具有FPGA100的板上的一些其它邏輯(諸如控制器)能夠使FPGA100進 入配置模式。當在配置模式下時,FPGA100預期其管腳中的一些(其編程管腳)將在CRAM編 程操作中接收位。使FPGA進入配置模式的邏輯或板上的一些其它邏輯(諸如控制器或存儲 器控制器)然后從非易失性存儲器中檢索編程位并且將所檢索到的編程位提供給FPGA100。 FPGA100內的邏輯然后將位編程到適當的CRAM322中以配置形成互連邏輯塊的結構的邏輯 塊102 (例如,LUT220)、I/O墊104、開關106以及布線架構108以及邏輯塊內的邏輯單元 218或FPGA設計的其它組件。
[0042] 如在圖2的示例中所示,每個邏輯單元218還能夠包括一個或多個其它元件,諸如 例如進位邏輯(例如,全加法器(FA))226、復用器228以及寄存器(例如,諸如D觸發(fā)器的觸 發(fā)器)230。寄存器230可以從FPGA100的全局時鐘樹(未示出)接收時鐘信號。寄存器可以 接收LUT220的輸出信號E并且基于時鐘信號輸出信號E。在一些實施方式中,FPGA100能 夠包括不同類型的邏輯單元208。例如,各種邏輯單元208能夠包括具有各種數目的輸入的 LUT220。其它邏輯單元208還能夠包括諸如復用器、解復用器以及寄存器的其它硬連線組 件。在一些實施方式中,FPGA100還能夠包括嵌入式處理器和一個或多個存儲器塊。如上所 述,許多FPGA是基于靜態(tài)RAM (SRAM)的?;赟RAM的FPGA是易失性的以及因此SRAM單 元一般地在每次加電時需要被配置。也就是說,每當FPGA被加電,一些邏輯從同樣在板上 的存儲器(例如,FLASH存儲器)中檢索編程位并且將編程位提供給FPGA。FPGA內的邏輯然 后將位編程到適當的CRAM322中。其它類型的FPGA包括帶集成Flash的基于SRAM的FPGA、 基于Flash的FPGA以及基于反熔絲的FPGA。一些FPGA被配置為芯片上系統(S0C)。例如, 由Altera公司所生產的一些SOC FPGA集成嵌入式處理器。例如,一些Altera SOC FPGA包 括了集成的硬處理器系統(HPS)。這樣的HPS能夠包括使用高帶寬互連骨干的處理器、外圍 設備以及存儲器接口。
[0043] 在許多現代應用中,FPGA電路開發(fā)者僅設計整個FPGA設計的一部分。例如,一個 FPGA電路開發(fā)者能夠設計處理器核,另一 FPGA開發(fā)者能夠設計存儲器塊,以及然而其它人 能夠設計FPGA設計的其它部分。各種電路開發(fā)者可以為作為不同團隊的一部分的單個實 體或者為不同的實體(例如,為不同的商業(yè)企業(yè)中的不同的電路開發(fā)者)而工作。至少部分 地由于設計和驗證電路設計的困難和費用以及設計的商用可能,設計實體可能期望使電路 設計保密,或者至少期望不公開,或者將電路設計的公開限制于諸如其它開發(fā)者、用戶、設 計者或客戶的其它方。如本文中所用的半導體知識產品核或簡單地"IP核"或"IP塊"一 般地指的是用于諸如FPGA的PLD的電路設計。一般地,IP塊將僅構成更大FPGA設計的一 部分。在各種實施方式中,IP塊被設計成實現特定功能或功能性并且可以被設計成與其它 用戶的設計的另一 IP塊或諸塊相集成以及因此與更大FPGA設計的一個或多個IP塊或其 它部分相結合地工作。每個IP塊能夠用一個或多個邏輯塊102加以實現并且典型地包括 多個邏輯單元218。附加地,在一些FPGA實施方式中,每個邏輯塊102能夠實現一個或多個 IP塊中的一些或全部。IP塊是特定電路開發(fā)者的設計,并且典型地是特定電路開發(fā)者的知 識產權。開發(fā)者可以將IP塊的使用出售或者授權給之后將IP塊實現到用戶自己的更大設 計中的另一開發(fā)者或用戶,所述用戶自己的更大設計它本身可以是更大設計的一部分。
[0044] 盡管IP塊能夠被作為網表發(fā)送到其它方,諸如FPGA的用戶,但是IP塊典型地在 寄存器傳送級(RTL)級被發(fā)送,諸如以可合成硬件描述語言(HDL)實現的設計的形式。因 為設計被以HDL形式傳送,所以用戶能夠在功能級修改設計。然而,如上所述,因為開發(fā)者 可能因為驗證所牽涉的時間和費用或由于其它原因而希望使設計保密(例如,作為商業(yè)秘 密),所以開發(fā)者可能不想用戶能夠具有對電路設計的功能描述的這樣的訪問。例如,因為 如果設計被修改了則電路開發(fā)者無法提供對IP塊的授權或支持,所以電路開發(fā)者可能期 望防止FPGA用戶能夠訪問電路設計的功能描述。將電路設計作為軟件網表提供給用戶能 夠比以HDL形式提供設計提供對逆向工程的更好保護,但仍然能夠實現逆向工程。IP開發(fā) 者還可以出于開發(fā)者自己的好意而簡單地期望確保終端用戶或客戶收到已驗證實施方式 的利益或者期望滿足功能安全要求。
[0045] 一些IP開發(fā)者被要求讓他們的IP塊被諸如認證機構(諸如總部設在德國科隆的 萊茵τ?ν)的第三方獨立地驗證以確保集成該設計的產品將滿足功能安全要求。例如,認 證機構可以認證IP塊滿足電氣/電子/可編程電子安全相關系統規(guī)范一IEC61508:2010- 行業(yè)中應用的規(guī)則的國際標準的功能安全。這可能是顯著地代價高的過程。IP開發(fā)者可以 尋求防止第二IP用戶修改IP塊以便與功能安全要求兼容的驗證不被要求兩次。另外地, IP開發(fā)者和IP用戶中的任一個或兩者都可以尋求確保驗證的IP塊設計隨著它被合成和驗 證以及在功能安全市場中隨著它被認證機構認證而被提供給IP用戶。因此IP用戶的CAD 工具可以與IP開發(fā)者的合成工具或第三方驗證者的工具不同地合成、布局HDL實現的設計 或者給其定路線,所以不能夠保證IP用戶生成如IP開發(fā)者生成的在CRAM級上的確切的編 程位。由于至少這種原因,IP用戶可以期望由IP開發(fā)者生成的確切的編程位(在CRAM位 級上),因為如由IP開發(fā)者生成的編程位所實現的設計已經被認證了。另外地,IP塊可以 包括向認證機構要求功能安全認證的功能以及不要求這樣的認證的功能。在一些情況下, 在這樣的設計被認證為與功能安全要求兼容之后,IP開發(fā)者或用戶可以尋求改變不要求功 能安全認證的設計的一些功能或部分。然而,常規(guī)技術要求IP塊的所有部分被重新認證。
[0046] 在一些實施方式中,設計過程使得IP開發(fā)者能夠為IP塊生成秘密部分和公共部 分兩者。圖4示出了圖示用于設計IP塊的示例過程400的流程圖。在一些實施方式中,過 程400在其中IP開發(fā)者開發(fā)IP塊的HDL表示的402處開始。在一些實施方式中,如上所 述,IP開發(fā)者使用CAD工具來設計或者建立IP塊的HDL實現的表示。例如,CAD工具能夠 包括具有圖形用戶接口(⑶I)的輸入級。CAD⑶I可以包括使得能實現諸如用于IP塊設計 的參數和規(guī)范的信息的高效或方便的鍵入的各種"向導"。例如,HDL實現的IP塊能夠具有 RTL架構的形式。如上所述,IP開發(fā)者能夠使用硬編碼邏輯或者使用預建功能、宏功能或其 它IP塊來建立設計。IP開發(fā)者還能夠使用之后能夠被CAD工具用來生成HDL描述的高級 合成抽象語言。
[0047] 具有這樣的HDL生成能力的CAD工具的一個示例是可購自加州圣何塞的Altera 公司的可編程芯片上系統(S0PC)生成器(Builder)。在一些實施方式中,除提供生成HDL 設計的功能性之外,CAD工具還能夠包括用于執(zhí)行分析、合成、驗證、布局以及布線和用于配 置設定的生成的功能性。也就是說,在一些實施方式中,這些功能性中的一個或多個中的每 一個都可以是單獨的程序或單個CAD工具內集成程序的一部分。在一些其它實施方式中, 功能性中的一個或多個可以用結合到單個CAD工具中或集成在單個CAD工具內的不同硬件 (以及關聯的固件和軟件)加以實現。在一些其它實施方式中,功能性可以用兩個或更多個 不同的不同工具加以實現。在其中剛才描述的多個功能性中的每一個都被實現為單個CAD 工具內的單獨程序的一些實施方式中,程序之間的接口可以是數據庫文件、日志或簡單地 在程序之間傳送的消息。例如,代替將文件寫入存儲器,輸入級能夠將消息直接地發(fā)送到生 成或者集成IP塊的HDL表示的HDL生成器程序。類似地,HDL生成器程序能夠將HDL表示 直接地提供給分析和合成工具。
[0048] 在404處,CAD工具然后分析HDL實現的IP塊。在一些實施方式中,CAD工具在 406處基于分析來生成IP塊的項目層次(或層次表示)。在一些實施方式中,項目層次包括 IP塊的所有模塊(包括其中每一個都能夠實例化的模塊)的層次樹,以及模塊之間的其它連 接或調用。在408處,開發(fā)者然后能夠使用CAD或其它工具通過大體上分隔或者遮蔽開發(fā) 者期望包括在IP塊的秘密部分中的項目層次的部分來劃分或者以其它方式定義IP塊的秘 密部分。在這樣做時,IP開發(fā)者還定義IP塊的公共部分一開發(fā)者將以HDL、網表或其它功 能表示形式提供的IP塊的部分(若有的話)。
[0049] 在一些實施方式中,CAD工具然后在410處生成包括IP塊的公共部分但不將模塊 包括在IP塊的秘密部分內的修改的項目層次。在一些實施方式中,秘密部分被用HDL表示 為使實現該秘密部分的模型實例化的調用,所述秘密部分它本身能夠包括若干子模塊。在 一些過程流中,項目層次的公共部分然后能夠被傳送給IP用戶。例如,能夠作為經修改的 項目層次或以HDL的形式來傳送公共部分。然而,再次,無論以層次(例如,模塊)形式、HDL 形式還是其它功能表示形式都不在功能表示級提供設計的秘密部分。因為IP開發(fā)者能夠 在這個階段將IP塊的公共部分的層次表示提供給IP用戶,所以用戶然后能夠開始從事將 IP開發(fā)者的IP塊結合或者集成到IP用戶的設計中。例如,通過區(qū)別哪些模塊形成IP塊 的秘密部分。在一些實施方式中,IP開發(fā)者在下面所描述的IP開發(fā)者的秘密部分的合成 或驗證之前將經修改的公共部分的項目層次或HDL實現的設計提供給IP用戶。例如,IP 開發(fā)者可以提供設計的這個早期階段以促進包括由IP開發(fā)者所設計的那些部分以及由接 收到IP開發(fā)者的IP塊的IP用戶所設計的那些部分的整個組合的FPGA設計過程的總體速 度和總體效率。在一些其它實施方式中,IP開發(fā)者可以在合成和驗證之后提供HDL實現的 設計。因為公共部分能夠包括整個IP塊的輸入和輸出中的全部的列表或規(guī)范,所以用戶能 夠將IP塊集成在用戶自己的設計內而不用具有IP塊的秘密部分的知識。在一些實施方式 中,提供給IP用戶的HDL文件包括允許IP用戶使用CAD工具在用戶自己的設計中使IP塊 的公共部分的實例實例化的(例如,對模塊或子模塊的)命令或調用。例如,用戶的CAD工具 在使公共模塊實例化之后,能夠將IP塊的輸入和輸出連接到用戶的IP塊中的一個或多個 或者連接到其它開發(fā)者的IP塊。公共部分還能夠包括到秘密部分的接口(在下面描述),以 及諸如例如時鐘緩沖器、鎖相環(huán)(PLL)以及存儲器的共享資源等其它共享資源。
[0050] 圖5示出了圖示用于為IP塊的秘密部分生成配置設定的示例過程500的流程圖。 例如,能夠按請求或者在根據過程400設計了 IP塊的IP開發(fā)者的指導下執(zhí)行過程500。在 一些實施方式中,過程500在過程400之后不久開始。在一些其它實施方式中,過程500的 一個或多個步驟或塊與過程400的各種步驟或塊并行地執(zhí)行或者與過程400的各種步驟或 塊相互混合。在一些實施方式中,過程500在其中CAD工具基于在410處生成的經修改的項 目層次、或者基于關于秘密部分與公共部分之間的交互的其它功能或模塊級信息在HDL實 現的設計中生成IP塊的公共部分與IP塊的秘密部分之間的接口(上面參考圖4的過程400 來描述)。在一些這樣的實施方式中,能夠用邊界LUT實現接口。例如,IP開發(fā)者能夠設計 IP塊,或者CAD工具能夠生成IP塊,使得它在IP塊的秘密部分與IP塊的公共部分之間的 邊界處包括LUT。邊界LUT將從公共部分輸入到邊界LUT的信號和資源映射為秘密部分內 的資源,并且將從秘密部分輸出的信號和資源映射為公共部分內的資源。以這種方式,雖然 CAD工具一般地需要具有它需要給到特定邊界LUT的特定信號定路線的知識,但是CAD工具 不需要在秘密部分內在輸入LUT下游或在輸出LUT上游執(zhí)行的映射的知識。在一些這樣的 實施方式中,邊界LUT能夠被邏輯上定義為單個輸入緩沖器,其輸出被定路線到物理FPGA 設計中的特定邏輯單元218。在一些這樣的實施方式中,邊界LUT本身使用FPGA器件100 的LUT220或其它物理LUT而被用CRAM編程位物理上實例化。在一些其它實施方式中,秘 密部分與公共部分之間的接口的一個或多個部分能夠實現有如用CRAM編程位物理上實例 化的觸發(fā)器、寄存器、線或其它邏輯或電路組件的功能性。
[0051] 在一些其它實施方式中,IP開發(fā)者不將IP塊的任何公共部分提供給IP用戶。例 如,IP開發(fā)者可能期望使整個設計保密。在一些這樣的實施方式中,在502處生成的邊界 接口是提供給IP用戶的IP塊的唯一網表、HDL或其它功能級表示。然而不是作為秘密部 分與公共部分之間的接口,而是該接口是秘密部分與外面(例如,集成秘密部分的IP用戶 的FPGA設計)之間的接口。
[0052] 在一些實施方式中,過程500在其中IP開發(fā)者的CAD工具至少對IP塊的秘密部 分的HDL實現的表示執(zhí)行合成操作的504處繼續(xù)。合成工具的一些示例是可購自俄勒岡州 威爾遜維爾的Mentor Graphics公司的Leonardo Spectrum和可購自加利福尼亞州森尼韋 爾的Synplicity公司的Synplify。在一些實施方式中,CAD工具然后在506處對已合成 設計執(zhí)行驗證操作。一些示例驗證工具包括可購自加利福尼亞州森尼韋爾的Synopsys公 司的Synopsys VCS、VSS和Scirocco以及可購自加利福尼亞州圣何塞的Cadence Design Systems的Cadence NC-Verilog和NC-VHDL。在一些實施方式中,在506處的驗證之后,已 合成設計能夠被提供給CAD工具內的物理工具或程序,其中在508處布局和布線操作被執(zhí) 行。典型的布局和布線工具將邏輯單元定位于目標硬件器件的特定邏輯元件上并且依照實 現設計所要求的邏輯和安全性來連接各種邏輯元件的輸入與輸出之間的線。
[0053] 在一些實施方式中,CAD工具在510處基于布局和布線操作的輸出來生成排他列 表。該排他列表包括將被保留僅用于供用戶最后的FPGA設計中的IP塊的秘密部分使用的 資源中的全部。因為接收到IP開發(fā)者的IP塊的IP用戶將沒有IP塊的秘密部分如何正在 使用實際FPGA硬件的知識,所以IP用戶確保IP用戶的CAD工具在將IP開發(fā)者的IP塊與 IP用戶的設計相集成時,不使用IP開發(fā)者已通過避免使用在排他列表中所指定的資源而 為秘密部分保留的資源。在排他列表中所指定的資源能夠包括例如將實現各種邏輯塊102、 邏輯單元218、LUT220、1/0墊104、開關106或將僅被IP塊的秘密部分使用的布線架構108 的其它部分的物理資源。
[0054] 可編程邏輯配置級能夠采用布局和布線工具的輸出,并且在512處為FPGA器件 100生成配置設定。例如,能夠在可購自加利福尼亞州圣何塞的Alterra公司的Quartus 開發(fā)工具中提供布局和布線工具以及邏輯配置級。如由本領域的普通技術人員將了解的那 樣,能夠在各種實施方式中使用各種合成、布局和布線以及可編程邏輯配置工具。在一些其 它實施方式中,CAD工具能夠被配置成直接地根據HDL實現的設計來為FPGA生成配置設定。 在一些實施方式中,在512處配置級的輸出是包括形式為用于秘密部分的編程位的配置設 定的編程文件。在一些實施方式中,雖然編程文件對于給定物理FPGA硬件架構一般地包括 用于CRAM322中的全部的所有位,但是對于IP開發(fā)者的IP塊未被生成的編程文件中的所 有的位分配了默認值。在一些實施方式中,針對IP塊的公共部分所指定的位同樣分配了默 認值。在一些實施方式中,然后這時能夠使用編程位再次驗證IP塊的定時、功率或其它要 求。例如,用于秘密部分、公共部分的編程位以及秘密部分與公共部分之間的接口(其可以 作為公共部分的一部分被包括)然后能夠被編程到之后經受驗證的物理FPGA器件中。驗證 的結果然后能夠被提供給諸如認證機構(諸如萊茵τ?ν)的第三方。附加地或替換地,在一 些實施方式中,第三方(諸如萊茵τ?ν)能夠執(zhí)行驗證。
[0055] 在一些實施方式中,過程500在其中生成位掩碼的514處繼續(xù)。圖6Α示出了用于 教導目的的示例位掩碼632。位掩碼一般地標識被秘密部分使用的IP開發(fā)者的編程文件中 的位。盡管所圖示的示例位掩碼632僅是64位值的8x8陣列,但是應該了解的是,一些實 施方式所要求的位掩碼可以是更大的,例如,具有幾百個、幾千個或更多個位值。因為IP塊 的秘密部分所要求的編程位能夠構成整個編程文件的僅一部分,所以位掩碼被用來標識將 被用來配置秘密部分的編程文件中的那些位。在其中IP塊的秘密部分將被配置到僅單個 邏輯塊102或其它部分中的一些實施方式中,位掩碼能夠包括僅僅與該邏輯塊或其它部分 相關聯的位。在一些其它實施方式中,位掩碼能夠包括用于整個編程文件的位。在所圖示 的示例中,具有邏輯值" 1"的位值的所有位634指示編程文件中的對應位將在配置IP塊的 秘密部分時被使用。相比之下,具有邏輯值"0"的位值的所有位636指示編程文件中的對 應位將不在配置IP塊的秘密部分時被使用。
[0056] 在一些實施方式中,在516處,編程文件(包括用于IP塊的秘密部分的配置設定/ 編程位)、位掩碼、資源的排除列表、HDL或網表實現的接口(或秘密和公共部分之間的接口 的其它物理級表示)以及HDL實現的公共部分(或公共部分的公共網表或其它功能級表示) 被提供給IP用戶。雖然被描述為單個步驟516,但是在一些其它實施方式中,能夠獨立地 或分別地做出步驟516的各種供給。例如,排除列表能夠在為秘密部分提供編程位之前被 提供給IP用戶(例如,以總體上促進整個FPGA設計過程的速度和效率)。以無論什么形式 提供給IP用戶(例如,作為HDL或公共網表的一部分)的接口(其可以是公共部分的一部分) 向IP用戶公開邊界LUT或其它接口組件的位置。這允許IP用戶的布局和布線操作將IP 用戶的設計與IP開發(fā)者的IP塊連接。因此,通過向IP用戶公開接口、公共部分的公共網 表或HDL實現的設計以及排除列表,IP用戶然后具有IP用戶需要將IP塊與IP用戶自己 的設計相集成的所有信息(例如,IP塊邊界、輸入以及輸出和資源),而無需秘密部分的功能 性的知識。
[0057] 在一些其它實施方式中,不是提供如剛才描述的排除列表,而是IP開發(fā)者替代地 使用布圖規(guī)劃技術來選擇并且向IP用戶指示將為IP開發(fā)者的IP塊以及具體地為IP塊的 秘密部分而保留的FPGA器件的部分或區(qū)。在一些這樣的實施方式中,IP開發(fā)者僅公開可 以被IP塊的秘密部分使用的資源的最大集,而不是通過IP開發(fā)者的布局和布線操作實際 上生成的特定資源。布圖規(guī)劃的方法在其中多個IP開發(fā)者為一個用戶提供IP塊的情況下 是特別有利的。如果平面布置圖提前取得一致意見,并且每個IP開發(fā)者的布局和布線被約 束成使用僅分配給IP開發(fā)者的布圖規(guī)劃區(qū)中的資源,則IP用戶被確保當各種IP塊被集成 到一個設計中時沒有資源將有沖突。
[0058] 在一些實施方式中,包括包含編程位的位流的編程文件中的一些或全部能夠在傳 送給IP用戶之前被加密。在一些實施方式中,至少用于秘密部分的編程位被加密。諸如 FPGA器件100的FPGA器件還能夠包括用于對加密的位流進行解密的解密邏輯。在這樣的 實施方式中,一般地是FPGA硬件的制造商或開發(fā)者確定加密方案并且然后將方法、密鑰或 其它加密技術提供給開發(fā)者或用戶以對他們的編程位進行加密。在一些這樣的實施方式 中,FPGA器件能夠被配置成隨著它們被提供給FPGA器件100并且在加載到CRAM322中之 前及時對加密的編程位流進行解密。圖7示出了圖示用于將IP塊集成到IP用戶的設計 中的示例過程的流程圖。在一些實施方式中,過程700在其中IP用戶生成FPGA設計或者 將其導入到用戶的CAD工具中的702處開始。用戶的FPGA設計將一般地包括一個或多個 IP塊并且將與由另一 IP開發(fā)者所生成的至少一個IP塊接口對接。在一些實施方式中,IP 用戶在704處接收IP開發(fā)者的IP塊的公共網表或HDL實現的公共部分,諸如分別參考圖 4和5的過程400和500所描述的。在一些實施方式中,公共網表還包括IP用戶的CAD工 具所必須將芯片上的輸入和輸出信號線連接到的秘密IP塊的接口輸入和輸出的位置。在 一些實施方式中,由IP開發(fā)者所提供的唯一公共網表是秘密IP的邊界輸入和輸出(例如邊 界LUT)的實施方式。IP用戶在706處還接收由IP開發(fā)者的CAD工具所生成的排除列表, 其指定FPGA設計中的哪些資源將被保留用于供IP塊的秘密部分使用。在708處,IP用戶 將公共網表或HDL實現的公共部分和排除列表導入或者以其它方式提供到用戶的CAD工具 中。在710處,CAD工具例如在RTL、HDL或網表級將公共部分與用戶的設計的剩余部分相 集成。
[0059] 在一些實施方式中,過程700在其中IP用戶的CAD工具對已集成設計執(zhí)行分析和 合成操作的712處繼續(xù)。在一些實施方式中,用戶的CAD工具然后在714處對已合成設計 執(zhí)行驗證操作。如上所述,在一些實施方式中,在714處的驗證之后,經驗證的設計能夠被 提供給CAD工具內的物理工具或程序,其中在716處布局和布線操作被執(zhí)行。在布局和布 線操作期間,IP用戶的CAD工具能夠使用排除列表來保證它不使用由秘密IP所保留的資 源,并且秘密和公共部分(由IP開發(fā)者提供)之間的已合成接口用來給如由IP開發(fā)者所指 示的IP塊的秘密和公共部分之間的輸入和輸出定路線,從而將由IP開發(fā)者所提供的IP塊 與IP用戶的電路設計鏈接起來??删幊踢壿嬇渲眉壢缓竽軌虿捎貌季趾筒季€工具的輸出, 并且在718處為要被編程到物理FPGA器件中的IP用戶的設計生成配置設定。
[0060] 在一些實施方式中,在718處配置級的輸出是包括形式為用于包括IP開發(fā)者的 IP塊的公共部分的整個FPGA器件的編程位的配置設定的編程文件。如上所述(在IP開發(fā) 者的編程文件的背景下),雖然IP用戶的編程文件對于給定物理FPGA硬件架構一般地包括 CRAM322中的全部的位,但是針對IP用戶的設計未被生成的編程文件中的所有的位(諸如 由排除列表為IP開發(fā)者的設計的秘密部分而保留的那些)能夠分配默認值。圖8A示出了 IP用戶的編程文件的示例部分840,其中將被秘密部分使用的位834標識有默認值(圖示為 "d")同時未被秘密部分使用的位836包括在718處針對它們所生成的值。因為IP用戶的 CAD工具提供有排除列表,所以這確保在716處執(zhí)行的布局和布線操作不使用在排除列表 中所指定的任何資源,以及因此,這確保位834將被留在默認值。IP用戶的CAD工具能夠通 過將所生成的CRAM840與所提供的位掩碼相比較來驗證工具正確地遵守了排除列表一確 保在位掩碼634中包括有'1'的位不分配除默認以外的值,如在834中那樣。在一些實施 方式中,在720處,IP用戶接收(如果他早已尚未這樣做)IP開發(fā)者的編程文件,諸如參考 圖5的過程500上面所描述的編程文件。在722處,CAD或其它工具然后使IP開發(fā)者的編 程文件與IP用戶的編程文件合并;即,為了將秘密部分的配置設定/編程位與由IP用戶所 生成的配置設定/編程位(包括用來實現IP開發(fā)者的IP塊的公共部分和接口的位)合并。
[0061] 圖9示出了用于將用于IP塊的秘密部分的配置設定合并到IP用戶的配置設定中 的示例過程900的流程圖。在一些實施方式中,過程900是過程700的步驟722的示例實 施方式。在一些實施方式中,過程900在其中用戶的CAD工具用同樣由IP開發(fā)者所提供的 位掩碼對IP開發(fā)者的(先前接收到的)編程文件進行操作的902處開始。在一些實施方式 中,在902處執(zhí)行逐位比較或逐位加法。例如,圖6B示出了由圖6A的位掩碼到示例IP開 發(fā)者的編程文件的逐位應用產生的位流(示出為二維陣列)638。如圖所示,在位置上對應于 圖6A的位掩碼中的位634的圖6B的陣列中的任何位635使值保持在IP開發(fā)者的編程文 件中。在位置上對應于圖6A的位掩碼中的位636的圖6B的陣列中的任何位637被設置為 例如默認值。過程900然后能夠在其中IP用戶的CAD或其它工具執(zhí)行在902處所獲得的 結果(如圖6B中所示(為了教導目的))與IP用戶的編程文件840 (如圖8A中所示(為了教 導目的))之間的逐位比較的904中繼續(xù)。例如,對于對應于秘密編程位中的一個的圖6B中 的每個位635,該位635的值然后被添加或者以其它方式進入到IP用戶的編程文件840中 代替所對應的位位置834中的默認值。圖8B示出了由圖6B的結果638與圖8A的IP用戶 的編程文件840的部分的逐位應用產生的合并的編程文件(或其一部分)842。如在經合并 的編程文件842中所示,位835現在具有從前在IP用戶的原始編程文件840的位834中保 持默認值的秘密編程位635的值。在一些實施方式中,在906處,經合并的編程文件然后被 存儲在例如與物理FPGA器件相同的板上的外部非易失性存儲器(例如,Flash)中。如上所 述,在給器件加電時,板上的邏輯被配置成使FPGA進入編程模式或配置模式,從非易失性 存儲器中檢索編程位,以及將所檢索到的編程位加載到FPGA器件中。FPGA器件內的邏輯然 后將編程位加載到適當的CRAM中。通過正像IP開發(fā)者已生成了它們那樣加載用于秘密部 分的編程位的值,IP開發(fā)者能夠被確保秘密部分的功能性像它被IP開發(fā)者的CAD工具驗 證的那樣,同時不將秘密部分的實施方式公開給IP用戶。
[0062] 圖10示出了用于將用于IP塊的秘密部分的配置設定合并到IP用戶的配置設定 中的示例過程1000的流程圖。在一些實施方式中,過程1000是過程700的步驟722的示 例實施方式。在一些實施方式中,過程1000在其中將IP用戶的編程文件的編程位(例如, 如在圖7的過程700的718處獲得的)加載到物理FPGA器件中的1002處開始。在這樣的 實施方式中,FPGA器件有利地是部分可配置的FPGA器件。如上所述,典型地,配置或者再配 置FPGA要求當外部控制器或其它邏輯將整個FPGA設計加載到FPGA器件中時FPGA處于配 置模式。相比之下,部分再配置使得FPGA的特定(例如,關鍵的)部分在控制器將部分設計 加載到部分可配置的FPGA器件上的可配置模塊中時繼續(xù)操作。一段時間以后,在1004處, IP用戶能夠將僅包含為秘密部分所生成的那些編程位的位流加載到FPGA中。例如,不是在 過程700的步驟720處接收整個IP開發(fā)者的編程文件,而是IP開發(fā)者能夠選擇僅發(fā)送包 含用于秘密部分的編程位的位流。在其它實施方式中,IP開發(fā)者能夠發(fā)送如上所述的整個 編程文件和位掩碼以使得IP用戶能夠提取僅包含用于秘密部分的那些編程位的位流。附 加地,通過發(fā)送位掩碼,IP用戶還能夠確保IP用戶的編程文件不使用為秘密部分而保留的 位中的任一個。如上所述,包含用于秘密部分的編程位的位流能夠首先被存儲在具有FPGA 的板上的非易失性存儲器中。具有FPGA的板上的控制器或其它邏輯隨后能夠檢索位流并 且將編程位加載到部分可配置的FPGA器件中進入到適當的CRAM。在一些實施方式中,包含 用于秘密部分的編程位的位流被以加密的形式從IP開發(fā)者接收,以便IP用戶沒有被用來 實現IP開發(fā)者的IP塊的秘密部分的位值的知識;相反地,IP用戶僅具有被以位掩碼給出 的位位置的知識。如上所述,一些FPGA器件還能夠包括用于對加密的位流進行解密的解密 邏輯。在這樣的實施方式中,一般地是FPGA硬件的制造商或設計者確定加密方案并且然后 將方法、密鑰或其它加密技術提供給開發(fā)者或用戶以對他們的編程位進行加密。在一些這 樣的實施方式中,FPGA器件能夠被配置成隨著它們被提供給FPGA器件并且在加載到CRAM 之前對經加密的編程位流進行解密。
[0063] FPGA典型地具有將在IP塊之間被共享的許多資源,所述IP塊諸如例如全局布線 網絡或"樹"以及其它可編程功率設定。在一些實施方式中,IP開發(fā)者向IP用戶指定全局 布線樹的拓撲。在一些這樣的實施方式中,沒有IP開發(fā)者的IP塊的功能性在這個時候被 公開;相反地,僅關于什么時鐘信號或其它全局信號被使用以及其中他們使用了 FPGA的哪 些區(qū)的信息被公開。能夠甚至在IP開發(fā)者將IP塊的公共部分提供給IP用戶之前將這種 信息提供給IP用戶。例如,在716處執(zhí)行的布局和布線操作中,IP用戶然后具有將附加的 扇出添加到這些信號以得到連接到時鐘網絡的IP用戶的設計的部分。例如,在上面所描述 的過程900或1000中的任一個中,當在步驟514處IP開發(fā)者生成位掩碼時,工具能夠附 加地生成包含用于由IP開發(fā)者針對時鐘網絡所選擇的線或布線資源中的全部的位的網絡 掩碼、以及用于那些位的值/設定。在網絡掩碼中使用該組位,IP用戶能夠驗證IP用戶在 718處生成的編程文件對于在該網絡掩碼中所指定的位中的全部都具有相同的值。也就是 說,要被實現在物理FPGA中的時鐘拓撲保持相同。功率設定能夠由IP用戶以類似的方式 預選擇和傳送。例如,IP開發(fā)者能夠以具有做出那些設定的位的掩碼以及具有用于那些位 的值的編程文件的形式將開發(fā)者已選擇的功率設定的列表提供給用戶。如上所述,IP用戶 然后能夠將那些功率設定集成到用戶的設計中,并且以IP開發(fā)者實現它們的相同方式來 驗證設計的輸出實現功率設定。
[0064] 附加地,在其中設計將被配置到其中的物理FPGA架構被一致地布置在芯片平面 布置圖中的實施方式中,能夠有可能在芯片上任何地方使IP塊實例化。以這種方式,IP用 戶能夠確定在FPGA中哪里實現IP開發(fā)者的IP塊。例如,IP用戶的CAD工具能夠如先前一 樣取得從IP開發(fā)者接收到的秘密部分的編程位。為了將IP塊實現到不同的布圖規(guī)劃區(qū)或 不同的邏輯塊中,IP用戶的CAD工具能夠改變IP塊的物理實施方式的公共部分(如果被提 供)的位置,并且還在IP開發(fā)者的編程文件中添加偏移從而向CAD工具指示將被保留用于 秘密部分的新的資源集。以這種方式,IP用戶能夠改變IP塊的設計的位置。例如,圖11A 示出了 IP開發(fā)者的編程文件的一部分的示例位陣列然而圖11B示出了在用于秘密部分的 編程位1144的改變位置之后圖11A的陣列。為了利用圖11A和11B中所圖示的改變位置 功能性,IP用戶還將一般地必須改變在706處接收的排除列表中所給出的資源的位置。
[0065] 如上所述,在一些實例中,整個電路設計的IP塊或其它部分可以包括向認證機構 要求功能安全認證的功能或設計部分以及不要求這樣的認證的功能或設計部分。在一些情 況下,在這樣的設計被合成、驗證以及認證為與功能安全要求兼容之后,開發(fā)者或下游用戶 可以尋求改變不要求功能安全認證的設計的一些功能或部分。然而,如上面同樣描述的那 樣,常規(guī)技術要求設計的所有部分被重新認證。也就是說,因為每當工具被運行時(尤其是 如果這些過程中的任一個在不同的工具上被執(zhí)行)CAD工具可以針對HDL實現設計不同地 合成、布局、布線以及生成編程位,所以即使設計的安全關鍵部分未被改變,也不能夠保證 用于設計的安全關鍵部分的編程位在每一輪合成和生成之后是相同的。因此,按照慣例,盡 管有意地僅對更大設計的非安全關鍵部分做出改變,但是因為不能夠保證用于安全關鍵部 分的編程位保持與由認證機構所認證的那些相同,所以認證將不依附重新合成的和重新生 成的設計。為了獲得已滿足了功能要求的認證機構的認證,認證機構或下游用戶將很可能 要求重新認證。如上面所指出的那樣,這樣的認證可能是相當代價高的以及費時的。
[0066] 然而,通過利用特定實施方式,開發(fā)者能夠劃分設計以包括安全關鍵部分(要求功 能安全要求由認證機構認證的部分)以及非安全關鍵部分(不要求這樣的認證的部分)兩 者。在一些實施方式中,開發(fā)者以CRAM編程位的形式至少將設計的安全關鍵部分提供給第 三方認證機構(諸如萊茵τ?ν)。能夠以位流的形式將用于安全關鍵部分的編程位提供給第 三方認證機構以用于驗證和認證,所述位流可以是整個編程文件的一部分。在安全關鍵部 分與非安全關鍵部分的正確設計和劃分的情況下,開發(fā)者或下游用戶能夠對設計的非安全 關鍵部分做出改變同時確保用于安全關鍵部分的CRAM編程位保持不變一并且仍然有權通 過認證機構認證滿足認證機構的功能安全要求一而不管必須為非安全關鍵部分重新合成 和重新生成編程位。認證機構或其它第三方可以要求安全關鍵部分保持不變并且有權認證 的證據。為了確保這樣的符合性,能夠做出涉及安全關鍵部分的整個編程文件的位流部分 的檢查。例如,由安全關鍵部分的開發(fā)者所生成的位掩碼能夠被用來對最后的編程文件執(zhí) 行逐位比較以便確保與安全關鍵部分相對應的編程位保持不變并且有權認證。
[0067] 圖12示出了圖示用于生成包括安全關鍵部分以及非安全關鍵部分兩者的電路設 計(諸如用于FPGA的IP塊)的示例過程1200的流程圖。在許多點或方面上,過程1200的 步驟與參考圖4和5上面所描述的過程400和500的一個或多個步驟類似,其中安全關鍵 部分類似于秘密部分并且非安全關鍵部分類似于公共部分。在一些實施方式中,過程1200 在其中設計者開發(fā)電路設計的HDL表示的1202處開始。在一些實施方式中,如上所述,設 計者使用CAD工具來開發(fā)或者建立設計的HDL實現的表示。在1204處,CAD工具然后分析 HDL實現的電路設計。在一些實施方式中,CAD工具在1206處基于分析來生成電路設計的 項目層次(或層次表示)。在一些實施方式中,項目層次包括電路設計的所有模塊(包括其中 每一個模塊都能夠實例化的模塊)的層次樹,以及模塊之間的其它連接或調用。
[0068] 在1208處,開發(fā)者然后能夠使用CAD或其它工具通過大體上分隔或者遮蔽開發(fā)者 期望包括在電路設計的安全關鍵部分中的項目層次的部分來劃分或者以其它方式定義電 路設計的安全關鍵部分(開發(fā)者可能希望像上面所描述的那樣保密)。在這樣做時,開發(fā)者 還定義電路設計的非安全關鍵部分。在一些其它實施方式中,電路設計的安全關鍵部分能 夠有意地位于整個FPGA或其它可編程邏輯設計的已知平面布置圖區(qū)中。在一些實施方式 中,CAD工具然后在1210處生成包括電路設計的非安全關鍵部分但不包括在電路設計的安 全關鍵部分內的模塊的修改的項目層次。在一些實施方式中,安全關鍵部分被用HDL表示 為使實現該安全關鍵部分的模塊實例化的調用,所述安全關鍵部分它本身能夠包括若干子 模塊。
[0069] 在一些實施方式中,CAD工具然后在1212處基于在1210處生成的經修改的項目 層次、或者基于關于安全關鍵部分與非安全關鍵部分之間的交互的其它功能或模塊級信息 在HDL實現的設計中生成電路設計的非安全關鍵部分與電路設計的安全關鍵部分之間的 接口。在一些這樣的實施方式中,能夠用邊界LUT實現該接口。例如,開發(fā)者能夠設計電路 設計,或者CAD工具能夠生成電路設計,使得它在電路設計的安全關鍵部分與非安全關鍵 部分之間的邊界處包括LUT。邊界LUT將從非安全關鍵部分輸入到邊界LUT的信號和資源 映射為安全關鍵部分內的資源并且將從安全關鍵部分輸出的信號和資源映射為非安全關 鍵部分內的資源。以這種方式,雖然CAD工具一般地需要具有它需要給到特定邊界LUT的 特定信號定路線的知識,但是CAD工具不需要在安全關鍵部分內在輸入LUT下游或在輸出 LUT上游執(zhí)行的映射的知識。
[0070] 在一些實施方式中,過程1200在其中CAD工具對電路設計的安全關鍵部分、非安 全關鍵部分以及安全關鍵部分與非安全關鍵部分之間的接口的HDL實現的表示執(zhí)行合成 操作的1214處繼續(xù)。在一些實施方式中,在1214處合成的結果是物理上可實現的門網表。 在一些實施方式中,CAD工具然后在1216處對已合成設計執(zhí)行驗證操作。在一些實施方式 中,在1216處的驗證之后,已合成設計能夠被提供給CAD工具內的物理設計工具或程序,其 中在1218處布局和布線操作被執(zhí)行。在一些實施方式中,CAD工具在1220處基于布局和 布線操作的輸出來生成排他列表。該排他列表包括將被保留僅用于供電路設計的安全關鍵 部分使用的資源中的全部。
[0071] 可編程邏輯配置級能夠采用布局和布線工具的輸出,并且在1222處為FPGA或其 它可編程邏輯器件生成配置設定。如上所述,能夠在各種實施方式中使用各種合成、布局和 布線以及可編程邏輯配置工具。在一些實施方式中,在1222處配置級的輸出包括一個或多 個編程文件。例如,配置級可以在1222處以用于安全關鍵部分的編程位的形式輸出至少包 括配置設定的第一編程文件。在一些這樣的實施方式中,雖然第一編程文件對于給定物理 FPGA硬件架構包括用于CRAM中的全部的所有位,但是對于開發(fā)者的設計的安全關鍵部分、 非安全關鍵部分或接口未被生成的編程文件中的所有的位分配了默認值。在一些實施方式 中,配置級可以附加地輸出第二編程文件,其對于安全關鍵部分僅包括編程位但對于包括 針對非安全關鍵部分所指定的位的設計的其它位中的全部包括默認值。
[0072] 在一些實施方式中,然后這時能夠使用編程位再次驗證電路設計的定時、功率和/ 或其它功能安全要求。例如,用于安全關鍵部分、非安全關鍵部分以及安全關鍵部分與非安 全關鍵部分之間的接口的編程位然后能夠被編程到之后經受驗證的物理FPGA器件中以確 保與功能安全要求兼容。驗證的結果然后能夠被提供給諸如認證機構(諸如萊茵τ?ν)的 第三方。附加地或替換地,在一些實施方式中,第三方(諸如萊茵τ?ν)能夠執(zhí)行驗證。在 一些實施方式中,包括用于安全關鍵部分和非安全關鍵部分兩者以及接口的配置設計的第 一編程文件被提供給認證機構以確保與功能安全要求兼容。
[0073] 在一些實施方式中,過程1200在其中生成與上面參考圖6Α示出和描述的位掩碼 類似的位掩碼的1224處繼續(xù)。位掩碼一般地標識被安全關鍵部分(與如參考圖6Α所描述 的秘密部分相反)使用的開發(fā)者的編程文件中的位。因為對于電路設計的安全關鍵部分所 要求的編程位可以構成整個編程文件的僅一部分,所以位掩碼被用來標識被用來配置安全 關鍵部分的編程文件中的那些位。在其中電路設計的安全關鍵部分將被配置到僅單個邏 輯塊或其它部分中的一些實施方式中,位掩碼能夠僅包括與該邏輯塊或其它部分相關聯的 位。在一些其它實施方式中,位掩碼能夠包括用于整個編程文件的位。例如,具有邏輯值 " 1"的位值的位掩碼中的所有位能夠指示編程文件中的對應位將在配置電路設計的安全關 鍵部分時被使用。相比之下,具有邏輯值"〇"的位值的掩碼中的所有位都能夠指示編程文 件中的對應位將不在配置安全關鍵部分時被使用一這些位可以被用來例如對開發(fā)者的電 路設計的非安全關鍵部分進行編程或者用來對最后的FPGA設計的其它部分進行編程。
[0074] 如上所述,情況常?;虻湫偷厥牵_發(fā)者或用戶可能希望對電路設計的非安全關 鍵部分做出改變而不對安全關鍵部分做出改變。然而,如上所述,即使安全關鍵部分尚未被 有意地改變,常規(guī)技術也一般地要求整個設計的重新認證。但采用本文中所描述的實施方 式,開發(fā)者能夠對非安全關鍵部分做出改變而無需重新認證。例如,開發(fā)者能夠在1226處 對電路設計的非安全關鍵部分的HDL或其它抽象級表示做出改變,同時確保非安全關鍵部 分的HDL表示或其它抽象級表示正確地連接到在1212處生成的接口。
[0075] 在一些實施方式中,在1228處CAD工具然后對非安全關鍵部分和接口執(zhí)行另一合 成操作。在一些實施方式中,在1228處合成的結果是與非安全關鍵部分相對應的物理上可 實現的門網表。在一些實施方式中,CAD工具然后在1230處對在1228處被合成的設計執(zhí) 行驗證操作。在1232處,CAD或其它工具然后將在1228處生成的與修訂后的非安全關鍵 部分相對應的網表和與經先前認證的安全關鍵部分相對應的在1214處生成的網表的部分 合并。
[0076] 圖13示出了圖示用于將修訂后的非安全關鍵部分與先前驗證的安全關鍵部分合 并的示例過程1300的流程圖。在一些實施方式中,過程1300是過程1200的步驟1232的 示例實施方式。在一些實施方式中,過程1300在其中將在1228處合成的修訂后的非安全 關鍵部分的網表提供給CAD工具內的物理設計工具或程序的1302處開始。使用該工具,在 1228處合成的網表然后在1304處與在1214處生成的網表合并。也就是說,使得在在1226 處做出改變之前修訂后的非安全關鍵部分的新近重新合成的網表代替對應于非安全關鍵 部分的在1214處生成的網表的部分。在這樣的實施方式中,對應于經先前驗證的安全關鍵 部分的在1214處生成的網表的部分未被變更。在1306處,然后對經合并的網表執(zhí)行布局 和布線操作。在布局和布線操作期間,CAD工具能夠使用早先生成的排除列表來保證它不 使用由安全關鍵部分所保留的資源來給設計的安全關鍵部分與非安全關鍵部分之間的輸 入和輸出定路線。因此,在這樣的實施方式中,在1306處執(zhí)行的布局和布線操作對于根據 在1218處早先執(zhí)行的布局和布線操作所確定的經先前驗證的安全關鍵部分保持邏輯和布 線的布局。
[0077] 可編程邏輯配置級能夠采用布局和布線工具的輸出,并且在1308處為經先前驗 證的安全關鍵部分、修訂后的非安全關鍵部分以及接口生成配置設定。在一些實施方式中, 在1308處配置級的輸出是包括形式為用于經先前驗證的安全關鍵部分、修訂后的非安全 關鍵部分以及接口的編程位的配置設定的編程文件。以這種方式,作為結果的合并的編程 文件包含與當它們被先前認證時相同的用于安全關鍵部分的配置編程位以及用于修訂后 的非安全關鍵部分的配置編程位。每當開發(fā)者或用戶期望改變非安全關鍵部分而無需重新 認證時能夠重復這個過程。
[0078] 圖14示出了圖示用于將修訂后的非安全關鍵部分與經先前驗證的安全關鍵部分 合并的另一示例過程1400的流程圖。在一些實施方式中,過程1400是過程1200的步驟 1232的示例實施方式。在一些實施方式中,過程1400在其中將在1228處合成的修訂后的非 安全關鍵部分的網表提供給CAD工具內的物理設計工具或程序的1402處開始,其中在1404 處,布局和布線操作然后被執(zhí)行。在布局和布線操作期間,CAD工具能夠使用早先生成的排 除列表來保證它不使用由安全關鍵部分所保留的資源來給設計的安全關鍵部分與修訂后 的非安全關鍵部分之間的輸入和輸出定路線。因此,在這樣的實施方式中,在1404處執(zhí)行 的布局和布線操作對于根據在1218處早先執(zhí)行的布局和布線操作所確定的經先前驗證的 安全關鍵部分保持邏輯和布線的布局??删幊踢壿嬇渲眉壞軌虿捎貌季趾筒季€工具的輸 出,并且在1406處為修訂后的非安全關鍵部分和接口生成配置設定。在一些實施方式中, 在1406處配置級的輸出是包括形式為用于非安全關鍵部分和接口的編程位的配置設定的 第三編程文件。在一些實施方式中,CAD工具能夠通過將所生成的用于修訂后的非安全關 鍵部分的配置設定與在1224處生成的位掩碼相比較來驗證工具正確地遵守了排除列表。
[0079] 在一些實施方式中,在1408處,CAD或其它工具然后將包括用于經先前驗證的安 全關鍵部分的編程位的在1222處生成的第二編程文件與包含用于修訂后的非安全關鍵部 分和接口的編程位的在1406處生成的第三編程文件合并。例如,像在參考圖9所圖示的過 程900中類似地描述的那樣,兩個編程文件能夠使用在1224處生成的位掩碼而被合并,安 全關鍵部分與秘密部分類似,非安全關鍵部分與公共部分類似。以這種方式,作為結果的合 并的編程文件包含當它們被認證機構認證時的用于安全關鍵部分的原先生成的配置編程 位以及用于修訂后的非安全關鍵部分的配置編程位。每當開發(fā)者或用戶期望改變非安全關 鍵部分而無需重新認證時能夠重復這個過程。
[0080] 認證機構或其它第三方可以要求安全關鍵部分保持不變并且有權認證的證據。為 了確保這樣的符合性,能夠做出與安全關鍵部分相對應的整個編程文件的位流部分的檢 查。例如,在1224處生成的位掩碼以及(取決于實施方式)在步驟1308處或在步驟1408處 生成的最后的編程文件還能夠被提供給認證機構。認證機構然后能夠使用位掩碼來執(zhí)行最 后的編程文件與被認證機構先前認證的在1222處生成的編程文件之間的逐位比較,以確 保與安全關鍵部分相對應的編程位保持不變并且有權認證。
[0081] 此外,在一些實施方式中,出于安全性或跟蹤目的,可能期望生成參考圖4到11所 描述的秘密部分、特別參考圖12到14所描述的安全關鍵部分和/或上面所描述的位掩碼 中的任一個的散列。例如,用于秘密部分、安全關鍵部分或上面所描述的位掩碼中的任一個 的編程位能夠通過諸如MD5消息摘要算法的密碼散列函數來操作以生成加密的散列值。
[0082] 圖15示出了一般地示出能夠被用來實現上面所描述的CAD和其它工具的功能性 中的一些或全部的計算機系統的圖解框圖表示。計算機系統1500包括被耦合到包括存儲 器1504 (典型地是隨機存取存儲器或"RAM")、存儲器1506 (典型地是只讀存儲器或"ROM") 的裝置的任何數量的處理器1502 (還被稱為中央處理單元,或CPU)。處理器1502能夠被 配置成生成電子設計。如本領域中眾所周知的那樣,存儲器1506用來將數據和指令單向地 傳送到CPU并且存儲器1504被典型地用來以雙向方式傳送數據和指令。
[0083] 這些存儲器裝置都可以包括上面所描述的任何適合類型的計算機可讀介質。大容 量存儲裝置1508還被雙向地耦合到CPU1502并且提供附加的數據存儲容量以及可以包括 上面所描述的計算機可讀介質中的任一個。大容量存儲裝置1508可以被用來存儲程序、數 據等,并且典型地是比存儲器慢的諸如硬盤的輔助存儲介質。大容量存儲裝置1508能夠被 用來保持預封裝的邏輯或知識產權功能的庫或數據庫以及關于生成特定配置的信息。將理 解的是,在適當的情況下,保持在大容量存儲裝置1508內的信息可以像虛擬存儲器那樣作 為存儲器1504的一部分被以標準方式結合。諸如⑶-R0M1514的特定大容量存儲裝置還可 以將數據單向地傳遞給CPU。
[0084] CPU1502還被耦合到包括一個或多個輸入/輸出裝置的一個或多個接口 1510,所 述一個或多個輸入/輸出裝置諸如視頻監(jiān)視器、軌跡球、鼠標、鍵盤、麥克風、觸敏顯示器、 換能器卡閱讀機、磁或紙帶閱讀機、平板、觸針、語音或手寫識別器,或其它眾所周知的輸入 設備,當然也諸如其它計算機。CPU1502可以是設計工具處理器。最后,CPU1502可選地可 以使用如一般地在1512處所示出的網絡連接被耦合到計算機或電信網絡。采用這樣的網 絡連接,設想了 CPU1502在執(zhí)行上面描述的過程步驟的過程中可能從網絡接收信息,或者 可能將信息輸出到網絡。應該注意的是,系統1500還可能與用于將完成的設計轉移到可編 程芯片上的裝置相關聯。上面描述的裝置和材料將為計算機硬件和軟件領域的技術人員所 熟悉。
[0085] 盡管為了方便上面以單數方式描述了許多組件和過程,但是本領域的技術人員將 了解的是,多個組件和重復的過程還能夠被用來實踐本公開的技術。雖然已經參考其特定 實施方式特別示出并描述了特定實施方式,但是本領域的技術人員將理解的是,在不背離 本發(fā)明的精神或范圍的情況下可以做出所公開的實施方式的形式和細節(jié)上的改變。例如, 本發(fā)明的實施方式可以與各種組件一起被采用,并且不應該被限制于上面所提到的實施方 式。另外,以上過程中的一個或多個中的特定步驟可以被省略、執(zhí)行多次、并行地執(zhí)行以及 以不同的次序執(zhí)行。因此意圖是,本發(fā)明被解釋成包括落入本發(fā)明的真實精神和范圍內的 所有變化和等同物。
[0086] 本公開要求由Titley等人于2013年4月19日提交的標題為"PARTITIONING DESIGNS TO FACILITATE CERTIFICATION"的共同待決的美國專利申請序號13/866, 624 (代 理人案號ALTRP296X1/A03942CIP)的優(yōu)先權,其通過引用整體地結合于此以用于所有目的。
【權利要求】
1. 一種方法,該方法包括以下步驟: 生成要被實現在可編程邏輯器件PLD上的電路設計的硬件描述語言HDL實施方式; 將所述電路設計劃分成第一部分和第二部分,所述第一部分包括用于耦接所述第一部 分和所述第二部分的接口,所述第二部分是包括要求由獨立認證機構認證為滿足功能安全 要求的功能的安全關鍵部分; 基于所述HDL實施方式生成用于所述第一部分的第一配置設定; 基于所述HDL實施方式生成用于所述第二部分的第二配置設定; 至少驗證用于所述第二部分的所述第二配置設定或者至少將用于所述第二部分的所 述第二配置設定提供到第三方認證機構以用于驗證;以及 提供用于所述第二部分的經驗證的第二配置設定以用于編程到PLD中。
2. 根據權利要求1所述的方法,所述方法進一步包括以下步驟: 對所述第一部分進行修訂; 生成用于修訂后的第一部分的修訂后的第一配置設定;以及 將用于所述修訂后的第一部分的所述修訂后的第一配置設定與用于所述第二部分的 所述經驗證的第二配置設定合并,以及 其中,提供用于所述第二部分的經驗證的第二配置設定以用于編程到所述PLD中的步 驟包括為所述修訂后的第一部分和所述第二部分兩者提供經合并的配置設定以用于編程 到所述PLD中。
3. 根據權利要求2所述的方法,其中,用于所述第二部分的所述配置設定被以編程位 的形式生成,并且其中,用于所述第二部分的所述編程位作為第一編程文件的一部分被包 括。
4. 根據權利要求2或3所述的方法,其中,用于所述修訂后的第一部分的所述配置設定 被以編程位的形式生成,并且其中,用于所述修訂后的第一部分的所述編程位作為第二編 程文件的一部分被包括。
5. 根據權利要求4所述的方法,所述方法進一步包括生成位掩碼,所述位掩碼包括其 中每一個位都具有第一邏輯值的第一組位和其中每一個位都具有第二邏輯值的第二組位, 所述第一組位中的每一個位都處于所述位掩碼的如下位置中,即,該位置與所述第一編程 文件或所述第二編程文件中的被所述第二部分使用的編程位相對應,其中,將用于所述修 訂后的第一部分的所述修訂后的第一配置設定與用于所述第二部分的所述經驗證的第二 配置設定合并的步驟包括使用所述位掩碼來將所述第一編程文件與所述第二編程文件合 并以生成合并的編程文件。
6. 根據權利要求5所述的方法,所述方法進一步包括使用所述位掩碼來驗證用于所述 第二部分的所述編程位在經合并的編程文件中尚未被變更。
7. -種由如下的過程形成的可編程邏輯器件PLD,所述過程包括以下步驟: 生成要被實現在可編程邏輯器件PLD上的電路設計的硬件描述語言HDL實施方式; 將所述電路設計劃分成第一部分和第二部分,所述第一部分包括用于耦接所述第一部 分和所述第二部分的接口,所述第二部分是包括要求由獨立認證機構認證為滿足功能安全 要求的功能的安全關鍵部分; 基于所述HDL實施方式生成用于所述第一部分的第一配置設定; 基于所述HDL實施方式生成用于所述第二部分的第二配置設定; 至少驗證用于所述第二部分的所述第二配置設定或者至少將用于所述第二部分的所 述第二配置設定提供到第三方認證機構以用于驗證;以及 提供用于所述第二部分的經驗證的第二配置設定以用于編程到PLD中。
8. 根據權利要求7所述的PLD,其中,所述過程進一步包括以下步驟: 對所述第一部分進行修訂; 生成用于修訂后的第一部分的修訂后的第一配置設定;以及 將用于所述修訂后的第一部分的所述修訂后的第一配置設定與用于所述第二部分的 所述經驗證的第二配置設定合并,以及 其中,提供用于所述第二部分的經驗證的第二配置設定以用于編程到所述PLD中的步 驟包括為所述修訂后的第一部分和所述第二部分兩者提供經合并的配置設定以用于編程 到所述PLD中。
9. 根據權利要求7或8所述的PLD,其中,用于所述第二部分的所述配置設定被以編程 位的形式生成,并且其中,用于所述第二部分的所述編程位作為第一編程文件的一部分被 包括。
10. 根據權利要求9所述的PLD,其中,用于所述修訂后的第一部分的所述配置設定被 以編程位的形式生成,并且其中,用于所述修訂后的第一部分的所述編程位作為第二編程 文件的一部分被包括。
11. 根據權利要求10所述的PLD,其中,所述過程進一步包括生成位掩碼,所述位掩碼 包括其中每一個位都具有第一邏輯值的第一組位和其中每一個位都具有第二邏輯值的第 二組位,所述第一組位中的每一個位都處于所述位掩碼的如下位置中,即,該位置與所述第 一編程文件或所述第二編程文件中的被所述第二部分使用的編程位相對應,并且其中,將 用于所述修訂后的第一部分的所述修訂后的第一配置設定與用于所述第二部分的所述經 驗證的第二配置設定合并的步驟包括使用所述位掩碼來將所述第一編程文件與所述第二 編程文件合并以生成合并的編程文件。
12. 根據權利要求11所述的PLD,其中,所述過程進一步包括使用所述位掩碼來驗證用 于所述第二部分的所述編程位在經合并的編程文件中尚未被變更。
13. -種方法,該方法包括以下步驟: 生成要被實現在可編程邏輯器件PLD上的電路設計的硬件描述語言HDL實施方式; 將所述電路設計劃分成第一部分和第二部分,所述第一部分包括用于耦接所述第一部 分和所述第二部分的接口; 生成所述第二部分的網表表示; 驗證所述第二部分; 在驗證所述第二部分之后,對所述第一部分進行修訂; 生成修訂后的第一部分的網表表示;以及 將經先前驗證的第二部分的所述網表表示與所述修訂后的第一部分的所述網表表示 合并。
14. 根據權利要求13所述的方法,其中,所述第二部分是包括要求認證為滿足功能安 全要求的功能的安全關鍵部分。
15.根據權利要求13或14所述的方法,所述方法進一步包括以下步驟: 生成包括用于所述修訂后的第一部分和所述第二部分兩者的配置設定的編程文件; 生成位掩碼,所述位掩碼包括其中每一個位都具有第一邏輯值的第一組位和其中每一 個位都具有第二邏輯值的第二組位,所述第一組位中的每一個位都處于所述位掩碼的如下 位置中,即,該位置與所述編程文件中的被所述第二部分使用的編程位相對應;以及 使用所述位掩碼來驗證用于所述第二部分的所述編程位在所述編程文件中尚未被變 更。
【文檔編號】G06F17/50GK104112033SQ201410155402
【公開日】2014年10月22日 申請日期:2014年4月17日 優(yōu)先權日:2013年4月19日
【發(fā)明者】A·泰特利, D·S·高曼 申請人:奧特拉有限公司