01
类型检查器概述
什么是类型检查器 · 为什么需要 · 在硬件设计流程中的位置
基础概念
02
硬件描述语言基础回顾
Verilog/VHDL数据类型 · 信号与变量 · 模块与端口
VerilogVHDL
03
类型系统基础
强类型与弱类型 · 静态与动态 · 类型等价与兼容
理论核心
04
词法分析器设计
Token定义 · 关键字识别 · 标识符 · 数字字面量解析
词法实现
05
语法分析器基础
上下文无关文法 · 递归下降解析 · 抽象语法树(AST)
语法AST
06
类型表达式
基本类型 · 复合类型(数组/结构体) · 参数化类型
类型结构
07
类型环境与上下文
符号表设计 · 作用域管理 · 类型环境传递
符号表作用域
08
类型推断基础
类型变量 · 约束生成 · 约束求解入门
推断约束
09
类型检查算法
推导规则 · 统一算法 · Hindley-Milner系统
算法HM
10
硬件特有类型
位宽类型 · 有符号/无符号 · 多驱动类型检查
硬件位宽
11
组合逻辑类型检查
赋值兼容性 · 运算符规则 · 条件表达式类型
组合逻辑检查
12
时序逻辑类型检查
寄存器类型 · 时钟域 · 复位类型检查
时序寄存器
13
模块实例化类型检查
端口匹配 · 参数传递 · 泛型实例化
实例化参数
14
函数与任务类型检查
函数签名 · 参数类型 · 返回值类型
函数任务
15
接口与协议类型检查
接口类型定义 · 协议兼容性 · 方向类型
接口协议
16
类型错误报告
错误定位 · 信息格式化 · 友好错误提示
错误诊断
17
类型检查器架构设计
前端-中端-后端 · 模块划分 · 接口设计
架构设计
18
中间表示(IR)设计
类型化IR · 类型信息编码 · IR转换
IR中间表示
19
实现语言选择
Python vs OCaml vs Haskell vs Rust
语言对比
20
Python实现类型检查器
数据结构设计 · 核心算法 · 测试框架
Python实现
21
OCaml实现类型检查器
代数数据类型 · 模式匹配 · 函子应用
OCaml函数式
22
Haskell实现类型检查器
Monad设计 · 类型类 · 惰性求值
HaskellMonad
23
Rust实现类型检查器
所有权模型 · 生命周期 · trait系统
Rust安全
24
类型检查器性能优化
缓存策略 · 增量检查 · 并行化
性能优化
25
类型检查器测试
单元测试 · 集成测试 · 回归测试 · 模糊测试
测试质量
26
与综合工具集成
Yosys · Vivado · Quartus 集成
集成EDA
27
高级类型系统特性
依赖类型 · 细化类型 · 线性类型
前沿研究
28
现有工具分析
Verilator · SystemVerilog · Chisel 类型系统
工具分析
29
项目实战:微型类型检查器
从零构建一个微型类型检查器
实战项目
30
未来趋势
形式化验证 · AI辅助 · 类型系统标准化
趋势展望