01
AST基础概念
什么是抽象语法树 · AST在编译器中的作用 · HDL代码与AST的映射关系
概念映射
02
AST数据结构
节点类型定义 · 树形结构遍历 · Python中AST库的基本使用
数据结构Python
03
HDL词法分析
Verilog/VHDL的词法规则 · Token生成原理 · 词法分析器实现
词法Token
04
HDL语法分析
上下文无关文法 · 递归下降解析 · LALR解析器在HDL中的应用
语法LALR
05
AST构建实战
从Verilog代码到AST的完整流程 · 手写一个简单的解析器
实战解析器
06
AST遍历模式
深度优先遍历 · 广度优先遍历 · 访问者模式在AST中的应用
遍历访问者
07
AST节点操作
节点增删改查 · 子树替换 · 节点属性修改
操作修改
08
代码优化概述
HDL代码优化的目标 · 常见优化分类 · 优化前后性能对比
优化分类
09
常量折叠优化
编译期常量计算 · 表达式简化 · 在AST层面实现常量传播
常量折叠
10
死代码消除
不可达代码检测 · 冗余赋值删除 · 条件分支简化
死代码消除
11
公共子表达式消除
重复计算检测 · 表达式缓存 · DAG图优化
CSEDAG
12
循环优化
循环展开 · 循环合并 · 循环不变代码外提
循环展开
13
寄存器优化
寄存器重命名 · 寄存器合并 · 无用寄存器删除
寄存器合并
14
组合逻辑优化
逻辑化简 · 卡诺图在AST中的应用 · 布尔代数优化
组合逻辑卡诺图
15
时序逻辑优化
状态机优化 · 状态编码 · 冗余状态消除
时序FSM
16
面积优化
资源共享 · 操作数复用 · 模块实例化优化
面积共享
17
功耗优化
门控时钟插入 · 操作数隔离 · 低功耗编码风格转换
功耗门控
18
代码风格规范化
缩进统一 · 命名规范 · 注释自动生成
风格规范
19
模块化重构
模块拆分 · 接口提取 · 层次化结构重组
重构模块
20
参数化设计优化
参数传递优化 · generate语句优化 · 条件编译优化
参数generate
21
仿真加速优化
事件驱动优化 · delta周期减少 · 仿真模型简化
仿真加速
22
综合指导优化
综合指令插入 · 综合属性设置 · 综合友好代码转换
综合指令
23
形式化验证辅助
断言自动插入 · 覆盖点生成 · 属性检查代码生成
验证断言
24
AST差分比较
版本对比 · 变更检测 · 回归测试自动化
差分比较
25
代码克隆检测
相似子树匹配 · 重复代码识别 · 模块提取建议
克隆检测
26
设计模式转换
FSM转换 · 流水线插入 · 握手协议自动生成
模式转换
27
总线协议适配
AXI/AHB协议转换 · 接口桥接自动生成
总线AXI
28
跨时钟域处理
同步器插入 · CDC检查 · 异步FIFO生成
CDC同步
29
可测试性设计
扫描链插入 · BIST电路生成 · 测试点插入
DFT扫描链
30
综合优化工具实战
开源工具Yosys的AST优化流程 · 自定义优化Pass开发
YosysPass