經(jīng)由布爾可滿足性的設(shè)備引腳復(fù)用配置求解和代碼生成的制作方法
【專利說明】經(jīng)由布爾可滿足性的設(shè)備引腳復(fù)用配置求解和代碼生成
[0001]優(yōu)先權(quán)的要求
[0002]根據(jù)美國(guó)專利法119(e) (I),本申請(qǐng)要求2014年3月31日提交的美國(guó)臨時(shí)申請(qǐng)?zhí)?1/972,676的優(yōu)先權(quán)。
技術(shù)領(lǐng)域
[0003]本發(fā)明的技術(shù)領(lǐng)域?yàn)榧呻娐份斎?輸出連接設(shè)計(jì)。
【背景技術(shù)】
[0004]處理器被設(shè)計(jì)為滿足各種需求。由于每個(gè)單獨(dú)的設(shè)計(jì)都是昂貴的,所以最大化處理器的可用功能是有意義的,使得它能夠被用于盡可能多的情況中。通常情況下,設(shè)計(jì)具有不允許使用集成電路的所有功能的引腳輸出(Pin out)的數(shù)字?jǐn)?shù)據(jù)處理器是有利的。處理器的很多內(nèi)部組件需要被連接到外部電路以使用。集成電路的物理大小和其他考慮限制了能夠處于芯片上的外部引腳的數(shù)量。處理器通常具有比外部引腳多的內(nèi)部信號(hào)。因此,內(nèi)部信號(hào)被連接到數(shù)字多路復(fù)用器以允許多路復(fù)用器將它所連接的那個(gè)信號(hào)切換到那個(gè)外部引腳。多路復(fù)用器能夠在運(yùn)行時(shí)間被配置。
[0005]如果給定應(yīng)用僅有幾個(gè)信號(hào)需要引腳輸出,那么這是不成問題的。然而,如果需要很多信號(hào),配置哪些信號(hào)連接到哪些外部引腳會(huì)是困難的。
[0006]盡管信號(hào)可以被連接到不止一個(gè)外部引腳,但是連接不能是任意的。每個(gè)多路復(fù)用器可能僅被連接到固定數(shù)量的信號(hào)。
[0007]一次可能僅有一個(gè)內(nèi)部信號(hào)連接到外部引腳。
[0008]一組內(nèi)部信號(hào)的時(shí)序約束可以限制哪些連接能夠同時(shí)使用。
[0009]多個(gè)不同的信號(hào)或組件可能能夠滿足具體需求,并且每個(gè)信號(hào)可能具有它能夠連接到的不同組的外部引腳。
[0010]因此,對(duì)于給定應(yīng)用,信號(hào)到引腳連接的可能排列的數(shù)量可能是龐大的。這使得找到有效的組合或者簡(jiǎn)單地證明有效的組合不存在是很困難的。
【發(fā)明內(nèi)容】
[0011]本發(fā)明是用于集成電路設(shè)計(jì)的信號(hào)輸入/輸出設(shè)計(jì)工具。一組布爾表達(dá)式描述集成電路物理上能夠連接哪個(gè)。第二組布爾表達(dá)式式描述用戶需求。如果存在一組值使得所有布爾表達(dá)式為真,那么系統(tǒng)得到了求解。這意味著在滿足設(shè)計(jì)目標(biāo)的允許的連接內(nèi)存在一組連接。如果不存在的話,那么設(shè)備不能滿足設(shè)計(jì)者的需求。編程的通用計(jì)算機(jī)確定所述第一組布爾表達(dá)式和所述第二組布爾表達(dá)式是否是布爾可滿足的。
[0012]如果兩組布爾表達(dá)式是可滿足的,那么多路復(fù)用器的連接能力能夠提供期望連接。布爾可滿足性的方案對(duì)應(yīng)于一個(gè)多路復(fù)用器或更多個(gè)多路復(fù)用器所需要的連接。編程的通用計(jì)算機(jī)能夠生成用于多路復(fù)用器的控制信號(hào),以便實(shí)現(xiàn)期望連接。根據(jù)集成電路設(shè)計(jì),多路復(fù)用器可以在制造時(shí)被編程一次并在此后保持固定??商娲?,多路復(fù)用器可以在運(yùn)行時(shí)間被重新編程以便每次實(shí)施多種期望連接中的一種。
[0013]如果兩組布爾表達(dá)式不是布爾可滿足的,那么設(shè)計(jì)工具可以指示哪些需求不能實(shí)現(xiàn)以及哪些其他的需求阻止了可滿足性。這可以通過以迭代方式去除所述第二組布爾表達(dá)式的布爾表達(dá)式來實(shí)現(xiàn)。該過程接著確定第一組布爾表達(dá)式和當(dāng)前的第二組布爾表達(dá)式是否是布爾可滿足的。如果變更的第二組布爾表達(dá)式是可滿足的,那么這組布爾表達(dá)式被標(biāo)記為有效。如果變更的第二組布爾表達(dá)式為不可滿足的,那么這組布爾表達(dá)式被標(biāo)記為無效。它之所以是無效的是因?yàn)橐粋€(gè)多路復(fù)用器或更多個(gè)多路復(fù)用器不能夠被配置為滿足那個(gè)布爾表達(dá)式。
[0014]能夠最終確定期望的多路復(fù)用器配置是否是可能的,可以比當(dāng)前的試湊法(cut-and-try)的設(shè)計(jì)方法具有巨大優(yōu)勢(shì)。
【附圖說明】
[0015]本發(fā)明的這些和其他方面在圖中示出,其中:
[0016]圖1示出本發(fā)明中使用的信號(hào)多路復(fù)用器的一個(gè)示例的框圖;
[0017]圖2示出本發(fā)明的一個(gè)實(shí)施例的程序流程圖;以及
[0018]圖3示出根據(jù)本發(fā)明的迭代選項(xiàng)搜索的一個(gè)程序流程圖。
【具體實(shí)施方式】
[0019]本發(fā)明是允許設(shè)計(jì)者輸入他們的系統(tǒng)的需求的軟件設(shè)計(jì)工具。這不同于輸入他們的系統(tǒng)所需要的信號(hào),因?yàn)榭梢源嬖趯?shí)現(xiàn)他們的需求的多個(gè)信號(hào)。
[0020]接下來,基于處理器能夠提供的能力,設(shè)計(jì)工具將需求轉(zhuǎn)換為一個(gè)或更多個(gè)待使用信號(hào)的選擇和該信號(hào)將要連接到的外部引腳的選擇。這些選擇是枚舉的,并且接著被表達(dá)為邏輯布爾表達(dá)式。對(duì)信號(hào)的時(shí)序約束包括在布爾表達(dá)式中。
[0021]在計(jì)算機(jī)科學(xué)中,布爾可滿足性或者在布爾表達(dá)式中找到使得表達(dá)式為真的變量的一組分配是已經(jīng)被深入研宄的問題。本發(fā)明的設(shè)計(jì)工具使用本領(lǐng)域的已知算法,證明表達(dá)式不能被滿足或者找到滿足表達(dá)式的枚舉型變量的一組分配。該組分配針對(duì)這個(gè)具體系統(tǒng)的需求將轉(zhuǎn)化為哪些信號(hào)連接到哪些引腳。
[0022]如果布爾表達(dá)式不能夠被滿足,設(shè)計(jì)工具將移除所有新的布爾約束,并且以迭代方式單獨(dú)地恢復(fù)它們。如果單獨(dú)的需求是不可滿足的,那么工具將標(biāo)記這個(gè)需求為錯(cuò)誤。這之所以是錯(cuò)誤是因?yàn)椴紶柋磉_(dá)式阻止?jié)M足一個(gè)多路復(fù)用器或更多個(gè)多路復(fù)用器的能力內(nèi)的設(shè)計(jì)需求。設(shè)計(jì)工具能夠接著以迭代方式將去除的其他需求的約束增加回來,并且標(biāo)記它們?yōu)殄e(cuò)誤的或者不依賴于布爾表達(dá)式是否能夠被滿足。
[0023]接著使用該工具的設(shè)計(jì)者提出不能求解的一組需求?;谀男┻x擇將滿足那些需求,設(shè)計(jì)者可以接著去除那些需求或者去除與可用選擇沖突的其他需求。
[0024]隨著更多個(gè)需求被增加,相同的算法被重新運(yùn)行。然而,之前發(fā)現(xiàn)是沖突的需求和新增加的需求通常首先被移除。這保持錯(cuò)誤確定性并且阻止它們?cè)谛枨箝g跳躍(jumparound across needs)。
[0025]用戶還能夠通過選擇具體的信號(hào)/引腳選擇而不是使應(yīng)用找到選擇來處理錯(cuò)誤。這可能是因?yàn)樗麄兊南到y(tǒng)在芯片的一側(cè)上具有具體外部電路,并且他們希望外部引腳離它們盡可能近。
[0026]最后,工具生成C源代碼,當(dāng)其作為另一個(gè)應(yīng)用的部分被編譯的時(shí)將配置處理器以建立之前求解的連接。
[0027]存在多個(gè)現(xiàn)有的工具,其用于協(xié)助找尋給定系統(tǒng)的多路復(fù)用器配置,例如德州儀器 TIVA? C 序列引腳復(fù)用應(yīng)用程序(Texas Instruments Tiva? C Series PinMuxUtility)。通常情況下,這些工具封裝設(shè)備上可能的知識(shí)并且還可以生成C代碼。通常情況下,這些工具不嘗試找出有效配置。這些工具僅僅允許用戶選擇信號(hào)并且配置什么信號(hào)是手動(dòng)連接的。這些工具可以指示何時(shí)兩個(gè)信號(hào)嘗試連接到相同引腳或者何時(shí)一組信號(hào)違背一些時(shí)序約束。這些工具指示哪些引腳是可用的。但是這些工具不會(huì)嘗試找出可替代的配置或者指示不存在可能的方案。
[0028]布爾可滿足性也并不是一個(gè)新概念。很多應(yīng)用已經(jīng)在使用它。布爾可滿足性被用于到外部引腳的FPGA(現(xiàn)場(chǎng)可編程門陣列)信號(hào)路由。這不同于本發(fā)明是由于FPGA能夠根據(jù)需要全部重新編程以重新路由信號(hào)。例如,內(nèi)部端部位置能夠被移動(dòng)到不同組的門極。本發(fā)明的數(shù)字?jǐn)?shù)據(jù)處理器包含一組固定的多路復(fù)用器和不能夠改變的信號(hào)端部位置。那些現(xiàn)有技術(shù)工具生成FPGA布局而不是源代碼以配置預(yù)先存在的多路復(fù)用器。
[0029]布爾可滿足性能夠使用下面簡(jiǎn)化的示例解釋。將外部引腳指定為1、2、3…并且將內(nèi)部信號(hào)指定為a、b、c...。定義Ia為連接外部引腳I到內(nèi)部信號(hào)a的選擇。類似地,定義Ib為連接外部引腳I到內(nèi)部信號(hào)b的選擇。類似的術(shù)語用于其他連接。如果連接到外部線路I的各個(gè)多路復(fù)用器可以被多路復(fù)用至內(nèi)部信號(hào)a或b,那么下面的布爾表達(dá)式表示:
[0030]Ia 或 Ib
[0031]非(la與 Ib)
[0032]第一布爾表達(dá)式(Ia或Ib)聲明內(nèi)部信號(hào)a或b中的一個(gè)必須連接到外部引腳I。第二布爾表達(dá)式(非(Ia與Ib))聲明外部引腳I不能同時(shí)連接到內(nèi)部信號(hào)a和內(nèi)部信號(hào)bo這個(gè)第二布爾表達(dá)式使得連接Ia和Ib相互排斥。
[0033]如果外部引腳2能夠類似地被多路復(fù)用到內(nèi)部信號(hào)a或b,這由類似的布爾表達(dá)式表不:
[0034]2a 或 2b
[0035]非(2a與 2b)
[0036]對(duì)于這個(gè)示例,假定內(nèi)部信號(hào)a或b都不可以同時(shí)被多路復(fù)用到多個(gè)外部引腳。這個(gè)條件提供了這些布爾表達(dá)式:
[0037]非(Ia與 2a)
[0038]非(Ib與 2b)
[0039]找出滿足布爾可滿足性的一組選擇意味著找出一組值或la、lb、2a和2b (真或假)使得所有上述布爾表達(dá)式為真。這個(gè)示例的表達(dá)式在數(shù)學(xué)上是非常簡(jiǎn)單的(trivial),但是這個(gè)示例示出設(shè)備能力如何被表示為布爾表達(dá)式。
[0040]設(shè)計(jì)者的需求還可以被形成為布爾表達(dá)式。例如,假定需求需要內(nèi)部信號(hào)a引腳輸出到I或2。這個(gè)需求的布爾表達(dá)式為:
[0041]Ia 或 2a
[0042]本發(fā)明的技術(shù)比這個(gè)簡(jiǎn)單示例更強(qiáng)大。并非要求輸出具體信號(hào),設(shè)計(jì)者能夠指定輸出一些類型(GP1、計(jì)時(shí)器等)的若干信號(hào)中的任意一個(gè)信號(hào)。在各個(gè)多路復(fù)用器的限制下,該技術(shù)能夠找出能被輸出的那個(gè)類型的一個(gè)信號(hào)。如果信號(hào)a和b為相同類型,那么設(shè)計(jì)者需要一個(gè)該類型的信號(hào),布爾表達(dá)式為:
[0043]Ia 或 Ib 或 2a 或 2b。
[0044]作為一個(gè)進(jìn)一步示例,設(shè)計(jì)者可能需要一組相關(guān)的信號(hào)。例如,UART模塊具有tx和rx信號(hào),并且在系統(tǒng)中有兩個(gè)UART模塊。設(shè)計(jì)可能需要“一個(gè)UART”。使得txl為第一UART的tx信號(hào),rxl為第一 UART的rx信號(hào),以及tx2和rx2為第二 UART的信號(hào),接著對(duì)應(yīng)的布爾表達(dá)式為:
[0045]Itxl 或 2txl 或 ltx2 或 2tx2
[0046]Irxl 或 2rxl 或 lrx2 或 2rx2
[0047]在這個(gè)示例中,該設(shè)計(jì)需要tx信號(hào)和rx信號(hào)來自相同的UART。因此這個(gè)示例需要布爾表達(dá)式指示tx和rx信號(hào)必須來自相同的UART。如果我們使uartl和uart2為使用具體UART的選擇,我們得到下面的表達(dá)式:
[0048]uartl 或 uart2
[0049]這意味著系統(tǒng)必須選擇兩個(gè)UART中的一個(gè)。
[0050]非(uartl 與 uart2)
[0051]這意味著系統(tǒng)不能選擇兩個(gè)UART。這兩個(gè)組合的布爾表達(dá)式要求系統(tǒng)使用一個(gè)且僅使用一個(gè)UART。進(jìn)一步的要求被表達(dá)為:
[0052]uartl 或非(Itxl 或 2txl 或 Irxl 或 2rxl)
[0053]系統(tǒng)必須選擇uartl或者不選擇它的引腳中的任意個(gè)。此外:
[0054]uart2 或非(ltx2 或 2tx2 或 lrx2 或 2rx2)
[0055]系統(tǒng)必須選擇uart2或者不選擇它的引腳中的任意個(gè)。
[0056]這是示出如何將設(shè)計(jì)需求描述為布爾表達(dá)式的簡(jiǎn)單示例?,F(xiàn)實(shí)的設(shè)計(jì)通常更復(fù)雜。首先,可能有時(shí)序約束。例如,如