同步数据流语言编译器Vélus与L2C的比较分析

0 下载量 124 浏览量 更新于2024-06-28 收藏 1.6MB PDF 举报
"这篇学术文章对比了同步数据流语言的两个可信编译器Vélus和L2C,这两个编译器都是针对基于Lustre的同步数据流语言。文章指出,由于同步数据流语言在航空、高铁、核电等安全关键领域的广泛应用,其编译器的安全性变得至关重要。形式化验证在构建可信编译器方面发挥了关键作用,这类似于CompCert项目对于C编译器的形式化验证方法。Vélus和L2C作为此类工作的代表,文章对它们进行了深入的多角度分析和比较。文章着重探讨了这两个项目的编译器在设计、验证过程、性能以及应用范围等方面的异同。" 本文详细介绍了同步数据流语言的可信编译器Vélus和L2C,它们都是为了解决在安全关键系统中使用的Lustre语言的编译器安全问题。Lustre和Signal等同步数据流语言在实时控制系统的建模和开发上有着广泛的应用,如在Scade工具中。随着形式化验证技术的发展,构建能够确保源代码到机器码转换过程中语义不变性的可信编译器成为可能,这为提高软件安全性和可靠性提供了有力保障。 Vélus和L2C是两个长期研究项目,都致力于开发基于Lustre的同步数据流语言编译器。文章对这两个项目进行了详尽的比较,分析了它们在以下方面的特点: 1. 设计理念:Vélus和L2C可能有不同的设计哲学和目标,例如,一个可能更注重效率,而另一个可能更强调形式化证明的完备性。 2. 形式化验证方法:两者在验证编译器正确性的形式化方法上可能存在差异,包括使用的逻辑系统、证明策略和工具。 3. 性能表现:编译器的性能,如编译时间、生成代码的运行速度和内存占用,也是比较的关键点。 4. 应用范围:Vélus和L2C可能支持不同的Lustre子集或扩展,适应不同复杂度和需求的项目。 5. 工具链集成:它们与现有开发环境和工具的兼容性,例如集成调试器、模拟器和其他静态分析工具。 6. 社区支持和可扩展性:这涉及到开源/闭源状态、用户社区的活跃程度以及是否允许第三方扩展和改进。 7. 实际应用案例:文章可能还分析了两个编译器在实际工程中的应用情况和反馈,以评估其在真实世界中的效果。 通过对Vélus和L2C的深入比较,文章旨在为研究人员和开发者提供选择合适编译器的依据,同时推动同步数据流语言编译器的进一步发展和优化。这种对比对于理解形式化验证在安全关键系统中的作用,以及如何通过精确的数学方法提高软件的可靠性具有重要意义。
2023-06-08 上传

select lot_hs.lot_id as lot_id,lot_type,lot_hs.mainpd_id, created_time,COMPLETE_TIME, value(bank.banktime,0) as banktime , round ( ( 1.00*(days(COMPLETE_TIME)-days(created_time)) + (hour(COMPLETE_TIME)-hour(created_time))*1.00/24 + (minute(COMPLETE_TIME)-minute(created_time))*1.00/24/60 + (second(COMPLETE_TIME)-second(created_time))1.00/24/60/60) - value(bank.banktime,0),3) as use_days, customer_id, coalesce(cc.cust_id_define,lot_hs.customer_id) as cust_id2, cc.cycletime_target as ct_target, date,layer, round(count() over(partition by coalesce(cc.cust_id_define,lot_hs.customer_id),cc.cycletime_target)*0.9,0) cnt, row_number() over(partition by coalesce(cc.cust_id_define,lot_hs.customer_id),cc.cycletime_target order by ( ( days(COMPLETE_TIME)-days(created_time) + (hour(COMPLETE_TIME)-hour(created_time))*1.00/24 + (minute(COMPLETE_TIME)-minute(created_time))*1.00/24/60 + (second(COMPLETE_TIME)-second(created_time))*1.00/24/60/60) - value(bank.banktime,0))/layer) id From (select date(a.claim_time) as date, a.lot_id, a.lot_type,a.mainpd_id,a.prodspec_id,a.custprod_id, case when(date(b.created_time) <= '2009-01-05') then b.created_time + 21 days else b.created_time end as created_time, CASE WHEN A.CUST_id in ('MCA','NPA','SET') THEN a.COMPLETE_TIME ELSE a.COMPLETE_TIME END COMPLETE_TIME, a.cust_id as customer_id, a.ope_category, c.layer From f3rpt.F3_TB_DAILY_FABOUT a, f3rpt.fvlot b, (select mainpd_id, sum(masks)layer from f3rpt.ASMCRPT_VW_MAINPD_MASKS_ALL group by mainpd_id) as c, (select * from (select lot_id, max(claim_time)claim_time, count(case when(ope_category='Ship')then lot_id else null end) as LS, count(case when(ope_category='Unship') then lot_id else null end) as LUS from f3rpt.F3_TB_DAILY_FABOUT where substr(lot_id,1,2) not in('CA','CW','ES','E0','EM') and lot_type = 'Production' AND LOT_ID NOT LIKE 'H%' and substr(lot_id,7,4)='.00F' and ope_category in ('Ship','Unship') and year(claim_time) = year(current date - 1 days) and month(claim_time) = month(current date - 1 days) group by lot_id) as a where LS - LUS > 0 ) as lot Where a.lot_id = b.lot_id and b.mainpd_id = c.mainpd_id and a.lot_id = lot.LOT_ID and a.claim_time = lot.claim_time and a.ope_category = 'Ship' and a.cust_id in ('SM','BOE','GSC','NPA','GTA') ) as lot_hs left outer join (select lot_id,max(bankin_time) banktime from f3rpt.asmc_dpm where bankin_time>0 group by lot_id) bank on (lot_hs.lot_id = bank.lot_id) left join f3cim.f3cim_cfg_cust_rule cc on case when lot_hs.customer_id='WXM' THEN 'WII'||SUBSTR(lot_hs.mainpd_id,6,1) else lot_hs.customer_id end = cc.cust_id and locate(cc.mainpd_id,lot_hs.mainpd_id)>0 and locate(cc.prodspec_id,lot_hs.prodspec_id)>0 and locate(cc.custprod_id_45,substr(lot_hs.custprod_id,3,3))>0 where lot_hs.ope_category = 'Ship' ;以上sql如何优化

2023-06-07 上传