practice_templates/deep_03/eda_dc_synthesis/README.md
深度实践 EDA 3-2: Design Compiler 逻辑综合实践
📚 知识点
| 知识点 | 说明 |
|---|---|
| 逻辑综合 | RTL → 门级网表的转换过程 |
| SDC 约束 | 时钟定义、I/O 延迟、面积约束 |
| 时序分析 | Setup/Hold 时序检查 |
| 面积报告 | 单元面积、总面积分析 |
| 优化策略 | 速度/面积/功耗权衡 |
🎯 任务目标
任务 1: SDC 约束编写 (30 分)
补全 sdc/constraints.sdc:
- [ ] 定义系统时钟 (50MHz, 20ns 周期)
- [ ] 设置输入延迟 (3ns)
- [ ] 设置输出延迟 (2ns)
- [ ] 设置驱动强度和负载
- [ ] 设置 false path 和 multicycle path
任务 2: DC 综合脚本 (25 分)
补全 scripts/dc_run.tcl:
- [ ] 设置目标库和链接库
- [ ] 读入 RTL 设计
- [ ] 应用 SDC 约束
- [ ] 执行综合 (compile_ultra)
- [ ] 生成报告和输出网表
任务 3: 报告分析 (25 分)
运行综合后分析报告:
- [ ] 分析时序报告 (report_timing)
- [ ] 分析面积报告 (report_area)
- [ ] 分析功耗报告 (report_power)
- [ ] 识别关键路径并提出优化建议
- [ ] 填写 reports/synthesis_analysis.md
任务 4: 综合优化 (20 分)
尝试优化综合结果:
- [ ] 修改约束收紧时序
- [ ] 使用不同的综合策略 (compile_ultra -timing)
- [ ] 对比优化前后的 PPA (Performance/Power/Area)
- [ ] 总结优化经验
📁 文件结构
├── rtl/
│ └── alu_pipeline.sv ← 需要综合的设计
├── sdc/
│ └── constraints.sdc ← ⭐ TODO: 补全 SDC 约束
├── scripts/
│ └── dc_run.tcl ← ⭐ TODO: 补全 DC 脚本
├── lib/ ← 工艺库 (链接到实际路径)
├── reports/
│ └── synthesis_analysis.md ← ⭐ TODO: 填写分析报告
├── Makefile
└── README.md
📝 考核方式
| 考核项 | 分值 | 评估方法 |
|---|---|---|
| SDC 约束正确 | 30 分 | SDC 文件内容正确 |
| DC 脚本正确 | 25 分 | 综合流程可运行 |
| 报告分析 | 25 分 | 分析文档内容准确 |
| 综合优化 | 20 分 | 优化效果+经验总结 |
| 合计 | 100 分 |
通过标准:≥ 60 分
考核流程
- 检查 SDC 约束文件
- 运行 DC 综合 (或审查脚本)
- 现场分析综合报告
- 讲解优化策略