TWI821414B - 一種用於仿真系統之控制塊及其電路與製作方法 - Google Patents
一種用於仿真系統之控制塊及其電路與製作方法 Download PDFInfo
- Publication number
- TWI821414B TWI821414B TW108134657A TW108134657A TWI821414B TW I821414 B TWI821414 B TW I821414B TW 108134657 A TW108134657 A TW 108134657A TW 108134657 A TW108134657 A TW 108134657A TW I821414 B TWI821414 B TW I821414B
- Authority
- TW
- Taiwan
- Prior art keywords
- clock
- delay
- signal
- simulation
- flip
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 42
- 238000013461 design Methods 0.000 claims abstract description 91
- 238000004088 simulation Methods 0.000 claims description 128
- 230000007704 transition Effects 0.000 claims description 35
- 230000004044 response Effects 0.000 claims description 12
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000011156 evaluation Methods 0.000 abstract description 18
- 238000005192 partition Methods 0.000 description 22
- 238000003860 storage Methods 0.000 description 22
- 238000002347 injection Methods 0.000 description 21
- 239000007924 injection Substances 0.000 description 21
- 230000015654 memory Effects 0.000 description 20
- 238000013507 mapping Methods 0.000 description 19
- 101100328957 Caenorhabditis elegans clk-1 gene Proteins 0.000 description 18
- 238000005516 engineering process Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 17
- 101100113692 Caenorhabditis elegans clk-2 gene Proteins 0.000 description 16
- 230000006870 function Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 15
- 239000000243 solution Substances 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 238000012795 verification Methods 0.000 description 10
- 238000004519 manufacturing process Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 238000012546 transfer Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000000638 solvent extraction Methods 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- NEWKHUASLBMWRE-UHFFFAOYSA-N 2-methyl-6-(phenylethynyl)pyridine Chemical compound CC1=CC=CC(C#CC=2C=CC=CC=2)=N1 NEWKHUASLBMWRE-UHFFFAOYSA-N 0.000 description 2
- 241000283699 Bos indicus Species 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000013440 design planning Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007858 starting material Substances 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 241000282326 Felis catus Species 0.000 description 1
- 241000588769 Proteus <enterobacteria> Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000001459 lithography Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000005693 optoelectronics Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000005610 quantum mechanics Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 235000013599 spices Nutrition 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/331—Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/06—Clock generators producing several clock signals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/08—Clock generators with changeable or programmable clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/36—Circuit design at the analogue level
- G06F30/367—Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/18—Manufacturability analysis or optimisation for manufacturability
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/20—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
- H03K19/21—EXCLUSIVE-OR circuits, i.e. giving output if input signal exists at only one input; COINCIDENCE circuits, i.e. giving output only if all input signals are identical
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K5/00—Manipulating of pulses not covered by one of the other main groups of this subclass
- H03K5/153—Arrangements in which a pulse is delivered at the instant when a predetermined characteristic of an input signal is present or at a fixed time interval after this instant
- H03K5/1534—Transition or edge detectors
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Geometry (AREA)
- Evolutionary Computation (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Tests Of Electronic Circuits (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本專利的獨立項代表實施例的簡要描述。仿真控制塊使使用者可以在
同一階段查看整體設計,以便使用者可以在同一邏輯參考週期內觀察與控制停止的設計。以參考時間的週期K,時脈錐和設計正反器(flip-flop)皆評估後提供。在仿真的週期K+1期間,計算週期K+1所導出時脈值。此外,在仿真的週期K+1期間,依據時脈的週期K值以計算順序元件的值。當仿真中斷而暫停時,時脈錐將恢復至先前的狀態。本摘要無意限制權利項的範圍。
Description
本發明涉及到硬體仿真的一種方法和系統,特別是評估時脈與數據輸入的硬體仿真的一種方法和系統。
在傳統的硬體仿真系統中,仿真週期分為兩個階段,在這兩個階段期間評估時脈與數據輸入。最初,為了回應主要數據輸入的變化來評估所導出時脈值。接著,將評估後的時脈施加到正反器與鎖存器,由此可使得此類順序元件輸出被更新以傳輸至設計的其餘部分。換句話說,傳統的硬體仿真系統要求時脈在評估順序元件之前完全傳輸,這種時脈與數據的串行評估會減緩仿真速度並導致低效率。因此,一個改進的硬體仿真系統的需求仍持續存在。
請求項表示對本揭露內所發現的一個或多個創新、實施例或示例的簡要描述。
本發明內容並不試圖完全簡要描述可以在商業中使用的任何一特定創新、實施例或示例。另外,本發明內容不是旨在表示一創新、實施例或示例之必要元件或限制本發明之主題的範圍。
在本揭露內容中的創新、實施例或示例並非涵蓋一切,而是描述主題的基本意義。因此,本發明內容的用途之一為提供稍後的詳細說明的一序言。
在仿真(Emulator)設計中,重疊導出的時脈與數據正反器(Flip flop)/鎖存器(Latch)之評估意味著可以平行而非串行地評估時脈與數據。儘管這樣的方案提高了仿真性能,但是在任何時候仿真系統的狀態對於遇到斷點(Breakpoint)後希望行使可觀察性或可控制性的使用者而言,可能是違反直覺的。
一旦達到斷點,將阻止新的時脈與數據輸入施加於設計,以暫停進一步評估該設計。在這一點,停止運行的設計之正反器似乎處於參考時間的週期K的狀態,而時脈錐卻已評估了週期K+1。
仿真「允許將整個設計在同一個階段呈現給使用者,符合使用者之期望且能夠在相同的邏輯參考周期內觀察或控制停止的設計。時脈錐與正反器都將在參考時間的週期K之後的狀態下呈現。為了實現該目標,如果在當前時脈週期的的任一點檢測到斷點,則時脈錐將恢復至其先前的狀態。
通過為用戶提供連貫的設計視圖,可以將設計狀態與另一個仿真器、模擬器或真正硬體的輸出進行比較。如此,施加於設計的底層轉換的
複雜性可被隱藏。若無仿真模組,對於期望常規斷點行為的使用者而言,重疊時脈與數據對於性能之改進可能無法實現。
根據本發明的一實施例,一硬體擬系統控制塊,包含:N個延遲塊,其中,每一延遲塊接收代表一延遲值的一第一信號,該延遲值與該仿真系統中的該N個時脈信號中的一第一時脈信號相關,其中該延遲值定義了該第一時脈信號的轉換時間;一最小延遲計算塊,適於計算該N個延遲值中的最小值;一時脈排程器,其被設定為針對其相關的延遲值與最小延遲值吻合的每一時脈排程一轉換,並針對其相關的延遲值與最小延遲值不吻合的每一時脈減小其延遲值,其中該N個延遲塊中的每一延遲塊的最小延遲值係由該時脈排程器所提供;以及一時脈信號產生器,其被設定為針對該時脈排程器所排程的多個時脈信號產生多個轉換。
在一實施例中,硬體仿真系統控制塊更部分包含N個正反器以及N個多工器(flip-flops),其中,每個N個正反器與一個不同的N個延遲塊相關,並適於接收其相關延遲塊的輸出,每個多工器與一個不同的N個延遲塊相關,並適於在其第一輸入接收其相關的延遲塊的輸出,其中,每個多工器具適於接收其相關的正反器的輸出之一第二輸入,每個多工器都有一個選擇端子,當觸發信號有效時,該選擇端子將其第二個輸入傳遞至最小延遲計算器。觸發信號暫停設計的仿真以回應使用者插入的仿真中斷。
在一實施例中,硬體仿真系統控制塊更部分包含一第二正反器,其適於接收時脈產生器的輸出,以及第二多工器適於在其第一輸入接收時脈排程器的輸出以及在其第二輸入接收第二正反器的輸出,其中,當觸發信號無效時,第二多工器將其第一輸入傳遞至其輸出,當觸發信號有效,則
第二多工器將其第二輸入傳遞至其輸出,第二多工器的輸出應用於仿真電路設計的硬體仿真系統。
在一實施例中,硬體仿真系統控制塊在仿真的週期K+1期間計算與N個時脈信號的仿真週期K之相對應的順序元件的值。在一實施例中,硬體仿真系統控制塊在仿真的週期K+1期間計算仿真的週期K+1的時脈值。
在一實施例中,每個延遲塊包含適於在其第一輸入接收最小延遲的一減法器,一正反器,接收該延遲塊的輸出並將其輸出提供給該減法器的第二輸入,一互斥或閘(XOR gate),在其第一輸入接收最小延遲並在其第二輸入接收延遲塊的輸出,一正反器,接收該互斥或閘的輸出,以及一多工器在其第一輸入接收與該塊相關的延遲值以及在第二輸入接收該減法器的輸出。多工器提供其輸出以回應於該正反器的一輸出信號。
在一實施例中,硬體仿真系統控制塊更部分包含一邊緣檢測器,該邊緣檢測器被設定為檢測N個時脈信號中的至少第一個時脈的邊緣以產生第一信號,一第一正反器接收該時脈信號。第一信號在其使能引腳處,系統時脈在其時脈引腳,一第二正反器在其使能引腳處接收第一信號,系統時脈在其時脈引腳,以及組合邏輯電路接收第一正反器的輸出信號,並將數據傳送至第二正反器的數據輸入。
根據本發明的一實施例的一電路,其包含一邊緣檢測器,該邊緣檢測器被設定為檢測時脈信號的邊緣並產生第一信號,一第一正反器,在其使能引腳處接收該第一信號並在其時脈引腳處接收一系統時脈一第二正反器,在其使能引腳處接收該第一信號並在其時脈引腳處接收一系統時脈,以
及一組合邏輯電路,接收該第一正反器的輸出信號並將數據提供給該第二正反器的數據輸入。
根據本發明的一實施例的一種控制電路設計的硬體仿真的方法,包含接受代表與N個時脈信號中的不同時脈信號中的每一個相關聯的延遲值的信號,與每個時脈信號相關聯的延遲值,定義時脈信號的轉換時間,計算N個延遲值的最小值,為與其相關聯的延遲值與最小延遲值吻合的每個時脈安排一個轉換,遞減每個其延遲值與之相關聯的時脈的相關延遲,其中該時脈之延遲值與最小延遲值不吻合,並且根據排程轉換或遞減的延遲以產生時脈信號的轉換。
在一實施例中,該方法更包含部分為N個時脈中的每個時脈儲存緊接在前的週期的預訂轉換或遞減延遲,回應於觸發信號而傳遞所儲存的排程轉變或遞減的延遲,儲存所產生緊接在前的時脈信號的轉變,並且針對每個時脈信號的緊接在前的轉化或當前的的轉換傳遞給該時脈信號,以回應於一觸發信號。
在一實施例中,該方法更包含在仿真週期K+1期間計算與時脈信號的仿真週期K相對應的順序元件的值。在一實施例中,該方法更包含在仿真的週期K+1期間計算仿真週期K+1的時脈值。
在一實施例中,該方法更包含檢測N個時脈信號中的至少第一個時脈信號的邊緣以產生一第一信號,將該第一信號施加至一第一正反器的使能引腳上,在該第一正反器的時脈引腳處施加一系統時脈,將該第一信號施加至一第二正反器的使能引腳,第二正反器的時脈引腳接收該系統時脈,將該第一
正反器的輸出施加至一組合邏輯電路的輸入,以及將該邏輯組合的輸出施加至該第二正反器的一數據輸入
根據本發明的一實施例的管線處理數據和時脈信號的方法,該方法包含,檢測N個時脈信號中的至少一個邊緣以產生第一信號,並將該第一信號施加至一第一正反器的使能引腳,該第一正反器的時脈引腳接收一系統時脈,將第一信號施加至一第二正反器的使能引腳,該第二個正反器的時脈引腳接收該系統時脈,將該第一正反器的輸出施加至一組合邏輯電路的一輸入,並將該組合的一輸出施加至該第二正反器的一數據輸入。
10:延遲塊
101:延遲塊
10i:N個延遲塊
10N:延遲塊
121:正反器
12i:N個正反器
12N:正反器
141:多工器
14i:N個多工器
14N:多工器
16:最小延遲計算器
18:時脈排程器
100:硬體仿真控制塊
110:產品想法
112:EDA軟體
112:元素
114:系統設計
116:邏輯設計和功能驗證
118:測試的合成和設計
120:網表驗證
122:設計規劃
124:佈局實施
126:分析和擷取
128:物理驗證
130:解析度提升
132:準備遮罩數據
134:下線
136:製造
138:封裝和組裝
140:晶片
150:系統時脈
20:時脈信號產生器
22:正反器
24:多工器
202:正反器
204:減法器
2041,2042,204N:編碼處理器
205:HDL代表被測設計
206:互斥或閘
208:正反器
210:多工器
2121,2122,212M:硬體板
2141,2142,214K:硬體單元
30:啟動器單元
32:仿真設計
300:邊緣檢測器
302:正反器
303:及閘
304:正反器
306:數據路徑組合邏輯電路錐
308:正反器
3110:電腦系統
3112:匯流排子系統
3114:處理器
3116:網路介面子系統
3118:通訊網路
3120:使用者介面輸出裝置
3122:使用者介面輸入裝置
3124:儲存子系統
3126:記憶體子系統
3128:檔案儲存子系統
3130:隨機存取記憶體(RAM)
3132:唯讀記憶體(ROM)
3140:記憶體
3180:元件電路設計
3190:包含元件的集成電路
400:數據路徑控制邏輯
500:邏輯電路
502:仿真系統
510:編譯器
A1:輸出信號
Ai:輸出信號
AN:輸出信號
CK:信號
Clk1:數字時脈信號
Clk2:數字時脈信號
Clkn:數字時脈信號
Clk1_edge:信號
D:數據輸入
delayi:信號
delayN:信號
Delay:輸入信號
Delay_Increment:輸出信號
EN:使能EN端子
global_minimum_delay:輸入信號
I0:輸入
I1:輸入
Q:輸出
S:選擇端子
以下的實施方式、圖示、附加的圖示以及附加的申請專利範圍表示所要求保護的發明的創新、實施例和/或示例的性質與優點。所有圖示僅出於說明的目的並不限制發明的保護範圍。本圖示不一定依照比例繪製並且屬於本揭露的一部分。
在圖示中,相似的元件或特徵可能具有相同或相似參考標籤符號(例如字母數字符號,例如參考數字),並且可以表示相似或等同的功能。進一步地,為了區分相同元件,可在參考標籤後加上破折號(dash)和第二標籤來區分相同類型的各種元件。如果在說明書內僅使用第一參考標籤,則該描述適用於具有相同的第一參考標籤的任何類似元件,而與第二參考標籤無關。圖示的簡要描述如下。
圖1為根據本發明的一實施例的硬體仿真控制塊的簡化的高階方塊圖。
圖2為根據本發明的一實施例的數字時脈信號Clk1與Clk2及其對應的全域(global)最小值與全域(global)時間的時序圖。
圖3為根據本發明的一實施例的在硬體仿真系統中使用的延遲塊的示意圖。
圖4為根據本發明的一實施例的一邏輯電路的簡化示例性方塊圖,該邏輯電路使得能夠平行地評估數據與時脈信號並以管線方式來呈現。
圖5為根據本發明揭露的實施例的一積體電路(Integrated Circuit)的設計與製造中的各種運作的流程圖。
圖6A、6B與6C是適於與實施例的技術一起使用的電腦系統以及該技術的電路設計與實施例的簡化方塊圖。
圖7為仿真系統的方塊圖。
在這樣的各種圖示中,與公認的工程實務一致,可以省略參考符號。然而,當從整體上以圖示的方式以及所描述這些圖示的上下文來觀看時,本領域的普通技術人員將容易理解圖示的的元件。
圖示和以下實施例僅說明來表示創新、實施例和/或示例,在單個實施例中可一起描述各種特徵、結構或特性以簡化本揭露。由這樣的示例性創新、實施例和/或示例公開的任何元件、過程、機器、系統、製造或組成的變化都將被容易地辨識並且可以在商業上使用,而不背離所要求保護的原理。
在圖式與實施方式中,可以描述許多具體細節以實現一個或多個示例性創新、實施例和/或示例。為了不使下列實施方式中的示例性創新、實施例和/或示例呈現不清楚,可能將本領域中已知的一些處理步驟或操作組合在一起,以用於呈現和說明的目的,並且可能不進行詳細的描述。然而,本領域技術人員將辨識到這些示例性創新、實施例和/或示例在缺少這些具體細節或等同的情況下,仍可用於商業中。在其他情況下,未詳細描述知名的過程與裝置,以免不必要地使這些示例性創新、實施例和/或示例費解難懂。在其他情況下,可能根本不會描述本領域中已知的一些處理步驟或操作。相反地,以下描述聚焦於各種示例性創新、實施例和/或示例的獨特特徵或元素。
當一個設計被執行於FPGA時,每個仿真週期可分為兩個時段,即時脈產生之活動時間與組合電路之評估時間。在已知的仿真技術中,所得的最小仿真週期是時脈產生之活動時間與一組合電路之評估時間的總和。在時脈產生之活動時間內,用於產生時脈之被耦合至鎖存器或正反器的時脈引腳之輸入變數值傳輸至鎖存器或正反器的時脈引腳而被作為時脈。該組合電路之評估時間對應於用於評估順序元件例如鎖存器和正反器的時間。評估順序元件數據輸入的組合電路通常稱為組合路徑或數據路徑。連接至鎖存器或正反器的時脈引腳的設計網或變數,在本文中稱為導出時脈。根據該定義,可以將設計的主時脈視為導出時脈。
當組合電路包含鎖存器時,根據耦合至鎖存器的使能引腳的信號,例如時脈信號,鎖存器在評估或使能時變透明,而在未評估或禁用時,鎖存器變非透明。當組合電路包含正反器時,根據耦合至正反器的時脈引腳
的時脈信號,當時脈信號的值改變或轉換時,例如從低邏輯值改為高邏輯值,正反器變透明,而在未評估或禁用時,正反器變非透明。
在評估正反器和/或鎖存器,需要知道導出時脈的值以得知電路之運作。時脈樹包含主要設計輸入變數,這些輸入被輸入到任何(可選擇)組合邏以產生導出時脈信號至正反器和/或鎖存器的輸入端。因此,時脈樹可以驅動時脈樹順序電路或元件,例如時脈樹正反器,或是一個設計時序電路,使得時脈樹時序電路或設計時序電路可根據導出時脈信號來進行評估。時脈樹時序電路產生時脈信號作為輸出,該時脈信號被耦合以評估另一個時序電路。在整個說明書中,耦合裝置是直接或間接連接的,而連接裝置是直接連接的。相反的,時序電路之輸出信號僅耦合至其他時序電路例如數據路徑信號的輸入信號,而不用於評估任何其他時序電路。
當時脈樹被映射至FPGA時,主要設計輸入變數通過任何(可選)組合邏輯電路時,未預期或較長之路徑傳輸之延遲時間可能會導致仿真期間意外的電路故障。但是,為了確保設計的正確操作,應僅使用穩定的時脈值來評估電路,以防止在仿真或原型中發生意外的故障。這可以經由允許時脈樹所產生之導出時脈在導出時脈輸入端具有穩定之最終值來達成。
在仿真週期的第一階段,在不傳輸任何組合電路之路徑的情況下進行時脈樹評估。在仿真周期的第二階段,在傳輸組合電路之路徑的情況下進行評估,但不執行時脈樹評估。如果專用於時脈傳輸的資源在組合路徑傳輸期間處於空閒狀態,專用於組合數據路徑的資源在時脈傳輸期間處於空閒狀態,則整體路由解決方案不是最理想的,因為仿真器的運行速度可能較慢。
根據本發明的一觀點,在硬體仿真期間執行對導出時脈(在本文中稱為時脈錐)與正反器以及鎖存器(在下文中或者稱為順序元件)的評估,以平行與管線的方式執行硬體仿真。為了達成此目的以加快仿真速度,在對正反器和鎖存器進行評估之前,首先對導出時脈進行評估。
因此,在仿真週期K期間,如參考仿真的週期K以計算時脈的值。在週期K+1開始,在週期K中計算的時脈穩定值以用於評估順序元件。因此,在仿真的週期K+1期間,計算出以下內容:(i)週期K+1中導出時脈的值,以及(ii)與時脈值週期K相對應的順序元件的值。
為了使得設計中的可觀察性與控制性可達成,一旦啟動斷點並停止仿真時,時脈錐將返回一個週期以回到其先前的狀態。這樣可以確保發生在仿真週期K中的斷點,可同時提供週期K中之導出時脈與順序元件。經由向使用者提供設計的連貫視圖,設計狀態可直接與另一個仿真器、仿真器或其他硬體的輸出進行比較。
為了簡單起見,假設設計具有兩個時脈,即週期為6個單位的Clk1以及週期為10個單位的Clk2。假設Clk1和Clk2的工作週期為50%。時脈信號Clk1和Clk2以時間單位0、3、5、6、9、10、12、15出現8個仿真週期。隨著仿真時間延長,這8個仿真週期重複出現。可以理解的是,一個設計通常包含兩個以上的時脈。
傳統的仿真系統要求對於每個仿真週期(在下文中或者稱為週期)K,時脈Clk1和Clk2的傳輸先於順序元件的數據的傳輸。因此,在傳統系統中,仿真週期長度由時脈錐傳輸所花費的時間與隨後在順序元件之間的
數據傳輸所花費的時間而定義。換句話說,在傳統的仿真系統中,時脈與數據的傳輸是以串行的方式進行的。
根據本發明的實施例,時脈與數據的傳輸是平行進行的。因此,在每個仿真週期K間評估的時脈錐使用於週期K+1的設計的順序元件之間的數據傳輸。根據本發明的實施例,因為時脈錐和順序元件的評估被一個時脈週期而分開,所以兩者評估平行發生,而導致仿真週期的時間縮短。
在仿真時,設計人員通常會插入一個或多個觸發(在此也稱為中斷或斷點),該啟動器會導致仿真停止(在此也稱為暫停),以使使用者能夠觀察與檢查設計值。例如,當寄存器輸出更改為特定值時,觸發可能會發生。因此,在參考時間的週期K中出現的斷點必須同時顯示導出時脈以及週期中的正反器與鎖存器。因為在週期K中觸發的斷點將會在週期K中找到順序元素,但在週期K+1找到導出時脈,所以本發明的實施例將時脈錐返回一個週期,以提供正確的結果。因此,在斷點期間設計人員對設計所做的任何修改(例如,將值寫入寄存器),並且可能已經傳輸至整個設計中,也要撤銷並考慮在內,以提供給使得使用者在暫停週期時的準確描述。
圖1為根據本發明的一實施例的硬體仿真控制塊100的簡化高階方塊圖。控制塊100包含N個延遲塊10i,每個延遲塊與N個時脈信號中的一個時脈塊相關,其中i是從1至N的整數,N個正反器12i、N個多工器(Mux)14i、一個最小延遲計算器16、一個時脈排程器18、一個時脈信號產生器20、正反器22以及多工器24。
每個延遲塊101接收一相對應的delayi延遲值,該延遲值定義時脈信號之週期。例如,如果與延遲塊101相關的clock1在每3個時間單位後
轉換,則信號delayi接收到值3(圖一中未示出)以回應於系統時脈的每次轉換。類似地,如果與延遲塊10N相關的clockN在每5個時間單位後轉換,則信號delayN接收到值5以回應系統時脈的每次轉換。
在正常運作中,當觸發信號未啟動時,多工器(Mux)14i的選擇(S)端子選擇接收其相關的延遲塊的數據,例如,多工器141選擇延遲塊101的輸出信號A1,以及多工器14N選擇延遲塊10N的輸出信號AN。換句話說,在正常運作期間,多工器14i選擇由其相關的延遲塊10i所傳送的輸出信號Ai。
最小延遲計算器塊16自多工器141,142...14N接收延遲值以決定延遲值中的最小值,並將該最小延遲值提供至時脈排程器18。
時脈排程器18適用於針對其延遲值與最小延遲吻合的每個時脈調度轉化,並且將其延遲值與最小延遲值不吻合的每個時脈的延遲值以最小延遲遞減。例如,假設仿真的設計具有兩個時脈,稱之為Clk1和Clk2,即i等於2。進一步假設Clk1和Clk2的延遲值分別為3和5個時間單位。因此,信號Clk1每3個時間單位具有從低至高或高至低的轉換,以及信號Clk2每5個時間單位具有從低至高或高至低的轉換。
在第一個仿真週期中,信號Clk1和Clk 2分別以3和5個時間單位轉換(切換)。在第二個仿真週期中,最小延遲塊計算器16決定延遲3小於延遲5。因此,在第二個仿真週期中,時脈排程器18以3個時間單位調度信號Clk1上的轉換,以及以(5-3=2)個時間單位調度信號Clk2上的轉換。在第三個仿真週期中,最小延遲塊計算器16決定延遲2小於延遲3。因此,在第三個仿真週期中,時脈排程器18以(3-2=1)個時間單位調度信號Clk1上
的轉換,以及以5個時間單位調度信號Clk2上的轉換。在第四個仿真週期中,最小延遲塊計算器16決定延遲1小於延遲5。因此,在第四個仿真週期中,時脈排程器18以3個時間單位調度信號Clk1上的轉換,以及以(5-1=4)個時間單位調度信號Clk2上的轉換。決定時脈轉換的過程根據上述規則繼續進行。下列表1總結了八個仿真週期Clk1和Clk 2的轉換,其中符號#代表延遲值。
圖2是時脈信號Clk1和Clk 2以及與上述表1相關的對應全局最小延遲的時序圖。圖1也顯示了全域時間。時脈信號產生器20經設定使得時脈上的轉換是如上所述由時脈排程器18所決定的。
為了將時脈錐恢復至先前的狀態,必須保留為控制時脈所產生的內部信號之採樣值。如上所述,為了有助於動態調度、時脈排程器狀態與時脈信號,每個延遲塊都保留採樣值。
當斷點被啟動時,在每個延遲塊內代表週期K的樣本將被應用為最小延遲計算塊16的輸入,並經由組合邏輯電路傳輸至時脈排程器18,其內部狀態恢復至其採樣值。類似地,將代表時脈週期K的樣本應用於設計並傳輸。因此,當啟動器單元30啟動斷點時,在例如週期K中,確定斷點信號啟動時,多工器141的選擇信號S選擇自正反器121的輸入,並且多工器24的選擇信號S選擇自正反器22的輸入。因此,當在週期K中啟動斷點時,多工器14i選擇自延遲塊101 i提供週期K-1的延遲值。以類似的方式,當在週期K啟動斷點時,多工器24選擇自時脈信號產生器20所提供的週期K-1的時脈轉。
一旦清除了斷點並恢復評估後,正反器維持在週期K時,時脈錐再次被允許評估週期K+1。時脈錐和正反器評估的交錯重疊得以恢復。使用者在清除斷點後,使時脈錐前進至週期K+1,同時正反器維持在週期K時,仿真重新開始。
圖3為每個延遲塊10i的簡化高級框圖。延遲塊10被部分示於圖3,也包含正反器202和208、減法器204、互斥或閘206以及多工器210。輸入信號Delay對應於分配給該延遲塊的延遲值。例如,如果分配給延遲塊10的延遲值為5個時間單位,則輸入信號延遲接收值為5。輸入信號global_minimum_delay是由圖1的最小延遲計算器16計算並由時脈產生器18反饋至延遲塊的最小延遲。如圖所示,由延遲塊10產生的輸出信號Delay_Increment被施加至互斥或閘206以及正反器202。
如果輸出信號Delay_Increment等於global_minimum_delay,互斥或閘206產生低邏輯值,信號CK在下一個轉換期間,造成正反器208選
擇多工器210的輸入I0,其接收分配給延遲塊的延遲值。如果輸出信號Delay_Increment不等於global_minimum_delay,互斥或閘206產生高邏輯值,信號CK在下一個轉換期間,造成正反器208選擇,多工器210的輸入I0,其接收信號global_minimum_delay。減法器204適於自延遲塊Delay_Increment的輸出中減去global_minimum_delay,並將該差值提供至多工器210的輸入I1。
圖4為根據本發明的一實施例的邏輯電路500的簡化方塊圖,該邏輯電路500能夠以管線方式平行地評估數據與時脈信號。硬體仿真控制塊100產生信號Clk1,Clk2...Clkn,如圖1和圖2以及上述內容所示。圖4示出了用於確保在週期K+1中評估的時脈用於數據傳輸K評估中以達成管線的評估方式。為了呈現清楚,雖然僅示出了時脈Clk1的電路,但是具有相似的附加電路之其他時脈仍可被理解。
邏輯電路500包含邊緣檢測器300和數據路徑控制邏輯400。包含正反器302和具有一個反相輸入的及閘(AND gate)303的邊緣檢測器300檢測時脈信號Clk1的轉換,以回應產生信號Clk1_edge。信號Clk1_edge被施加於正反器的使能EN端子(EN)。放置於正反器304的輸出(Q)和正反器308的數據輸入(D)之間的是數據路徑組合邏輯電路錐306,其通常包含數個組合性閘門(為了簡單起見未示於圖示)。正反器302、304、308於其時脈引腳處接收系統時脈150。自數據路徑組合邏輯電路錐306接收的信號EN與數據在系統時脈150到達前是穩定且有效的。正反器308的輸出Q在仿真之前傳遞至設計中。
圖6A、6B與6C是適於與實施例之技術的一起使用的電腦系統以及該技術的電路設計與電路實施例的簡化方塊圖。
在圖6A中,電腦系統3110通常包含至少一個電腦或處理器3114經由匯流排子系統3112與許多外圍裝置進行互動。通常,電腦可以包含,或處理可以是,任何微處理器、圖形處理器單元或電子信號處理器,以及等同其電子處理器,例如特殊應用積體電路(ASIC)或場域可程式化邏輯閘陣列(FPGA)。「處理器」和「電腦」的術語在以下進一步定義。這些外圍裝置可以包含儲存子系統3124,其包含記憶體子系統3126與檔案儲存子系統3128、使用者介面輸入裝置3122、使用者介面輸出裝置3120以及網路介面子系統3116。輸入和輸出裝置讓使用者與電腦系統3110互動。
該電腦系統可以是伺服器電腦、客戶端電腦、工作站、大型主機、個人電腦(PC)、平板電腦、數位視訊轉換盒(STB)、掌上型電腦(PDA)、行動電話、智慧型手機、網路裝置、機架式刀鋒伺服器、公共資料站、電視、遊戲機、網路路由器、交換機、橋接器或是任何能夠執行指令(順序性或其他)指定該機器要執行的動作。
該電腦系統通常包含一個操作系統,例如微軟的Windows、昇陽電腦的Solaris、蘋果電腦的MacOs、Linux或Unix。電腦系統通常也包含一個基本輸入輸出系統(BIOS)以及處理器韌體。處理器使用操作系統、BIOS以及處理器韌體以控制連接至處理器的子系統以及介面。與這些操作系統兼容的典型處理器包含英特爾的奔騰和安騰、超威半導體的Opteron和Athlon以及安謀控股的ARM處理器。
創新、實施例和/或示例既不限於傳統電腦應用也不限於運行它們的可編碼的裝置。例如,所要求保護的創新、實施例和/或示例可以包含光學電腦、量子電腦、類比電腦等。該電腦系統可以是一個多元處理器或多核系統,並且可以在分佈式或遠程系統中使用或執行。在這裡,「處理器」一詞的使用涵義最廣,以包含單一處理器以及多核或多元處理器陣列,包含圖形處理器單元、電子信號處理器、數位處理器以及這些裝置的組合。此菜,雖然可能僅示出了單個電腦系統或單個機器,但是只用此類術語的單數形式進一步應表示電腦系統或機器的任何集合,這些電腦系統或機器單獨地或共同地執行指令,以執行任何一個或多個在本文所討論的指令。由於電腦和網路的不斷變化的性質,因此圖6A中的電腦系統3110的描述僅是意旨描述實施例的範例。電腦系統3110的許多其他設定可能比圖6所示的電腦系統具有更多或更少的元件。
網路介面子系統3116提供外部網路一個介面,包含經由通訊網路3118耦合至其他電腦系統或機器中對應的介面。通訊網路3118可能包含許多互聯的電腦系統、機器以及通訊線路。這些通訊線路可能是纜線線路、光學線路、無線線路或是任何資料交流的裝置。通訊網路可能是任何合適的電腦網絡,例如網路之類的廣域網路和/或當地區域網路例如乙太網路。通訊網路可以是有線或無線的,並且通訊網路以加密或解密的方法,例如使用虛擬私人網絡。通訊網路使用一個或多個通訊界面,該介面可以自其他系統接收數據或向其他系統傳輸數據。通訊介面的實施例通常包含乙太網路卡、數據機(例如電話、衛星、電纜或ISDN)、(異步)數位用戶迴路
(DSL)單元、Firewire介面以及USB介面等。可使用一種或多種協定,例如HTTP、TCP/IP、RTP/RTSP、IPX和/或UDP。
使用者介面輸入裝置3122可包含文數鍵盤、小鍵盤、指向裝置例如滑鼠、軌跡球、觸控板、觸控筆、繪圖板、掃描器、併入顯示器的觸控式螢幕、聲頻輸入裝置例如語音辨識系統或麥克風、眼睛追蹤辨識、腦波辨識以及其他輸入裝置。這些裝置可以通過有線或無線的方式連接至電腦系統。通常,「輸入裝置」這個術語的使用旨在包含所有裝置的可能類型以及輸入資料至電腦系統3110或通訊網路3118的方式。使用者介面裝置通常讓使用者選擇出現在使用者輸出裝置(例如顯示器子系統)上的物件、圖標以及文字等。
使用者介面輸出裝置3120可能包含一個顯示器子系統、印表機、傳真機或非視覺性的顯示器例如聲頻輸出裝置。顯示子系統可以包含陰極射線管(CRT)、平板裝置例如液晶顯示器(LCD)、投影裝置或是其他用於創造可見圖像的裝置,例如虛擬實境系統。顯示子系統也可以提供非視覺顯示,例如經由聲頻輸出或觸覺輸出(例如震動)裝置。通常,「輸出裝置」這個術語的使用旨在包含所有裝置的可能類型以及輸出資料自電腦系統3110至使用者或另一個機器或電腦系統。
記憶體子系統3126通常包含多個記憶體,包含用於程式執行期間儲存指令和數據的隨機存取記憶體(RAM)3130(或是其他揮發性記憶體的裝置)和唯讀記憶體(ROM)3132,其使用於儲存固定的指令。檔案儲存子系統3128為程式與資料檔案提供持久儲存,並且可能包含硬碟、磁碟片以及相關的可移除的媒體、CD-ROM硬碟、光碟機、快閃記憶體或可移除的
媒體儲存匣。實施某些實施例的功能的資料庫和模組可由檔案儲存子系統3128儲存。
匯流排子系統3112提供了一種用於使電腦系統3110的各種元件和子系統依照預期比次互動的裝置。雖然匯流排子系統3112被示意性示出為單個總線,但是匯流排子系統的替代實施例可以使用多個匯流排。例如,主記憶體可使用直接記憶體存取(DMA)與檔案儲存系統直接互動。
圖6B描繪了記憶體3140,例如一個與檔案儲存子系統3128和/或網路介面子系統3116相關的非暫態電腦可讀資料與資料儲存媒介,並且可以包含指定電路設計的數據架構。記憶體3140可以是一個硬碟、磁碟片、光學介質、可移除的媒體儲存匣或是以揮發性或非揮發性的形式儲存電腦可讀資料。從這樣的記憶讀讀取電腦的軟體可以在選定的時間點上從有形形式轉換為通過媒介傳輸的傳輸信號(例如網絡、連接器、電線或作為脈波或介質的跡線,例如空間或大氣等電磁輻射,其電磁頻譜中的波長比紅外線長)。
圖6C表示使用所描述的技術的積體電路,其包含例如從元件庫中選擇一個或數個元件。
本文所述的一些創新、實施例和/或示例包含和/或使用處理器。如本文所使用的「處理器」一詞表示有形的數據和資料處理裝置,其通常使用序列轉換(也稱為「操作」)對數據和資料進行物理性的轉換。數據和資料可以用電、磁、光或聽覺信號以物理性的代表,該信號能夠被處理器儲存、讀取、傳輸、組合、比較或由處理器以其他方式操控。術語「處理
器」可以表示單個處理器和多核系統或多元處理器陣列,包含圖像處理單元、數位信號處理器、數位處理器或這些元素的組合。
處理器可以是電子的,例如包含數位邏輯電路(例如二元邏輯)或類比(例如運算放大器)。處理器也可以是非電子的,例如基於光信號處理、DNA轉換、量子力學或技術的組合的處理器,例如光電處理器。以二元形式建構的數據和資料,任何可以使用AND、OR和NOT邏輯運算(及其衍生物,例如NAND、NO和XOR運算)可以使用布林邏輯的任何功能來轉換數據和資料。像類比神經網路的處理器也可以以非數位的方式轉換數據和資料。沒有科學證據可以證明這些任何的處理器,以等同於人類大腦的生物電架構的任何方式或形式,在處理、儲存和取回數據和資料。
一個或多個處理器也可以在雲端運算的環境或作為軟體即服務(SaaS)來支持相關運作的性能。例如,至少一些運作可以由在分佈式或遠端系統可用的一組處理器來執行,這些處理器可以經由通訊網路(例如網路)和經由一個或多個軟體介面(例如應用程式介面(API))來讀取。
如本文所使用,術語「模組」表示有形的數據和資料處理裝置,其通常在大小和/或複雜度受到限制。例如,術語「模組」可以表示可以轉換數據和資料的一種或多種方法或過程。術語「模組」也可以表示電腦程式中一種或多種方法和過程的組合。術語「模組」也可以表示數位邏輯裝置的小型網絡,其中邏輯裝置的互聯為網絡提供了架構。包含以專用語言(例如系統C)指定的模組的方法和過程可用於產生數位邏輯裝備的規範,該數位邏輯裝置處理數據和資料的結果與從方法和過程獲得的結果相同。
模組可以被永久地設定(例如硬接線以形成硬體)、可以被暫時性設定(例如用軟體來軟體設計)或是兩種設定的組合(例如結構化ASIC)。使用特殊應用積體電路(ASICs),例如算術邏輯單元(ALUs)、可程式化邏輯陣列(PLAs)或唯讀記憶體(ROMs)可製造永久設定的模組,這些通常都是在製造過程裝設定的。暫時性設定的模組可以使用場域可程式化邏輯閘陣列(FPGAs,例如由Xilink或英特爾販售的Altera)、隨機存取記憶體(RAMs)或微處理器來製造。模組被設定為處理數據和資料,通常使用序列轉換(也稱為「操作」)應用於數據和資料(或者在ROMs和RAMS的情況下,經由使用輸入資料作為儲存輸出數據和資料的記憶體的網址來轉換數據和資料),以執行本案創新、實施例和/或示例的觀點。
暫時設定的模組無須在任何一個時間上進行即時設定。例如,包含一個握多個模組的處理器可具有在不同時間設定的模組。處理器可以在一個時間實例處包含一個或多個模組的集合,並且在不同的時間實例處包含一個或多個模組的不同的集合。決定製造或執行一個永久設定、暫時設定或兩者的組合的模組,取決於成本、時間考量、工程限制和/或特定設計目標。模組處理的「物質」與製造或執行模組的形式無關。
如本文所使用的術語「演算法」表示模組可以用來轉換數據和資料以獲得結果的一序列或一組操作或指令。模組可以包含一個或多個演算法。如本文所使用的「執行緒」是指指令的序列,其可以包含整個過程或演算法的指令的子集。以平行方式執行,一個過程或演算法可以分為多個執行緒。
如本文所使用的術語「電腦」包含至少一個資料處理器,該資料處理器,例如可以使用包含電晶體的電子閘門來執行特定操作,例如(但不限於)AND、OR和NOT邏輯操作,並增加了記憶體(例如基於使用NOT-AND或NOT-OR操作的正反器的記憶體)。據說這種處理器是圖靈完備的或電腦性通用的。電腦,無論它是否為一台數位電腦,通常包含許多模組。
如本文所使用的術語「軟體」或「程式」表示設定用於本說明書描述的創新、實施例和示例的處理器的一個或多個演算法和數據架構。可經由軟體設定的此類裝置包含一台或多台電腦,例如獨立電腦、客戶端電腦或伺服器電腦、或一台或多台硬體模組、一台或多台這樣的電腦或模塊的系統。
如本文所使用的「程式語言」代表用於指定包含軟體的指令和數據集的文法和語法。程式語言包含組譯器指引、指令集架構(ISA)指令、機器指令、機器相關指令、微代碼、韌體指令、狀態設置數據,或以一種或多種高級語言,例如傳統過程式程式設計,如C程式語言或相似程式語言(例如SystemC)或任何組合編寫的原始碼或目標代碼或物件導向的程式語言如Smalltalk、C++等以及任何未來的等效程式語言。
從數據和資料儲存裝置等同地將軟體輸入至電腦或電腦系統的一個或多個記憶體中。該電腦通常用於傳輸軟體以讀取儲存媒體的裝置,或者具有經由網絡接收軟體的介面裝置。
圖7示出了在設計、驗證和製造產品的各種過程,例如使用電腦中的軟體工具以及可能的特殊硬體輔助工具的積體電路,以轉換和驗證代表積體電路的設計數據和指令。這些過程開始於產生具有由設計者提供的產品想法110的資料,該資料在過程中被轉換以建立使用EDA軟體工具112所製造的產品(在本文中稱為設計或裝置),在這裡也可以表示為EDA軟體工具、設計工具或驗證工具。當完成設計時,可以將其進入下線(tape-out)的步驟134,通常是在將積體電路的佈局(例如幾何圖案)發送至晶圓廠以製造遮罩,再將遮罩用於製造積體電路。下線之後,製造半導體裸晶136並且執行封裝和組裝過程138,這導致了完成的積體電路140,其在本文也可以被表示為電路、裝置、元件、晶片或SoC(系統單晶片)。
製造項目,例如電路或系統,在商業中從低級晶體管佈局到高級描述語言的各種抽象等級的使用。大多數設計人員從高層次的抽象開始設計其電路和系統,例如使用VHDL、Verilog、SystemVerilog、SystemC、MyHDL或OpenVera之類的硬體描述語言(HDL)。對於開發人員而言,高級HDL更容易理解,特別是大型系統,高級HDL可能描述了高度複雜的概念,而使用較低的抽象級別則很難理解。HDL描述可能會轉換為其他抽象級別,這對開發人員很有幫助。例如,高級描述可以被轉換為邏輯級暫存器轉換層次(RTL)的描述、邏輯閘層次(GL)的描述、佈局層次的描述或是遮罩集層次的描述。每個較低的抽象級別都會在設計說明中引入更多細節。較低級別的抽象可以由電腦自動產生、從設計資料庫導出或由另一個設計自動化技術建立的。較低抽象級別的規範語言是一個例子是SPICE,它是基於類比電路的常用詳細描述的語言。
使用EDA軟體工具112的設計過程包含以下描述的過程114-132。該設計流程描述僅用於說明目的,並不意味著限制本揭露。例如,實際的積體電路設計可能需要設計者以與本文描述的順序不同的順序執行設計操作。
在系統設計114,設計者描述要製造的功能。設計者也可以執行假設分析,以完善功能並檢查成本等。在此階段可能會硬體-軟體架構區分。可以在此階段使用加州山景城的新思科技股份有限公司的示例性EDA軟體產品包含:Model Architect、Saber、System Studio和Designware產品。
在邏輯設計和功能驗證期間,電路中的模組以一種或多種硬體描述語言或HDL指定,並且檢查HDL中的設計的功能準確性,即以吻合電路和設計系統以確保產生正確的輸出。示例性的HDL語言為Verilog、VHDL和SystemC。通常使用基於軟體的模擬器和其他工具(例如測試平台產生器、靜態HDL檢查工具和正式驗證工具)以完成功能驗證。在某些情況下,使用稱為「仿真器」或「雛型系統」的特殊硬體來加速功能驗證。可以在此階段使用加州山景城的新思科技股份有限公司的示例性EDA軟體產品包含:VCS、Vera、Designware、Magellan、Formality、ESP和Leda產品。Synopsys也可在此狀態下使用的示例性仿真器和雛型產品包含:Zebu.RTM.和Protolink.RTM(RTM=“註冊商標”)。
在測試118的合成和設計期間,HDL編碼被轉換為網表。另外,可以設計和實施測驗以檢查完成的積體電路。可以在此階段使用加州山景城的新思科技股份有限公司的示例性EDA軟體產品包含:Design
Compiler、Physical Compiler、Test Compiler、Power Compiler、FPGA Compiler、Tetramax和Designware產品。
在網表驗證120期間,檢查網表是否符合時序約束以及是否與HDL相對應。可以在此階段使用加州山景城的新思科技股份有限公司的示例性EDA軟體產品包含:Formality、Primetime和VCS產品。
在設計規劃122期間,構造並分析積體電路的整體平面圖,以進行時程與頂層佈線。可以在此階段使用加州山景城的新思科技股份有限公司的示例性EDA軟體產品包含:Astro和IC Compiler產品。
在佈局實施124期間,發生物理佈置(電路元素的放置例如晶體管或電容器)和佈線(通過多個導體對其的連接),以及選擇資料庫單元以執行特定邏輯功能也可以發生。可以在此階段使用加州山景城的新思科技股份有限公司的示例性EDA軟體產品包含:Astro和IC Compiler產品。
在分析和擷取126期間,在佈局水平上驗證電路功能,這允許佈局設計的改進。可以在此階段使用加州山景城的新思科技股份有限公司的示例性EDA軟體產品包含:Astrorail、Primerail、Primetime和Star RC/XT產品。
在物理驗證128期間,檢查佈局設計以確保製作約束的正確性,例如DRC約束、電力約束、光刻約束以及與HDL設計規法吻合的電路功能。可以在此階段使用加州山景城的新思科技股份有限公司的示例性EDA軟體產品包含Hercules產品。
在解析度提升130期間,執行佈局的幾何操作,以改善設計的可製造性。可以在此階段使用加州山景城的新思科技股份有限公司的示例性EDA軟體產品包含Proteus產品。
在下線期間,建立數據以用於生產光刻遮罩。可以在此階段使用加州山景城的新思科技股份有限公司的示例性EDA軟體產品包含IC Compiler和Custom Designer系列產品。
在準備遮罩數據132期間,下線數據用於產生光刻遮罩,該光刻遮罩用於產生完成的積體電路。可以在此階段使用加州山景城的新思科技股份有限公司的示例性EDA軟體產品包含CATS系列產品。
對於所有上述積體電路設計工具,可以使其他EDA供應商的類似工具,例如益華、西門子、其他公司實體或大學的各種非營利工具,或是開源資料庫,作為替代。
本揭露的實施列可以在一個或多個上述階段中使用。具體地,本揭露的一些實施例可以在EDA軟體112中使用。
儲存子系統優選用於儲存程式和數據結構,該程式和數據結構提供本文所述的一些或全部EDA工具的功能,以及用於資料庫開發單元以及使用該資料庫進行物理和邏輯設計的工具。這些程式和數據結構通常以本領域普通技術人員已知的方式由一個或多個處理器執行。
EDA軟體系統,例如圖5所描繪的元素,通常包含仿真系統,以驗證電路設計的功能。圖7描繪了典型的仿真系統,其包含主機系統(通常是EDA系統的一部分)和仿真系統202(通常是一組可編碼裝置,例如場
域可程式化邏輯閘陣列(FPGAs))。主機系統通常使用編譯器210以產生數據和資料,以將仿真器設定為仿真電路設計。要仿真的更多電路設計之一稱為DUT(被測設計)。仿真器是一種硬體系統,其可仿真DUT,例如使用仿真結果來驗DUT的功能。可以用於本文揭露的實施例的仿真系統的一個示例是新思科技股份有限公司的ZeBu伺服器。
主機系統包含一個或多個處理器。在主機系統由多個處理器組成的實施例中,在此描述為由主機系統執行的功能可以分佈在多個處理器之間。
主機系統通常包含編譯器210,其處理以表示DUT的硬體描述語言標寫的編碼,從而產生數據(通常是二進制的)和用於設定仿真系統502,以仿真DUT。編譯器210可以轉換、重新設定,新增DUT新功能和/或控制DUT的時序。
主機系統和仿真器使用仿真連接所帶來的信號來交換數據和資料。連接可以是一根或多跟電纜,例如,其引腳設定與RS232或USB協定兼容的電纜。該連接可以是有線通訊媒介或網絡,例如區域網路或是網路之類的廣域網。連接可以是無線通訊媒介或具有一個或多個讀取的點的網絡,用無線協定(例如藍芽RTM.)或IEEE 802.11。主機系統和仿真器可以通郵第三裝置(例如網路伺服器)交換數據和資料。
該仿真器包含多個FPGA(或其他可編碼裝置),例如圖2中的元素2041至204N。每個FPGA可以包含一個或多個FPGA介面,通過這些介面,FPGA可連接至仿真器的其他FPGA(以及潛在的其他仿真器元件),使得FPGA可交換信號。FPGA介面也可以稱為輸入/輸出引腳或
FPGA焊盤。儘管本文揭露的一些實施例使用了包含FPGA的仿真器,但其他實施例可以包含其他類型的邏輯塊來代替或一起使用仿真DUT的FPGA,例如定制FPGA,用於仿真或雛形、記憶體和輸入/輸出裝置的專用ASIC。
可編碼裝置可包含可編碼邏輯塊的陣列和可重設定互連的層次結構,其允許根據HDL編碼中的描述,將可編碼邏輯塊彼此連接。每個可編碼邏輯塊都可以設定為執行複雜的組合功能,或者僅執行簡單的邏輯閘門,例如AND和XOR邏輯塊。
在許多FPGA中,邏輯塊也包含儲存元素,其可以是簡單的鎖存器、正反器或更複雜的儲存塊。取決於不同邏輯塊之間的互連的長度,信號可以在不同時間到達邏輯塊的輸入端子。
可以將可編碼處理器2041-204N放置在一個或多個硬體板2121至212M中。許多這樣的板可以被放置在硬體單元,例如2141。可以使用單元的背板或任何其他類型的連接來連接單元內的板。另外,多個硬體單元(例如2141至214K)可以通過電纜或任何其方式彼此連接,以形成多單元系統。通常,在不脫離本揭露的情況下,可以使用單個板、具有多個板的單個單元或具有多個單元來形成硬體仿真或雛型系統202。
對於要仿真的DUT,仿真器從主機系統接收一個或多個包含DUT描述的位元檔案。這些位元檔案進一步指定由主機系統使用追蹤和注入建立的DUT分區,分區到仿真器FPGA的映射以及設計約束。根據位元檔案,仿真器將FPGA設定為執行DUT的功能。對於某些仿真器,仿真器的一個或多個FPGA已經具有內置在FPGA芯片中的追蹤與注入邏輯。對於這種類型的仿真器,無須由主機系統設定FPGA以仿真跟追蹤和注入邏輯。
主機系統接收(例如從使用者或數據儲存)將被仿真的DUT的描述。在一實施例中,DUT描述採用硬體描述語言(HDL),例如暫存器轉換語言(RTL)。在另一個實施例中,DUT描述在網表級文件中,或者在網表及文件和HDL文件的混合當中。如果DUT描述的一部分或整個DUT描述在HDL中,則主機系統會綜合DUT描述,並根據DUT描述建立門級網表。主機系統可以使用DUT的網表將DUT劃分為多個分區,其中一些分區包含追蹤和注入邏輯。追蹤和注入邏輯經由FPGA介面交換的追蹤介面信號。此外,追蹤和注入邏輯可用於將追蹤的介面信號注入FPGA的邏輯。主機系統將每個分區映射到仿真器的FPGA。對於某些仿真器,追蹤和注入邏輯僅包含在一組FPGA的選擇分區中。追蹤和注入邏輯可以內置在仿真器的一個或多個FPGA中。主機系統可以合成要映射至FPGA的多工器。追蹤和注入邏輯可使用多工器將介面信號注入DUT邏輯。
主機系統建立位元檔案,該位元檔案描述DUT的每個分區以及分區至FPGA的映射。對於合併了追蹤和注入邏輯的分區,位元檔案還描述了邏輯的合併。這些位元文件還可以包含佈局和路線訊息以及設計約束。主機系統儲存位元檔案,並且為DUT的元件儲存資料,這些資料描述哪些FPGA將仿真DUT的每個元件(每個元件映射至哪些FPGA)。
主機系統根據請求將位元檔案發送至仿真器。主機系統指示仿真器仿真DUT。在DUT仿真期間或仿真結束時,主機系統通過仿真連接從仿真器接收仿真結果。仿真結果是仿真器根據DUT的仿真產生的數據和資料。仿真結果包含每個FPGA的追蹤和注入邏輯所追蹤的介面信號(介面信號的狀態。)主機系統可以儲存仿真結果,或將其傳輸至另一個處理系統。
仿真DUT之後,使用者可以請求除錯DUT的元件。如果提出了這樣的請求,則使用者可以提供仿真的時段已進行除錯。主機系統根據儲存的資料識別設定了哪些FPGA來仿真元件。主機系統檢索與該時段關聯的並由每個已是別FPGA追蹤和注入邏輯追蹤已儲存介面信號。主機系統指示仿真器一次一個、一次多個或完全重新仿真識別的FPGA。主機系統將檢索到的介面信號傳輸至仿真器,以便在一段時間內重新仿真元件。每個識別出的FPGA的追蹤和注入邏輯會將從主機系統接收到的對應介面信號注入映射至FPGA的DUT的邏輯中。如果對FPGA進行多次重新仿真,則可已將結果全部合併在一起,以具有完整的除錯視圖。
在元件的重新仿真期間,主機系統從仿真器接收由所識別的FPGA的邏輯追蹤的信號。主機系統儲存從仿真器接收的信號。在重新仿真過程中追蹤的信號可能比起初仿真過程中具有更高的採樣率。例如,在起初運行中,追蹤的信號可能每X毫秒包含一個保存的硬體狀態。但是,在重新仿真中,被追蹤的信號可能包含每Y毫秒保存的硬體狀態,其中Y小於X。如果使用者請求查看在重新仿真期間被追蹤的信號的波形,則主機系統可以檢索儲存的信號並顯示信號圖(產生信號的波形)。之後,使用者可以,例如請求仿真相同的元件,但是在不同的時段或是重新仿真另一個元件。
主機系統通常包含至少七個子系統:設計合成器、映射模組、運行模組、結果模組、除錯模組、波形模組和儲存模組。這些子系統中的每個子系統都可以具體表現為硬體、軟體、韌體或其組合。這些元件一併設定仿真器,並且監視仿真結果。
設計合成器將DUT的HDL轉換為門級邏輯。對於要仿真的DUT,設計合成器會收到DUT的描述。如果對DUT的描述全部或部分在HDL中(例如RTL或其他抽象級別),則設計合成器210合成DUT的HDL以建立具有關於門級邏輯的DUT描述的門級網表。
映射模組對DUT進行分區,並將分區映射到仿真器FPGA。映射模組使用DUT的網表將門級的DUT劃分為多個分區。對於每個分區,映射模組檢索追蹤和注入邏輯的門級描述,並將邏輯描述合併到分區中。如上所述,分區中包含的追蹤和注入邏輯被設定為追蹤經由分區映射到的FPGA的介面交換的信號(追蹤交換信號)。可以在分區之前將追蹤和注入邏輯合併到DUT中。例如,追蹤和注入邏輯可以在合成DUT的HDL之前或之後由設計合成器合併。因此,追蹤和注入邏輯可能與分區不吻合,它可能是子集、超集甚至與分區不同。
除了包含追蹤和注入邏輯,映射模組可以在分區中包含附加的追蹤邏輯,以便追蹤未追蹤和注入邏輯追蹤的某些DUT元件的狀態(由追蹤和注入邏輯所追蹤除了介面信號以外的信號)。映射模組可以在分區之前的DUT中或分區之後的分區中包含附加追蹤邏輯。在合成描述之前,設計合成器可以在DUT的HDL描述中包含附加追蹤邏輯。
映射模組將DUT的每個分區映射至仿真器的FPGA。映射模組使用設計規則、設計約束(例如時序或邏輯約束)以及與仿真器相關的資料來執行分區和映射。對於DUT的元件,映射模塊將資料儲存在儲存模塊中,描述哪些FPGA將仿真每個元件。
根據分區和映射,映射模組產生一個或多個位元檔案,其描述所建立的分區以及邏輯至仿真器的每個FPGA的映射。位元檔案可以包含附近資料,例如DUT的約束,以及FPGA之間的連接和每個FPGA內的連接的路徑訊息。映射模組可以為DUT的每個分區產生一個位元檔案,該位元檔案可以儲存在儲存模組中。根據使用者的要求,映射模塊將位元檔案傳輸至仿真器,仿真器使用該位元檔案將FPGA設定為仿真DUT。
如果仿真器包含具有追蹤和注入邏輯的專用ASIC,則映射模組可以產生特定設定,允許將它們連接至DUT或僅在專用ASIC上保存追蹤/注入信號為何的資料,以及該資料儲存位置。
運行模組控在在仿真器上執行的仿真。運行模組可能導致仿真器開始或停止執行仿真另外,運行模組可以像仿真器提供輸入信號/數據。通過連接,輸入信號可以直接提供至仿真器,也可以通過其他輸入信號裝置間接提供給仿真器。例如,具有運行模組的主機系統可以控制輸入信號裝置以將輸入信號提供給仿真器。輸入信號裝置可以是,例如測試板(直接或通過電纜)、信號產生器、另一個仿真器或另一個主機系統。
結果模組處理由仿真器產生的仿真結果。在仿真期間和/或完成仿真之後,結果模組將從仿真期間產生的仿真器接收仿真結果。仿真結果包含在仿真過程中追蹤的信號。具體而言,仿真結果包含追蹤信號追蹤的介面信號和每個FPGA仿真的注入邏輯。仿真結果還可以包含由DUT中包含的其他邏輯追蹤的信號。每個追蹤信號可以跨越多個仿真週期。追蹤的信號由多個硬體狀態,每個硬體狀態與仿真時間相關。結果模組將接收到的追蹤信號
儲存在儲存模組中。對於每個儲存的信號,結果模組可以儲存指示哪個FPGA產生追蹤信號的資料。
除錯模組允許使用者除錯元件。在仿真器仿真了DUT以及結果模組在仿真期間接收到追蹤和注入邏輯追蹤的介面信號之後,使用者可以通過在特定時段內重新仿真元件來請求除錯DUT的元件。在除錯元件的請求中,使用者識別元件並指示要除錯的仿真時段。使用者的請求還可以包含一個採樣率,該採樣率指示通過追蹤信號的邏輯應多久保存一次硬體狀態。
除錯模組根據映射模組在儲存模組中儲存的資料,識別被設定為仿真元件的仿真器的一個或多個FPGA。對於每個已識別的FPGA,除錯模組在使用者指示的時段內從儲存模組中檢索FPGA的追蹤和注入邏輯追蹤的介面信號(檢索與時段相關的追蹤和注入邏輯追蹤的硬體狀態)。
除錯模組將檢索到的介面信號發送到模擬器。除錯模組指示除錯模組運行已識別的FPGA,並指示每個已識別的FPGA的追蹤和注入邏輯將其各自的追蹤信號注入FPGA的邏輯中,以便在請求的時段內重新仿真元件。除錯模組也可以將使用者提供的採樣率傳輸至仿真器,以便追蹤邏輯以適當的間隔追蹤硬體狀態。
要除錯元件,仿真器只需執行元件已映射到的FPGA。此外,元件的重新仿真不必從頭開始,而可以在使用者希望的任何一點開始。
對於已識別的FPGA,除錯模組可以將指令發送至仿真器,以加載具有與所識別的FPGA相同設定的多個仿真器FPGA。除錯模組還指示仿真器平行運行多個FPGA。多個FPGA中的每個FPGA都以不同的介面信
號時間窗口運行,以便在更短的時間內產生更大時間窗口。例如,要使識別出的FPGA運行一定數量的週期,可能需要一個小時。但是,如果將多個FPGA裝入已識別的FPGA的設定,並且每個FPGA運行一個週期的子集,則FPGA集體運行所有週期可能只需要幾分鐘。
使用者可以識別要重新識別仿真的層次結構或DUT信號列表。為此,除錯模組確定仿真信號的層次結構或列表所需的FPGA,檢索必要的介面信號,並將講所到的介面信號傳輸至仿真器以進行重新仿真。因此,使用者可以識別DUT的任何元素(例如元件或信號)以進行除錯/重新仿真。
波形模組根據追蹤信號產生波形。如果使用者請求查看在仿真運行期間追蹤的信號的波形,則主機系統將從儲存模組中檢索信號。波形模組向使用者顯示信號圖。對於一個或多個信號,當從仿真器接收到信號時,波形模組可以自動產生信號圖。
指示者「商業解決方案」僅在以下段落中指示特定工程領域(因為是非搶先的,請參見Bilski)的電子結構、指定機器的過程、可製造電路(及其Church-Turing等同產品)、在商業中用於解決技術問題的物質或成分的組合,即在商業中使用科學的應用程序或在技術商業中使用。
標記「抽象」(當在本文揭露的任何實施例的權利項中用於新的商業解決方案時,該新的商業解決方案是一種或多種自然法則的科學應用(參見Benson),並且解決了技術問題(參見MPEP 2111.01)精確地定義了商業中使用的(參見Diehr)或對現有的商業解決方案進行了改進(參見Diehr)):
a)如果新的商業解決方案不是新穎的,則它是「抽象的」(例如在同等的現有技術中眾所皆知(參見Alice)和/或在科學、工程學或商業中,長期使用等同的現有技術解決方案(參見Bilski)),因此根據35 U.S.C.102,因為它「難以理解」(參見Merriam-Webster「抽象」的定義)商業解決方案與等同前案解決方案的差異;或b)如果顯而易見,即如果現有技術包含至少一個類似的現有技術解決方案(參見KSR),或者現有技術包含至少兩個可以組合的現有技術(參見Alice),那麼一種新的商業解決方案就是「抽象的」。本領域普通技術人員(「PHOSITA」,參見MPEP 2141-2144)等同於新的商業解決方案,因此在35 U.S.C.103下不具有專利性,因為新的商業解決方案與現有技術的PHOSITA組合/應用「難以理解」之間的差異;或c)如果未在啟用描述中揭露,則新的商業解決方案將是「抽象的」,或者是因為啟用描述中的指導不足,或者因為僅使用未指定的元素、參數或功能來描述通用實施(參見Mayo),從而PHOSITA無法實例化新的商業解決方案的實用實施例,缺少,例如需要特殊編碼(參見Katz)或由PHOSITA執行的電路設計,因此在35 U.S.C.112下不具有專利性,例如,由於在商業中如何使用新的商業解決方案的任何實施例是「難以理解」的。
前述詳細描述單獨地表示本文所述的單一特徵、結構、功能或特性,以及兩個或數個如此的特徵、結構、功能或特性的任意組合,以這種特徵、結構、功能或特性的程度不論其特徵、結構、功能或特性或其組合是否解決本文所揭露的任何問題,且不限於權利項的範圍。當所主張保護的發明的實施例包含特定特徵、結構、功能或特性時,無論是否明確地結合其它
實施例使用這種特徵、結構、功能或特性在本領域技術人員的知識範圍內,例如替代另一特徵、結構、功能或特性。
鑒於前述詳細說明,對於本領域技術人員而言顯而易見的是,在本文所述的創新、實施例和/或示例的範圍內,可以進行多種變化,例如元件的功能和安排,而無須對本發明進行描述,背離本文描述的原理。如本領域技術人員將顯而易見的,實施例的一個或多個元件可以替代另一實施例的一個或多個元件。本文所描述的實施例直接表示本發明的原理及其有用的應用,從而表示本領域的其它技術人員能夠理解各種實施例和變化如何適合於所表示的特定用途。
為了說明和描述的目的,已經提供了要求保護的前述創新、實施例和/或示例的詳細描述。它並不旨在窮舉或將要求保護的發明限於所描述的精確形式,而是應被賦予與本文所揭露的原理和特徵相一致的最廣範圍。顯然,本領域技術人員將認識到許多變化。在沒有限制的情況下,在本專利申請中通過引用描述,表示或結合的任何和所有等同形式通過引用特別地結合到本文的創新、實施例和/或示例的描述中。另外,關於任何一個實施例在此通過引用描述,表示或結合的任何和所有變化也應被認為是關於所有其他實施例的教導。任何這樣的變化都包括當前已知的變化以及將來的變化,例如,本文使用的任何元件包括提供相同功能的未來等效元件,而與未來等效物的結構無關。
旨在由所附權利項和等同定義和判斷要求保護的發明的範圍。所附權利要求據此被結合到詳細描述中,其中每個權利要求獨立地作為單獨
的實施例。所公開的實施例可以以比權利要求中明確敘述的特徵更多的特徵來描述。
100:控制塊
10i:N個延遲塊
10N:延遲塊
12i:N個正反器
12N:正反器
141:多工器
14i:N個多工器
14N:多工器
16:最小延遲計算器
18:時脈排程器
20:時脈信號產生器
22:正反器
24:多工器
30:啟動器單元
32:仿真設計
A1:輸出信號
Ai:輸出信號
AN:輸出信號
delayi:延遲值
delayN:信號
S:選擇端子
Claims (11)
- 一種用於一仿真系統之控制塊,包含:N個延遲塊,其中,每一延遲塊分別接收代表一延遲值的一第一信號,該延遲值與該仿真系統中的N個時脈信號中的一第一時脈信號相關,其中該延遲值定義了該第一時脈信號的轉換時間;一最小延遲計算塊,適於計算該N個延遲值中的最小值以得到一最小延遲值;一時脈排程器,其被設定為針對與其相關的一延遲值與該最小延遲值吻合的每一時脈排程一轉換,以及針對與其相關的一延遲值與該最小延遲值不吻合的每一時脈減小所述與其相關的延遲值,其中該時脈排程器提供該最小延遲值給該N個延遲塊中的每一延遲塊;以及一時脈信號產生器,其被設定為針對該時脈排程器所排程的多個時脈信號產生多個轉換。
- 如請求項第1項所述之一種用於一仿真系統之控制塊,更包含:N個第一正反器,其中每一正反器分別與該N個延遲塊中的一延遲塊相對應並適於接收其相關的延遲塊的一輸出;N個第一多工器,其中,每一多工器分別與N個延遲塊中的一延遲塊相對應並適於在其一第一輸入接收其相關的延遲塊的一輸出,每一個所述N個第一多工器具有一第二輸入並適於接收其相關的正反器的一輸出,其中,每一多工器具有一選擇端,當一觸發信號被激發時,該選擇端適於將其第二輸入傳送到最小延遲計算塊,該觸發信號停止一設計的仿真以回應一使用者設定的一仿真中斷; 一第二正反器,適於接收該時脈信號產生器的一輸出;以及一第二多工器,適於在其一第一輸入接收該時脈排程器的輸出並適於在其一第二輸入接收該第二正反器的輸出,若觸發信號沒被激發時,則該第二多工器將其第一輸入傳送到其輸出,若觸發信號被激發時,則將其第二輸入傳送到其輸出,其中,該第二多工器的輸出應用於一電路設計的仿真系統。
- 如請求項第2項所述之一種用於一仿真系統之控制塊,其中所述仿真系統控制塊在時脈信號的仿真週期K+1期間計算與時脈信號在仿真週期K所對應的順序元件的值。
- 如請求項第3項所述之一種用於一仿真系統之控制塊,其中所述仿真系統控制塊在仿真的週期K+1期間計算仿真的週期K+1的時脈值。
- 如請求項第2項所述之一種用於一仿真系統之控制塊,其中每一延遲塊包含:一減法器,適於在其一第一輸入端接收該最小延遲值;一第三正反器,接收該延遲塊的一輸出並將其輸出提供至該減法器的一第二輸入;一互斥或閘(XOR gate),在其一第一輸入端接收該最小延遲值並在其一第二輸入端接收該延遲塊的輸出;一第四正反器,接收該互斥或閘的一輸出;以及一第三多工器,在其一第一輸入端接收與該延遲塊相關的延遲值並在其一第二輸入端接收該減法器的輸出,該第三多工器在回應該第四正反器的一輸出信號時,提供其輸出。
- 如請求項第4項所述之一種用於一仿真系統之控制塊,更包含:一邊緣檢測器,設定為檢測該N個時脈信號中的至少一時脈信號的邊緣以產生第一信號;一第三正反器,在其使能引腳處接收該第一信號並在其時脈引腳處接收一系統時脈;一第四正反器,在其使能引腳處接收該第一信號並在其時脈引腳處接收該系統時脈;以及一組合邏輯電路,接收該第三正反器的輸出信號並將數據提供給該第四正反器的數據輸入。
- 一種控制電路設計的仿真方法,該方法包含:將N個時脈信號中的每一時脈信號分別接收代表一延遲值的一第一信號,其中該延遲值與N個時脈信號中的一第一時脈信號相關,其中該延遲值定義了該第一時脈信號的轉換時間;計算該N個延遲值中的最小值以得到一最小延遲值;針對與其相關的一延遲值與該最小延遲值吻合的每一時脈排程一轉換;針對與其相關的一延遲值與該最小延遲值不吻合的每一時脈減小所述與其相關的延遲值;以及根據所述排程的轉換或所述被減小的延遲值產生時脈信號的轉換。
- 如請求項第7項所述之一種控制電路設計的仿真方法,更包含: 為該N個時脈信號中之每一時脈信號儲存排程轉換或前一個週期的遞減延遲;傳遞儲存的排程轉換或遞減延遲以回應一觸發信號;儲存緊接在前的時脈信號所產生的轉換;以及為每個時脈信號傳遞時脈信號緊接在前的轉換或其目前的轉換以回應該觸發信號。
- 如請求項第8項所述之一種控制電路設計的仿真方法,更包含:在該N個時脈信號的仿真週期K+1期間,計算與該N個時脈信號在仿真週期K所對應的順序元件的值。
- 如請求項第8項所述之一種控制電路設計的仿真方法,更包含:在仿真週期K+1期間,計算仿真的週期K+1的時脈值。
- 如請求項第10項所述之一種控制電路設計的仿真方法,更包含:檢測該N個時脈信號中的至少一第一時脈信號的邊緣以產生一第一信號;將該第一信號施加至一第一正反器的使能引腳,以使該第一正反器的時脈引腳處接收一系統時脈;將該第一信號施加至一第二正反器的一使能引腳,以使該第二正反器的時脈引腳處接收該系統時脈;將該第一正反器的一輸出施加至組合邏輯電路的一輸入;以及將該組合邏輯電路的一輸出施加至該第二正反器的一數據輸入。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862736111P | 2018-09-25 | 2018-09-25 | |
US62/736,111 | 2018-09-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202030571A TW202030571A (zh) | 2020-08-16 |
TWI821414B true TWI821414B (zh) | 2023-11-11 |
Family
ID=69884838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108134657A TWI821414B (zh) | 2018-09-25 | 2019-09-25 | 一種用於仿真系統之控制塊及其電路與製作方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11763053B2 (zh) |
EP (1) | EP3857331A4 (zh) |
KR (1) | KR20210065964A (zh) |
CN (1) | CN112753034B (zh) |
TW (1) | TWI821414B (zh) |
WO (1) | WO2020069009A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114756085A (zh) * | 2020-08-25 | 2022-07-15 | 美商新思科技有限公司 | 用于现场可编程门阵列(fpga)综合的形式化门控时钟转换 |
CN113608574B (zh) * | 2021-08-09 | 2024-06-11 | 贵州省计量测试院 | 一种计算机微秒级时间输出方法、系统及校准系统 |
CN113946937B (zh) * | 2021-08-27 | 2023-01-10 | 芯华章科技股份有限公司 | 同步方法及仿真器 |
CN116720468B (zh) * | 2023-06-12 | 2024-01-19 | 南京邮电大学 | 一种结合神经网络的单元库时序模型构建方法 |
CN117350210B (zh) * | 2023-11-09 | 2024-03-01 | 上海合见工业软件集团有限公司 | 一种时钟控制系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739473A (zh) * | 2008-10-22 | 2010-06-16 | 盛群半导体股份有限公司 | 电路模拟仿真系统 |
US20100280814A1 (en) * | 2009-04-29 | 2010-11-04 | Synopsys, Inc. | Logic simulation and/or emulation which follows hardware semantics |
TW201612782A (en) * | 2014-09-17 | 2016-04-01 | Realtek Semiconductor Corp | Digital circuit design method and associated computer program product |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5671258A (en) | 1994-12-20 | 1997-09-23 | 3Com Corporation | Clock recovery circuit and receiver using same |
US6009256A (en) * | 1997-05-02 | 1999-12-28 | Axis Systems, Inc. | Simulation/emulation system and method |
US6785873B1 (en) | 1997-05-02 | 2004-08-31 | Axis Systems, Inc. | Emulation system with multiple asynchronous clocks |
US6785829B1 (en) | 2000-06-30 | 2004-08-31 | Intel Corporation | Multiple operating frequencies in a processor |
JP4125675B2 (ja) * | 2001-08-14 | 2008-07-30 | ベリシティー デザイン, インコーポレイテッド | タイミングに鈍感なグリッチのない論理システムおよび方法 |
US7151399B2 (en) * | 2004-02-02 | 2006-12-19 | Toshiba America Electronic Components, Inc. | System and method for generating multiple clock signals |
US7509107B2 (en) | 2005-01-05 | 2009-03-24 | Anritsu Company | Method and apparatus for extending the lower frequency operation of a sampler based VNA |
DE502005001065D1 (de) * | 2005-05-02 | 2007-08-30 | Accemic Gmbh & Co Kg | Verfahren und Vorrichtung zur Emulation einer programmierbaren Einheit |
US7478232B2 (en) * | 2006-01-23 | 2009-01-13 | Honeywell International Inc. | Reset detector |
US8706469B2 (en) | 2006-01-31 | 2014-04-22 | Cadence Design Systems, Inc. | Method and apparatus for increasing the efficiency of an emulation engine |
US7930165B2 (en) | 2008-02-07 | 2011-04-19 | Accemic Gmbh & Co. Kg | Procedure and device for emulating a programmable unit providing system integrity control |
US8620638B1 (en) * | 2008-12-15 | 2013-12-31 | Xilinx, Inc. | Method of performing a simulation of a design under test and a circuit for enabling testing of a circuit design |
US20130282352A1 (en) * | 2011-05-20 | 2013-10-24 | Grayskytech Llc | Real time logic simulation within a mixed mode simulation network |
US8736338B2 (en) * | 2012-04-11 | 2014-05-27 | Freescale Semiconductor, Inc. | High precision single edge capture and delay measurement circuit |
US9946823B2 (en) * | 2013-08-12 | 2018-04-17 | Mentor Graphics Corporation | Dynamic control of design clock generation in emulation |
GB2519181B (en) * | 2014-03-31 | 2015-09-09 | Imagination Tech Ltd | Clock verification |
US9438256B2 (en) * | 2014-06-03 | 2016-09-06 | Apple Inc. | Slow to fast clock synchronization |
US9824175B1 (en) | 2014-10-01 | 2017-11-21 | Cadence Design Systems, Inc. | Method and system of evaluation of validity of a refinement rule for a hardware emulation |
US10176012B2 (en) * | 2014-12-12 | 2019-01-08 | Nxp Usa, Inc. | Method and apparatus for implementing deterministic response frame transmission |
US9996645B2 (en) * | 2015-04-06 | 2018-06-12 | Synopsys, Inc. | Method and apparatus for modeling delays in emulation |
US10565335B2 (en) * | 2016-03-04 | 2020-02-18 | Montana Systems Inc. | Event-driven design simulation |
US10949589B2 (en) * | 2017-05-17 | 2021-03-16 | Synopsys, Inc. | Method for compression of emulation time line in presence of dynamic re-programming of clocks |
-
2019
- 2019-09-25 KR KR1020217011251A patent/KR20210065964A/ko active Search and Examination
- 2019-09-25 CN CN201980062772.9A patent/CN112753034B/zh active Active
- 2019-09-25 EP EP19864759.6A patent/EP3857331A4/en active Pending
- 2019-09-25 WO PCT/US2019/052996 patent/WO2020069009A1/en unknown
- 2019-09-25 US US16/583,061 patent/US11763053B2/en active Active
- 2019-09-25 TW TW108134657A patent/TWI821414B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739473A (zh) * | 2008-10-22 | 2010-06-16 | 盛群半导体股份有限公司 | 电路模拟仿真系统 |
US20100280814A1 (en) * | 2009-04-29 | 2010-11-04 | Synopsys, Inc. | Logic simulation and/or emulation which follows hardware semantics |
TWI479351B (zh) * | 2009-04-29 | 2015-04-01 | Synopsys Inc | 模擬電路設計之方法及設備以及電腦可讀取儲存媒體 |
TW201612782A (en) * | 2014-09-17 | 2016-04-01 | Realtek Semiconductor Corp | Digital circuit design method and associated computer program product |
Also Published As
Publication number | Publication date |
---|---|
KR20210065964A (ko) | 2021-06-04 |
CN112753034A (zh) | 2021-05-04 |
WO2020069009A1 (en) | 2020-04-02 |
EP3857331A4 (en) | 2022-09-21 |
EP3857331A1 (en) | 2021-08-04 |
US20200097625A1 (en) | 2020-03-26 |
US11763053B2 (en) | 2023-09-19 |
TW202030571A (zh) | 2020-08-16 |
CN112753034B (zh) | 2024-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI821414B (zh) | 一種用於仿真系統之控制塊及其電路與製作方法 | |
US10719644B2 (en) | Method and framework to dynamically split a testbench into concurrent simulatable multi-processes and attachment to parallel processes of an accelerated platform | |
US10949591B1 (en) | Hardware based state signature generation and check for test and debug of semiconductor circuit functionality | |
US10846455B2 (en) | Automatic definition and extraction of functional coverage metric for emulation-based verification | |
US10867091B1 (en) | Machine learning based power optimization using parallel training and localized data generation | |
CN110785761B (zh) | 存在时钟动态重编程时仿真时间线的压缩方法 | |
US20220129611A1 (en) | Method to Compute Timing Yield and Yield Bottleneck using Correlated Sample Generation and Efficient Statistical Simulation | |
US11275877B2 (en) | Hardware simulation systems and methods for reducing signal dumping time and size by fast dynamical partial aliasing of signals having similar waveform | |
US10878153B1 (en) | Apparatuses and methods for accurate and efficient clock domain and reset domain verification with register transfer level memory inference | |
US10796048B1 (en) | Adding delay elements to enable mapping a time division multiplexing circuit on an FPGA of a hardware emulator | |
US11003819B1 (en) | Method to enable multiple users of embedded-software debug to share a single hardware resource | |
US11327790B1 (en) | Event-level parallel simulation using dynamic synchronization | |
US10599800B2 (en) | Formal clock network analysis, visualization, verification and generation | |
KR102545621B1 (ko) | 상태-유지 루프들 및 발진 루프들을 식별하기 위한 하드웨어 시뮬레이션 시스템들 및 방법들 | |
US11475293B1 (en) | Learning-based toggle estimation | |
Yang et al. | HDLs modeling technique for burst-mode and extended burst-mode asynchronous circuits | |
US10579760B2 (en) | Force/release support in emulation and formal verification | |
CN112818627A (zh) | 电路设计、测试和/或制造的更有效/有用的电子结构 | |
CN112883679A (zh) | 在多电压设计中加油站的自动生成 | |
Oddos et al. | Assertion-based verification and on-line testing in HORUS | |
Landmann et al. | Graphical Hardware Description as a High-Level Design Entry Method for FPGA-based Data Acquisition Systems |