自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(156)
  • 资源 (92)
  • 问答 (2)
  • 收藏
  • 关注

原创 Jakob Engblom: 使用 Simics 进行 Simulink PIL 仿真(2014)

本文回顾了Simics仿真平台与Simulink PIL(处理器在环)仿真的经典集成方法。该方案使开发人员能在虚拟环境中验证控制器代码在目标处理器上的运行效果,无需依赖物理硬件。Simics运行目标代码,Simulink仿真被控对象,通过自动化PIL测试确保生成代码与设计模型的一致性。相比物理硬件方案,该虚拟化方法解决了硬件资源限制、配置复杂等问题,支持早期验证并实现开发人员专属测试环境。这种集成既简化了PIL测试流程,也体现了虚拟平台在嵌入式开发中的优势。

2025-12-21 12:08:21 536

原创 处理器在环(PIL): Simulink与Simics协同仿真

摘要:Simics与Simulink集成实现了处理器在环仿真,支持基于模型的嵌入式系统开发。Simics仿真完整软件栈,Simulink处理机械物理模型,二者协同构建虚拟测试环境。该方案支持早期测试、故障注入和并行测试,降低集成风险,适用于航天、汽车等复杂系统开发。主要依赖MATLAB/Simulink工具链,可提升开发效率并替代物理硬件测试。

2025-12-21 09:34:43 225

原创 [MPRI] 反应式系统的同步编程(2025-2026)

MPRI项目2025-2026学年开设的"反应式系统的同步编程"课程深入探讨同步数据流语言在安全关键系统中的应用。课程涵盖Lustre、Scade等同步语言的编程技术,重点讲授同步组合、形式化验证、因果分析等核心概念,并介绍混合系统建模等前沿扩展。通过Vélus编译器验证等案例,展示同步语言在航空、核电等领域的实际应用。课程要求具备编程语言语义学和编译原理基础,旨在培养开发高安全性嵌入式系统的专业能力。

2025-11-29 16:37:26 743

原创 SCADE Architect: 基于 Eclipse Papyrus 首个成功的工业界工具(2013)

2013年EclipseCon Europe上,CEA展示了基于Eclipse Papyrus开发的SCADE System(后更名SCADE Architect)。该项目源于Esterel Technologies(现属ANSYS)为扩展系统建模能力的需求,利用Eclipse技术栈(EMF/GEF/GMF)和Papyrus开源平台开发而成。通过CEA LIST与Esterel成立的LISTEREL联合实验室,双方不仅推进了Papyrus定制化开发(如CDO集成),还通过AGeSys等项目促进产学研合作。这

2025-11-22 15:17:35 947

原创 Ansys SAM 与 Scade One:重塑安全关键系统开发的 MBSE 新范式

摘要:Ansys推出SAM Enterprise和Scade One软件,解决安全关键系统开发中的复杂性和协同难题。SAM基于SysML v2标准实现跨工具协同,支持实时协作与集成;Scade One则无缝衔接系统模型与嵌入式软件开发,确保安全合规。该方案已应用于汽车、航空航天和国防领域,构建从系统设计到软件实现的数字线程,显著提升开发效率与安全性。

2025-11-09 14:41:01 971

原创 KCG:SCADE 编译关键技术 (Bruno Pagano, 2013)

本文介绍了Bruno Pagano 2013年在法兰西公学院关于SCADE 6语言的讲座内容。SCADE 6是在SCADE 4基础上发展而来的嵌入式系统开发语言,融合了Lustre、Esterel等多项技术优势,新增了函数式处理能力和过程表功能,其编译器已通过DO-178B最高A级认证。文章重点阐述了SCADE KCG编译器的创新技术,包括图形到文本转换、代码调度机制、静态类型检测等,并详细介绍了从图形模型到C/Ada代码生成的多阶段编译流程。最后展示了SCADE 6-KCG 6开发团队的核心成员。

2025-11-09 12:59:25 1542

原创 [SCADE Hybrid] 混合离散时间/连续时间系统的编程语言 (2014)

本文概述了Marc Pouzet 2014年关于混合离散/连续时间系统编程语言的研究。同步语言在嵌入式系统中已取得成功应用,但其离散抽象无法满足物理组件建模需求。现有混合建模语言虽能结合离散/连续时间,但缺乏严格语义边界。研究提出在同步内核上添加常微分方程(ODEs)的保守性扩展,利用非标准分析建立同步语义,解决离散/连续组件结合规则、因果性定义等核心问题。最终在Zélus原型语言中实现,该语言融合同步编译技术与数值求解器交互能力。

2025-11-09 09:21:07 272

原创 [法兰西公学院] Esterel A到Z (Gérard Berry 2018)

摘要:文章介绍了Gérard Berry 2018年在法兰西公学院讲授的《Esterel from A to Z》系列课程,涵盖Esterel同步编程技术的核心内容。五节课分别探讨了:1)反应式编程原理与发展,包括从Esterel到工业级SCADE 6的演进;2)同步语言的数学基础与因果关系语义;3)Esterel程序转换为布尔电路的创新方法;4)循环处理和高效编译技术;5)多时钟机制实现及程序验证方法。课程展示了Esterel技术在航空电子、嵌入式系统等安全关键领域的工业应用价值。

2025-11-08 22:46:42 893

原创 [SCADE航电应用] 达索航电系统与软件的建模

达索航空专家E. Ledinot在法兰西公学院讲授航空电子系统演进,重点分析了1980-2000年间系统规模百倍增长带来的技术挑战。课程详细阐释了传统编程方法在功能时序编排上的局限,以及Esterel语言通过构造式设计自动解决调度问题的创新方案。特别指出SCADE 6系统将成为应对未来复杂性的核心工具,其图形化形式化方法实现了控制系统的统一建模。Ledinot作为达索航空科研总监,其将Esterel语言应用于超大规模工业项目的实践,对该技术的发展具有关键推动作用。

2025-11-08 22:32:01 217

原创 [SCADE大师课] Gerard Berry: Esterel 与 SCADE,从科研到工业(2014)

Gérard Berry在法国INRIA的三节课中探讨了同步语言从科研到工业应用的转化历程。第一讲回顾了Esterel和Lustre/SCADE的发展过程,分析了工业合作带来的机遇与约束;第二讲从企业视角阐述了技术商业化面临的挑战,说明SCADE通过渐进改进和可认证性成功应用于航空等高安全领域;第三讲回归科研视角,讨论了工业实践中提出的三个关键科学难题。整个系列揭示了科研创新与工业需求之间复杂而富有成效的互动关系,展现了理论突破如何服务于实际工程需求。

2025-11-06 20:06:32 465

原创 [Esterel大师课] Gérard Berry:使用Esterel v7进行同步多时钟电路设计(2013)

Gérard Berry在法兰西公学院讲授Esterel v7同步电路设计课程。Esterel v7由英特尔实验室1999年发起开发,2000年成立公司推动产业化,专注于电路CAD领域。该语言优化了模块化结构,新增对数据、数组和多时钟的支持,采用精确数值类型提升硬件设计效率。2007年提交IEEE标准化,但因2008年金融危机项目终止。Esterel Studio工具曾应用于TI、ST等公司的存储控制、视频系统等领域。讲座通过微型滤波器案例展示了语言特性与流水线设计优势。

2025-11-06 19:54:36 707

原创 [SCADE编译原理] 编译器架构

本文综述了SCADE 6编译器的架构设计及其关键技术。首先介绍了REBELS'20会议上提出的完整编译流程,包括静态分析(类型检查、时钟检查、因果性分析和初始化分析)、源到源状态机翻译生成时钟化数据流内核,以及时钟导向的模块化编译生成顺序化C代码。随后补充了巴黎高师课程中关于数据流内核编译的详细处理步骤:从语义分析到归一化、程序编排,最终转换为指令式OBC结构并生成C代码。文中引用了多项关键研究成果(EMSOFT'03/05、ESOP'01等)作为各阶段的理论基础。

2025-10-19 12:21:30 1135

原创 [SCADE编译原理] 因果性分析原理(2001)

本文探讨了《ESOP'01》论文中提出的同步数据流语言Lucid Synchrone的模块化因果性分析方法。该语言融合了Lustre/Signal的实时性和Haskell的抽象能力,通过引入Row Type类型系统,将依赖关系编码到类型标注中(p/a表示当前/历史依赖),并设计了pre和rec算子的类型规则来静态拦截因果循环。论文还通过余迭代语义将流表示为状态机,从语义层面验证了类型系统的正确性。该研究为同步语言提供了模块化编译的因果性保障,对后续工业语言如Scade产生了重要影响。

2025-10-18 22:59:31 866

原创 [SCADE编译原理] 初始化分析原理(2004)

本文介绍了基于类型系统的同步数据流语言初始化分析方法(STTT'04),用于解决SCADE中流初始化的nil值问题。传统方法采用保守的语法检查,而该方法将流初始化状态抽象为0/1两种类型(0表示始终定义,1表示首周期可能为nil),通过类型推断和子类型约束自动判断风险。该方法不仅解决了SCADE的初始化问题,还展示了如何将类型系统应用于领域特定问题,通过简单的抽象(1位类型)和成熟技术(类型推断)实现了可靠的分析。

2025-10-18 22:11:39 439

原创 [SCADE编译原理] 时钟分析原理(2003)

《同步反应式系统中的时钟演算》摘要:本文介绍了将时钟作为一等抽象类型的概念,通过Hindley-Milner类型系统实现多速率系统的时钟自动推断。核心贡献是设计了一套时钟类型语法和推断规则,包括函数时钟规则、采样操作规则和时钟定义规则,确保同步数据流程序的时钟一致性、无缓冲需求和缺席值错误。该理论应用于Scade语言,实现了时钟正确性与类型正确性的统一验证,为复杂时间确定性系统提供了理论解决方案。

2025-10-18 20:55:40 539

原创 [SCADE编译原理] 状态机到数据流的源到源翻译(2005)

本文探讨了SCADE编译技术中状态机到数据流的源到源翻译方法。首先介绍了核心数据流语言(基于Lustre)和时钟语义的基础,包括数据流方程、延迟操作、采样合并等关键构造。重点阐述了状态机转换的两步流程:先将状态机转化为条件块(Match语句),再分解为核心数据流操作(采样、合并等)。这种翻译方法具有语义统一性、实现轻量化和代码高效性三大优势,能复用现有编译器优化能力,生成执行效率接近手写的代码。该方案有效解决了数据流和状态机混合建模的难题,为实时嵌入式系统开发提供了高效解决方案。

2025-10-18 20:17:39 1031

原创 [SCADE编译原理] 时钟机制为核心的数据流编译(2008)

摘要: 论文《Clock-directed modular code generation for synchronous data-flow languages》提出了一种针对同步数据流语言的模块化编译方法。传统全内联编译存在代码爆炸和可追溯性差的问题,而工业级编译器需要满足模块化、可追踪性和效率三大诉求。该方法通过时钟机制将节点编译为独立状态单元,采用四阶段编译流程:时钟检查、方程归一化、中间语言生成和目标代码转换。其中设计的对象式中间语言支持状态封装和模块化组合,并通过时钟控制结构优化执行效率。

2025-10-18 19:36:31 869

原创 架构建模技术深度解析:SysML与AADL的全方位对比

本文对比分析了系统工程领域两种主流建模语言SysML与AADL的核心差异。SysML作为通用系统建模语言,适用于跨学科系统的全生命周期建模,强调需求追踪和多物理域集成;而AADL作为嵌入式实时系统专用语言,专注于硬件软件协同设计与性能分析。研究发现,SysML在需求建模和多领域协同方面更具优势,AADL则在实时性分析和代码生成方面表现突出。研究建议根据项目领域特性选择建模技术:复杂跨域系统优先选择SysML,嵌入式实时系统则更适合AADL。未来建模技术将向通用框架与领域插件融合的方向发展。

2025-10-18 17:28:58 814

原创 MBD技术对比:Simulink/Stateflow、SCADE、Modelica、JuliaSim

本文对比了四种主流MBD技术:Simulink/Stateflow作为通用工具适用于多领域建模;SCADE专攻高安全性系统;Modelica提供开放的多域物理建模标准;JuliaSim则以高性能见长。各技术在领域适配性、仿真效率、代码生成能力和易用性等方面各具特色:Simulink生态完善但复杂度高,SCADE合规性最强但灵活性低,Modelica跨域优势突出但求解要求高,JuliaSim性能优异但生态待完善。技术选型需权衡领域需求与工具特性,如安全关键系统优先SCADE,多物理场仿真则倾向Modelica

2025-10-18 13:43:29 1499

原创 形式验证定理证明技术对比:Rocq、Isabelle、Lean

摘要:Rocq、Isabelle和Lean是三大主流交互式定理证明器,各有特点。Rocq基于归纳构造演算,严谨性高但需手动引导,适用于微内核和编译器验证。Isabelle基于高阶逻辑,自动化能力强,适合工业硬件协议验证。Lean结合依赖类型和SMT求解器,兼顾严谨与自动化,适合形式化数学和密码学。三者在逻辑基础、自动化程度和应用场景上各有侧重,满足不同验证需求。

2025-10-18 12:00:54 520

原创 Lustre/Scade 形式化语义基础 —— 同步Kahn网络 (1996)

摘要:同步Kahn网络(Synchronous Kahn Networks)是1996年ICFP会议上提出的融合Kahn进程网络、同步数据流和函数式编程的技术。它解决了传统同步数据流语言的限制,通过时钟演算确保程序同步执行,支持递归和高阶函数。该技术包含专用数据流语言、同步操作语义、时钟演算和编译方法:1)语言支持const、extend、fby等原语;2)操作语义采用受限关系避免中间结构;3)时钟演算静态检查同步条件;4)编译方法将流程序转换为高效标量代码。该技术已在工业界得到应用。

2025-10-16 22:35:45 703

原创 同步语言Lustre的故事 —— 来自Lustre联合发明人的回顾(2005)

摘要: Lustre同步数据流语言诞生于1980年代,为应对核反应堆、电传飞机等安全关键系统的开发挑战。其核心创新是将程序视为值的流计算,通过时序算符和节点机制实现直观的实时系统建模。Lustre经历了三次工业转化:从核能领域的SAGA工具,到通过DO-178B航空认证的SCADE,最终扩展为全球化工具链。工业实践中,其图形化语法和严格语义获得认可,但时钟机制和形式化验证面临调整。未来方向包括数组重构、状态机集成等。Lustre的成功体现了学术理论与工业需求的深度融合。

2025-10-12 18:04:55 856

原创 SCADE MCG: Scade 6 面向多核系统编译的技术原理(2018)

本文介绍了SCADE 6多核代码生成器(MCG)的设计原理。作为安全关键开发环境,SCADE 6通过Kahn语义描述系统,并扩展支持多核编译。MCG采用独特的设计理念:不修改语言只添加注解,分离功能设计与多核集成。其技术流程包括标记可并行算子、生成Kahn进程网络、产生模块化任务代码等步骤。通过KPN确定性保证、任务隔离和复用SCADE原有静态分析三大技术,MCG在实现多核并行的同时确保了安全性,使同一模型可适配不同多核架构而不改变语义。

2025-10-12 16:53:50 806

原创 SCADE 背后的群星之 Marc Pouzet:同步语言铸就航空软件基石

法国计算机科学家Marc Pouzet因在同步语言领域的杰出贡献荣获2019年Inria-法科院-达索联合创新奖。他主导开发的SCADE 6技术被广泛应用于航空和铁路关键系统。Pouzet的学术生涯充满偶然与机遇,从偶然接触计算机到成为程序语言专家,他始终强调科研与工程结合的重要性。业界评价他兼具理论深度与实践能力,其研究成果成功实现了从实验室到工业应用的转化。目前担任巴黎第六大学教授和Inria Parkas项目负责人的Pouzet,已成为法国计算机科学领域的重要人物。

2025-10-12 15:43:57 1502

原创 Scade One 图形建模 - 高阶迭代器算符

摘要:Scade One图形建模支持多种高阶迭代器算符,包括map、mapi、fold、foldi、mapfold和mapfoldi等。这些算符分别用于数组元素转换(带/不带索引)、累积计算(带/不带索引)以及同时转换和累积操作。每个算符对操作函数有特定参数要求,并配有相应的图形模型示例。其中forward算符因功能复杂将单独介绍。这些算符延续了SCADE Suite的经典功能,为数组处理提供了丰富的操作方式。

2025-10-07 18:31:03 327

原创 Lustre转换为Simulink模型(2021)

摘要:2021年研究实现了Lustre与Simulink模型的双向转换,支持安全关键系统开发。通过LustreC编译器将模型归一化为三地址码形式,统一时钟语义后映射为Simulink组件。重点解决了复位信号穿透问题:采用状态跟踪子系统,通过记忆模块确保父系统复位时子系统状态正确重置。该技术使形式化分析结果可直接嵌入Simulink,满足DO-178C等标准对可追溯性的要求。

2025-10-07 12:38:43 871

原创 Scade One 图形建模 - 时序算符模型

Scade One图形建模支持多种时序算符,包括值初始化(->)、单位延迟(pre)、带初值的单位延迟以及时序窗口(window)。其中,window算符替代了Scade6/Lustre中的fby功能。文档通过图形示例展示了各算符的建模方式:值初始化用于设定初始值;基础pre延迟无首周期初值;带初值的pre可指定初始状态;window实现时序窗口功能。这些算符保持了与SCADE Suite的兼容性,同时进行了功能扩展。

2025-10-06 16:54:23 206

原创 Simulink模型转换为DIVINE模型(2012)

摘要:文章介绍将Simulink模型转换为DIVINE工具输入模型的方法。首先通过中间语言转换将Simulink模型转为基于C++的EDS语言,保留其层级结构;然后编译生成符合CESMI接口的共享对象,定义初始状态、后继状态等关键函数;最后与DIVINE工具集成进行验证。该方法利用DIVINE在分布式系统中的优势,弥补了Simulink自身验证功能的不足。

2025-10-06 10:56:14 529

原创 Scade One 图形建模 - 选择算符模型

Scade One图形建模支持选择算符模型,包括if/then/else和case两种类型。if/then/else算符通过条件判断实现分支选择,其图形模型直观展示条件路径。case算符则提供多条件选择功能,图形模型清晰地呈现各分支逻辑。两种选择算符的图形化表示使建模过程更加可视化和高效。

2025-10-05 21:10:28 246

原创 Scade One 图形建模 - 数组操作算符

Scade One图形建模提供丰富的数组操作算符,功能与SCADE Suite类似。主要操作包括:标量构造数组(repetition)、数组构造([])、拼接(@)、元素获取(arr[idx])、带默认值的元素获取、元素更新、转置、反转、切片、展平和压缩等。每个操作都有对应的图形化建模符号,通过直观的图形界面实现数组处理功能。这些算符支持从基础构造到复杂转换的各类数组操作,满足不同场景下的建模需求。

2025-10-05 18:32:44 155

原创 Scade One 图形建模 - 比较关系运算

Scade One图形建模支持多种比较关系运算,包括相等=、不等<>、大于>、大于等于>=、小于<和小于等于<=。每种运算符都有对应的图形模型展示,方便用户直观理解和应用。这些比较运算为系统建模提供了基本的逻辑判断能力,适用于各种工程计算和条件控制场景。文中通过图片详细展示了各运算符的图形表示形式。

2025-10-05 14:50:19 176

原创 Simulink模型转换为SPIN模型(2008)

摘要:针对Simulink模型形式化验证的局限性,2008年Leitner-Fischer提出将Simulink模型转换为SPIN输入模型的方法。该方法通过VIP工具将Simulink/Stateflow元素映射为Promela代码,解决了SDV在并发建模和时序验证方面的不足。SPIN支持LTL属性验证和并发系统穷尽性检测,能有效发现死锁、数据竞争等问题。该转换过程包括模型抽象、VIP建模和Promela代码生成三个关键步骤,实现了从图形化建模到形式化验证的无缝衔接。

2025-10-05 14:40:25 276

原创 Simulink模型转换为UPPAAL模型(2016)

摘要:2016年的研究提出将Simulink模型转换为UPPAAL统计模型的方法,以解决Simulink在复杂系统验证上的局限。该转换通过两种自动机模式(离散/连续时间块)保留Simulink语义,并采用同步机制维持原始执行顺序。UPPAAL SMC的优势在于支持随机混合系统建模、高效统计分析及概率查询,弥补了Simulink验证工具的不足。研究成果为汽车等工业系统的形式化验证提供了新途径。

2025-10-04 22:15:44 904

原创 Scade One 图形建模 - 布尔运算

Scade One图形建模工具支持四种布尔逻辑运算:与运算and、或运算or、异或运算xor和非运算not。每种运算都有对应的图形表示方式,文中提供了各运算符的建模示意图。这些布尔运算功能为系统建模提供了基础的逻辑运算能力,可满足不同场景下的逻辑处理需求。

2025-10-04 13:18:28 153

原创 Scade One 图形建模 - 位运算

Scade One图形建模支持多种位运算操作,包括与运算(land)、或运算(lor)、异或运算(lxor)、取反运算(lnot)、左移运算(lsl)和右移运算(lsr)。每种运算都有对应的图形化建模示意图,方便用户直观地进行位操作建模。这些位运算功能为数字信号处理和底层硬件操作提供了便捷的建模手段。

2025-10-03 13:50:20 168

原创 Simulink模型转NuSMV模型(2006)

摘要:Honeywell团队提出将Simulink模型转换为NuSMV模型的方法,以支持形式化验证。转换器支持有限状态机相关的离散模块,通过解析MDL文件、类型推导和代码生成三个步骤实现转换。优化措施包括变量范围绑定以减少状态爆炸问题,并提供反向翻译功能将NuSMV反例映射回Simulink模型,帮助工程师定位问题。该转换方法有助于满足航空电子软件DO-178C标准的形式化验证要求。

2025-10-03 09:04:02 282

原创 Scade One 图形建模 - 算术算符

Scade One支持多种算术运算算符的图形ovi建模,包括加法、减法、乘法、除法、取模、一元取反以及数值类型转换等。这些运算功能与经典SCADE Suite保持一致,每种运算都有对应的图形化操作符表示。文中展示了各运算算符的详细图形模型示意图,为开发人员提供了直观的视觉参考。

2025-10-02 16:46:38 299

原创 Simulink/Stateflow转换为Lustre(2004)

本文介绍了Paul Caspi等人将Simulink/Stateflow安全子集转换为Lustre的方法。针对Simulink/Stateflow在形式化验证中的不足,研究限定了一个安全子集,排除了语义不确定性(如循环过渡、事件递归等)。转换过程将Stateflow状态机映射为Lustre的布尔变量和方程,将Simulink模块转换为算术运算,并处理二者协同问题。该方法通过静态检查保证转换安全性,使模型能利用Lustre的形式化验证工具链进行分析验证。

2025-10-02 13:10:44 871

原创 CoCoSim(2020): 连接Simulink与Lustre生态的模型检测框架

CoCoSim是一个开源框架,用于Simulink模型的组合验证与形式化验证。它将Simulink/Stateflow模型转换为Lustre代码,保留原模型的语义一致性,并集成Kind2等工具进行形式化验证。CoCoSim支持模型预处理、层次化映射和多周期处理,还提供代码生成(C/Rust)和测试用例生成能力,形成"建模-验证-代码生成"闭环。该框架通过开源API支持扩展,适用于高安全领域系统开发,确保模型从需求到代码的语义一致性。

2025-10-01 20:22:47 2084

原创 LAMA(2014): 一项对SCADE模型进行基于SMT验证的开源方案

LAMA是一个开源中间语言项目,旨在为SCADE程序的形式化验证提供基于SMT的解决方案。该项目设计了从SCADE到LAMA再到SMT求解器的两级翻译流程:首先将SCADE算子映射为LAMA节点,处理状态相关/无关数据流;然后将LAMA程序转化为SMT公式集,支持自动机处理和因果性分析。LAMA保留SCADE利于SMT优化的特性,包括结构化数据类型和自动机支持,最终实现SCADE模型的形式化验证。该工作为SCADE程序验证提供了开源替代方案。

2025-10-01 18:11:06 697

[巴黎高师课程] 同步反应式系统第一课 - 使用Lustre对嵌入式系统编程

[巴黎高师课程] 同步反应式系统第一课 - 使用Lustre对嵌入式系统编程 内容概要:本文档介绍了用于编程嵌入式系统的同步反应语言Lustre。Lustre是一种声明性的同步数据流编程语言,专为实时系统设计。文档首先概述了Lustre的基本概念,如组合程序、顺序操作符(增加状态)、采样操作符(条件激活)及其类似的语言。接着通过具体的例子,如轮椅控制系统的架构和功能,展示了Lustre的实际应用。文档还讨论了嵌入式实时软件的特点,包括其复杂性和关键性,并通过多个案例说明了不同嵌入式系统的代码量。此外,文档深入探讨了Lustre的核心特性,如流方程、节点语法、因果关系分析、时钟计算和模块化编译。最后,文档介绍了Lustre与其他同步语言的关系,并提供了进一步阅读的参考文献。 适合人群:具备一定编程基础,特别是对嵌入式系统和实时编程感兴趣的工程师或研究人员。 使用场景及目标:①理解Lustre语言的基本概念和语法;②掌握如何使用Lustre进行嵌入式系统的设计与实现;③学习如何通过因果关系分析和时钟计算确保程序的正确性和效率;④探索Lustre在实际项目中的应用,如机器人轮椅控制系统。 其他说明:本文档不仅涵盖了Lustre语言的基础理论,还提供了丰富的实例和练习,帮助读者更好地理解和掌握Lustre的编程技巧。同时,文档还引用了大量的学术论文和技术报告,为读者提供了深入了解Lustre及相关领域的途径。

2025-04-13

[巴黎高师课程] 同步反应式系统第二课 - 同步数据流语言 Lustre v4, Lustre v6, Scade 6, Heptagon

[巴黎高师课程] 同步反应式系统第二课 - 同步数据流语言 Lustre v4, Lustre v6, Scade 6, Heptagon 内容概要:本文主要介绍了Lustre语言及其扩展,用于同步反应系统的设计与实现。文章首先概述了Lustre的核心理念,即通过数学方程直接编写程序规范,并对其进行分析、转换、模拟、测试和验证,最终自动生成可执行代码。接下来详细讲解了Lustre中的数组、模块化复位(modular reset)以及状态机的实现方式。对于数组,文章对比了Lustre v4和v6的不同处理方法,强调了现代Lustre数组作为不可变数据结构的特点。模块化复位部分展示了如何简化复位操作,避免全局传递复位信号。状态机部分则介绍了两种预占方式(强预占和弱预占),并通过实例解释了状态机在不同模式下的行为。 适用人群:具备编程基础,特别是对嵌入式系统或同步反应系统感兴趣的开发者和技术人员。 使用场景及目标:①理解Lustre语言如何处理数组、复位和状态机等特性;②掌握如何使用Lustre进行复杂系统的建模与验证;③学习如何将数学方程转化为实际的程序代码。 其他说明:本文不仅提供了理论知识,还包含大量具体示例和练习,帮助读者更好地理解和应用所学内容。此外,文章引用了多个相关文献,为深入研究提供了丰富的参考资料。

2025-04-05

[巴黎高师课程] 同步反应式系统第三课 - Kind 2: 基于SMT的Lustre模型检查器

资源内容为巴黎高师MPRI硕士课程2024-2025学期《同步反应系统 》中第三课《基于SMT的模型检查器》的课程内容介绍。 内容概要:本文介绍了基于SMT(Satisfiability Modulo Theories)的转换系统模型检验技术,涵盖从基本概念到具体应用的多个方面。文章首先定义了两种性质:安全性和活性性质,并解释了它们在系统验证中的重要性。接着详细介绍了SMT求解器的基础知识,包括SAT求解器的发展历程及其与SMT求解器的关系。随后讨论了模型检验的不同方法,如显式状态枚举、基于BDD的算法、有界模型检验和k-归纳法等。特别地,文章深入探讨了k-归纳法的具体实现和优化策略,包括路径压缩和抽象化技术。最后,介绍了用于Lustre程序的SMT模型检验工具Kind 2,展示了如何利用SMT技术进行形式化验证。 适合人群:对形式化验证方法感兴趣的研究人员和技术人员,尤其是那些希望深入了解SMT求解器及其在模型检验中应用的人士。 使用场景及目标:①理解安全性和活性性质的区别及应用场景;②掌握SMT求解器的工作原理及其在形式化验证中的作用;③熟悉不同模型检验方法的特点和适用范围;④学习如何使用Kind 2等工具对Lustre程序进行模型检验。 其他说明:本文不仅提供了理论知识,还通过具体示例和算法展示了实际操作步骤。此外,文中引用了大量相关领域的经典文献,为读者进一步研究提供了丰富的参考资料。

2025-04-05

[巴黎高师课程] 同步反应系统 - 第九课 - Zelus 离散时间信号与连续时间信号的混合

资源内容为巴黎高师MPRI硕士课程2024-2025学期《同步反应系统 》中第九课《Zelus - 离散时间信号与连续时间信号的混合》的课程内容介绍。 内容概要:本文介绍了混合离散时间和连续时间信号建模的语言和技术,重点讨论了Zélus语言的设计与实现。Zélus是Lustre语言的扩展,支持常微分方程(ODE)和零交叉检测,能够编写可执行模型。文章首先解释了混合系统的特点及其挑战,然后详细描述了Zélus语言的核心特性,包括类型检查、编译流程以及语义定义。此外,还探讨了如何通过非标准分析方法来确保信号的连续性和因果关系的正确性。最后,文章展示了Zélus编译器生成的代码结构,并通过几个具体示例(如加热控制器和弹跳球)说明了其应用。 适合人群:对嵌入式系统、混合信号建模和实时控制领域感兴趣的工程师、研究人员和高级程序员。 使用场景及目标:①为混合离散/连续系统的建模提供一种新的编程语言和工具;②确保模型的正确性和可靠性,特别是在涉及复杂动态行为的情况下;③通过静态类型检查避免不合理的模型设计;④生成高效的模拟和嵌入式实现代码。 其他说明:Zélus不仅限于理论研究,它已经被应用于工业级项目中,如ANSYS的DigitalTwins工具。此外,文章还回顾了相关领域的历史发展,从Lustre到SCADE再到Zélus,强调了技术演进的过程。阅读时应注意理解非标准分析的概念及其在保证信号连续性方面的作用。

2025-04-05

[巴黎高师课程] 同步反应系统 - 第四课 - Velus - 形式化验证的Lustre编译器

资源内容为巴黎高师MPRI硕士课程2024-2025学期《同步反应系统 》中第四课《Velus - 形式化验证的Lustre编译器》的课程内容介绍。

2025-04-05

【嵌入式系统】SCADE 6:面向高安全软件开发的基于模型的解决方案 - 作者为 Esterel 职工 Francois Xavier Dormy - 2008.1 月发表

内容概要:SCADE 6 是一种基于模型的解决方案,旨在为安全关键软件开发提供统一的建模风格,确保从系统到软件工程的安全无缝过渡。它融合了同步语言理论,支持实时应用,特别适用于航空、铁路和汽车行业的复杂控制系统。SCADE 6 强调数据流扩展(如重置、激活、合并)、状态机功能(如强、弱和同步转换)以及安全循环特性(如迭代器),并通过自动代码生成工具支持多种标准(如DO-178B、EN 50128、IEC 61508)。此外,SCADE 6 还引入了假设与保证机制、传感器定义、模块化封装(包)和多态性,以增强设计灵活性和安全性。 适合人群:从事航空、铁路和汽车行业嵌入式实时系统开发的工程师,特别是对安全关键系统有需求的研发人员。 使用场景及目标:①需要在复杂控制系统中实现安全可靠的数据流和状态管理;②希望在开发过程中减少错误并提高代码可维护性和重用性;③确保生成的代码符合国际安全标准,如DO-178B、EN 50128、IEC 61508等。 其他说明:SCADE 6 不仅是一个建模工具,还提供了一个完整的开发环境,帮助工程师在设计阶段就考虑安全性,减少后期开发中的风险。通过引入高级迭代器和状态机特性,SCADE 6 在保持同步数据流原则的同时,提供了更强大的控制能力。此外,SCADE 6 的自动代码生成功能已通过认证机构的认可,能够有效支持安全关键系统的开发流程。

2025-04-04

机器学习 -- 调参经验之谈

深度学习的程序可能出错的地方有很多,这其中有一些错误发生频率比其他更 高。通常我会从如下一些方面先行入手: ◆ 从简单并且得到广泛应用的网络开始,如 VGG,如果可以的话使用标准的损失 函数。 ◆ 暂时去掉所有的 trick, 如数据增强(Data Augmentation)和正则化(regularization)。 ◆ 如果是微调(finetuning)模型,再次检查数据的预处理,保证其和原始网络训练 时一致。 ◆ 检查输入数据是正确的。 ◆ 从很少量的数据开始(2-20 样本),使其过拟合,然后逐渐增加样本。 ◆ 逐渐增加 trick,数据增强,正则化,新的损失函数,更复杂的网络等等。 如果上面的仍然不 work 的话,请按照下面的逐条实验。

2019-01-30

机器学习 -- Tips for Deep Learning

Tips for Deep Learning Do not always blame Overfitting Hard to get the power of Deep ... Vanishing Gradient Problem ReLU Maxout RMSProp

2019-01-30

机器学习 -- Deep Learning

Deep Learning Three Steps for Deep Learning Neural Network Fully Connect Feedforward Network Matrix Operation Output Layer as Multi-Class Classifier

2019-01-30

机器学习 -- 分类

Classification: Probabilistic Generative Model Classification Probability from Class Probability from Class - Feature Maximum Likelihood Modifying Model

2019-01-30

机器学习 - Bias and Variance

Estimator Bias and Variance of Estimator Parallel Universes Variance Bias Model Selection

2019-01-30

贝叶斯网络简史

A history of Bayesian neural networks DEEP LEARNING LIMITATIONS OF DEEP LEARNING WHAT DO I MEAN BY BEING BAYESIAN ? BAYES RULE

2019-01-30

python numpy 教程

内容列表 Python 列表,字典,集合,元组 Numpy 数组,访问数组,数组类型,数组计算,广播 SciPy 图像操作, Matplotlib 绘制图形

2019-01-30

迁移学习Python实战 Hands on transfer learning with Python

迁移学习Python实战 Hands on transfer learning with Python

2019-01-30

ARINC 653 标准 Par1 Required Services

软件适航标准ARINC 653 操作系统标准第一部分: Requried Services. This document specifies the baseline operating environment for application software used within Integrated Modular Avionics (IMA) and traditional ARINC 700-series avionics.

2019-12-22

gcc-linaro-4.9-2016.02-i686-mingw32_arm-linux-gnueabihf.tar.xz

3cd1ea87d1124c0aac921ce1b75be9d8 gcc-linaro-4.9-2016.02-i686-mingw32_arm-linux-gnueabihf.tar.xz 在Windows下使用的linaro arm linux gnueabihf gcc 4.9 , 2016.02 从linaro官网下载速度很慢。国内Linaro镜像源少。所以借助优快云上传该资源,服务国内程序员。

2019-03-24

十分钟上手sklearn 特征提取 常用模型 交叉验证

十分钟上手sklearn 特征提取 常用模型 交叉验证. 主要内容包括: PCA算法 LDA算法 线性回归 逻辑回归 朴素贝叶斯 决策树 SVM 神经网络 KNN算法

2019-01-30

机器学习 -- Backpropagation

Backpropagation Gradient Descent Chain Rule Backpropagation Backpropagation – Forward pass Backpropagation – Backward pass

2019-01-30

形式化方法概貌_2018

形式化方法是基于严格数学基础,对计算机硬件和软件系统进行描述、开发和验证的技术.其数学基础 建立在形式语言、语义和推理证明三位一体的形式逻辑系统之上.形式化方法已经以不同程度和不同方式愈来愈 多地应用在计算系统生命周期的各个阶段.介绍了形式化方法的发展历程和基本方法体系;以形式规约和形式验证 为主线,综述了形式化方法的理论、方法、工具和应用的现状,展示了形式化方法与软件学科其他领域的交叉和融 合;分析了形式化方法的启示,并展望了其面临的发展机遇和未来趋势.形式化方法的发展和研究现状表明:其应用 已经取得了长足的进步,在提高计算系统的可靠性和安全性方面发挥了重要作用.在当今软件日益成为社会基础设 施的时代,形式化方法将与人工智能、网络空间安全、量子计算、生物计算等领域和方向交叉融合,得到更加广阔 的应用.研究和建立这种交叉融合的理论和方法不仅重要,而且具有挑战性.

2019-02-13

机器学习 -- CNN

Convolutional Neural Network CNN – Convolution CNN – Colorful image CNN – Max Pooling First Convolution Layer Deep Dream

2019-01-30

[ENSTA Paris] ROB301 模型驱动设计与代码生成(2024) 第六课 Matlab - Simulink/Stateflow 建模

内容概要:本文主要介绍了嵌入式软件(即反应程序)的特点及其建模与仿真工具Simulink和Stateflow的应用。嵌入式软件通过离散时间动态响应物理环境输入,具有确定性和有限内存使用特点。文中详细讲解了Simulink的功能,包括连续时间、离散时间或混合系统的建模语言、数值算法集、数据类型支持、扩展库和代码生成器。同时,通过电子节气门系统的小例子展示了Simulink模型的具体构建过程。此外,还探讨了Stateflow在建模有限状态机、流程图和真值表方面的应用,并比较了Simulink和Stateflow的选择依据。 适合人群:具备一定编程基础,对嵌入式系统、控制系统或自动化控制有兴趣的研究人员和工程师。 使用场景及目标:①理解嵌入式软件的工作原理及其与物理环境的交互;②掌握Simulink和Stateflow这两种工具的使用方法,包括如何建立动态系统模型、进行模拟以及验证结果;③学习如何根据具体应用场景选择合适的建模工具(如逻辑操作优先选用Stateflow,数值计算优先选用Simulink)。 阅读建议:由于Simulink和Stateflow涉及较多的概念和技术细节,在学习过程中应结合实际案例进行实践操作,同时关注工具的功能特性及其适用范围,确保能够正确地应用于实际项目中。

2025-06-11

[ENSTA Paris] ROB301 模型驱动设计与代码生成(2024) 第五课 软件测试与面向模型的测试SOMCA

内容概要:本文主要介绍软件架构与自动代码生成的相关概念及其重要性。首先,它定义了软件架构为系统的基本组织形式,强调了架构设计的早期决策对系统质量属性(如性能、可用性、可维护性等)的关键影响。接着,文章详细讨论了模块化设计中的耦合与内聚性,提出了强内聚弱耦合的目标,以确保系统的简洁接口、通信和正确性验证。随后,文章探讨了软件测试的不同类型(单元测试、集成测试、符合性测试等),以及结构化测试(基于源代码结构)和功能性测试(基于规格说明书)的区别和联系。最后,文章介绍了模型测试的概念及其覆盖率标准,包括范围覆盖、功能覆盖、输入修改覆盖、激活覆盖等,并讨论了不同软件保证级别下的应用。 适合人群:计算机科学专业的学生、软件工程师及测试人员,尤其是那些对软件架构和测试有初步了解并希望深入了解相关理论和技术的人群。 使用场景及目标:①帮助读者理解软件架构的重要性及其对系统质量的影响;②提供模块化设计的最佳实践指导,特别是关于如何优化耦合与内聚性;③介绍各种类型的软件测试方法及其应用场景;④解释模型测试的基本原理及其覆盖率标准的应用。 其他说明:本文不仅涵盖了理论知识,还提供了具体的案例分析和技术细节,使读者能够更好地理解和应用这些概念。此外,文中还提到了一些行业挑战,如测试活动的复杂性和经济成本,强调了高效测试策略的重要性。

2025-06-10

[Iowa大学 CS4980] 嵌入式系统基础 第一课

内容概要:本文档是爱荷华大学计算机科学课程CS:4980《嵌入式系统基础》的教学资料,由Rajeev Alur和Cesare Tinelli编撰。文档首先介绍了从传统计算机到嵌入式系统的演变,强调了嵌入式系统(即赛博物理系统)的特点,如集成控制、计算与通信能力,广泛应用于医疗设备、无人驾驶汽车等领域。接着,文档讨论了软件可靠性问题对嵌入式系统的影响,引用了Ariane 5火箭爆炸和丰田Prius刹车故障案例,指出软件缺陷可能引发严重后果。随后,文档以巡航控制器为例,详细阐述了其设计流程,包括输入输出接口定义、状态机设计、组件分解以及控制理论的应用。最后,文档介绍了模型化设计的重要性,强调了形式化验证方法(如模型检查、线性代数分析等)在确保系统可靠性方面的关键作用。 适合人群:计算机科学专业高年级本科生或研究生,尤其是对嵌入式系统、赛博物理系统设计感兴趣的读者。 使用场景及目标:①理解嵌入式系统的基本概念和发展趋势;②掌握嵌入式系统设计的核心技术,如控制理论、模型化设计和形式化验证;③学习如何通过数学建模和验证工具提高软件可靠性。

2025-06-08

【编译器实现】基于同步数据流语言的状态机验证编译:扩展Vélus以支持复杂控制结构和状态机的编译与语义保持 (Pesin 2023)

内容概要:本文介绍了Basile Pesin在其博士论文中关于同步数据流语言(如Lustre和Scade 6)带有状态机的验证编译的研究成果。该研究旨在确保编译后的程序保留了源程序的数据流语义。论文扩展了Vélus项目,增加了对控制块(如switch、last、reset)、状态机等构造的支持。作者详细描述了这些新特性如何被整合到Vélus中,包括它们的语义形式化、中间表示和最终编译为C代码的过程。此外,作者还讨论了编译过程中遇到的技术挑战,如处理嵌套状态机、优化last变量的编译等,并提出了相应的解决方案。 适合人群:具备计算机科学背景,特别是对编译器设计、形式化验证以及同步数据流语言感兴趣的研究生或研究人员。 使用场景及目标:①理解同步数据流语言及其编译过程中涉及的形式化方法和技术细节;②学习如何将复杂的语言特性(如状态机和控制结构)形式化并验证其正确性;③掌握如何通过验证编译保证编译后代码的行为与源代码一致。 其他说明:本文不仅提供了理论上的证明,还展示了实际的编译流程和优化技术,适合希望深入了解编译器内部运作机制及验证技术的研究者参考。此外,文中提到的工作是在Coq证明助手上完成的,对于熟悉或有兴趣学习Coq的人也有很大帮助。

2025-05-23

【编译原理与验证】数据流同步语言带复位机制的机械化语义及验证编译:Vélus编译器在Coq中的实现与应用(Brun 2020)

内容概要:本文介绍了Lélio Brun在其博士论文中提出的Vélus编译器,这是一个基于Coq证明助手验证的Lustre语言编译器。Vélus旨在将同步数据流语言Lustre的规范转换为可执行代码,并提供从数据流范式到命令式范式的语义保真性证明。论文重点讨论了模块化重置(reset)机制的设计与实现,这是一种用于重置子系统的原语。通过引入新的中间语言和编译算法,Vélus实现了更高效的顺序代码生成,并确保了编译过程中各阶段变换的正确性。此外,该研究还利用了经过验证的CompCert C编译器来生成最终的可执行代码,从而提供了端到端的正确性证明。 适合人群:计算机科学领域的研究人员、编程语言设计与实现方向的研究生以及对形式验证和编译器技术感兴趣的开发者。 使用场景及目标:①理解同步数据流语言Lustre及其在嵌入式系统开发中的应用;②学习如何使用Coq进行编译器验证;③掌握模块化重置机制的设计原理及其在编译过程中的实现方法;④探索如何将高级语言特性映射到底层机器指令的同时保持语义一致性。 其他说明:本研究不仅为Lustre语言提供了一个可靠的编译工具链,同时也为其他同步语言的编译器开发提供了有价值的参考。它强调了形式化方法在提高软件可靠性方面的重要性,并展示了如何通过严格的数学证明来保证编译结果的正确性。此外,

2025-05-23

[巴黎理工学院] ROB301 模型驱动设计与代码生成(2024) 第四课 从Scade模型生成代码(Scade编译器实现)

[巴黎理工学院] ROB301 模型驱动设计与代码生成(2024) 第四课 从Scade模型生成代码(Scade编译器实现) 内容概要:本文详细介绍了SCADE模型的编译过程及其相关优化技术。首先概述了编译器的主要步骤,包括词法分析、语法分析、语义分析、优化和代码生成。接着重点讨论了SCADE编译器的特点,如将节点编译为函数、支持特定实时操作系统(如VxWorks)的代码生成,并确保编译过程的可追溯性和低代码量。文章还探讨了编译过程中遇到的问题及解决方案,例如通过内联所有节点或引入预操作符来解决代码大小问题。此外,文中详细描述了SCADE编译器对类型的定义与检查、时钟同步检查、因果循环检测以及初始化检查等关键环节。最后,文章展示了从中间语言到C代码的转换过程,并通过简单计数器和条件块的例子,说明了不同级别的优化措施。 适用人群:计算机科学专业学生、软件工程师及对嵌入式系统开发感兴趣的开发者。 使用场景及目标:①理解SCADE模型的编译原理,掌握其编译流程;②学习如何通过编译器进行类型安全检查、时钟同步验证和因果关系分析;③了解编译优化的不同级别及其对最终生成代码的影响。 其他说明:本文档适合有一定编程基础和技术背景的读者,特别是那些希望深入了解SCADE工具链工作原理的人。建议读者在阅读时结合具体的代码示例进行实践,以便更好地理解编译过程中的各个环节。

2025-05-23

[巴黎理工学院] ROB301 模型驱动设计与代码生成(2024) 第三课 Scade Suite 状态机部分建模

[巴黎理工学院] ROB301 模型驱动设计与代码生成(2024) 第三课 Scade Suite 状态机部分建模 内容概要:本文档详细介绍了嵌入式软件(又称反应式程序)的概念及其自动代码生成技术。嵌入式软件的特点是持续响应来自物理环境的输入并产生输出,其执行过程被描述为离散时间动态,即一系列反应序列。文中强调了反应式软件的确定性和有限内存使用,并讨论了两种实现方式:基于采样的循环和基于事件的循环。此外,文档还深入探讨了SCADE语言的功能,包括数据流方程和状态机的应用,以及如何定义操作符、状态和转换。特别提到了同步解释、弱强抢占、信号和局部变量的作用,并展示了如何通过SCADE工具实现具体控制器的设计。 适合人群:具备计算机科学背景,尤其是对嵌入式系统或实时操作系统有一定了解的研发人员和技术爱好者。 使用场景及目标:①理解嵌入式软件的基本原理和特点;②掌握SCADE语言的核心概念,如数据流方程、状态机、操作符定义等;③学习如何利用SCADE工具进行复杂系统的建模与仿真;④探索反应式程序的设计模式,如基于采样的循环和基于事件的循环。 其他说明:本文档适用于对嵌入式系统开发感兴趣的读者,特别是那些希望深入了解SCADE语言及其应用的人士。文档不仅提供了理论知识,还结合了实际案例,有助于读者更好地理解和应用所学内容。

2025-05-23

[巴黎理工学院] ROB301 模型驱动设计与代码生成(2024) 第二课 Scade Suite 数据流部分

本次课程为 [巴黎理工学院] ROB301 模型驱动设计与代码生成(2024) 第二课 Scade Suite 数据流部分 内容概要:本文介绍了嵌入式软件(即反应式程序)的概念及其在离散时间动态下的执行特性,强调了输入与输出之间的关系以及确定性和有限内存使用的重要性。文中详细讲解了反应式程序的两种实现方式——基于采样的无限循环和基于事件的无限循环,并介绍了SCADE语言的基本概念,如数据流方程、流、操作符(包括逻辑运算符、算术运算符、比较运算符等)、节点定义及其约束条件。此外,文章还讨论了预操作符(pre)、初始值设定(fby)、合并操作符(merge)、激活机制(activate)以及重启机制(restart),并通过具体例子展示了这些概念的应用。 适合人群:具有计算机科学背景或对嵌入式系统开发感兴趣的本科生、研究生及工程师。 使用场景及目标:①理解嵌入式软件的工作原理,特别是它们如何响应来自物理环境的输入并产生相应的输出;②掌握SCADE语言的核心概念和编程技巧,能够使用SCADE进行简单到复杂的反应式系统的建模与开发;③熟悉并能应用各种操作符来处理不同类型的数据流,确保系统的实时性和可靠性。 其他说明:为了更好地理解和实践文中提到的技术,建议读者在学习过程中多动手编写代码,并利用SCADE工具进行模拟实验,同时关注计算时间和内存使用的优化,以确保所设计的系统能够在实际环境中稳定运行。

2025-05-23

【Scade编译器实现】基于时钟导向的模块化代码生成技术在同步数据流语言中的应用:面向实时系统的高效代码编译方法研究 (Biernacki 2008)

内容概要:本文详细介绍了同步数据流语言到顺序代码的模块化编译方法。作者们提出了一种基于时钟导向的编译技术,旨在将同步块图编译成顺序代码。所考虑的源语言是一种类似于LUSTRE的一阶函数语言,扩展了n元合并运算符、重置构造以及更丰富的时钟概念。为了表示转换函数,引入了一种通用的对象中间语言。文中还描述了从中间语言到JAVA和C的目标代码生成过程。时钟在翻译过程中起着关键作用,用于生成高效的控制结构。此外,本文还讨论了与现有编译器的区别,并强调了模块化编译对于单独编译、代码可追溯性的重要性。; 适合人群:对编译原理、同步语言和实时系统感兴趣的计算机科学专业研究人员,特别是从事嵌入式系统开发的工程师。; 使用场景及目标:①理解同步语言(如LUSTRE)的编译原理及其模块化编译方法;②研究时钟导向的代码生成技术,优化代码效率;③为开发经过数学验证的编译器提供理论支持。; 其他说明:本文不仅提供了详细的编译步骤和技术细节,还探讨了未来工作的方向,包括进一步优化编译过程和探索更多高级特性。文章最后提到,这些研究成果已应用于SCADE 6的实际开发中,展示了其实际应用价值。

2025-05-23

【编译器技术】Lustre编译器同步数据流方程的翻译验证:SCADE编译器的形式化认证工具设计与实现 - 项目愿景描述(2010)

约2010年,巴黎高师 Marc Pouzet 等人发布了《Translation validation for synchronous data-flow equations in a Lustre compiler》项目的愿景描述。 内容概要:本文探讨了在Lustre编译器中对同步数据流方程进行翻译验证的方法,旨在为SCADE编译器提供正式认证工具支持。SCADE是用于关键领域(如核能、航空、铁路和汽车)实现反应系统的标准语言。由于需要满足最高安全标准(DO-178C级别A),SCADE编译器的修改非常复杂。翻译验证旨在确保源代码与编译生成代码在编译时的等价性。该项目将设计一种独立工具,直接在SCADE编译器的中间表示上操作,定义时钟数据流方程的标准形式及相关操作函数,并确定编译器提供的信息,以便简化语义检查的实现和形式化。此外,项目可能利用外部SMT求解器或在定理证明器中实现专用检查函数。长期目标是为SCADE 6工业编译器提供正式认证工具,并为成功的候选人提供攻读博士学位的机会。 适合人群:对编程语言设计和实现有兴趣的研究人员,具有函数式编程经验,熟悉Coq或Isabelle等证明助手者优先。 使用场景及目标:①探索SCADE编译器的形式化认证方法;②设计并实现翻译验证工具,确保编译过程中源代码与生成代码的等价性;③提高编译器的安全性和维护性,满足认证机构的要求。 阅读建议:本文涉及复杂的编译器理论和技术细节,建议读者具备一定的编译原理和形式验证背景,同时关注同步数据流语言的特点及其在关键领域的应用。

2025-05-18

【ERTS2012 - 航天器星载软件】基于形式化模型驱动工程的航天器星载软件开发流程设计与验证:从系统建模到SPARK代码生成

文本是 ERTS 2012 嵌入式实时系统会议的文章《航天器星载软件形式化模型驱动工程》。 内容概要:本文介绍了欧洲空间局(ESA)主导的FMDE项目,旨在通过形式化模型驱动工程提高航天器星载软件的开发质量和效率。FMDE项目基于三个核心原则:1) 使用安全无歧义的语言(如SysML、SCADE、Ada和SPARK)进行每个开发步骤的形式化;2) 引入形式化方法增强系统可信度;3) 利用模型转换技术优化从系统设计到软件实现的逐步细化。文中详细描述了OMEGA SysML配置文件用于系统建模、IFx-OMEGA平台提供的验证工具、SCADE System Designer将系统模型自动转换为软件模型的功能,以及SPARK语言在确保代码正确性和安全性方面的应用。最后,通过ATV太阳能发电系统(SGS)案例研究展示了该方法的有效性。 适合人群:从事航天器或其他复杂嵌入式系统开发的研究人员、工程师和项目经理,特别是那些关注系统与软件协同设计及验证的人士。 使用场景及目标:①减少系统与软件团队之间的误解,避免因需求解释不清导致的问题;②降低验证和测试成本,提高最终系统的质量;③通过形式化验证确保软件的安全性和可靠性,特别是在高完整性系统中。 其他说明:FMDE方法虽然增加了初期开发的复杂度,但能显著减少后期测试和集成的成本。为了充分利用该方法,相关人员需要接受SysML、Omega、SCADE、Ada和SPARK的培训。此外,FMDE技术已在多个实际项目中得到应用并取得良好效果,如Ariane 5中期进化计划和Homer项目等。

2025-05-10

形式化模型检查工具 lesar (ubuntu 22.04)

Verimag 发布的形式化模型检查工具 lesar, 可用于对 lustre 语言编写的程序进行模型检查。 部署平台为 Ubuntu 22.04。

2025-04-24

SCADE 6:面向嵌入式关键软件开发的形式化语言

Scade 6 语言是Scade Suite 产品中使用的建模语言。Scade 语言的设计者 JL Colaco, Bruno Pagano, Marc Pouzet 等人在 TASE 2017 上发表了《Scade 6: A Formal Language for Embedded Critical Software Development》介绍Scade 6 语言。 内容概要:本文介绍了用于开发安全关键嵌入式控制软件的高级语言和环境——SCADE 6。SCADE 6 基于同步数据流语言Lustre,结合了控制结构(如Esterel和SyncCharts),并引入了静态分析和编译技术,确保安全性。文章详细描述了SCADE 6的核心语言特性,包括数据流和控制流的混合、数组处理、模块化重置、静态语义、时钟检查、因果分析和初始化分析。此外,文中还讨论了编译器架构及其代码生成过程,并简述了未来发展方向,如连续时间建模能力的增加。 适用人群:具备嵌入式系统开发经验,特别是从事航空、核电、交通、汽车等领域安全关键应用的工程师和技术人员。 使用场景及目标:①开发需要高可靠性和安全性的嵌入式控制系统;②确保生成的代码符合DO-178C、IEC 61508等国际标准;③提高开发效率,减少手动编码错误;④支持复杂系统的建模与仿真,验证系统行为是否符合预期。 其他说明:SCADE 6不仅提供了图形化编辑工具,还具备强大的文本支持,使得状态机和数据流方程能够简洁地表示复杂交互逻辑。编译器采用OCaml实现,具有严格的类型系统和形式化验证机制,保证了编译结果的正确性。此外,SCADE 6还在不断演进,未来可能加入连续时间建模功能,进一步扩展其应用场景。

2025-04-20

[Scade One] Swan语言基础语法与扩展特性解析:面向嵌入式系统的同步编程语言设计

Swan 是 Scade 6 语言的下一代技术。文档是Scade语言,同时也是Swan语言设计者 JL Colaco 主编的语言教程。 内容概要:本文档是Swan语言文档的摘录,旨在为从业者提供Swan语言相对于Scade 6的新特性和变更的简明介绍。文档内容涵盖了Swan语言的语法、新特性以及与Scade 6相比的变化。具体包括语法定义、注释、符号、关键字、声明、表达式等基本元素;扩展特性如组、模块和命名空间、新的构造函数(如时间窗口、空间窗口操作符pack、数组展平、标记联合等);以及Scade 6到Swan的变更,如移除fby、部分迭代器、"sharp"操作符等。此外,文档还详细介绍了模块和命名空间的使用、匿名操作符、操作符的部分应用、forward迭代、图块图、默认参数值、内联操作符等方面的内容。 适合人群:熟悉Scade 6及其编程范式的软件工程师或研究人员,尤其是从事嵌入式系统开发和模型验证的专业人士。 使用场景及目标:帮助用户快速掌握Swan语言的核心概念和新特性,适用于希望从Scade 6迁移到Swan语言的开发者,或者希望了解Swan语言特性的新手。主要目标包括理解Swan语言的语法和语义、掌握新特性的使用方法、了解与Scade 6相比的变化,以便更好地进行模型开发和验证。 阅读建议:此文档不仅提供了Swan语言的语法和语义介绍,还通过小例子展示了新特性,因此在学习过程中应结合实际例子进行实践,并注意理解每个特性的应用场景和使用方式。对于有Scade 6背景的读者来说,特别要注意文档中提到的变更部分,以确保平稳过渡到Swan语言。

2025-04-20

[巴黎高师课程] 同步反应式系统第8课(下)- 基于类型的时钟演算

[巴黎高师课程] 同步反应式系统第8课(下)- 基于类型的时钟演算 内容概要:本文介绍了基于类型的时钟演算(Type-based Clock Calculi),由 Marc Pouzet 编写。文章探讨了不同场景下“同步”和“时钟”的解释,包括 Kahn 进程网络、周期采样系统以及同步 Kahn 网络。文中详细描述了同步数据流模型(SDF)及其扩展,强调了时钟作为时间域的重要性。时钟演算作为一种类型系统,用于确保程序可以同步执行而无需缓冲机制。它通过关联表达式的时钟类型来指定何时产生值,并确保程序的静态调度正确性和安全性。此外,文章还讨论了时钟类型推理和验证的方法,以及在代码生成中的应用。最后,文章回顾了时钟演算的历史发展及其在不同编译器中的实现,如 Lucid Synchrone 和 Lustre。 适合人群:计算机科学领域的研究人员、研究生以及对同步系统、时钟类型系统和实时系统感兴趣的开发人员。 使用场景及目标:①理解同步数据流模型(SDF)和周期采样系统的概念;②掌握时钟演算的基本原理及其在编程语言中的应用;③学习如何利用时钟类型系统进行静态检查和优化代码生成;④探索时钟演算在不同编译器中的实现和改进。 其他说明:本文不仅提供了理论背景,还详细介绍了时钟演算的具体规则和算法实现。对于希望深入了解同步系统和时钟类型系统的读者,建议结合实际案例进行研究,并参考相关文献进一步学习。

2025-04-13

[巴黎高师课程] 同步反应式系统第8课(上)- 因果分析

[巴黎高师课程] 同步反应式系统第8课(上)- 因果分析 内容概要:本文探讨了同步程序中的因果关系分析,主要围绕三个实际问题展开:系统的确定性、无死锁性和代码是否能在有限的时间和空间内运行。文章介绍了几种同步语言(如Lustre、Esterel和Signal)对即时循环的不同处理方式,其中Lustre采用静态拒绝即时循环的方法,而Esterel和Signal则允许在特定条件下存在循环。文中还详细解释了如何通过类型系统表示输入输出的即时依赖关系,并提出了基于类型的因果关系表示方法。此外,文章讨论了如何在保持因果关系的前提下,生成静态调度代码,以及如何处理高阶函数的内联问题。最后,文章提出了一些开放性问题,如因果关系类型的简化算法和非线性函数的处理。 适合人群:具备计算机科学背景,尤其是对编译器设计、同步编程语言和类型系统有一定了解的研究人员和技术人员。 使用场景及目标:①理解同步语言中因果关系的重要性及其对系统行为的影响;②学习如何通过类型系统确保程序的因果一致性;③掌握在编译过程中如何生成高效的静态调度代码,避免死锁和无限递归等问题。 其他说明:本文不仅涉及理论分析,还包括具体的例子和代码片段,帮助读者更好地理解因果关系分析的实际应用。此外,文章引用了大量相关文献,为深入研究提供了丰富的参考资料。阅读时应关注不同类型系统的因果关系处理差异,以及如何将这些理论应用于实际编程实践中。

2025-04-13

[巴黎高师课程] 同步反应式系统第7课(下)- 同步数据流语言核心拓展(控制结构)语义

[巴黎高师课程] 同步反应式系统第7课(下)- 同步数据流语言核心拓展(控制结构)语义 内容概要:本文档《control-structures.pdf》由 Marc Pouzet 编写,是巴黎高等师范学院的课程笔记,主要讨论了协作同步语义(Coiterative Synchronous Semantics)第二部分:控制结构。文档介绍了扩展语言内核的方法,包括局部变量、最后值(last)、默认值、按情况定义流(by-case definition of streams)、互递归定义(mutually recursive definitions)以及分层自动机(hierarchical automata)。这些扩展借鉴了Lucid Synchrone、Zélus和Scade 6等语言的特点。文档详细解释了这些扩展的语法和语义,并提供了具体的例子和形式化定义。此外,还探讨了条件表达式、匹配表达式和自动机转换函数的语义。; 适合人群:计算机科学专业学生或研究人员,特别是对同步数据流语言、状态机及其语义感兴趣的读者。; 使用场景及目标:①理解同步数据流语言中的控制结构扩展;②学习如何定义和解释这些扩展的语义;③通过具体例子和形式化定义加深对语言特性的理解。; 其他说明:文档不仅提供了理论上的解释,还包括了一些练习和问题,鼓励读者通过实际编程(如Haskell或OCaml)来实现和验证这些概念。此外,文档引用了相关文献,为有兴趣深入研究的读者提供了进一步阅读的方向。

2025-04-13

[巴黎高师课程] 同步反应式系统第7课(上)- 同步数据流语言语义

[巴黎高师课程] 同步反应式系统第7课(上)- 同步数据流语言语义 内容概要:本文介绍了同步数据流语言的共迭代语义,旨在定义一种可执行且构造性的参考语义。作者通过引入无限流的两种经典表示方法(共归纳类型和自然数到值的函数)来定义流语义,并探讨了如何将递归方程转换为非递归形式,从而避免固定点计算。文中还讨论了如何处理非长度保持的流函数以及带有空值的流,提出了时钟流的概念,并展示了如何利用时钟信息确保程序的因果关系和静态类型约束。最后,文章提出了若干未来研究方向,如将该语义应用于编译器验证和基于集的程序模拟。 适合人群:计算机科学专业的研究生或研究人员,特别是对同步数据流语言、编译器设计和形式化验证感兴趣的读者。 使用场景及目标:①理解同步数据流语言的语义及其构造性解释;②学习如何将递归方程转换为非递归形式;③掌握处理非长度保持流函数的方法;④探索时钟流的应用及其对程序因果关系的影响。 其他说明:本文基于多个技术报告和技术论文,提供了丰富的理论背景和实例分析。读者可以通过提供的参考资料进一步深入了解相关主题。此外,文中涉及的某些概念和技术可能需要一定的数学和编程基础,尤其是对函数式编程和形式化方法的理解。

2025-04-13

[巴黎高师课程] 同步反应式系统第6课 - Kahn进程网络理论及应用

[巴黎高师课程] 同步反应式系统第6课 - Kahn进程网络理论及应用 内容概要:本文档介绍了 Kahn Process Networks (KPN) 的理论及其应用,特别是其在确定性并行编程中的语义。文档首先解释了 KPN 的基本概念,包括通过 FIFO 队列异步通信的顺序进程集合、进程间的函数表示法以及消息传递的基本假设(如读取空队列时阻塞)。接着,文档详细探讨了 Kahn 语义,即通过流函数定义进程的行为,并讨论了流操作符的连续性和最小不动点的存在性。此外,文档还涉及了 KPN 在实时和嵌入式系统中的应用限制,以及如何通过引入时钟机制来增强其适用性。最后,文档展示了如何在 Haskell 和 OCaml 中实现 KPN,并讨论了时钟抽象、同步关系和缓冲区大小计算等高级主题。 适合人群:具备计算机科学背景的研究人员、研究生以及对并行编程、实时系统设计感兴趣的工程师。 使用场景及目标:①理解确定性并行编程模型及其语义;②掌握 Kahn Process Networks 的核心概念和实现方法;③学习如何通过时钟机制改进 KPN 的性能和适用性;④探索 KPN 在视频处理、图像嵌入等实际应用中的优化技术。 其他说明:本文档不仅提供了理论上的深入探讨,还结合了具体的编程示例和实现细节,使读者能够在实践中验证所学内容。此外,文档还引用了大量相关文献,为有兴趣深入了解该领域的读者提供了丰富的参考资料。

2025-04-13

[巴黎高师课程] 同步反应式系统第5课 - 同步数据流网络模块化静态调度及代码生成方法

[巴黎高师课程] 同步反应式系统第5课 - 同步数据流网络模块化静态调度及代码生成方法 内容概要:本文探讨了同步数据流网络(如LUSTRE、SCADE、SIMULINK)的静态调度问题及其代码生成方法。文章首先介绍了将并行数据流网络转换为顺序执行程序的需求和原因,如提高效率、确保时间可预测性(尤其对于实时系统)以及当前Worst Case Execution Time (WCET) 分析工具仅适用于顺序代码。接着,详细讨论了三种处理反馈回路的方法:黑盒法、白盒法和灰盒法。黑盒法通过将用户定义节点视为即时节点来保证模块化编译,但可能拒绝因果正确的反馈;白盒法则通过递归内联节点来允许所有正确反馈,但失去模块化编译的优势;灰盒法则尝试找到最小化的块集及其依赖关系,从而解决反馈问题。文章进一步提出了基于输入/输出分析的编码方法,以优化静态调度问题(OSS),并在实际实验中验证了该方法的有效性。; 适合人群:对编译原理、实时系统、嵌入式软件开发感兴趣的计算机科学专业学生或研究人员,尤其是从事同步数据流语言(如LUSTRE、SCADE、SIMULINK)相关工作的工程师。; 使用场景及目标:①了解并行数据流网络到顺序代码的转换过程及其必要性;②掌握不同反馈回路处理方法的特点与应用场景;③深入理解基于输入/输出分析的最优静态调度问题求解方法及其在实际项目中的应用。; 其他说明:本文不仅提供了理论分析,还展示了具体的实验结果,证明了所提方法在大多数情况下可以快速找到最优解,即使面对复杂系统也能有效应对。此外,附录中提供了用于实验的OCaml源代码,便于读者进行进一步研究和实践。

2025-04-13

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除