# Adder验证需求与计划

## 1. 验证目标

验证64位加法器的功能正确性，确保在各种输入条件下都能正确计算 a + b + cin 的结果，并正确输出 sum 和 cout。

输入：
- a: 64位加数
- b: 64位被加数
- cin: 1位进位输入

输出：
- sum: 63位和（注意：源码中定义为[WIDTH-2:0]，即63位）
- cout: 1位进位输出

## 2. 风险点分析

1. **位宽问题**：输出sum定义为63位，可能无法完整表示64位加法结果。
2. **进位处理**：cin和cout的处理是否正确，特别是在边界条件下。
3. **溢出情况**：当a+b+cin的结果超过64位时，是否会正确产生进位。
4. **边界值测试**：全0、全1、最大值、最小值等特殊输入的处理。
5. **符号处理**：虽然未明确说明为有符号数，但需考虑不同数值组合的测试。

## 3. 验证计划

### 3.1 功能测试用例

1. **基本功能测试**
   - 0 + 0 + 0
   - 1 + 1 + 0
   - 任意两个数相加，cin=0
   - 任意两个数相加，cin=1

2. **边界值测试**
   - 0 + 0 + 1
   - 0 + 最大值 + 0
   - 0 + 最大值 + 1
   - 最大值 + 最大值 + 0
   - 最大值 + 最大值 + 1
   - 全0 + 全1 + 0
   - 全1 + 全0 + 1

3. **进位测试**
   - 无进位情况
   - 有进位情况
   - 最高位进位情况

4. **特殊值测试**
   - 涉及到符号位的测试（如果需要考虑有符号数）
   - 测试所有位都为1的情况

### 3.2 验证方法

1. 使用Python编写测试用例，通过直接计算与DUT输出对比验证功能正确性。
2. 对于每个测试用例，检查sum和cout的值是否符合预期。
3. 特别关注sum只有63位的定义，确认这是否为设计意图。