欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

再構(gòu)成語句的方法以及具有該功能的計(jì)算機(jī)系統(tǒng)的制作方法

文檔序號(hào):6570252閱讀:216來源:國知局
專利名稱:再構(gòu)成語句的方法以及具有該功能的計(jì)算機(jī)系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及再構(gòu)成包含于程序(program)和/或包括硬件控制信息 的進(jìn)程(procedure)中的語句的方法以及計(jì)算機(jī)系統(tǒng)。
背景技術(shù)
從數(shù)據(jù)的輸入到運(yùn)算結(jié)果的輸出往往用多級(jí)構(gòu)成的邏輯(邏輯運(yùn)算) 來定義。多級(jí)(多級(jí)構(gòu)成)的邏輯運(yùn)算在編碼階段,沿著數(shù)據(jù)或信息從輸 入到輸出的時(shí)間經(jīng)過,從輸入階段的運(yùn)算向輸出階段的運(yùn)算表述。而且, 通常按照其表述或按照時(shí)間經(jīng)過來執(zhí)行多級(jí)邏輯運(yùn)算。多^il輯運(yùn)算的一 個(gè)例子是作為邏輯電路安裝在LSI等上的部分。很多邏輯電路,以AND 和OR等多種門電路作為運(yùn)算元件,利用這些運(yùn)算元件的多級(jí)組合來構(gòu)成。
在多級(jí)邏輯電路中,后續(xù)(后級(jí))運(yùn)算元件以前級(jí)的多個(gè)運(yùn)算元件的 輸出作為輸入進(jìn)行運(yùn)算。用于安裝多級(jí)邏輯電路的典型的硬件具有足以構(gòu) 成前級(jí)的多個(gè)運(yùn)算元件并行地進(jìn)行動(dòng)作的電路的硬件資源,例如具有邏輯 運(yùn)算元件(門元件、運(yùn)算元件)、布線。因此前級(jí)的多個(gè)運(yùn)算元件的運(yùn)算 順序不成問題。但是,當(dāng)在硬件資源不充分的硬件上安裝多級(jí)邏輯電路時(shí), 或利用程序按時(shí)序執(zhí)行多^it輯運(yùn)算時(shí),前級(jí)的運(yùn)算順序有可能影響運(yùn)算 速度。
利用程序按時(shí)序執(zhí)行多級(jí)邏輯電路的一個(gè)例子,是設(shè)計(jì)LSI時(shí)進(jìn)行LSI 功能發(fā)汪的仿真(simulation),作為L(zhǎng)SI的仿真方法,已知有事件驅(qū)動(dòng)方 式和基于周期的方式。事件驅(qū)動(dòng)方式是沿著時(shí)間軸來跟蹤信號(hào)值的變化及 其影響的方式?;谥芷诘姆绞绞?個(gè)時(shí)鐘周期線性評(píng)價(jià)1次電路內(nèi)的全 部邏輯的方式。因此需要在1個(gè)時(shí)鐘周期內(nèi)基本上對(duì)構(gòu)成電路的多^JC輯 的全部運(yùn)算進(jìn)^f價(jià)。
基于周期的方式必須每個(gè)時(shí)鐘周期都評(píng)價(jià)全部邏輯。因此乍一看感覺 比事件方式還慢。但是由于不需要對(duì)事件列表插入刪除這樣的管理,實(shí)際 進(jìn)行仿真時(shí),有可能比事件驅(qū)動(dòng)方式還快。特別是當(dāng)對(duì)活動(dòng)率高(信號(hào)變
化活躍)的近年來意在向管道式iL艮的LSI進(jìn)行仿真時(shí),簡(jiǎn)單一律地評(píng)價(jià) 全部邏輯的基于周期的方式比一一跟蹤信號(hào)變化的事件驅(qū)動(dòng)方式速度快。
隨著LSI的設(shè)計(jì)規(guī)模的增大,仿真的快速化變得越來越重要。日本國 特許公開公報(bào)2000-57203號(hào)公開了下述方法,即,在基于周期的方式的 仿真中,保持所接收的網(wǎng)表的意思(運(yùn)算程序)不變,直接以減少程序文 字?jǐn)?shù)量的方式去除門(gate),或以因式分解的形式表現(xiàn)大型門等方法,從 而仿真轉(zhuǎn)換為快速形式。日本國特許公開公報(bào)2000 - 82091號(hào)記載著下述
技術(shù),即為了快速地進(jìn)行功能仿真,按照功能電路信息提取功能單元,計(jì) 算每一功能單元的各功能的執(zhí)行頻度,利用各功能的執(zhí)行頻度,根據(jù)功能 電路信息生成功能電路的仿真模型。
隨著LSI設(shè)計(jì)規(guī)模的增大,要求仿真速度進(jìn)一步提高。如果仿真所需 要的時(shí)間長(zhǎng),則LSI設(shè)計(jì)進(jìn)度就會(huì)拉長(zhǎng)。另一方面,如果為了縮短設(shè)計(jì)進(jìn) 度而減少仿真量,則在LSI制造后,會(huì)成為發(fā)生暴露出不理想等問題的主 要原因。而且,在利用計(jì)算機(jī)等的程序工作的系統(tǒng)中執(zhí)行多^JC輯運(yùn)算時(shí), 能夠縮短執(zhí)行時(shí)間是4艮重要的。

發(fā)明內(nèi)容
本發(fā)明的方式之一,為具有用于存儲(chǔ)第1進(jìn)程的存儲(chǔ)器的計(jì)算機(jī)系統(tǒng)。 該第l進(jìn)程具有進(jìn)行包括輸入級(jí)和輸出級(jí)的多級(jí)邏輯運(yùn)算的運(yùn)算部分,運(yùn) 算部分包括具有多個(gè)輸入的運(yùn)算、和作為多個(gè)輸入的源的前級(jí)運(yùn)算(多 個(gè))。
該計(jì)算機(jī)系統(tǒng)還具有生成第2進(jìn)程的單元。第2進(jìn)程包括多條用于執(zhí) 行包含于第1進(jìn)程的運(yùn)算部分的多個(gè)運(yùn)算的語句。生成該第2進(jìn)程的單元 (調(diào)度(scheduling)功能)具有從輸出級(jí)向輸入級(jí)對(duì)存儲(chǔ)于存儲(chǔ)器的運(yùn) 算部分進(jìn)行解析的單元。該解析單元可以判斷解析對(duì)象的運(yùn)算是下述第1 類型的運(yùn)算,即該第l類型的運(yùn)算是指由于決定解析對(duì)象的運(yùn)算的多個(gè) 輸入的一部分,而其他輸入的至少一部分則為自由的輸入。
生成第2進(jìn)程的單元還具有下述單元,即,如果解析對(duì)象的運(yùn)算是第 1類型的運(yùn)算,就將用于執(zhí)行解析對(duì)象的運(yùn)算的語句再構(gòu)成為至少一個(gè)語 句并輸出。至少一個(gè)語句包括用于執(zhí)行解析對(duì)象的運(yùn)算的多個(gè)輸入的源
(發(fā)生源)的運(yùn)算中的任意一個(gè)、即執(zhí)行前級(jí)的多個(gè)運(yùn)算的任意一個(gè),并 跳過由此而成為自由的輸入的源(發(fā)生源)的運(yùn)算、即跳過前級(jí)的運(yùn)算中 的任意一個(gè)的語句。
典型地,輸出單元將用于執(zhí)行解析對(duì)象的運(yùn)算的語句再構(gòu)成為包括下
述4個(gè)語句的多個(gè)語句,即
(l)用于以解析對(duì)象的運(yùn)算的多個(gè)輸入中的一個(gè)作為第l輸入、并執(zhí) 行該第l輸入的源的運(yùn)算的第l語句。
(2 )用于設(shè)定解析對(duì)象的運(yùn)算的輸出的第2語句。
(3) 用于執(zhí)行因第l輸入而成為自由的輸入的源的運(yùn)算的第3語句。
(4) 用于在因第1輸入而發(fā)生自由的輸入時(shí),跳過成為自由的輸入的 源的運(yùn)算的第4語句。典型的該第4語句,是用于在因第l輸入而發(fā)生自 由的輸入時(shí),跳過上述第3語句的語句,這些語句不一定按照這一順序表 述。
第1進(jìn)程的一個(gè)方式是包括多^JC輯運(yùn)算的邏輯電路的表述或邏輯合 成該邏輯電路的門電平的網(wǎng)表。第2進(jìn)程的一個(gè)方式是計(jì)算^^呈序(以下 稱為程序),多個(gè)語句包括控制計(jì)算M件的多^令。第2進(jìn)程的另一個(gè) 方式,是用于對(duì)可再構(gòu)成的邏輯電路進(jìn)行再構(gòu)成的硬件控制信息,多個(gè)語 句包括用于以周期為單位來再構(gòu)成邏輯電路的至少一部分的配置 (configuration)信息。第1進(jìn)程的其他方式也可以是這些程序或硬件控 制信息。
在本說明書中,所謂"輸入是自由的"或"發(fā)生自由的輸入",表示在 某運(yùn)算(本i兌明書的"第1類型的運(yùn)算")中,即4吏不決定該運(yùn)算的自由輸 入值,也能決定該運(yùn)算的輸出的情況。例如,如果是2個(gè)輸入的AND門, 只要一個(gè)輸入(例如本說明書中的"第l輸入")為"0"(負(fù)或偽),則即 使不決定另一輸入,AND門的輸出也為0。在這種情況下,另一輸入為"自 由的輸入"。多個(gè)輸入的AND門也一樣。如果是2個(gè)輸入的OR門,只要 1個(gè)輸入(第1輸入)為1 (正或真),則即佳是不決定另一輸入,OR門 的輸出也是l。在這種情況下,其他輸入是"自由輸入"。多輸入的OR門 也一樣。如果是兩個(gè)輸入的選擇器,只要決定了選擇信號(hào)(第l輸入),則
由此未被選擇的一方的輸入為自由輸入。
沒有必要為了得到以前級(jí)輸出為輸入的運(yùn)算部分的結(jié)果,執(zhí)行已成為 自由的輸入的源(發(fā)生源)的運(yùn)算。在作為本發(fā)明方式之一的計(jì)算機(jī)系統(tǒng)
中,生成第2進(jìn)程的單元在生成包含執(zhí)行運(yùn)算的語句的進(jìn)程時(shí),解析單元 從輸出級(jí)側(cè)到輸入級(jí)側(cè)對(duì)包含于第1進(jìn)程的運(yùn)算部分中的運(yùn)算進(jìn)行解析。 通it^輸出級(jí)到輸入級(jí)進(jìn)行解析,能夠判斷輸入為自由輸入的類型(第1 類型)的運(yùn)算,能夠判斷是否需要執(zhí)行(評(píng)價(jià))相對(duì)于該解析對(duì)象的運(yùn)算 的前^算。
然后,如果解析對(duì)象的運(yùn)算是其輸入的一部分為自由的輸入的第1類 型,則輸出單元就將執(zhí)行該運(yùn)算的語句再構(gòu)成為上述第1~第4語句并輸 出到存儲(chǔ)器。包含再構(gòu)成的語句的進(jìn)程,在發(fā)生了自由的輸入時(shí),為跳過 該自由的輸入的源的運(yùn)算的執(zhí)行的進(jìn)程。
生成第2進(jìn)程的單元還包含遞歸(Recursive)(反復(fù))處理。也就是 生成第2進(jìn)程的單元還具有利用解析單元和輸出單元來同樣地對(duì)輸出到存 儲(chǔ)器的包含于所再構(gòu)成的語句中的運(yùn)算進(jìn)行遞歸再構(gòu)成的功能。因此,利 用生成第2進(jìn)程的單元能夠生成下述第2進(jìn)程,該第2進(jìn)程包括在包含于 第1進(jìn)程的運(yùn)算部分的運(yùn)算中發(fā)生自由的輸入時(shí),能夠利用以跳過該輸入 的源的運(yùn)算的執(zhí)行(評(píng)價(jià))的方式調(diào)度的多個(gè)語句(語句群)來表現(xiàn)第1 進(jìn)程的運(yùn)算部分。
如果解析對(duì)象的運(yùn)算是作為選擇器等安裝的選擇性運(yùn)算,則上述第2 語句是利用不自由的輸入來執(zhí)行解析對(duì)象的運(yùn)算、并設(shè)定其輸出的語句。 該語句也可以為參照或利用檢查表(LUT)的語句。如果是AND、 OR等 輸出0/1 (正負(fù)、真?zhèn)?的邏輯運(yùn)算,則上述第2語句為用于簡(jiǎn)單地設(shè)定 規(guī)定值為輸出的語句。
計(jì)算機(jī)系統(tǒng)最好還具有用于存儲(chǔ)模板(template)的存儲(chǔ)器。模板具 有用于針對(duì)每個(gè)輸入的一部分為自由的種類的運(yùn)算,將用于執(zhí)行該運(yùn)算 的語句再構(gòu)成為上述第1至第4語句或包括這些動(dòng)作的至少一個(gè)語句的信 息(指示)。模板既可以存儲(chǔ)于與第l進(jìn)程相同的存儲(chǔ)器中,也可以存儲(chǔ)于 不同的存儲(chǔ)器。而ibK板也可以嵌入控制計(jì)算機(jī)系統(tǒng)的程序中。輸出單元 也可以參照;^板,再構(gòu)成用于執(zhí)行解析對(duì)象的運(yùn)算的語句。
輸出單元最好還具有在希望通過再構(gòu)成用于執(zhí)行解析對(duì)象的運(yùn)算的語 句來改善運(yùn)算部分的執(zhí)行速度時(shí),再構(gòu)成相應(yīng)語句的功能。如果即4吏生成
跳過運(yùn)算的第4語句也幾乎沒有進(jìn)行跳過的機(jī)會(huì)的話,第2進(jìn)程有可能慢 執(zhí)行跳過語句所需要的時(shí)間。此外,如果跳過的運(yùn)算是如設(shè)定即時(shí)或設(shè)定 全局變量那樣的處理,則即使不跳過,也基本不會(huì)影響處理速度。另一方 面,如果是如訪問存儲(chǔ)器那樣的需要數(shù)個(gè)時(shí)鐘的處理,跳過是有意義的。
輸出單元最好能夠防止重復(fù)輸出用于執(zhí)行同一運(yùn)算的語句。在包含于 運(yùn)算部分的多個(gè)運(yùn)算以某一前級(jí)運(yùn)算的輸出為共同的輸入使用時(shí),有可能 生成多個(gè)用于執(zhí)行該輸入的源的運(yùn)算的語句。在執(zhí)行該輸入的源的運(yùn)算需 要數(shù)個(gè)時(shí)鐘的情況下,通過以用于執(zhí)行該運(yùn)算的語句不重復(fù)的方式生成第 2進(jìn)程,能夠縮短用于利用仿真器等執(zhí)行第2進(jìn)程的時(shí)間。
該計(jì)算機(jī)系統(tǒng)的一個(gè)方式是才艮據(jù)包含第1進(jìn)程的第1內(nèi)容來生成包含 第2進(jìn)程的第2內(nèi)容的編譯器(compiler).第2內(nèi)容包括程序和/或硬件 控制信息。該計(jì)算機(jī)系統(tǒng)的不同的方式是執(zhí)行第2內(nèi)容的仿真器。
仿真器的一個(gè)例子是生成并執(zhí)行用于進(jìn)行基于周期方式的仿真的模型 的系統(tǒng)。這樣的計(jì)算機(jī)系統(tǒng)的一個(gè)方式,具有生成邏輯電路的門電平的網(wǎng) 表的單元、以及生成包括基于包含于網(wǎng)表中的第l進(jìn)程而生成的第2進(jìn)程 的程序的單元,生成該程序的單元包括生成第2進(jìn)程的單元。程序之一是 仿真用的程序,計(jì)算機(jī)系統(tǒng)最好還包括作為用于執(zhí)行仿真的程序的仿真器 的功能。
本發(fā)明的其他方式之一是安裝在具有用于存儲(chǔ)第1進(jìn)程的存儲(chǔ)器的計(jì) 算機(jī)上的程序(程序產(chǎn)品)。該程序具有使計(jì)算機(jī)作為生成上述第2進(jìn)程的 單元起作用的步驟。程序(程序產(chǎn)品)能夠記錄于HDD、 CD-ROM等 計(jì)算機(jī)可讀的適當(dāng)?shù)挠涗汮^體上提供。此外,程序能夠通過互聯(lián)網(wǎng)等計(jì)算
機(jī)網(wǎng)絡(luò)提供。
本發(fā)明的又一其他方式是一種方法,該方法包括安裝到具有存儲(chǔ)器的 計(jì)算機(jī)、根據(jù)第1進(jìn)程生成第2進(jìn)程的步驟。生成該第2進(jìn)程的步驟包括
下述步驟。
(a )從輸出級(jí)向輸入級(jí)對(duì)存儲(chǔ)于存儲(chǔ)器中的運(yùn)算部分進(jìn)行解析,判
斷解析對(duì)象的運(yùn)算是下述第1類型的運(yùn)算,即該第1類型的運(yùn)算是指由 于決定該運(yùn)算的多個(gè)輸入的一部分,而其他輸入的至少一部分則為自由 的。
(b)如果解析對(duì)象的運(yùn)算是第1類型的運(yùn)算,就將用于執(zhí)行解析對(duì) 象的運(yùn)算的語句再構(gòu)成為至少一個(gè)語句然后輸出。至少一個(gè)語句包括用于 執(zhí)行上述解析對(duì)象的運(yùn)算的多個(gè)輸入的源的運(yùn)算中的任意一個(gè)、并跳過由 此成為自由的輸入的源的運(yùn)算的語句。
在步驟(b)中,被再構(gòu)成并輸出的典型的語句(至少一個(gè)語句)是 包括上述第l至第4語句的語句。此外,這種方法是制造(生成)包括再 構(gòu)成的至少一個(gè)語句的內(nèi)容的方法。
生成第2進(jìn)程的步驟最好包括反復(fù)進(jìn)行步驟(a)和步驟(b )(遞歸處 理)。在這種情況下,步驟(b)將再構(gòu)成的語句輸出到作為解析對(duì)象的存 儲(chǔ)器。
上述步驟(b)最好包括參照模板的步驟,而該模板具有針對(duì)每個(gè) 輸入的一部分為自由的種類的運(yùn)算,將用于執(zhí)行該運(yùn)算的語句再構(gòu)成為 至少一個(gè)語句的信息(指示)。
此外,上述步驟(b )最好包括在希望通過再構(gòu)成用于執(zhí)行解析對(duì)象的 運(yùn)算的語句來改善運(yùn)算部分的執(zhí)行速度時(shí),再構(gòu)成用于執(zhí)行解析對(duì)象的運(yùn) 算的語句的步驟。
再有,上述步驟(b)最好包括防止重復(fù)生成用于執(zhí)行同一運(yùn)算的語句 的步驟。
這一方法可以使用于邏輯電路的仿真方法中。該方法最好包括根據(jù)邏 輯電路的表述生成包括第l進(jìn)程的門電平的網(wǎng)表、生成包括第2進(jìn)程的仿 真用的程序、以及利用仿真用的程序以基于周期的方式對(duì)邏輯電路進(jìn)行仿 真。


圖l是表示生成仿真模型(程序)的計(jì)算機(jī)系統(tǒng)的概略構(gòu)成的圖。
圖2是表示生成仿真程序的處理的概要的流程圖。
圖3是表示邏輯電路的一個(gè)例子的圖。
圖4是表示圖3的邏輯電路的仿真程序的一個(gè)例子的圖。
圖5是表示與圖3的邏輯電路對(duì)應(yīng)的仿真程序的其他例子的圖。
圖6是表示邏輯電路的不同例子的圖。
圖7是表示圖6的邏輯電路的仿真程序的一個(gè)例子的圖。
圖8是表示與圖6的邏輯電路對(duì)應(yīng)的仿真程序的其他例子的圖。
圖9是表示模板的一個(gè)例子的圖。
圖10是表示與圖3的邏輯電路對(duì)應(yīng)的仿真程序的不同例子的圖。
圖ll是表示生成圖IO所示的程序的過程的圖。
圖12是表示模板的不同例子的圖。
圖13是表示模板的又一不同例子的圖。
圖14是表示邏輯電路的不同例子的圖。
圖15是表示與圖14的邏輯電路對(duì)應(yīng)的仿真程序的一個(gè)例子的圖。 圖16是表示與圖14的邏輯電路對(duì)應(yīng)的仿真程序的不同例子的圖。 圖17是表示模板的又一不同例子的圖。
圖18是表示與圖14的邏輯電路對(duì)應(yīng)的仿真程序的又一不同例子的圖。 圖19是表示與圖14的邏輯電路對(duì)應(yīng)的仿真程序的又一不同例子的圖。 圖20是表示與圖14的邏輯電路對(duì)應(yīng)的仿真程序的又一不同例子的圖。 圖21是表示與圖14的邏輯電路對(duì)應(yīng)的仿真程序的又一不同例子的圖。 圖22是表示與圖14的邏輯電路對(duì)應(yīng)的仿真程序的又一不同例子的圖
圖23是表示與圖14的邏輯電路對(duì)應(yīng)的仿真程序的又一不同例子的圖。 圖24是表示模板的又一不同例子的圖。 圖25是表示模板的又一不同例子的圖。
具體實(shí)施例方式
圖l表示生成用于以基于周期的方式來仿真邏輯電路的模型的計(jì)算機(jī) 系統(tǒng)的概略構(gòu)成。該計(jì)算機(jī)系統(tǒng)l典型地具有作為^Jt的存儲(chǔ)器2、和由 包括CPU及存儲(chǔ)器的適當(dāng)?shù)馁Y源構(gòu)成的處理功能3。通過將存儲(chǔ)器2存儲(chǔ) 的模型生成程序5加載到處理功能3上,提供作為模型生成系統(tǒng)(模板6) 而要求的各種功能。模型生成系統(tǒng)6,具有邏輯合成功能11,即根據(jù)RTL 等的邏輯電路的表述30,生成門電平的網(wǎng)表31的單元;以及內(nèi)容發(fā)生器 (發(fā)生器)12,即決定該門電平的網(wǎng)表(第1內(nèi)容)31的評(píng)價(jià)順序(評(píng)價(jià) 進(jìn)度表),并作為模型(第2內(nèi)容)生成仿真用的程序(仿真程序)32的 單元。取代模型生成程序5,將仿真程序32加載到處理功能3上,以此可 使該計(jì)算機(jī)系統(tǒng)1作為基于周期方式進(jìn)行仿真的仿真器7起作用。
發(fā)生器12包括從輸出級(jí)向輸入級(jí)遞歸地解析并調(diào)度包含于網(wǎng)表31中 的與多^i且合邏輯部(邏輯運(yùn)算部)的各個(gè)門對(duì)應(yīng)的運(yùn)算(邏輯運(yùn)算)的 功能。也就是說,具有從輸出級(jí)向輸入^J"包含于網(wǎng)表31中的多級(jí)邏輯 運(yùn)算進(jìn)行解析的單元(分析器)14、以及將邏輯運(yùn)算轉(zhuǎn)換及再構(gòu)成為包含 于仿真程序32中的命^令(語句)并輸出的單元(轉(zhuǎn)換器)15。
分析器14在與網(wǎng)表31的各個(gè)門對(duì)應(yīng)的各運(yùn)算中判斷成為解析對(duì)象的 運(yùn)算是發(fā)生自由的輸入信號(hào)的類型(第1類型)的運(yùn)算。轉(zhuǎn)換器15在解析 對(duì)象的運(yùn)算是第1類型時(shí),將用于執(zhí)行該運(yùn)算的命令(語句)再構(gòu)成為如 下所述的多個(gè)命令(多個(gè)語句)。還有,在仿真程序中執(zhí)行運(yùn)算的步驟, 是在仿真中評(píng)價(jià)運(yùn)算的步驟,運(yùn)算結(jié)果或運(yùn)算輸出是仿真的評(píng)價(jià)結(jié)果。
1. 選擇合適的輸入信號(hào)(第1輸入信號(hào)),執(zhí)行(評(píng)價(jià))與該輸入信 號(hào)的源的門對(duì)應(yīng)的前級(jí)逸算的第l命令(第l語句)。
2. 設(shè)定解析對(duì)象的運(yùn)算輸出(評(píng)價(jià)結(jié)果)的第2命令(第2語句)。
3. 執(zhí)行(評(píng)價(jià))與因第1輸入信號(hào)而成為自由的輸入信號(hào)(自由輸入 信號(hào))的源的門對(duì)應(yīng)的前級(jí)運(yùn)算的第3命令(第3語句)。
4.因第1輸入信號(hào)而跳過第3命令的第4命令(第4語句)。
分析器14和轉(zhuǎn)換器15分別以包含于第1和第3命令中的運(yùn)算、依情 況第2命令中包含的運(yùn)算作為解析對(duì)象的運(yùn)算,在到達(dá)輸入級(jí)的運(yùn)算之前 反復(fù)進(jìn)行同樣的處理。該第1~第4的命令不必按該順序執(zhí)行。第4命令 是M分支命令,可以將第l命令組裝入其條件中。特別是評(píng)價(jià)對(duì)象的運(yùn) 算是輸入即時(shí)或全局變量的情況下,最好是第1命令只設(shè)定變數(shù),并組裝 到條件分支命令中。在這種情況下,由轉(zhuǎn)換器15輸出的實(shí)際的語句就成為 3個(gè)語句。作為M分支命令的第4命令需要在第3命令之前執(zhí)行。此夕卜, 第2命令既可以在條件分支后執(zhí)行,也可以在分支前執(zhí)行。
在該模型生成系統(tǒng)6中,包含再構(gòu)成功能的轉(zhuǎn)換器15,參照連同網(wǎng)表 31等存儲(chǔ)于存儲(chǔ)器2的模板群20的適當(dāng)?shù)腲^1,生成對(duì)應(yīng)于解析對(duì)象的 運(yùn)算的第1~第4命令。在模型(仿真程序)32的生成中,為了改善訪問 速度,最好是將模板群20暫時(shí)存儲(chǔ)到包含于處理功能3的RAM等CPU 可高速訪問的存儲(chǔ)器中。如果是獨(dú)立于程序5的模板群20,則可以通過追 加刪除^^L文件,來改變^^L處理模式。
模板群20也可以嵌入存儲(chǔ)器2所存儲(chǔ)的模型生成程序5中。如果將模 板群20或進(jìn)行與模板群對(duì)應(yīng)的處理的語句"程序5中,由于不需要一一 讀出獨(dú)立的^^L群20,所以程序5本身的制作變得容易。
執(zhí)行包括由發(fā)生器12生成的命令序列的仿真程序32時(shí),運(yùn)算部分的 執(zhí)行大體來說從輸入級(jí)向輸出級(jí)進(jìn)行。但是在只評(píng)價(jià)與某一 門對(duì)應(yīng)的運(yùn)算 的某一輸入信號(hào)的值,就決定了該門的輸出值時(shí),跳過用于計(jì)算其余的自 由輸入信號(hào)的值的前級(jí)運(yùn)算的執(zhí)行命令(短路評(píng)價(jià))。因此,根據(jù)仿真程 序32,仿真器7不限于在各時(shí)鐘周期執(zhí)行全部門,可以提高仿真的處理速 度。因此能夠提高基于周期的功能仿真的速度,能夠應(yīng)對(duì)隨著LSI設(shè)計(jì)規(guī) 模的增大而仿真負(fù)擔(dān)增大的情況。
圖2表示在計(jì)算機(jī)系統(tǒng)1中,以網(wǎng)表31或其一部分作為第l進(jìn)程,根 據(jù)該第1進(jìn)程,以仿真程序32或其一部分生成為第2進(jìn)程的處理的概要。 而且,圖2的流程圖包括在利用仿真程序32進(jìn)行仿真之前的處理。在步驟
51中,利用邏輯合成功能11邏輯合成邏輯電路表述30,并生成門電平的 網(wǎng)表31。然后,將程序發(fā)生器12作為生成第2進(jìn)程的單元,在步驟52至 56中生成仿真程序32,該仿真程序32包含用于執(zhí)行包含于該網(wǎng)表31中的 多級(jí)運(yùn)算部分的命令序列。因此,步驟52至56成為以網(wǎng)表31為第1進(jìn)程、 根據(jù)第1進(jìn)程生成包含于仿真程序32的第2進(jìn)程的步驟。
在生成第2進(jìn)程的步驟中,首先,在步驟52中,利用分析器14對(duì)運(yùn) 算部分的輸出級(jí)的運(yùn)算進(jìn)行解析。在步驟54中,如果是發(fā)生了自由的輸入
(變成自由輸入)的運(yùn)算,則在步驟55中,轉(zhuǎn)換器15將執(zhí)行解析對(duì)象的 運(yùn)算的命令再構(gòu)成為第1 ~第4命令,并作為第2內(nèi)容(虛擬程序)的命 令(語句)輸出到存儲(chǔ)器2。接著,在步驟53中,將前面輸出的程序^^令 作為第1進(jìn)程,從輸出級(jí)向輸入級(jí)對(duì)包含于其中的再構(gòu)成的命令中的運(yùn)算
(前級(jí)的運(yùn)算)遞歸地進(jìn)行解析。如果前級(jí)的運(yùn)算是發(fā)生自由輸入的類型, 則同樣地對(duì)執(zhí)行運(yùn)算的命令進(jìn)行再構(gòu)成。然后,在步驟56中,反復(fù)進(jìn)行上 述處理,直到包含于運(yùn)算部分的運(yùn)算的解析結(jié)束。
在步驟55的再構(gòu)成步驟中,最好沒為不重復(fù)生成用于執(zhí)行同一前M 算的命令。也可以設(shè)置統(tǒng)一功能,以便在再構(gòu)成結(jié)束后統(tǒng)一執(zhí)行相同運(yùn)算 的命令,從而能進(jìn)一步提高處理速度。
在生成作為邏輯電路的仿真模型的程序32后,在步驟58中,使用該 程序32執(zhí)行仿真。
圖3利用門電路來表i^示包含于門電平的網(wǎng)表31中的邏輯部分的構(gòu) 成。此外,如下所示的網(wǎng)表、程序表等僅僅是用于說明的例示。
包含于網(wǎng)表31中的某一運(yùn)算部分36a是兩^ia合的邏輯運(yùn)算。因此相 當(dāng)于存儲(chǔ)在存儲(chǔ)器2中的第1進(jìn)程。邏輯運(yùn)算部分36a包括輸入級(jí)33的運(yùn) 算33p和33q,以及輸出級(jí)34的運(yùn)算34y。輸入級(jí)的運(yùn)算33p以信號(hào)A和 信號(hào)B作為輸入進(jìn)行邏輯(AND)運(yùn)算,輸出信號(hào)P。輸入級(jí)的運(yùn)算33q 以信號(hào)C和信號(hào)D作為輸入,進(jìn)行邏輯(NAND )運(yùn)算,輸出信號(hào)Q。輸 出級(jí)的運(yùn)算34y以信號(hào)P和信號(hào)Q作為輸入,進(jìn)行邏輯(OR)運(yùn)算,輸 出信號(hào)Y。信號(hào)Y成為運(yùn)算部分36a的輸出。在該運(yùn)算部分36a中,輸入 級(jí)33的運(yùn)算是相對(duì)于輸出級(jí)34的運(yùn)算的前級(jí)(前段)運(yùn)算,輸出級(jí)34 的運(yùn)算是相對(duì)于輸入級(jí)33的運(yùn)算的后級(jí)(后段、后續(xù))運(yùn)算。 圖4將運(yùn)算部分36a,表示為使用與圖1不同的基于周期的仿真器編 譯了的仿真程序的一個(gè)例子。該仿真程序39a在下面所示的表述中大致作 為比較例處理。但是顯然并不表示本申請(qǐng)的權(quán)利要求范圍中不包括具有輸 出表示為比較例的程序的功能的系統(tǒng)、程序、方法等。此外,在以下所述 的實(shí)施方式中,分別將包含于程序中的多個(gè)命令(語句)表述為代碼,有 時(shí)把一組代碼表述為代碼塊。此外,有時(shí)將邏輯運(yùn)算、與運(yùn)算或該邏輯運(yùn) 算對(duì)應(yīng)的門(邏輯門)表述為節(jié)點(diǎn)。再有,在下述實(shí)施方式中,有時(shí)將包 括再構(gòu)成語句生成內(nèi)容的情況表述為"調(diào)度,,或"進(jìn)行調(diào)度"。此外,在 本說明書中,有時(shí)用不同單詞置換表述幾個(gè)單詞,這是為了更容易理解包 含于本申請(qǐng)中的發(fā)明,而不是限定本申請(qǐng)的權(quán)利要求范圍的表述。
比較例的代碼39a,是以從輸入級(jí)向輸出級(jí)執(zhí)行的方式編斧逸算部分 36a的結(jié)果。在基于周期方式的仿真中,從代碼塊39a的START標(biāo)簽到 END標(biāo)簽表示用于對(duì)一個(gè)時(shí)鐘周期的邏輯電路的動(dòng)作進(jìn)行仿真的命令組 (命令序列)。在仿真中,按照時(shí)鐘周期的數(shù)量反復(fù)執(zhí)行該命令序列。因 此,利用圖4的代碼塊39a執(zhí)行仿真時(shí),每一時(shí)鐘周期從輸入級(jí)33向輸出 級(jí)34簡(jiǎn)單一律地執(zhí)行并評(píng)價(jià)與所有的門的邏輯運(yùn)算對(duì)應(yīng)的命令。也就是 說,在代碼塊39a中,從上開始依次地分別表述執(zhí)行輸入級(jí)的運(yùn)算33p、 33q以及輸出級(jí)的運(yùn)算34y的命令,并按該順序執(zhí)行運(yùn)算。
圖5表示表示利用圖1的模型生成系統(tǒng)6編譯過過的運(yùn)算部分36a的 仿真程序32的一個(gè)例子。利用分析器14從輸出級(jí)34向輸入級(jí)33對(duì)運(yùn)算 部分36a進(jìn)行解析。首先,了解到輸出級(jí)的運(yùn)算34y為邏輯(OR), ;UL 生自由輸入的類型1的運(yùn)算。因此,只要輸入信號(hào)P和Q中一方的輸入信 號(hào)例如信號(hào)P為"1",則不管另一輸入信號(hào)Q如何,輸出信號(hào)Y為"1"。 因此,另一輸入信號(hào)Q為自由輸入信號(hào)。因此根據(jù)輸入信號(hào)P的值,不需 要執(zhí)行另一個(gè)輸入信號(hào)Q的源(發(fā)生源)即前級(jí)的運(yùn)算(在本例子中是輸 入級(jí)的運(yùn)算)33q。
按照?qǐng)D2所示的流程圖,利用分析器14解析輸出級(jí)的運(yùn)算34y。由轉(zhuǎn) 換器15,將執(zhí)行輸出級(jí)的運(yùn)算34的命令,如代碼組32a所示地,再構(gòu)成 為第1命令61、第2命令62、第3命令63以及第4命令64的命令序列, 并輸出到存儲(chǔ)器2。在代碼塊32a中,第1命令61是用于執(zhí)行作為第1輸 入而選擇的輸入信號(hào)P的源的運(yùn)算33p的命令(語句)。第2命令62是用 于設(shè)定因輸入信號(hào)P而輸入信號(hào)Q成為自由輸入時(shí)的輸出信號(hào)Y的命令 (語句)。第3命令63是用于執(zhí)行作為自由輸入的輸入信號(hào)Q的源的運(yùn)算 33q的命令(語句)。第4命令64是用于在因輸入信號(hào)P而輸入信號(hào)Q變 為自由輸入時(shí)跳過第3命令63的命令(語句)。
代碼塊32a是第2進(jìn)程的一個(gè)例子,表述不限于此。可以設(shè)為組合或 分割包含于代碼組32a中的命令的表述。例如命令63也可以設(shè)為執(zhí)行運(yùn)算 33q、將其結(jié)果設(shè)定為輸出Y的1個(gè)命令的表述。第1命令61也可以包含 于4Hf分支命令即第4命令的4Hf的表述中。此外,第2命令62也可以表 述為第4命令的ELSE語句。
用仿真器7執(zhí)行圖5所示的代碼塊32a時(shí),大體從輸入級(jí)33向輸出級(jí) 34執(zhí)行并評(píng)g算。但是,由于只要信號(hào)P的值為1,則信號(hào)Q的值為自 由的,所以運(yùn)算33q的計(jì)算本身祝跳過。在這種規(guī)漠的電路時(shí),執(zhí)行第4 命令64的條件分支的語句成了額外開銷(overhead).因此,代碼塊32a 的執(zhí)行il;變與代碼塊39a的執(zhí)行速度沒有大的差別,也有可能代碼塊32a 的執(zhí)行ilJUl而變得慢。但是,當(dāng)運(yùn)算33q不是簡(jiǎn)單的NAND門,而是由 多級(jí)復(fù)雜的邏輯進(jìn)行運(yùn)算的情況下,可以整體跳過該多^:算的執(zhí)行。因 此,可以大大縮短發(fā)生自由輸入的周期的代碼塊32a的執(zhí)行時(shí)間。
圖6表示包含于網(wǎng)表31中的不同的運(yùn)算部分36b的構(gòu)成。該運(yùn)算部分 36b也是兩級(jí)組合的邏輯運(yùn)算,包括輸入級(jí)33的運(yùn)算33p、 33q和33r, 以及輸出級(jí)34的運(yùn)算34y。輸入級(jí)的運(yùn)算33p和33q與圖3所示的運(yùn)算相 同。33r以信號(hào)E和信號(hào)F作為輸入進(jìn)行邏輯(OR)運(yùn)算,輸出信號(hào)R。 輸出級(jí)的運(yùn)算34y是選擇器,以信號(hào)R作為控制信號(hào)(選擇信號(hào)),以信 號(hào)P或信號(hào)Q作為信號(hào)Y輸出。
圖7中將運(yùn)算部分36b,表示為以從輸入級(jí)向輸出級(jí)執(zhí)行的方式編譯 的比較例的代碼塊39b。在代碼塊39b中從上開始分別依次表述執(zhí)行輸入 級(jí)的運(yùn)算33p、運(yùn)算33q、運(yùn)算33r以及輸出級(jí)的運(yùn)算34y的命令。因此 代碼塊39b表示在每個(gè)時(shí)鐘周期內(nèi),都從輸入級(jí)33向輸出級(jí)34簡(jiǎn)單一律 地執(zhí)行仿真全部門的邏輯運(yùn)算的命令。
圖8中將運(yùn)算部分36b表示為由圖1的模型生成系統(tǒng)6編譯過的仿真 程序32的一個(gè)例子。從輸出級(jí)34向輸入級(jí)33解析運(yùn)算部分36b時(shí),相 對(duì)于輸入級(jí)的運(yùn)算為后級(jí)或后續(xù)運(yùn)算的輸出級(jí)的運(yùn)算34y是選擇器,M 生自由的輸入信號(hào)的第1類型的運(yùn)算。也就是說,在運(yùn)算34y中,因輸入 信號(hào)R而輸入信號(hào)P和輸入信號(hào)Q內(nèi)有一方輸入信號(hào)成為自由信號(hào)。因 此,在以輸入信號(hào)R作為第l輸入信號(hào)進(jìn)行解析時(shí),因?yàn)樵撝担恍枰獔?zhí) 行輸入信號(hào)P或Q的發(fā)生源即輸入級(jí)(前級(jí))的運(yùn)算33p或33q。
按照?qǐng)D2所示的流程圖,首先,解析輸出級(jí)的運(yùn)算34y,將執(zhí)行輸出 級(jí)運(yùn)算34y的命令,如代碼塊32b所示,再構(gòu)成為第1命令61、第2命令 62、第3備令63以及第4命令64的命令序列。在代碼塊32b中,第l命 令61是執(zhí)行作為第1輸入而選擇的輸入信號(hào)R的源的運(yùn)算33r的命令。 第2命令62,在該例子中,是當(dāng)因輸入信號(hào)R而輸入信號(hào)P成為自由輸 入時(shí),用于設(shè)定輸入信號(hào)Y的命令。第2命令62包括執(zhí)行運(yùn)算33q的命 令和將運(yùn)算33q的結(jié)果設(shè)定為輸出Y的命令。第3命令63是執(zhí)行成為自 由輸入的輸入信號(hào)P的源的運(yùn)算33p的命令。第3命令63包括執(zhí)行運(yùn)算 33p的命令、將運(yùn)算33p的結(jié)果設(shè)定為輸出Y的命令、以;0&過第2命令 62的命令。第4命令64是當(dāng)因輸入信號(hào)R而輸入信號(hào)P成為自由信號(hào)時(shí), 跳過第3命令63的命令。
用仿真器7執(zhí)行圖8所示的代碼塊32b時(shí),首先評(píng)價(jià)選擇器34y的選 擇信號(hào)R,根據(jù)其結(jié)果追溯到輸入級(jí),只對(duì)信號(hào)P和信號(hào)Q的某一方的發(fā) 生源進(jìn)W價(jià)。因此,能夠縮短代碼塊32b的執(zhí)行時(shí)間。
圖9表示在內(nèi)容發(fā)生器12中,作為內(nèi)容生成仿真程序32時(shí)參照模板 群20的例子。在轉(zhuǎn)換器15中,在再構(gòu)成語句的步驟55中參照模板群20。 圖9是用于使計(jì)算機(jī)系統(tǒng)1作為模型系統(tǒng)6起作用的模型生成程序5的程 序的一部分,將分析器14的功能和轉(zhuǎn)換器15的功能安裝到計(jì)算機(jī)系統(tǒng)1 中。也就是說,圖9的程序源表示使用模板群20代碼生成的程序(調(diào)度的 程序)48的一個(gè)例子。利用該程序48,發(fā)生器12在步驟52中從指向門電 平網(wǎng)表31的輸出級(jí)34的門的節(jié)點(diǎn)出發(fā),使用包含于模板群20的基于門的 種類的^^板,遞歸地生成代碼。
當(dāng)解析對(duì)象的運(yùn)算為兩個(gè)輸入的AND門的情況下,轉(zhuǎn)換器15使用包 含于程序48中的模板21 ,再構(gòu)成執(zhí)行邏輯(AND遮算的命令。邏彬AND ) 運(yùn)算(門,節(jié)點(diǎn)),只要輸入信號(hào)的一方為"0",則輸出為"0",另一輸入 為自由輸入。模板21,作為語句26,包括生成執(zhí)行作為輸入信號(hào)洲(input #0)的源的前級(jí)(前)運(yùn)算的第l命令(代碼)的指示(信息)。模板21, 作為語句27,還包括生成將評(píng)價(jià)對(duì)象的運(yùn)算(節(jié)點(diǎn))的輸出設(shè)定為"0" 的第2命令(代碼)的指示。語句21,作為語句28還包括生成作為短路 評(píng)價(jià)用的條件分支的第4命令(代碼)的指示。模板21,作為語句29還 包括生成執(zhí)行作為另一其他輸入信號(hào)#1 (input#1)的源的前^U1算的第3 命令(代碼)的指示。
包含于模板群20的模板22,包括在評(píng)價(jià)對(duì)象的運(yùn)算為邏輯(OR)時(shí), 轉(zhuǎn)換器15再構(gòu)成執(zhí)行該運(yùn)算的命令用的信息。關(guān)于在再構(gòu)成的命令,上面 已經(jīng)敘述。
模板23是評(píng)價(jià)對(duì)象的運(yùn)算為邏輯(XOR)時(shí)用的模板。在該邏輯運(yùn) 算中,沒有發(fā)生自由輸入。因此,模板23包括用于生成分別執(zhí)行輸入側(cè)(前 級(jí))運(yùn)算的命令、和根據(jù)這些結(jié)果來評(píng)價(jià)邏輯(XOR)的命令的指示。
模板24是邏輯(NOT)運(yùn)算時(shí)用的模板。該邏輯運(yùn)算也沒有發(fā)生自 由輸入。因此,模板24包括生成執(zhí)行輸入側(cè)(前級(jí))運(yùn)算的命令、和根據(jù) 其結(jié)果來評(píng)價(jià)邏輯(NOT)的命令的指示。
模板25是用于對(duì)選擇器進(jìn)行解析的模板。該模板25中包括表示分別 生成圖8所示的第1命令61至第4命令64的信息的語句。
圖10所示的代碼塊32c,是與圖3所示的運(yùn)算部分36a對(duì)應(yīng)的代碼塊 的不同例子。該代碼塊32c是根據(jù)圖9的程序48,利用轉(zhuǎn)換器15進(jìn)行再 構(gòu)成并輸出的例子。
圖11中,包含于代碼塊32c中的各個(gè)命令表示利用轉(zhuǎn)換器15進(jìn)行再 構(gòu)成的過程。代碼塊32c是為了作為整體來運(yùn)算輸出信號(hào)Y而調(diào)度的代碼 塊。其中,包含"L一P"標(biāo)簽的小塊32d是針對(duì)信號(hào)P而調(diào)度的代碼塊, 包含"L一Q,,標(biāo)簽Sl小塊32e是針對(duì)信號(hào)Q而調(diào)度的代碼塊。
首先,作為進(jìn)程表(Y)生成用于執(zhí)行作為輸出信號(hào)Y的源的運(yùn)算34y 的命令。該命令是用于執(zhí)行邏輯(OR)運(yùn)算34y的命令。該命令,被基于 包含于程序48中的模板22進(jìn)行再構(gòu)成,并被轉(zhuǎn)換(再構(gòu)成)為包括執(zhí)行 運(yùn)算33p用的命令(時(shí)間表(P))、和執(zhí)行運(yùn)算33q用的命令(時(shí)間表(Q )) 的命令序列。然后,根據(jù)程序48,參照模板遞歸地解析、再構(gòu)成各個(gè)命令。
在圖9的程序48中沒有組^ANAND門用的模板,但是NAND門的模板 可以根據(jù)AND門的模板而類推出來。
通常,在命令(進(jìn)度表(P))以及命令(進(jìn)度表(Q))中,包含執(zhí)行 成為該命令對(duì)象的運(yùn)算的輸入源的更前一級(jí)運(yùn)算的命令。程序48參照所組 裝入的模板遞歸地解析、再構(gòu)成這些命令。這些命令就是圖11中利用細(xì)長(zhǎng) 的空框表示的命令(歧表(A)、 (B)、 (C)以及(D))。在圖3所示的 運(yùn)算部分36a中,A ~ D信號(hào)是全局(global)輸入信號(hào)(針對(duì)電路整體的 輸入信號(hào))。因此不是能進(jìn)行再構(gòu)成的信號(hào),所以在程序48中為"不做任 何處理(do nothing)",不會(huì)生成更多代碼。這樣一來,就生成了圖10所 示的代碼塊32c。
在生成作為模型的仿真程序32 (進(jìn)行調(diào)度)時(shí),解析處理包含于網(wǎng)表 31中的運(yùn)算(邏輯)的順序,與執(zhí)行作為仿真程序32而生成的命令(代 碼)時(shí)的順序(邏輯評(píng)價(jià)順序)不同。在進(jìn)行調(diào)度時(shí),發(fā)生器12從輸出級(jí) 向輸入級(jí)按照深度優(yōu)先搜索的要領(lǐng)遞歸地對(duì)多級(jí)運(yùn)算進(jìn)行解析,并生成命 令,進(jìn)行置換或再構(gòu)成。在仿真器7執(zhí)行作為程序32而生成的代碼時(shí),大 體來說,從輸入級(jí)向輸出級(jí)執(zhí)行多^il算。
在由本實(shí)施方式的發(fā)生器12根據(jù)網(wǎng)表31生成的仿真程序32中,包括 不明確表示評(píng)價(jià)對(duì)象的運(yùn)算邏輯的命令。從組"程序48中的模板可知, 只要評(píng)價(jià)對(duì)象的運(yùn)算^JL生自由輸入的類型,在程序32中就不明確表示該 評(píng)價(jià)對(duì)象的運(yùn)算邏輯。在發(fā)生自由輸入時(shí),不僅不執(zhí)行自由輸入的源的運(yùn) 算(前級(jí)運(yùn)算),而且也不需要執(zhí)行以自由輸入作為輸入的運(yùn)算(評(píng)價(jià)對(duì) 象(解析對(duì)象)的運(yùn)算)本身,不明示需要自由輸入的邏輯。
例如,如模板21所示,如果評(píng)價(jià)對(duì)象的運(yùn)算邏輯是(AND),則在發(fā) 生自由輸入時(shí),輸出簡(jiǎn)單設(shè)置為"0"。在不發(fā)生自由輸入時(shí),僅簡(jiǎn)單地將 另一輸入設(shè)定為輸出。此外,從圖ll所示的經(jīng)過可知,越接近輸出級(jí),被 根據(jù)評(píng)價(jià)對(duì)象的運(yùn)算進(jìn)行再構(gòu)成的命4^^t。因此,幾乎不可能根據(jù)仿 真程序32推測(cè)評(píng)價(jià)對(duì)象的運(yùn)算邏輯。因此,設(shè)計(jì)者不容易直接對(duì)由該模型 生成系統(tǒng)6生成的仿真程序32進(jìn)行編碼,必然在仿真程序32的生成中4吏 用計(jì)算機(jī)系統(tǒng)l。
以上,參照?qǐng)D3~圖5、圖6~圖8,說明了根據(jù)包括第l進(jìn)程的網(wǎng)表31來生成包括第2進(jìn)程的仿真程序32的情況。在這些實(shí)施方式中,網(wǎng)表 31是包括第1進(jìn)程的第1內(nèi)容,仿真程序32是包括第2進(jìn)程的第2內(nèi)容, 內(nèi)容發(fā)生器12能夠根據(jù)第1內(nèi)容生成第2內(nèi)容。模型生成系統(tǒng)6的內(nèi)容發(fā) 生器12,也可以取代網(wǎng)表31,以從輸入級(jí)向輸出級(jí)調(diào)度的比較例的程序 39作為包括第1進(jìn)程的內(nèi)容,使用組裝了模板的程序48進(jìn)行轉(zhuǎn)換(再構(gòu) 成),作為包括第2進(jìn)程的內(nèi)容生成程序32。在這種情況下,可以將包括 內(nèi)容發(fā)生器12的處理功能3或計(jì)算機(jī)系統(tǒng)1稱為最優(yōu)化編譯器。
在比較例的程序39等的規(guī)定某一皿或應(yīng)用的典型的程序中,表示從 輸入級(jí)到輸出級(jí)的時(shí)間經(jīng)過的表述,表示程序計(jì)數(shù)器的行進(jìn)方向、即表示 語句的執(zhí)行順序(時(shí)間經(jīng)過)的自上而下。從而,在該最優(yōu)化編譯器中, 自下而上地與時(shí)間相反方向地解析源程序39,從而轉(zhuǎn)換為不執(zhí)行成為自由 輸入的發(fā)生源的運(yùn)算的程序32,可以實(shí)現(xiàn)由源程序39帶來的應(yīng)用程序處 理ilJL的提高。
此外,以上,以生成用于基于周期方式對(duì)安裝于ASIC、 FPGA等上的 邏輯電路進(jìn)行仿真的模型為例進(jìn)行了說明。例如,圖4或圖7所示的程序 39,表示在各周期中執(zhí)行全部邏輯運(yùn)算(邏輯門)的電路或裝置。近年來, 人們提出了能夠以周期為單位動(dòng)態(tài)地變更或再構(gòu)成電路結(jié)構(gòu)的硬件。例 如,可以例舉本申請(qǐng)人的國際^>開WO2005/022380。
在這種可動(dòng)態(tài)再構(gòu)成的硬件中,并行地執(zhí)行全部運(yùn)算帶來的優(yōu)點(diǎn)是例 如若不嚴(yán)格追求執(zhí)行速度,則可以進(jìn)行不同的處理(執(zhí)行方法)。首先, 生成硬件控制信息(配置信息),其用于在可再構(gòu)成的硬件上安裝用于執(zhí) 行圖4或圖7所示的程序39的各語句用的電路結(jié)構(gòu)、即將圖3或圖6所示 的電路。接著,以周期為單位一邊再構(gòu)成該電路結(jié)構(gòu)的一部分, 一邊用小 的硬件資源執(zhí)行圖3或圖6所示的電路功能。
內(nèi)容發(fā)生器12可以將上述硬件控制信息轉(zhuǎn)換為相當(dāng)于圖5或圖8所示 的程序32的硬件控制信息。也就是說,內(nèi)容發(fā)生器12可以轉(zhuǎn)換為設(shè)置為 忽#行自由輸入的源的運(yùn)算的電路的安裝的硬件控制信息。當(dāng)利用該硬 件控制信息來控制可再構(gòu)成的硬件時(shí),可以忽略硬件上再構(gòu)成用于執(zhí)行發(fā) 生自由輸入的運(yùn)算的電路,能夠提高處理速度,能實(shí)現(xiàn)更有效地利用硬件 資源。
此外,能夠在語句的再構(gòu)成中利用的^^板不限于圖9所示的^^板。圖 10所示的代碼塊32c是通過圖9所示的程序48由安裝到系統(tǒng)1上的發(fā)生 器12進(jìn)行調(diào)度的模板(以下有時(shí)也簡(jiǎn)單記為調(diào)度)的。圖10所示的代碼 塊32c是不同于圖5或圖8的代碼,雖然不是進(jìn)行餘溪的動(dòng)作,但是不能 說是高效率的代碼塊。在代碼塊32c中,根據(jù)輸入全局變量的信號(hào)A和信 號(hào)C的值將信號(hào)B或信號(hào)D判定為是自由的并進(jìn)行條件分支,但是對(duì)提 高代碼的執(zhí)行速度、即仿真的執(zhí)行i!JL沒有大貢獻(xiàn)。當(dāng)然由于判定和分支 的額外開銷的緣故,代碼塊32c有可能執(zhí)行iUL變差??墒?,如果是為生 成信號(hào)A D而訪問存儲(chǔ)器,或生成這些信號(hào)需要數(shù)個(gè)時(shí)鐘的情況,則在 代碼組32c中進(jìn)行條件分支就非常有助于提高處理速度。
圖12所示的程序48,包括用于再構(gòu)成執(zhí)行AND門運(yùn)算的命令的模板 21的不同例子。該模板21包含用于根據(jù)輸入的屬性判斷是否進(jìn)行再構(gòu)成 的信息。轉(zhuǎn)換器15通過參考該模板21,在自由輸入的源是如全局輸入這 種情況時(shí),在利用笫4命令跳過該自由輸入的源也不能夠期待(預(yù)想)改 善仿真的執(zhí)行速度的情況下,不進(jìn)行再構(gòu)成。此外,該^^板21可以選擇作 為自由輸入而跳過的前^J逸算。
圖12所示的模板21,包括如果輸入信號(hào)弁0和#1兩者是全局變量, 則指示不進(jìn)行再構(gòu)成的部分21a;在其他情況下,如果輸入信號(hào)洲是全局 變量,就指示以將其選擇為第1輸入并跳過輸入信號(hào)#1的源的運(yùn)算的方式 進(jìn)行再構(gòu)成的部分21b;反之如果輸入信號(hào)#1是全局變量,就指示以將其 選擇為第1輸入并跳過輸入信號(hào)洲的源的運(yùn)算的方式進(jìn)行再構(gòu)成的部分 21c;以及如果是除此以外的條件,就指示以缺省輸入信號(hào)#0并選擇為第1 輸入、跳過輸入信號(hào)#1的源的運(yùn)算的方式進(jìn)行再構(gòu)成的部分21d。使用該 模板21時(shí),轉(zhuǎn)換器15可以生成圖5和圖8所示的代碼。再構(gòu)成用于扭^行 其他邏輯運(yùn)算的命令的模板也可以同樣安排。
圖13所示的程序48包括模板21的另一不同的例子。該模板21除了 上面所述以外,還具有判斷輸入信號(hào)的發(fā)生源的運(yùn)算的復(fù)雜性、指示選擇 判斷發(fā)生自由的輸入的部分21e和21f。在調(diào)度AND門運(yùn)算和OR門運(yùn)算 時(shí),最好也考慮輸入信號(hào)的評(píng)價(jià)順序。例如在圖5所示的代碼塊32a中, 根據(jù)信號(hào)(中間信號(hào))P的評(píng)價(jià)結(jié)^t過信號(hào)(中間信號(hào))Q的評(píng)價(jià)(發(fā) 生源的運(yùn)算)。但是,反之也可以生成根據(jù)信號(hào)Q的評(píng)價(jià)結(jié)^J^過信號(hào)P
的評(píng)價(jià)這樣的代碼。
在圖5所示的代碼塊32a中,不管是用哪一個(gè)評(píng)價(jià)順序,代碼執(zhí)行性 能都不改變。但是,在信號(hào)P的源運(yùn)算、還有源運(yùn)算的更前一級(jí)的運(yùn)算群 的邏輯復(fù)雜的情況下,可以預(yù)料,比起"對(duì)發(fā)生信號(hào)P的復(fù)雜運(yùn)算或運(yùn)算 群進(jìn)行計(jì)算后,碰巧跳過發(fā)生簡(jiǎn)單的信號(hào)Q的計(jì)算","計(jì)算簡(jiǎn)單的信號(hào)Q 之后,碰巧跳過發(fā)生信號(hào)P的復(fù)雜運(yùn)算或運(yùn)算群的計(jì)算"更好。因此在進(jìn) 行調(diào)度時(shí),轉(zhuǎn)換器15使用圖3的模板21,并且根據(jù)計(jì)算輸入信號(hào)的邏輯 的復(fù)雜度(門數(shù)),區(qū)分使用先代碼生成輸入信號(hào)洲的部分21f、與先代碼 生成輸入信號(hào)#1的部分21e。
但是,所說的進(jìn)行調(diào)度時(shí)要判斷的邏輯的復(fù)雜度,有可能不能簡(jiǎn)單地 以門的數(shù)量計(jì)算。例如圖6所示的邏輯電路36n,簡(jiǎn)單地計(jì)算的話包括4 個(gè)門。但是,圖8所示的代碼塊32b,以跳過自由輸入的運(yùn)算的方式進(jìn)行 調(diào)度。因此,通過執(zhí)行代碼塊32b,必然能夠跳過信號(hào)P或信號(hào)Q任一方 的發(fā)生源的運(yùn)算,因此代碼執(zhí)行時(shí)間實(shí)際上只要3個(gè)門的數(shù)量即可。因此, 可以說由通過該調(diào)度而生成的代碼表現(xiàn)的邏輯復(fù)雜度相當(dāng)于3個(gè)門。
要而言之,在本實(shí)施方式中,所謂"進(jìn)行調(diào)度"包括跳過自由輸入的 源的運(yùn)算(自由輸入的運(yùn)算),所謂對(duì)由"跳過"帶來的好處作出貢獻(xiàn)的 邏輯復(fù)雜度,是"評(píng)價(jià)該邏輯所花費(fèi)的時(shí)間",是作為短路評(píng)價(jià)的對(duì)象的
代碼和/或代碼塊(短路評(píng)價(jià)代碼)的執(zhí)行時(shí)間的期待值。m難準(zhǔn)確地計(jì)算
該期待值,需要很多時(shí)間。因此,比較而言期待值不言自明的對(duì)象反映到
模板上是有效的。但是,短路評(píng)價(jià)代碼組裝進(jìn)來后,m難準(zhǔn)確計(jì)算期待值。
從而,在m^準(zhǔn)確計(jì)算期待值時(shí),最好配合使用從用戶得到指定暗示、利 用性能統(tǒng)計(jì)器(profiler)自動(dòng)統(tǒng)計(jì)之類的試探式的方法。
而且,即使了解了某一門的輸入信號(hào)的發(fā)生源的運(yùn)算群的復(fù)雜度大小, 也不一定能夠就這點(diǎn)完全地決定評(píng)價(jià)順序的好壞。因?yàn)樵u(píng)價(jià)順序的好壞還 依賴于跳過自由輸入的發(fā)生源的運(yùn)算的概率??紤]對(duì)包括輸入復(fù)雜的中間 信號(hào)P (大部分情況下為1)和簡(jiǎn)單的中間信號(hào)Q (大部分情況下為0 )的 邏輯(OR)的進(jìn)程進(jìn)行仿真的情況??赡苡?先計(jì)算簡(jiǎn)單的中間信號(hào)Q, 由于大部分情況為0,所以不得不再計(jì)算復(fù)雜的中間信號(hào)P,結(jié)果就變成 了大部分情況下都要計(jì)算P和Q兩者的困境"的調(diào)度,和"中間信號(hào)P 雖然復(fù)雜,但是嘗試計(jì)算時(shí)大部分情況都為1,因此可以跳過i人為簡(jiǎn)單的
中間信號(hào)Q的計(jì)算"的調(diào)度。而且,可能有后者的調(diào)度比前者的調(diào)度更好 好的情況。
因此,在跳過自由輸入的運(yùn)算的調(diào)度中,最好使用包括下述指示的模 板,即指示以跳過概率與跳過后的增益之積(跳過增益的期待值)為最大 的評(píng)價(jià)順序的方式來再構(gòu)成(再生成)代碼。得到跳躍增益的期待值的方 法,包括從用戶獲得因各中間信號(hào)而其他信號(hào)成為自由輸入的概率、和利 用性能分析器自動(dòng)統(tǒng)計(jì)跳過概率和/或跳過后的增益。本發(fā)明的方法方式之 一,包括并行進(jìn)行執(zhí)行仿真和性能分析統(tǒng)計(jì)、動(dòng)態(tài)地決定評(píng)價(jià)順序進(jìn)行短 路評(píng)價(jià)、利用發(fā)生器12進(jìn)行代碼的生成和/或再構(gòu)成(再生成)。
"跳躍增益的期待值"的想法(指標(biāo))不僅是比較評(píng)價(jià)順序,而且也 可以使用在比較包含于本發(fā)明的利用調(diào)度而生成的程序例如圖5和圖8的 程序32a以及32b的短路評(píng)價(jià)、和圖4和圖7所示的比較例的程序39a和 39b的一律線性評(píng)價(jià)時(shí),。在雖然計(jì)劃進(jìn)行短路評(píng)價(jià)、但卻未發(fā)生跳躍的情 況下,與一律線性評(píng)價(jià)相比,代碼執(zhí)行慢條件判定代碼和條件分支代碼大 小的時(shí)間。因此,短路評(píng)價(jià)的增益是負(fù)值。即使計(jì)劃進(jìn)行短路評(píng)價(jià)并大量 發(fā)生跳躍的情況下,比較短路評(píng)價(jià)的增益和一律線性評(píng)價(jià)的增益時(shí),短路 評(píng)價(jià)的增益也損耗條件判定條件分支額外開銷的大小。因此,根據(jù)中間信 號(hào)的復(fù)雜度的不同,也有"跳躍概率不那么高時(shí),增益的期待值不是正值" 的情況。對(duì)這樣的門電路(邏輯電路)進(jìn)行仿真時(shí),最好是按照時(shí)間經(jīng)過 采用一律線性評(píng)價(jià)的方法。
例如圖12所示的模板21,包括在進(jìn)行調(diào)度時(shí),指示"只有在兩個(gè)輸 入信號(hào)為全局輸入信號(hào)的情況下,生成一律線性評(píng)價(jià)代碼"的部分21a。 取代該部分21a,將進(jìn)行調(diào)度時(shí)指示"在兩個(gè)輸入信號(hào)的計(jì)算邏輯極其簡(jiǎn) 單的情況下,生成一律線性評(píng)價(jià)代碼"的部分包括在模板21中是有效的。 但是"極其簡(jiǎn)單"這一規(guī)定是依賴于仿真所使用的計(jì)算機(jī)的構(gòu)成等條件的 規(guī)定,最好還包括這些條件。例如,如果將能夠利用l個(gè)門的數(shù)量級(jí)進(jìn)行 計(jì)算的輸入信號(hào)看作極其簡(jiǎn)單,那么對(duì)于圖3的邏輯36a,本實(shí)施方式的 發(fā)生器12包括生成圖4所示的一律線性評(píng)價(jià)用的代碼塊。
此外,在上述說明中,轉(zhuǎn)換源的第1進(jìn)程的一個(gè)例子是門電平的網(wǎng)表 31,而且網(wǎng)表31以僅由兩個(gè)輸A^本門及選擇器構(gòu)成的邏輯電路作為對(duì) 象。但是,本說明書中所包含的跳過自由輸入的源的調(diào)度方法不限于以僅 包括兩個(gè)輸入基本門或選擇器的邏輯電路為對(duì)象的網(wǎng)表,顯然對(duì)于以包括 多個(gè)輸入門和/或復(fù)合門的運(yùn)算元件的邏輯電路為對(duì)象的網(wǎng)表也可以使用。
下面進(jìn)一步對(duì)有關(guān)包括中間信號(hào)發(fā)生分支的中間級(jí)運(yùn)算的邏輯電路的 實(shí)施方式、以及具有多個(gè)全局輸出信號(hào)的邏輯電路進(jìn)行說明。
圖14中利用邏輯電路表示包含于網(wǎng)表31的又一不同的運(yùn)算部分36d。 該運(yùn)算部分36d是三級(jí)的組合邏輯運(yùn)算,包括輸入級(jí)33的運(yùn)算33p、中間 級(jí)35的運(yùn)算35q和35r、輸出級(jí)34的運(yùn)算34y。輸入級(jí)的運(yùn)算33p以信 號(hào)B和信號(hào)C作為輸入運(yùn)算邏輯(XOR),輸出信號(hào)P。運(yùn)算35q以信號(hào) A和信號(hào)P作為輸入運(yùn)算邏輯(AND),輸出信號(hào)Q。運(yùn)算35r以信號(hào)P 和信號(hào)D作為輸入運(yùn)算邏輯(NOR),輸出信號(hào)R。輸出級(jí)的運(yùn)算34y以 信號(hào)Q和信號(hào)R作為輸入,運(yùn)算邏輯(OR),輸出信號(hào)Y。
圖15中表示為了對(duì)運(yùn)算部分36d進(jìn)行仿真,圖1的模型生成系統(tǒng)6 所生成(編譯)的仿真程序32的代碼塊的一個(gè)例子。在該代碼塊32d中, 對(duì)于作為運(yùn)算35q和運(yùn)算35r兩者的輸入的信號(hào)P,在兩處生成執(zhí)行其發(fā) 生源的運(yùn)算33p的命令65。在這個(gè)例子中,運(yùn)算33p是輸入級(jí),用于執(zhí)行 運(yùn)算33p的語句65是僅用于執(zhí)行1個(gè)邏輯(XOR) (XOR門)的語句。 因此,即使在兩個(gè)位置進(jìn)行相同的計(jì)算,對(duì)代碼塊32d的執(zhí)行i^的影響 也很小。但是,也有可能是運(yùn)算33p復(fù)雜,或者運(yùn)算33p不是的輸入級(jí)并 且其前級(jí)的運(yùn)算邏輯復(fù)雜的情況。在這種情況下,重復(fù)計(jì)算信號(hào)P的發(fā)生 源無論在代碼量方面,還是在代碼執(zhí)行時(shí)間方面都很浪費(fèi),
因此,圖1所示的模型生成系統(tǒng)6的轉(zhuǎn)換器15,最好包括防止重復(fù)生 成執(zhí)行同一運(yùn)算的命令的單元。但是,不能簡(jiǎn)單地統(tǒng)一執(zhí)行這些相同運(yùn)算 的命令。需要考慮執(zhí)行一方運(yùn)算的命令因短路評(píng)價(jià)而被跳過的可能性。
參照?qǐng)D16~圖24,對(duì)包括防止重復(fù)執(zhí)行同一運(yùn)算的幾個(gè)例子進(jìn)行說 明。圖16表示運(yùn)算部分36d的仿真程序32的代碼塊的不同例子。在該代 碼塊32e中,將運(yùn)算信號(hào)P的發(fā)生源的代碼作為子程序66獨(dú)立,以使執(zhí) 行中間信號(hào)P的發(fā)生源的運(yùn)算作為代碼量不重復(fù)。此外,為了不重復(fù)執(zhí)行 中間信號(hào)P的發(fā)生源的運(yùn)算,在調(diào)入子程序之前生成包括"如果已經(jīng)完成 計(jì)算信號(hào)P,就不調(diào)入子程序"這樣的判定的語句。為了正確進(jìn)行該判定, 作為初始化處理,將表示中間信號(hào)P的變量設(shè)定為既不是"0"也不是"1"
的稱為"UNDEFINED"的值。
在圖17所示的程序48中,組裝入包括指示生成代碼塊32e的部分的 模板41。模板41指示將相對(duì)于后續(xù)運(yùn)算為輸入的中間信號(hào)全部暫且設(shè)定 為"UNDEFINED",另外,模板41指示進(jìn)行初始設(shè)定,以能夠?qū)Τ蔀橹?間信號(hào)的發(fā)生源的運(yùn)算進(jìn)行子程序調(diào)入。
圖17所示的程序48,除了模板41外,也可以包括再構(gòu)成各運(yùn)算的執(zhí) 行命令的模板21 ~ 25。這些模板21 ~ 25可以在程序48的模板41之后的 "schedule_real"進(jìn)程中表述。表述的內(nèi)容也可以是與圖9等所示的程序 中包含的"schedule"進(jìn)程相同的內(nèi)容。
此外,程序48包括模板42。該模板42,指示在需要執(zhí)行發(fā)生分支的 中間信號(hào)的發(fā)生源的運(yùn)算的命令代碼的位置,取代執(zhí)行該發(fā)生源的運(yùn)算的 命令代碼,生成"如果是UNDEFINED,就調(diào)入子程序"這樣的代碼。使 用該模板42進(jìn)行調(diào)度時(shí),在"schedule_real"進(jìn)程的內(nèi)部遞歸使用 "schedule"進(jìn)程,所以能夠防止對(duì)全部運(yùn)i的重復(fù)執(zhí)行。
圖18是運(yùn)算部分36d的仿真程序32的代碼塊的又一不同例子。由于 在最初的"calc—P子程序調(diào)入"時(shí),信號(hào)P—定是"UNDEFINED",所以 沒有必要進(jìn)行4f地判定。在該代碼塊32f中,最初的子程序調(diào)入時(shí),不進(jìn) 行是否是"UNDEFINED"的判定,而設(shè)為無條件地進(jìn)行子程序調(diào)入。
圖19是運(yùn)算部分36d的仿真程序32的代碼塊的又一不同例子??梢?不將輸入信號(hào)P作為"0"或"1"或"UNDEFINED"處理,而設(shè)置表示 計(jì)算已完成的標(biāo)記,可以在代碼塊32g中將信號(hào)P作為"0"或"1"兩個(gè) 變量處理。因此在代碼塊32g中,和表示輸入信號(hào)的變數(shù)P相區(qū)別,設(shè)置 "P一valid,,這一 "表示計(jì)算是否已完成的變量"。
圖20 ^!J逸算部分36d的仿真程序32的代碼塊的又一不同例子。在該 代碼塊32h中,在calc—P子程序內(nèi)進(jìn)行輸入信號(hào)P的源的運(yùn)算是否已經(jīng)計(jì) 算完成的判定。在代碼i 32h的主程序中,是在要求信號(hào)P的運(yùn)算的位置, 無論如何都調(diào)入calc_P子程序的代碼方式。
圖21是運(yùn)算部分36d的仿真程序32的代碼塊的又一不同例子。在代 碼塊32i中,是將calc一P子程序的調(diào)入設(shè)為經(jīng)由指針的間接調(diào)用,在計(jì)算
完成后以指針指向nop子程序的方式進(jìn)行改寫的代碼方式。
圖22是運(yùn)算部分36d的仿真程序32的代碼塊的又一不同例子。在該 代碼組32j中,強(qiáng)制執(zhí)行信號(hào)P的發(fā)生源的運(yùn)算,預(yù)先求出信號(hào)P的值。 適用于即使進(jìn)行短路評(píng)價(jià),在信號(hào)P作為輸入信號(hào)的全部后續(xù)(后級(jí))的 運(yùn)算中,信號(hào)P成為自由輸入的可能性低、信號(hào)P的發(fā)生源的運(yùn)算的執(zhí)行 全部#_跳過的可能性低的情況。
圖23是運(yùn)算部分36d的仿真程序32的代碼塊的又一不同例子。在該 代碼塊32k中,在強(qiáng)制執(zhí)行信號(hào)P的發(fā)生源的運(yùn)算、預(yù)先求出信號(hào)P的值 這一點(diǎn)與上述情;;U目同。此外,由于完成計(jì)算的中間信號(hào)P可以與全局輸 入信號(hào)同格處理,因此,在后續(xù)運(yùn)算的調(diào)度中,不會(huì)發(fā)生跳過中間信號(hào)P
的發(fā)生源的運(yùn)算的代碼。
在圖24所示的程序48中,組^用于生成圖22所示的代碼塊32j的 模板43。該^板43在調(diào)度中指示"對(duì)全部發(fā)生分支的中間信號(hào),遞歸地 再構(gòu)成執(zhí)行其發(fā)生源的運(yùn)算的命令,生成代碼"。因此,在利用程序48調(diào) 度運(yùn)算部分36d時(shí),在執(zhí)行中間信號(hào)的發(fā)生源的運(yùn)算之后,就以從輸出級(jí) 向輸入^li^過自由輸入的發(fā)生源的方式將其余的運(yùn)算生成代碼。并且,在 模板43中,最好包括下述指示,即,先處理靠輸入級(jí)的中間信號(hào)的發(fā)生源 的運(yùn)算,后處理靠輸出級(jí)的中間信號(hào)的發(fā)生源的運(yùn)算,以即使中間信號(hào)彼 此之間有*關(guān)系也不要緊。
上面敘述了防止重復(fù)進(jìn)行發(fā)生分支的中間信號(hào)的運(yùn)算的幾種方法, 這些方法,不管是單獨(dú)還是混合多個(gè)方法都能適用于生成程序。例如可以 并用圖16所示的代碼塊32e的方式和圖22所示的代碼塊32j的方式???以生成包括下述內(nèi)容的代碼塊看起來完全私跳過的可能性低的中間信號(hào) 的發(fā)生源的運(yùn)算,如代碼塊32j所示地必須進(jìn)行計(jì)算;除此以外的中間信 號(hào)的發(fā)生源的運(yùn)算,每次邊檢查是否如代碼塊32e所示地已完成計(jì)算邊進(jìn) 行計(jì)算。人們考慮了幾種估計(jì)包含于運(yùn)算部分中的某一運(yùn)算被作為自由輸 入的發(fā)生源的運(yùn)算而跳過的可能性的方法。其中之一是靜態(tài)地解析運(yùn)算部 分的邏輯,有可以判定為"完全被跳過的可能性為0"的情況。另一種方 法是引入用戶指定、統(tǒng)計(jì)(profiling)等試探方法。
圖25所示的程序48中還組"不同的;^板45。該模板45對(duì)應(yīng)于
有多個(gè)全局輸出信號(hào)的運(yùn)算部分的調(diào)度。模板45指示按照全局輸出信號(hào)的 數(shù)量反復(fù)進(jìn)行調(diào)度??梢匀〈撃0?5,以圖17所示的模板為基礎(chǔ),利 用同樣的想法構(gòu)成與多個(gè)全局輸出信號(hào)對(duì)應(yīng)的模板。
也就另—說,如果是不存在跨多個(gè)輸出信號(hào)的共有中間信號(hào)的情況, 就設(shè)置N個(gè)完全獨(dú)立的邏輯。因此,可以將上述一個(gè)輸出邏輯用的模板分 別使用于N個(gè)邏輯。在存在共有中間信號(hào)的情況下,可以使用圖25所示 的程序48。如果列表求出全部共有的中間信號(hào),就可以和沒有共有信號(hào)的 獨(dú)立的N個(gè)邏輯一樣地處理其余的邏輯。
以上,以組合邏輯門為基礎(chǔ)說明了根據(jù)第l進(jìn)程生成考慮了發(fā)生自 由輸入的第2進(jìn)程的概要。觸發(fā)器、"用線路將全局輸入信號(hào)連接到全局輸 出信號(hào)(不進(jìn)行任何計(jì)算)"的運(yùn)算等不發(fā)生自由輸入的運(yùn)算不需要進(jìn)行 再構(gòu)成,只要是本行業(yè)的普通技術(shù)人員,根據(jù)上面說明,就能夠提供指示 生成包括上述內(nèi)容的語句的;^板。此外,以上為了進(jìn)行i兌明,參照C語言 格式的代碼(代碼塊)對(duì)生成第2進(jìn)程的情況(進(jìn)行調(diào)度的情況)進(jìn)行了 說明。通過參照這些說明,實(shí)現(xiàn)本申請(qǐng)所包括的發(fā)明,不限于C語言,可 以生成匯編語言、機(jī)器語言等其他語言的代碼(代碼塊),或生成包括這 些代碼的內(nèi)容,此外,還可以進(jìn)行轉(zhuǎn)換。
權(quán)利要求
1.一種計(jì)算機(jī)系統(tǒng),具有用于存儲(chǔ)第1進(jìn)程的存儲(chǔ)器,其中,所述第1進(jìn)程具有進(jìn)行包括輸入級(jí)和輸出級(jí)的多級(jí)邏輯運(yùn)算的運(yùn)算部分,所述運(yùn)算部分包括具有多個(gè)輸入的運(yùn)算、和作為所述多個(gè)輸入的源的前級(jí)運(yùn)算;該計(jì)算機(jī)系統(tǒng)還具有生成第2進(jìn)程的單元,所述第2進(jìn)程包括多條用于執(zhí)行包含于所述運(yùn)算部分中的多個(gè)運(yùn)算的語句;生成所述第2進(jìn)程的單元,具有進(jìn)行解析的單元,其從所述輸出級(jí)向所述輸入級(jí)對(duì)存儲(chǔ)于所述存儲(chǔ)器的所述運(yùn)算部分進(jìn)行解析,可以判斷解析對(duì)象的運(yùn)算是下述第1類型的運(yùn)算,即該第1類型的運(yùn)算是指由于決定解析對(duì)象的運(yùn)算的多個(gè)輸入的一部分,而其他輸入的至少一部分則為自由的輸入;以及進(jìn)行輸出的單元,如果所述解析對(duì)象的運(yùn)算是所述第1類型的運(yùn)算,就將用于執(zhí)行所述解析對(duì)象的運(yùn)算的語句再構(gòu)成為至少1個(gè)語句并輸出;所述至少一個(gè)語句包括用于執(zhí)行所述解析對(duì)象的運(yùn)算的多個(gè)輸入的源的運(yùn)算中的任意一個(gè)、并跳過由此而成為自由的輸入的源的運(yùn)算的語句。
2. 根據(jù)權(quán)利要求l所述的計(jì)算機(jī)系統(tǒng),其中,所述輸出的單元將用于執(zhí)行所述解析對(duì)象的運(yùn)算的語句再構(gòu)成為包括下述語句的語句用于以所述解析對(duì)象的運(yùn)算的多個(gè)輸入中的一個(gè)作為第l輸入,并 執(zhí)行該第l輸入的源的運(yùn)算的第l語句;用于設(shè)定所述解析對(duì)象的運(yùn)算的輸出的第2語句;用于執(zhí)行因所述第1輸入而成為自由的輸入的源的運(yùn)算的第3語 句;以及用于在因所述第l輸入而發(fā)生自由的輸入時(shí),跳過成為所述自由的 輸入的源的運(yùn)算的第4語句。
3. 根據(jù)權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中,所述第4語句是用于在因所述第l輸入而發(fā)生自由的輸入時(shí),跳過 所述第3語句的語句。
4. 根據(jù)權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中, 所述第2語句是用于設(shè)定規(guī)定值的語句。
5. 根據(jù)權(quán)利要求l所述的計(jì)算機(jī)系統(tǒng),其中,還具有用于存儲(chǔ)模板的存儲(chǔ)器,所述模板具有用于針對(duì)每個(gè)輸入 的一部分為自由的種類的運(yùn)算,將用于執(zhí)行該運(yùn)算的語句再構(gòu)成為上述 至少一個(gè)語句的信息;而且,所述輸出的單元參照所述模板,將用于執(zhí)行所述解析對(duì)象的 運(yùn)算的語句再構(gòu)成為所述至少一個(gè)語句。
6. 根據(jù)權(quán)利要求l所述的計(jì)算機(jī)系統(tǒng),其中,所述輸出的單元具有下述功能,即在希望通過再構(gòu)成用于執(zhí)行所 述解析對(duì)象的運(yùn)算的語句來改善所述運(yùn)算部分的執(zhí)行速度時(shí),將用于執(zhí) 行所述解析對(duì)象的運(yùn)算的語句,再構(gòu)成為所述至少一個(gè)語句的功能。
7. 根據(jù)權(quán)利要求l所述的計(jì)算機(jī)系統(tǒng),其中,所述輸出的單元具有防止重復(fù)輸出用于執(zhí)行同一運(yùn)算的語句的功能。
8. 根據(jù)權(quán)利要求l所述的計(jì)算機(jī)系統(tǒng),其中, 安裝有作為編譯器的功能,且該編碼器具有生成所述第2進(jìn)程的單元。
9. 根據(jù)權(quán)利要求l所述的計(jì)算機(jī)系統(tǒng),其中,還具有根據(jù)邏輯電路的表述生成門電平的網(wǎng)表的單元、以及生成 包括所述第2進(jìn)程的程序的單元,該第2進(jìn)程是基于包含于所述網(wǎng)表的 所述第l進(jìn)程而生成的;生成所述程序的單元包括生成所述第2進(jìn)程的單元。
10. 根據(jù)權(quán)利要求9所述的計(jì)算機(jī)系統(tǒng),其中, 安裝有作為執(zhí)行所述程序的仿真器的功能。
11. 一種程序,其安裝在具有用于存儲(chǔ)第l進(jìn)程的存儲(chǔ)器的計(jì)算機(jī) 中,其中,所述第l進(jìn)程具有進(jìn)行包括輸入級(jí)和輸出級(jí)的多級(jí)邏輯運(yùn)算的運(yùn)算部分,所述運(yùn)算部分包括具有多個(gè)輸入的運(yùn)算、和作為所述多個(gè)輸入的源的前級(jí)運(yùn)算;該程序具有使所述計(jì)算機(jī)作為生成第2進(jìn)程的單元而起作用的步 驟,所述第2進(jìn)程包括多條用于執(zhí)行包含于所述運(yùn)算部分中的多個(gè)運(yùn)算 的語句;生成所述第2進(jìn)程的單元,具有進(jìn)行解析的單元,其從所述輸出級(jí)向所述輸入級(jí)對(duì)存儲(chǔ)于所述存儲(chǔ) 器的所述運(yùn)算部分進(jìn)行解析,可以判斷解析對(duì)象的運(yùn)算是下述第l類型 的運(yùn)算,即該第l類型的運(yùn)算是指由于決定解析對(duì)象的運(yùn)算的多個(gè)輸入 的一部分,而其他輸入的至少一部分則為自由的輸入;以及進(jìn)行輸出的單元,如果所述解析對(duì)象的運(yùn)算是所述第l類型的運(yùn)算, 就將用于執(zhí)行所述解析對(duì)象的運(yùn)算的語句再構(gòu)成為至少1個(gè)語句并輸 出;所述至少一個(gè)語句包括用于執(zhí)行所述解析對(duì)象的運(yùn)算的多個(gè)輸入 的源的運(yùn)算中的任意一個(gè)、并跳過由此而成為自由的輸入的源的運(yùn)算的 語句。
12. —種系統(tǒng),具有用于存儲(chǔ)第l進(jìn)程的存儲(chǔ)器,其中,所述第1進(jìn)程具有進(jìn)行包括輸入級(jí)和輸出級(jí)的多級(jí)邏輯運(yùn)算的運(yùn)算 部分,所述運(yùn)算部分包括具有多個(gè)輸入的運(yùn)算、和作為所述多個(gè)輸入的 源的前級(jí)運(yùn)算;而且,具有生成第2進(jìn)程的發(fā)生器,所述第2進(jìn)程包括多條用于執(zhí) 行包含于所述運(yùn)算部分中的多個(gè)運(yùn)算的語句;所述發(fā)生器具有分析器,其從所述輸出級(jí)向所述輸入級(jí)對(duì)所述運(yùn)算部分進(jìn)行解析, 并且可以判斷解析對(duì)象的運(yùn)算是下述第1類型的運(yùn)算,即該第1類型的 運(yùn)算是指由于決定解析對(duì)象的運(yùn)算的多個(gè)輸入的一部分,而其他輸入的 至少一部分則為自由的輸入;以及轉(zhuǎn)換器,如果所述解析對(duì)象的運(yùn)算是所述第l類型的運(yùn)算,就將用 于執(zhí)行所述解析對(duì)象的運(yùn)算的語句再構(gòu)成為至少1個(gè)語句并輸出;所述至少一個(gè)語句包括用于執(zhí)行所述解析對(duì)象的運(yùn)算的多個(gè)輸入的源的運(yùn)算中的任意一個(gè)、并跳過由此而成為自由的輸入的源的運(yùn)算的 語句。
13. 根據(jù)權(quán)利要求12所述的系統(tǒng),其中,具有編譯器,其根據(jù)包含所述第l進(jìn)程的第1內(nèi)容來生成包含所述 第2進(jìn)程的笫2內(nèi)容。
14. 根據(jù)權(quán)利要求13所述的系統(tǒng),其中, 具有執(zhí)行所述第2內(nèi)容的仿真器。
15. —種方法,其包括安裝到具有存儲(chǔ)器的計(jì)算機(jī),并根據(jù)第l進(jìn) 程生成第2進(jìn)程的步驟,其中,所述第l進(jìn)程具有進(jìn)行包括輸入級(jí)和輸出級(jí)的多級(jí)邏輯運(yùn)算的運(yùn)算 部分,所述運(yùn)算部分包括具有多個(gè)輸入的運(yùn)算、和作為所述多個(gè)輸入的 源的前級(jí)運(yùn)算;所述第2進(jìn)程包括多條用于執(zhí)行包含于所述運(yùn)算部分中的多個(gè)運(yùn)算 用的語句;生成所述第2進(jìn)程的步驟包括下述步驟,即(a) 從所述輸出級(jí)向所述輸入級(jí)對(duì)存儲(chǔ)于所述存儲(chǔ)器存儲(chǔ)的所述 運(yùn)算部分進(jìn)行解析,判斷所述運(yùn)算部分是下述第l類型的運(yùn)算,即該第 1類型的運(yùn)算是指由于決定解析對(duì)象的運(yùn)算的多個(gè)輸入的一部分,而其 他輸入的至少一部分則為自由的;(b) 如果所述解析對(duì)象的運(yùn)算是所述第1類型的運(yùn)算,就將用于 執(zhí)行所述解析對(duì)象的運(yùn)算的語句再構(gòu)成為至少一個(gè)語句并輸出;所述至 少一個(gè)語句包括用于執(zhí)行所述解析對(duì)象的運(yùn)算的多個(gè)輸入的源的運(yùn)算 中的任意一個(gè)、并跳過由此而成為自由的輸入的源的運(yùn)算的語句。
16. 根據(jù)權(quán)利要求15所述的方法,其中,所述步驟(b)將用于執(zhí)行所述解析對(duì)象的運(yùn)算的語句,再構(gòu)成為 包括下述語句的語句用于以所述解析對(duì)象的運(yùn)算的多個(gè)輸入中的一個(gè)作為第l輸入,并 執(zhí)行該第l輸入的源的運(yùn)算的第l語句;用于"^殳定所述解析對(duì)象的運(yùn)算的輸出的第2語句;用于執(zhí)行因所述第1輸入而成為自由的輸入的源的運(yùn)算的第3語句;以及用于在因所述第l輸入而發(fā)生自由的輸入時(shí),跳過成為所述自由的 輸入的源的運(yùn)算的第4語句。
17. 根據(jù)權(quán)利要求15所述的方法,其中,生成所述第2進(jìn)程,包括反復(fù)進(jìn)行所述步驟(a)和所述步驟(b ); 在所述步驟(b)中,向所述存儲(chǔ)器輸出。
18. 根據(jù)權(quán)利要求15所述的方法,其中,所述步驟(b)包括參照 模板的步驟,而該模板具有針對(duì)每個(gè)輸入的一部分為自由的種類的運(yùn) 算,將用于執(zhí)行該運(yùn)算的語句再構(gòu)成為至少一個(gè)語句的信息。
19. 根據(jù)權(quán)利要求15所述的方法,其中,所述步驟(b)包括在希望通過再構(gòu)成用于執(zhí)行所述解析對(duì)象的 運(yùn)算的語句來改善所述運(yùn)算部分的執(zhí)行速度時(shí),將用于執(zhí)行所述解析對(duì) 象的運(yùn)算的語句,再構(gòu)成為所述至少一個(gè)語句的步驟。
20. 根據(jù)權(quán)利要求15所述的方法,其中,另外,所述步驟(b)包括防止重復(fù)輸出用于執(zhí)行同一運(yùn)算的語句 的步驟。
21. 根據(jù)權(quán)利要求15所述的方法,其中, 具有下述步驟,即根據(jù)邏輯電路的表述,生成包含所述第l進(jìn)程的門電平的網(wǎng)表的步,包括生成所述第2進(jìn)程,生成包括所述第2進(jìn)程的仿真用的程序的步驟;利用所述仿真用的程序,以基于周期的方式對(duì)所述邏輯電路進(jìn)行仿 真的步驟。
全文摘要
本發(fā)明提供一種計(jì)算機(jī)系統(tǒng)(1),其具有存儲(chǔ)網(wǎng)表(31)的存儲(chǔ)器(2);以及內(nèi)容發(fā)生器(12),其生成包括執(zhí)行包含于網(wǎng)表(31)的運(yùn)算部分的多個(gè)運(yùn)算的語句的程序(32)。運(yùn)算部分進(jìn)行多級(jí)邏輯運(yùn)算,包括具有多個(gè)輸入的運(yùn)算、以及作為多個(gè)輸入的源的前級(jí)的運(yùn)算。內(nèi)容發(fā)生器(12)包括分析器(14),從輸出級(jí)向輸入級(jí)對(duì)運(yùn)算部分進(jìn)行解析,判斷解析對(duì)象的運(yùn)算是由于決定多個(gè)輸入的一部分,而其他輸入的至少一部分為自由的運(yùn)算;以及轉(zhuǎn)換器(15),如果是那樣的運(yùn)算,就將執(zhí)行解析對(duì)象的運(yùn)算的語句,再構(gòu)成為執(zhí)行該運(yùn)算的多個(gè)輸入的源的運(yùn)算的任意一個(gè)、并跳過成為自由的輸入的源的運(yùn)算的語句,并進(jìn)行輸出。
文檔編號(hào)G06F17/50GK101351801SQ20068005013
公開日2009年1月21日 申請(qǐng)日期2006年11月30日 優(yōu)先權(quán)日2005年11月30日
發(fā)明者本田廣樹 申請(qǐng)人:Ip菲力股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
合川市| 西城区| 大姚县| 建昌县| 教育| 广灵县| 车致| 曲水县| 滕州市| 石城县| 抚远县| 安龙县| 宝山区| 大悟县| 海原县| 旌德县| 堆龙德庆县| 金山区| 丹东市| 通河县| 高淳县| 隆化县| 航空| 那坡县| 湘潭县| 荆州市| 建阳市| 乐昌市| 阜城县| 上虞市| 乌兰县| 塔河县| 定南县| 当涂县| 石泉县| 定结县| 彰武县| 宜都市| 文化| 田阳县| 台北市|