本申請(qǐng)涉及芯片設(shè)計(jì)領(lǐng)域,尤其涉及一種基于抽象語(yǔ)法樹的命令構(gòu)造函數(shù)生成方法、裝置及設(shè)備。
背景技術(shù):
1、在使用eda(electronic?design?automation?tools)工具進(jìn)行芯片物理版圖設(shè)計(jì)時(shí),會(huì)用到很多來(lái)命令(command,cmd)來(lái)完成版圖設(shè)計(jì)的流程。開發(fā)中用到的命令可能有數(shù)十個(gè)以上的選項(xiàng)(option),多個(gè)option之間可能有著復(fù)雜的依賴關(guān)系,在程序代碼里要調(diào)用多個(gè)描述依賴或者互斥的接口來(lái)定義清楚options之間的關(guān)系。而對(duì)于多層嵌套的復(fù)雜類型的option的值,需要為它們單獨(dú)寫解析函數(shù)來(lái)獲取預(yù)取的值。由于很難得知不同的option之間的約束關(guān)系、options生效的特定條件和option的值,也就很難撰寫一個(gè)準(zhǔn)確的符合cmd語(yǔ)義的命令構(gòu)造函數(shù)。
技術(shù)實(shí)現(xiàn)思路
1、為了解決上述技術(shù)問題,本申請(qǐng)實(shí)施例提供了一種基于抽象語(yǔ)法樹的命令構(gòu)造函數(shù)生成方法、裝置及設(shè)備。
2、第一方面,本申請(qǐng)實(shí)施例提供了一種基于抽象語(yǔ)法樹的命令構(gòu)造函數(shù)生成方法,所述方法包括:獲取用戶約束條件、用戶期望結(jié)果及當(dāng)前命令的領(lǐng)域特定語(yǔ)言;
3、根據(jù)所述領(lǐng)域特定語(yǔ)言獲取抽象語(yǔ)法樹,遍歷所述抽象語(yǔ)法樹的邏輯節(jié)點(diǎn),得到各邏輯節(jié)點(diǎn)下的選項(xiàng)子節(jié)點(diǎn)組合,并根據(jù)各邏輯節(jié)點(diǎn)的約束條件獲取每個(gè)選項(xiàng)子節(jié)點(diǎn)組合的約束條件,將各邏輯節(jié)點(diǎn)下的選項(xiàng)子節(jié)點(diǎn)組合和對(duì)應(yīng)的約束條件組成模式單元;
4、對(duì)各邏輯節(jié)點(diǎn)之間的模式單元進(jìn)行組合計(jì)算,得到模式單元組合;
5、在所述用戶約束條件下校驗(yàn)所述模式單元組合,得到校驗(yàn)結(jié)果,并判斷所述校驗(yàn)結(jié)果是否與所述用戶期望結(jié)果一致;
6、若是,則基于所述當(dāng)前命令的抽象語(yǔ)法樹,生成所述當(dāng)前命令的命令構(gòu)造函數(shù)。
7、在一實(shí)施方式中,將邏輯節(jié)點(diǎn)進(jìn)行分類,包括全選節(jié)點(diǎn)、單選節(jié)點(diǎn)和部分選節(jié)點(diǎn);
8、若所述邏輯節(jié)點(diǎn)為全選節(jié)點(diǎn),則對(duì)邏輯節(jié)點(diǎn)下模式單元中的選項(xiàng)子節(jié)點(diǎn)組合進(jìn)行乘法操作;
9、若所述邏輯節(jié)點(diǎn)為單選節(jié)點(diǎn),則對(duì)邏輯節(jié)點(diǎn)下模式單元中的選項(xiàng)子節(jié)點(diǎn)組合進(jìn)行加法操作;
10、若所述邏輯節(jié)點(diǎn)為部分選節(jié)點(diǎn),則對(duì)所述邏輯節(jié)點(diǎn)添加必選標(biāo)簽或可選標(biāo)簽,并根據(jù)所述必選標(biāo)簽和可選標(biāo)簽對(duì)邏輯節(jié)點(diǎn)下模式單元中的選項(xiàng)子節(jié)點(diǎn)組合進(jìn)行乘法操作。
11、在一實(shí)施方式中,所述用戶期望結(jié)果包括存在可行解和不存在可行解,所述在所述用戶約束條件下校驗(yàn)所述模式單元組合,得到校驗(yàn)結(jié)果,包括:
12、根據(jù)每個(gè)模式單元組合的約束條件和所述用戶約束條件構(gòu)建每個(gè)模式單元組合的約束條件樹;
13、根據(jù)所述約束條件樹對(duì)約束條件進(jìn)行與或計(jì)算,直至所述模式單元組合中的約束條件為數(shù)值約束條件;
14、校驗(yàn)所述模式單元組合下的數(shù)值約束條件是否存在可行解,得到所述校驗(yàn)結(jié)果,所述校驗(yàn)結(jié)果包括存在可行解和不存在可行解。
15、在一實(shí)施方式中,所述校驗(yàn)所述模式單元組合下的數(shù)值約束條件是否存在可行解,包括:
16、根據(jù)所述模式單元組合的數(shù)值約束條件構(gòu)建數(shù)值約束條件樹;
17、根據(jù)所述數(shù)值約束條件樹對(duì)數(shù)值約束條件進(jìn)行與或計(jì)算,得到初始可行解;
18、若所述初始可行解全部取值沖突,則所述模式單元組合在所述用戶約束條件下不存在可行解,若所述初始可行解部分取值沖突或不存在取值沖突,則所述模式單元組合在所述用戶約束條件下存在可行解。
19、在一實(shí)施方式中,所述根據(jù)所述數(shù)值約束條件樹對(duì)數(shù)值約束條件進(jìn)行與或計(jì)算,所述方法還包括:
20、若根據(jù)所述數(shù)值約束條件樹對(duì)數(shù)值約束條件進(jìn)行與或計(jì)算失敗,則所述模式單元組合在所述用戶約束條件下無(wú)可行解。
21、在一實(shí)施方式中,所述則所述模式單元組合在所述用戶約束條件下存在可行解之后,所述方法還包括:
22、根據(jù)所述模式單元組合的數(shù)值約束條件、所述模式單元組合下的選項(xiàng)子節(jié)點(diǎn)組合的數(shù)值類型和數(shù)值范圍,為所述選項(xiàng)子節(jié)點(diǎn)組合添加數(shù)值;
23、并將所述選項(xiàng)子節(jié)點(diǎn)組合的數(shù)值類型、數(shù)值范圍和數(shù)值拼接成字符串。
24、在一實(shí)施方式中,所述基于所述當(dāng)前命令的抽象語(yǔ)法樹,生成所述當(dāng)前命令的命令構(gòu)造函數(shù),包括:
25、基于所述抽象語(yǔ)法樹獲取各選項(xiàng)子節(jié)點(diǎn)的依賴關(guān)系和數(shù)值;
26、根據(jù)各選項(xiàng)子節(jié)點(diǎn)的依賴關(guān)系和數(shù)值生成所述當(dāng)前命令的命令構(gòu)造函數(shù)。
27、第二方面,本申請(qǐng)實(shí)施例提供了一種基于抽象語(yǔ)法樹的命令構(gòu)造函數(shù)生成裝置,所述基于抽象語(yǔ)法樹的命令構(gòu)造函數(shù)生成裝置包括:
28、獲取模塊,用于獲取用戶約束條件、用戶期望結(jié)果及當(dāng)前命令的領(lǐng)域特定語(yǔ)言;
29、組成模塊,用于根據(jù)所述領(lǐng)域特定語(yǔ)言獲取抽象語(yǔ)法樹,遍歷所述抽象語(yǔ)法樹的邏輯節(jié)點(diǎn),得到各邏輯節(jié)點(diǎn)下的選項(xiàng)子節(jié)點(diǎn)組合,并根據(jù)各邏輯節(jié)點(diǎn)的約束條件獲取每個(gè)選項(xiàng)子節(jié)點(diǎn)組合的約束條件,將各邏輯節(jié)點(diǎn)下的選項(xiàng)子節(jié)點(diǎn)組合和對(duì)應(yīng)的約束條件組成模式單元;
30、計(jì)算模塊,用于對(duì)各邏輯節(jié)點(diǎn)之間的模式單元進(jìn)行組合計(jì)算,得到模式單元組合;
31、校驗(yàn)?zāi)K,用于在所述用戶約束條件下校驗(yàn)所述模式單元組合,得到校驗(yàn)結(jié)果,并判斷所述校驗(yàn)結(jié)果是否與所述用戶期望結(jié)果一致;
32、生成模塊,用于基于所述當(dāng)前命令的抽象語(yǔ)法樹,生成所述當(dāng)前命令的命令構(gòu)造函數(shù)。
33、第三方面,本申請(qǐng)實(shí)施例提供了一種電子設(shè)備,包括存儲(chǔ)器以及處理器,所述存儲(chǔ)器用于存儲(chǔ)計(jì)算機(jī)程序,所述計(jì)算機(jī)程序在所述處理器運(yùn)行時(shí)執(zhí)行第一方面提供的基于抽象語(yǔ)法樹的命令構(gòu)造函數(shù)生成方法。
34、第四方面,本申請(qǐng)實(shí)施例提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序在處理器上運(yùn)行時(shí)執(zhí)行第一方面提供的基于抽象語(yǔ)法樹的命令構(gòu)造函數(shù)生成方法。
35、上述本申請(qǐng)?zhí)峁┑幕诔橄笳Z(yǔ)法樹的命令構(gòu)造函數(shù)生成方法,獲取用戶約束條件、用戶期望結(jié)果及當(dāng)前命令的領(lǐng)域特定語(yǔ)言;根據(jù)所述領(lǐng)域特定語(yǔ)言獲取抽象語(yǔ)法樹,遍歷所述抽象語(yǔ)法樹的邏輯節(jié)點(diǎn),得到各邏輯節(jié)點(diǎn)下的選項(xiàng)子節(jié)點(diǎn)組合,并根據(jù)各邏輯節(jié)點(diǎn)的約束條件獲取每個(gè)選項(xiàng)子節(jié)點(diǎn)組合的約束條件,將各邏輯節(jié)點(diǎn)下的選項(xiàng)子節(jié)點(diǎn)組合和對(duì)應(yīng)的約束條件組成模式單元;對(duì)各邏輯節(jié)點(diǎn)之間的模式單元進(jìn)行組合計(jì)算,得到模式單元組合;?在所述用戶約束條件下校驗(yàn)所述模式單元組合,得到校驗(yàn)結(jié)果,并判斷所述校驗(yàn)結(jié)果是否與所述用戶期望結(jié)果一致;若是,則基于所述當(dāng)前命令的抽象語(yǔ)法樹,生成所述當(dāng)前命令的命令構(gòu)造函數(shù)。通過抽象語(yǔ)法樹,在給定的用戶約束條件下對(duì)當(dāng)前命令的領(lǐng)域特定用語(yǔ)言進(jìn)行校驗(yàn),若校驗(yàn)結(jié)果符合用戶期望結(jié)果,則基于抽象語(yǔ)法樹自動(dòng)生成命令構(gòu)造函數(shù)的方法,為cmd的命令構(gòu)造函數(shù)生成提供便利。
1.一種基于抽象語(yǔ)法樹的命令構(gòu)造函數(shù)生成方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述組合計(jì)算包括乘法計(jì)算和加法計(jì)算,所述對(duì)各邏輯節(jié)點(diǎn)進(jìn)行組合計(jì)算,包括:
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述用戶期望結(jié)果包括存在可行解和不存在可行解,所述在所述用戶約束條件下校驗(yàn)所述模式單元組合,得到校驗(yàn)結(jié)果,包括:
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述校驗(yàn)所述模式單元組合下的數(shù)值約束條件是否存在可行解,包括:
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述根據(jù)所述數(shù)值約束條件樹對(duì)數(shù)值約束條件進(jìn)行與或計(jì)算,所述方法還包括:
6.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述則所述模式單元組合在所述用戶約束條件下存在可行解之后,所述方法還包括:
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述基于所述當(dāng)前命令的抽象語(yǔ)法樹,生成所述當(dāng)前命令的命令構(gòu)造函數(shù),包括:
8.一種基于抽象語(yǔ)法樹的命令構(gòu)造函數(shù)生成裝置,其特征在于,所述裝置包括:
9.一種電子設(shè)備,其特征在于,包括存儲(chǔ)器以及處理器,所述存儲(chǔ)器存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序在所述處理器運(yùn)行時(shí)執(zhí)行權(quán)利要求1至7中任一項(xiàng)所述的基于抽象語(yǔ)法樹的命令構(gòu)造函數(shù)生成方法。
10.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,其存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序在處理器上運(yùn)行時(shí)執(zhí)行權(quán)利要求1至7中任一項(xiàng)所述的基于抽象語(yǔ)法樹的命令構(gòu)造函數(shù)生成方法。