Analyze and submit the ALU
The final step is to turn Vivado's reports into an engineering summary. Record area proxies, timing, and power, explain what limits the design, and submit the complete repository.
Overview
This page is intentionally PPA-style:
Power
Performance
Area
But remember what you implemented.
Vivado mapped your RTL to an FPGA, not to ASIC standard cells.
That means:
- LUT count is an FPGA area proxy, not ASIC cell area
- Vivado FPGA power is not ASIC power
- FPGA routing and dedicated carry chains affect timing
- the same RTL may behave very differently in an ASIC physical-design flow
The point is to learn how to read implementation reports and reason about hardware tradeoffs.
Prerequisites
- Vivado implementation complete
- all report files exported
Steps
1. Record the adder you chose
In your README:
Adder architecture: Ripple Carry
or:
Adder architecture: Carry Lookahead
or:
Adder architecture: Carry Select
2. Read the utilization report
Open:
reports/utilization.rpt
Record at least:
- LUTs
- flip-flops/registers
- dedicated carry resources if present
Depending on the target device, the exact carry primitive name may differ.
Do not report the number of lines of Verilog as area.
3. Read the timing summary
Open:
reports/timing_summary.rpt
Record:
- requested clock period
- Worst Negative Slack, or WNS
- Total Negative Slack, or TNS
- the startpoint and endpoint of the worst setup path
Interpret WNS:
WNS >= 0 → requested setup timing is met
WNS < 0 → at least one setup path misses the constraint
Then inspect the worst path.
Ask:
- Does it pass through the adder?
- Does it pass through the final ALU output mux?
- Which operation appears to dominate the path?
- Did Vivado map the arithmetic into dedicated carry hardware?
4. Read the power report
Open:
reports/power.rpt
Record:
- Total On-Chip Power
- Dynamic Power
- Device Static Power
- power-analysis confidence level, if shown
Dynamic power is associated with switching activity.
Static power exists even when logic is not actively toggling.
For the base assignment, the normal post-route Vivado power report is enough.
5. Optional: improve power estimation with switching activity
For a more advanced result, generate a SAIF file from simulation and use that switching activity in the power report.
A typical Vivado Simulator flow uses commands such as:
open_saif alu.saif
log_saif [get_objects -r *]
run all
close_saif
Then, with the synthesized or implemented design open, read the activity file before generating power:
read_saif alu.saif
report_power -file reports/power_saif.rpt
Hierarchy names often differ between the testbench and implemented design. If Vivado reports poor SAIF matching, use the appropriate -strip_path when reading the file.
This section is optional unless your team specifically requires activity-based power analysis.
6. Check implementation health
Open:
reports/check_timing.rpt
reports/drc.rpt
Do not blindly ignore warnings.
For each serious warning or error, decide whether it is:
- expected for this educational setup
- caused by an incomplete constraint
- caused by an RTL problem
- caused by a project configuration problem
If the design has unresolved timing or DRC problems, mention them in the README.
7. Create the final results table
Put this in README.md:
## ASIC 101 ALU results
| metric | result |
|--------|-------:|
| Adder architecture | |
| Target FPGA | |
| Clock period | |
| LUTs | |
| Flip-flops | |
| Carry resources | |
| WNS | |
| TNS | |
| Total On-Chip Power | |
| Dynamic Power | |
| Device Static Power | |
| Power confidence | |
8. Write a short interpretation
Under the table, answer these questions in your own words:
- What adder architecture did you choose, and why?
- What is the critical timing path?
- Did the design meet the 100 MHz clock constraint?
- What resource appears most important to the arithmetic implementation?
- How much of the estimated power is dynamic versus static?
- What would you change if you wanted to optimize the design for speed?
- Why are these FPGA measurements not the same thing as ASIC PPA?
Keep this section short. A few sentences or bullets are enough.
9. Final repository structure
Your submission should look approximately like:
asic_101/
├── rtl/
│ ├── adder8.v
│ ├── alu_core.v
│ └── alu_top.v
├── sim/
│ └── alu_tb.v
├── constr/
│ └── alu.xdc
├── reports/
│ ├── check_timing.rpt
│ ├── drc.rpt
│ ├── power.rpt
│ ├── timing_summary.rpt
│ └── utilization.rpt
├── screenshots/
│ ├── simulation.png
│ ├── synthesized_schematic.png
│ ├── implemented_device.png
│ ├── timing_summary.png
│ └── power_summary.png
└── README.md
10. Push to GitHub
Before submitting:
git status
git add .
git commit -m "Complete ASIC 101 ALU"
git push
Make sure the reports and screenshots actually made it into the repository.
Results
A complete ASIC 101 submission demonstrates the entire introductory RTL-to-FPGA implementation loop:
specification
→ RTL
→ custom arithmetic architecture
→ exhaustive verification
→ synthesis
→ implementation
→ timing analysis
→ utilization analysis
→ power analysis
→ engineering interpretation
The next ASIC-specific step is to take verified RTL into a standard-cell physical-design flow and measure actual ASIC area, timing, and power.
Checklist
- Recorded adder architecture
- Recorded LUT and register utilization
- Recorded carry resources
- Recorded WNS and TNS
- Inspected the critical path
- Recorded total, dynamic, and static power
- Checked timing warnings
- Checked DRC warnings
- Completed the README results table
- Wrote the short engineering interpretation
- Included reports
- Included screenshots
- Pushed the final repository
Questions? Ask in the network Discord.