自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SWAN(Scade One) 语言原理介绍

SCADE 团队于2024年推出了下一代 SCADE 工具 Scade One,工具的建模语言也基于Scade 6 进行了演化。在语言命名方面,并没有复用"Scade"这一标志性的名称,而是使用了新的名字:Swan。在本篇中,将叙述 Swan 语言的原理。更详细的内容,可参考 Scade One 文档中的材料《Introduction to Swan Language Principles》。

2025-06-08 18:15:23 774

原创 Scade 语言概念 - 方程(equation)

本文介绍了Scade 6语言中方程(equation)的基本概念与文法结构。方程是Scade程序中的核心语言元素,由等号左侧的标识符(lhs)和右侧表达式(expr)组成。文章特别说明equation在中文语境中译为"方程"更符合其控制工程背景。方程文法包括简单方程、断言、信号发射和控制块等多种形式,其中重点阐述了简单方程(simple_equation)的语法结构。文章还通过代码示例展示了方程的实际应用场景,包括自定义算子定义体和数据流定义中的使用方式。

2025-06-07 23:02:23 422

原创 对选择基于模型编程(MBD)的工作对职业发展影响的讨论 (2025)

基于模型编程(MBD)的职业发展探讨 从业者对Simulink等MBD工具的职业前景看法不一。支持者认为其在控制系统(如马达、传感器、航天等领域)具有显著优势,尤其是图形化开发和快速仿真验证能力。汽车、重型机械等行业仍将其作为标准方案。但反对者指出,随着软件定义汽车(SDV)兴起,Waymo等企业更倾向纯代码开发,因后者更易实现自动化测试和CI/CD。关键分歧在于:MBD适合需要领域知识的控制类工作,而纯编码更适应新兴软件密集型场景。工具价值取决于具体应用场景,需结合行业趋势与个人职业规划选择。

2025-06-01 21:37:27 327

原创 一位汽车行业从业人员对Simulink热度变化的观察与讨论 (2024)

汽车行业出现从Simulink转向C++技术栈的趋势,但业内意见不一。有从业者指出,Simulink仍在控制算法领域广泛应用,尤其适合数学密集型任务;也有观点认为航天领域将继续增长使用,仅因高昂许可费可能成为弃用原因。行业对可视化编程语言的未来存在分歧。

2025-06-01 17:06:40 321

原创 [ENSTA Paris - ROB301] Scade/Simulink 模型驱动设计与代码生成(2024)

Alexandre Chapoutot在ENSTA Paris开设的《模型驱动设计与代码生成》课程(ROB301)系统介绍了高安全嵌入式软件开发方法。课程内容分为六部分:1)高安全嵌入式软件概述与标准;2)ANSYS Scade Suite数据流建模技术;3)Scade状态机建模方法;4)Scade模型编译流程与中间表示;5)软件架构复杂度分析与测试方法;6)Simulink/Stateflow混合系统建模。

2025-05-25 10:35:09 731 2

原创 为 Scade 6 编译器提供形式化认证工具的考虑 (2010)

在2010年,巴黎高师的Marc Pouzet与INRIA的Nardelli提出了一个长期项目,旨在为Scade 6编译器开发形式化认证工具。这一想法源于对Scade编译器认证成本高昂的观察,尽管Scade在安全关键领域已成为标准,但其编译器的任何修改都会导致显著的认证成本。项目目标是设计一个独立工具,用于验证Scade编译器在编译过程中各中间阶段的等价性,从而降低认证成本。项目计划从简化的Lustre编译器入手,逐步扩展到Scade 6的复杂功能。

2025-05-22 20:19:31 899

原创 SCADE One(Swan) 建模语言特性需求归纳方法

Scade One 是 Scade 6 的下一代产品,其形式化建模语言命名为 Swan (S-One)。Scade 团队在 GitHub 上发布了 Swan 语言的介绍材料《The Swan Language Primer》,该材料基于 Scade One 软件需求规约 (SO-SRS-001),主要聚焦于语言语法、新增特性及对 SCADE 6 的修改。材料假设读者熟悉 SCADE 6,并面向 Swan 语言的学习者而非开发者,因此移除了面向编译器开发者的形式化描述。

2025-05-18 00:41:18 320

原创 [ERTS2012] 航天器星载软件形式化模型驱动研发 —— 对 Scade 语言本身的影响

在 ERTS 2012 会议上,Scade 团队展示了 Scade 6 在航天器星载软件开发中的应用,特别是如何通过 Scade 建模生成 SPARK 代码。这一过程促使 Scade 6 语言特性得到拓展,尤其是数值类型的层次化细分。

2025-05-11 21:42:53 316

原创 如何掌握 Lustre/Scade 同步数据流语言

从 KPN 的萌芽开始,到 Lustre/Scade 的发展,再到 Velus/Zelus/Swan 在形式化编译、连续时间建模、MBD 平权等各方面的边界拓展,同步数据流语言已经历许多。现在,我们讨论如何掌握 Lustre/Scade 这类法式技术,从语言基础,到当前发展。

2025-05-02 23:09:32 1104 1

原创 从 Eclipse Papyrus / XText 转向.NET —— SCADE MBD技术的演化

从KPN的萌芽开始,到SCADE的推出,再到`Scade 6`的技术更迭,SCADE 基于模型的开发技术已经历许多。现在,`Scade One` 已开启全新的探索 —— 从 `Eclipse Papyrus / XText` 转向`.NET 8`跨平台应用。

2025-05-02 18:19:34 517

原创 Lustre/Scade 形式化语义基础 —— KPN (1974)

Kahn进程网络(Kahn Process Network, KPN)是由Gilles Kahn于1974年提出的并行计算模型。其核心由若干确定性顺序进程构成,这些进程通过容量无限制的FIFO通道进行通信。每个进程从输入通道读取数据(Token),并向输出通道写入Token。在这之中,较为关键的规则在于1)读取阻塞。若通道为空,读取操作将被阻塞直至数据可用;2)写入无阻塞。假设通道容量没有边界,写入操作永不阻塞。

2025-05-02 10:02:08 1389

原创 从 Synchron 会议观察 Lustre/Scade 同步语言的演化 (1994 - 2024)

SYNCHRON (Seminar on Synchronous Reactive Programming) 是同步反应式编程技术为主题的年度研讨会。自1994年以来,历年研讨会的内容中,包含了丰富的 Lustre/Scade 等同步语言技术设计讨论。参与者中,除了常年出现的法国群星,也能看到中国清华L2C团队的工作。

2025-04-29 22:00:33 723

原创 Lustre/Scade 语言时序算子与形式化验证的联系

Lustre 与 Scade 语言的特点之一为用于形式化验证的时序逻辑性质,可用 Lustre / Scade 语言本身编写描述,而不用引入新的时序逻辑。

2025-04-28 20:24:23 296

原创 Lustre/Scade/Swan 语义性质中的因果性分析介绍

对同步数据流语言,如Lustre/Scade/Swan等,所编写的程序在需要满足“不包含循环”的性质。方程组无解比如方程x = x + 1无解。比如如下方程组x = y + 1y = x + 2同样无解。2)方程组有多个解比如方程x = x有多个解。而下面的方程组y = xx = y同样有多个解。有多个解的方程组,就有“非确定性”的性质。不论是对无解的方程组情况,还是有多个解的方程组的情况,在关键嵌入式系统中,只能接受方程组有唯一解的情形。

2025-04-26 20:57:38 420

原创 Lesar: 面向 Lustre/Scade 语言的形式化模型检测工具

Lesar 是 Verimag 研发维护的形式化方法模型检查工具。

2025-04-25 22:25:17 735

原创 [Scade One] Swan 图形化建模技术的形式化文法

在 Swan 的语言定义中,在词法部分新引入了diagram关键字。diagram是新引入的描述图形化建模程序的语法符号。

2025-04-20 15:34:00 340

原创 Scade 语法介绍

Scade 6 作为一种领域特定语言(DSL),与其他同类的面向自动控制工程师建模的 DSL(如Simulink)相比,一个显著不同为Scade语言具有形式化定义。语言具有形式化定义,意味着在语法(syntax)方面具备形式化描述的明确定义,在语义(semantics)方面同样具备形式化描述的明确定义。在之前的讨论中,已经讨论了 Scade 的词法,本篇将简要讨论 Scade 的语法。

2025-04-20 11:14:19 1130

原创 Scade 语言词法介绍

Scade 6 是一种具备形式化语法与形式化语义的领域特定语言。

2025-04-19 21:43:01 630

原创 [巴黎高师课程] 同步反应式系统(2024-2025) 课程参考材料

在2024-2025学期的巴黎高师MPRI硕士课程中,包含了Marc Pouzet 与 Timothy Bourke 讲授的同步反应式系统。该课程的主题覆盖了同步语言的语义与逻辑基础、同步语言的编译技术、面向同步语言的模型检测形式化验证等。课程中的各节课最后也补充了与课程主题相关的参考材料,内容分别如下。

2025-04-13 15:02:07 595

原创 [Scade One] Swan与Scade 6的区别 - signal 特性的移除

Scade 作为对离散时间模型的建模方案,在连续时间模型建模方面,早自2015年起就有Scade hybrid语言特性试验。

2025-04-09 20:44:10 262

原创 从ERTS会议学习Scade的发展

ERTS(Embedded Real Time System)会议是每双年在法国图卢兹举办的科技会议。ANSYS Scade, 及2012年被收购前的Esterel Scade,都会在该平台上发表Scade相关成果。下面列举一些Scade 在ERTS上历年的成果发表,从内容中,可学习到Scade技术的发展。

2025-04-07 22:42:35 338

原创 使用Scade实现神经网络算法

这篇论文为安全关键系统中神经网络的应用提供了一种系统化的工作流,并通过无人机避障案例展示了其可行性。该方法结合了形式化语言、强化学习和鲁棒性分析,为未来安全关键系统的开发提供了重要参考。

2025-04-07 22:30:00 428

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

课程主要介绍了Lustre语言及其扩展,用于同步反应系统的设计与实现,以及其他语言如Scade 6, Heptagon等。课程中首先概述了Lustre的核心理念,即通过数学方程直接编写程序规范,并对其进行分析、转换、模拟、测试和验证,最终自动生成可执行代码。接下来详细讲解了Lustre中的数组、模块化复位(modular reset)以及状态机的实现方式。对于数组,文章对比了Lustre v4和v6的不同处理方法,强调了现代Lustre数组作为不可变数据结构的特点。

2025-04-05 19:23:21 343

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

本节课讨论了基于SMT(Satisfiability Modulo Theories)的转换系统模型检验技术,涵盖从基本概念到具体应用的多个方面。课程中讨论了两种性质:安全性和活性性质,并解释了它们在系统验证中的重要性。接着详细介绍了SMT求解器的基础知识,包括SAT求解器的发展历程及其与SMT求解器的关系。随后讨论了模型检验的不同方法,如显式状态枚举、基于BDD的算法、有界模型检验和k-归纳法等。特别地,文章深入探讨了k-归纳法的具体实现和优化策略,包括路径压缩和抽象化技术。

2025-04-05 18:28:22 356

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

Zélus用于探索设计和实现混合系统建模语言及工具(类似Simulink/Stateflow和Modelica)的新方法。它继承了为同步语言开发的原理与编译技术,并将其扩展至处理离散与连续时间混合的模型。(1) 通过强制所有不连续点与过零事件或时间事件对齐,杜绝离散与连续时间系统的错误组合;(2) 静态拒绝含瞬时因果循环的定点方程;(3) 静态拦截可能依赖未初始化值的信号程序。

2025-04-05 18:06:58 35

原创 [巴黎高师课程] 同步反应式系统(2024-2025)第四课 - Velus: ‌经 Coq 验证的 Lustre 编译器

Vélus项目是一项持续开展的长期研究,旨在将交互式定理证明器中的形式化规范与验证技术拓展至基于模型开发(Model-Based Development)所涉及的编程语言、工具及应用领域。该项目专注于Lustre和Scade等数据流同步语言的研究工作,并以Coq为开发环境。该项目最核心的成果是经过形式化验证的Vélus Lustre编译器。该编译器可视为CompCert编译器框架在Lustre语言编译领域的延伸实现。

2025-04-05 17:47:31 257

原创 [巴黎高师课程] 同步反应式系统(2024-2025)

在2024-2025学期的巴黎高师MPRI硕士课程中,包含了Marc Pouzet 与 Timothy Bourke 讲授的同步反应式系统。该课程的主题覆盖了同步语言的语义与逻辑基础、同步语言的编译技术、面向同步语言的模型检测形式化验证等。详细内容可参考 MPRI 中该课程介绍。

2025-04-05 14:50:51 257

原创 Scade One - 将MBD技术从少数高安全领域向更广泛的安全嵌入式软件普及

Scade One是继Scade Suite version 6自2008年起发展近20年后的首次主要改进版本。在Scade One发布的同时,Scade团队发布了一系列介绍Scade One的博客。本篇是其中的一部分。在后面的内容中,将复述博客中的要点。

2025-04-05 12:37:47 584

原创 SCADE One - 弥合基于模型设计与传统编程之间的鸿沟

Scade One是继Scade Suite version 6自2008年起发展近20年后的首次主要改进版本。在Scade One首版次发布数月前,Scade团队发布了一系列介绍Scade One的博客。本篇`Scade One – Bridging the Gap between Model-Based Design and Traditional Programming`是其中的一部分。在后面的内容中,将复述博客中的要点。

2025-04-05 11:06:13 896

原创 Scade One - 可视化编程体验

Scade One是继Scade Suite version 6 自2008年起发展近20年后的首次主要改进版本。在Scade One首版次发布数月前,Scade团队发布了一系列介绍Scade One的博客。本篇`Scade One - A Visual Coding Experience`是其中的一部分。在后面的内容中,将复述博客中的要点。

2025-04-05 09:28:00 844

原创 SCADE 6: 面向高安全软件开发的基于模型的解决方案

SCADE是一种专为描述和实现高安全应用而开发的编程语言及工具套件。其理论基础源自实时应用领域的同步语言理论。SCADE填补了控制工程与软件工程之间的鸿沟,它为这两个领域提供了一种统一且严谨的图形化与文本化语言,这种语言体现了控制工程的核心理念.

2025-04-04 22:09:36 397

原创 ANSYS Scade One Swan语言与Scade 6的区别 - 状态机部分的改变

ANSYS Scade One 是 ANSYS Scade Suite 的后继产品。其语言Scade 6自2008推出近20年后,推出了演化后的语言Swan。Swan对比Scade 6在状态机方面进行了若干改变。

2025-03-30 13:31:57 357

原创 ANSYS Swan 语言 forward 迭代 (三) - resume 状态保持

本文将描述 forward 中将当前迭代结果保留,作为下一次迭代开始时输入的特性 forward resume。

2025-03-25 20:25:59 238

原创 ANSYS Swan 语言 forward 迭代(二) - 通用迭代计算

ANSYS Swan 相比前身 Scade 6,引入了新的迭代特性 forward。本文将描述 forward 作为通用迭代计算的使用方法。

2025-03-23 21:29:29 230

原创 ANSYS Swan 语言 forward 迭代(一) - 数组与矩阵遍历

ANSYS Swan 语言引入的 forward 迭代特性为数组和矩阵遍历提供了强大的工具。本文详细解析了 forward 的核心机制,并通过多个实战示例展示了其在数组元素变换、累加计算、显式索引访问及多数组并行处理中的应用。同时,针对矩阵遍历,介绍了显式索引法和元素直接绑定两种方法,并对比了不同设计模式的适用场景与性能影响。最后,提供了调试技巧,帮助开发者高效使用 forward 迭代。

2025-03-23 19:54:23 407

原创 Lustre 语言的 Rust 生成相关的工作

目前 Lustre V6 编译器支持编译生成的语言为C语言。但也注意到,以 Rust 语言为生成目标语言,也存在若干相关工作。

2025-03-22 09:34:02 485

原创 ANSYS Swan 条件激活与重置操作符教程

本教程介绍了ANSYS Swan中的条件激活与状态重置高阶操作符,包括activate ... default、activate ... last和restart。activate ... default允许在条件不满足时返回固定默认值,适用于条件分支数据替换;activate ... last则在条件不满足时保留历史值,适合状态保持场景。restart操作符用于周期性地将操作符重置到初始状态,特别适用于需要定期清零的计数器等应用。

2025-03-15 18:57:53 331

原创 ANSYS Swan 高阶迭代器操作符教程

ANSYS Swan 的高阶迭代器操作符为数组处理提供了高效、灵活的编程范式。本教程系统介绍了六种核心操作符:map(元素转换)、mapi(带索引的元素转换)、fold(数组归约)、foldi(带索引的归约)、mapfold(转换与累计结合)、mapfoldi(带索引的转换与累计)。

2025-03-15 11:48:05 409

原创 Swan 状态机 - 状态与迁移

Swan 语言中,也支持Scade 6中的状态机控制流结构。

2025-03-09 15:01:48 418

原创 Scade 状态机 - 同步迁移

在 Scade 控制流状态机结构支持的迁移中,迁移类型除了强迁移与弱迁移外,还支持一类被称为同步(Synchro)迁移的迁移类型。

2025-03-08 19:36:02 220

[巴黎高师课程] 同步反应式系统第一课 - 使用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关注的人

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