rom[N_ITERATIONS];
};
```
**Why This is Revolutionary:**
- โ
**Zero runtime initialization cost** & **bit-accurate** for HW simulation
- โ
**Clean dependencies** (no external build steps) & **compile-time validation**
---
### CRC โ Cyclic Redundancy Check ๐
.mermaid[
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#1a73e8', 'primaryTextColor': '#fff', 'primaryBorderColor': '#fff', 'lineColor': '#f8f8f8', 'secondaryColor': '#006100', 'tertiaryColor': '#fff'}}}%%
graph LR
A[๐ฆ Data Stream\n1GB] --> B{โก Method}
B -->|Bit-by-bit| C[๐ 8 billion XORs\n๐ข Slow]
B -->|Byte LUT| D[๐ Table of 256\nPrecomputed CRCs]
D --> E[๐จ 1 billion look-ups\n๐ Fast]
style A fill:#1a73e8,color:#fff
style B fill:#e37400,color:#fff
style C fill:#b31412,color:#fff
style D fill:#137333,color:#fff
style E fill:#137333,color:#fff
]
**The 256-entry LUT** turns bit-serial work into one byte look-up:
$$ \text{crc} \leftarrow T[\;(\text{crc} \oplus b) \wedge 0\text{xFF}\;] \oplus (\text{crc} \gg 8) $$
```c
uint32_t crc_table[256]; // Precomputed table
uint32_t crc = 0xFFFFFFFF;
for (byte in data) {
crc = crc_table[(crc ^ byte) & 0xFF] ^ (crc >> 8);
}
```
**Performance:** Processing **byte-by-byte** instead of **bit-by-bit** ๐
---
### Popcount โ Hamming Weight ๐ข
.mermaid[
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#1a73e8', 'primaryTextColor': '#fff', 'primaryBorderColor': '#fff', 'lineColor': '#f8f8f8', 'secondaryColor': '#006100', 'tertiaryColor': '#fff'}}}%%
graph TD
A[๐ข 32-bit Integer\n0b1101...1011] --> B[โ๏ธ Split into 4-bit Nibbles]
B --> C["๐ Look-up Table\ncount[0]=0, count[1]=1, ... count[15]=4"]
C --> D[โ Sum 8 look-ups]
D --> E[โ
Total Bits]
style A fill:#1a73e8,color:#fff
style B fill:#e37400,color:#fff
style C fill:#137333,color:#fff
style D fill:#9334e6,color:#fff
style E fill:#137333,color:#fff
]
**Precomputed nibble table:**
$$ \text{nib} = [\,0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4\,] $$
| Method | Operations | Time |
|--------|------------|------|
| Bit Loop | 32 iterations | ๐ข Slow |
| Nibble LUT | 8 look-ups + sums | โก **12x faster** |
---
class: nord-light, middle, center
## ๐ฏ EDA Applications
---
### EDA Landscape ๐ฏ
**Electronic Design Automation Overview**
.mermaid[
flowchart TB
A[๐ป RTL Design\nVerilog/VHDL] --> B[๐ง Logic Synthesis]
B --> C[๐ Physical Design]
C --> D[๐ STA - Static Timing]
C --> E[๐ DRC/LVS Verification]
D --> F[โ
Tape-out]
style A fill:#1a73e8,color:#fff
style B fill:#e37400,color:#fff
style C fill:#137333,color:#fff
style D fill:#9334e6,color:#fff
style E fill:#9334e6,color:#fff
style F fill:#ff6d00,color:#fff
]
**Key Challenges:**
- ๐๏ธ Billions of transistors
- โฑ๏ธ Hours vs. weeks runtime
- ๐ Exponential complexity
---
### STA โ Liberty (.lib) LUTs ๐
**Static Timing Analysis Characterization**
.mermaid[
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#1a73e8', 'primaryTextColor': '#fff', 'primaryBorderColor': '#fff', 'lineColor': '#f8f8f8', 'secondaryColor': '#006100', 'tertiaryColor': '#fff'}}}%%
graph LR
A[๐ฅ Input Slew] --> D[๐ 7x7 Timing LUT]
B[๐ค Output Load] --> D
D --> E[๐ข Bilinear Interpolation]
E --> F[โฑ๏ธ Cell Delay]
style A fill:#1a73e8,color:#fff
style B fill:#1a73e8,color:#fff
style D fill:#137333,color:#fff
style E fill:#e37400,color:#fff
style F fill:#ff6d00,color:#fff
]
**Standard Cell .lib Format:**
```yaml
cell (INV_X1) {
pin (Y) {
timing () {
cell_rise(delay_template_7x7) {
index_1 ("0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1.0") # Input slew
index_2 ("0.001, 0.005, 0.01, 0.02, 0.05, 0.1, 0.2") # Load cap
values ( "0.012, 0.015, 0.019, ..." )
}
}
}
}
```
**Bilinear interpolation** between the 4 surrounding grid points:
$$ t = (1{-}u)(1{-}v)\,t_{00} + u(1{-}v)\,t_{10} + (1{-}u)v\,t_{01} + uv\,t_{11} $$
**Without LUT:** complex differential equations โ **months of runtime**
**With LUT:** 3-5 FP operations โ **minutes of runtime** ๐
---
### Logic Synthesis โ Boolean Matching ๐งฉ
**Technology Mapping via Truth Tables**
.mermaid[
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#1a73e8', 'primaryTextColor': '#fff', 'primaryBorderColor': '#fff', 'lineColor': '#f8f8f8', 'secondaryColor': '#006100', 'tertiaryColor': '#fff'}}}%%
graph TD
A["๐ Boolean Function\nF = AยทB + AยทC"] --> B[๐ข Truth Table\n000,001,010...]
B --> C[๐๏ธ Hash Table Look-up\nCanonical Form]
C --> D[๐ Pattern Database]
D --> E[โ
Best Cell Match\nAOI21]
style A fill:#1a73e8,color:#fff
style B fill:#e37400,color:#fff
style C fill:#137333,color:#fff
style D fill:#9334e6,color:#fff
style E fill:#ff6d00,color:#fff
]
$$ F = A \cdot B + A \cdot C \;\xrightarrow{\;\text{truth table}\;}\; h(F) \;\xrightarrow{\;O(1)\;}\; \text{best cell} $$
**Why LUTs Win:**
- โ
No expensive Boolean minimization (Espresso)
- โ
$\color{#137333}{O(1)}$ hash table look-up โ **10x-50x synthesis speedup**
```python
# 4-input LUT pattern database
pattern_db = {
0x0001: "AND2", 0x0002: "AND2B",
0x8000: "NAND2", 0xFFFF: "BUF", ...
}
```
---
### FastRoute โ The EDA Gem ๐
**Global Routing with Table Look-ups**
.mermaid[
flowchart TB
A[๐ฆ Netlist] --> B[๐ฒ Steiner Tree Construction]
B --> C[๐บ๏ธ Congestion Map]
C --> D[๐ Selective Maze Routing]
D --> E[โ
Routed Design]
subgraph "Table Look-up Optimization"
F[โก Coordinate Deduplication]
G[๐ Hash Table]
F --> G
end
B --> F
C --> G
style A fill:#1a73e8,color:#fff
style B fill:#e37400,color:#fff
style C fill:#137333,color:#fff
style D fill:#9334e6,color:#fff
style E fill:#ff6d00,color:#fff
style F fill:#b31412,color:#fff
style G fill:#1a73e8,color:#fff
]
**Original Problem:**
- Naive coordinate deduplication: $\color{#b31412}{O(n^2)}$ โ **bottleneck**
- Multi-pin nets processing was extremely slow ๐ข
---
### FastRoute โ The Secret Sauce ๐
**Hash Table Optimization**
.mermaid[
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#1a73e8', 'primaryTextColor': '#fff', 'primaryBorderColor': '#fff', 'lineColor': '#f8f8f8', 'secondaryColor': '#006100', 'tertiaryColor': '#fff'}}}%%
graph LR
A[๐ข Pack (x,y) to int32] --> B[๐๏ธ unordered_map Look-up]
B --> C{Seen before?}
C -->|Yes| D[โป๏ธ Reuse coordinate]
C -->|No| E[๐ Store coordinate]
D --> F[โฑ๏ธ O(1) Operation]
E --> F
style A fill:#1a73e8,color:#fff
style B fill:#137333,color:#fff
style C fill:#e37400,color:#fff
style D fill:#137333,color:#fff
style E fill:#9334e6,color:#fff
style F fill:#ff6d00,color:#fff
]
**Pack two coordinates into one 32-bit key:**
$$ \text{key} = (x \ll 16) \;|\; (y \wedge 0\text{xFFFF}) $$
```cpp
// Key optimization in FastRoute
std::unordered_map coord_dedup_map;
int32_t key = (x << 16) | (y & 0xFFFF);
auto it = coord_dedup_map.find(key);
if (it != coord_dedup_map.end()) {
idx = it->second; // Reuse existing coordinate
} else {
idx = coord_list.size();
coord_dedup_map[key] = idx; // Insert new coordinate
coord_list.push_back({x, y});
}
```
**Performance Impact:** $\color{#b31412}{O(n^2)}$ โ $\color{#137333}{O(1)}$ look-ups โ hours โ **minutes** ๐
---
### FastRoute โ Overall Architecture ๐๏ธ
**Why It's 132x Faster**
.mermaid[
graph TD
A[๐ฒ Fast Steiner Trees] --> B[๐ง Congestion Estimation]
B --> C[โก Smart Pin Assignment]
C --> D[๐ Selective Maze Routing]
D --> E[โ
Final Routing]
subgraph "Table Look-up Contributions"
F[๐ Coordinate Dedup]
G[๐บ๏ธ Congestion Map LUT]
H[๐ Net Cost Look-ups]
end
F --> A
G --> B
H --> D
style A fill:#1a73e8,color:#fff
style B fill:#e37400,color:#fff
style C fill:#137333,color:#fff
style D fill:#9334e6,color:#fff
style E fill:#ff6d00,color:#fff
style F fill:#b31412,color:#fff
style G fill:#b31412,color:#fff
style H fill:#b31412,color:#fff
]
**Key Insight:** LUTs fix the bottlenecks, while algorithms avoid the heavy work! ๐ฏ
---
### Other EDA LUT Applications ๐ฌ
**More Table Look-up Use Cases**
.mermaid[
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#1a73e8', 'primaryTextColor': '#fff', 'primaryBorderColor': '#fff', 'lineColor': '#f8f8f8', 'secondaryColor': '#006100', 'tertiaryColor': '#fff'}}}%%
mindmap
root((EDA LUTs))
DRC/LVS
Zonal Tables
Distance Transform
Pattern Matching
Extraction
3D Field Solver LUTs
R/C Pattern DB
Green's Functions
Formal Verification
Signature Hashing
Memoization Tables
BDD Node Cache
Placement
Wireload Models
Congestion Maps
Timing Estimates
]
**Key Benefits:**
- โ
Replace expensive computations
- โ
Enable real-time design iterations
- โ
Scale to billions of instances
---
class: nord-light, middle, center
## ๐ง Implementation Patterns & Trade-offs
---
### Common LUT Design Patterns ๐ง
.mermaid[
graph LR
A[๐ Table Design] --> B[๐ Dimensionality]
B --> C[1D: Simple Look-up]
B --> D[2D: Bilinear Interp]
B --> E[3D+: Sparse Tables]
A --> F[๐๏ธ Storage]
F --> G["Array: Fast & Simple"]
F --> H[HashMap: Flexible]
F --> I[Compressed: Memory Efficient]
style A fill:#1a73e8,color:#fff
style B fill:#e37400,color:#fff
style C fill:#137333,color:#fff
style D fill:#137333,color:#fff
style E fill:#137333,color:#fff
style F fill:#9334e6,color:#fff
style G fill:#9334e6,color:#fff
style H fill:#9334e6,color:#fff
style I fill:#9334e6,color:#fff
]
**Best Practices:**
1. โก Use power-of-two sizes for fast modulo
2. ๐ง Pack multiple dimensions into a single index
3. ๐ Precompute at tool start-up
4. ๐๏ธ Use PCA/SVD for compression
5. ๐๏ธ Use `constexpr` for compile-time generation (Modern C++)
---
### Memory vs. Speed Trade-off โ๏ธ
**EDA-Specific Challenges**
.mermaid[
xychart-beta
title "Memory vs. Speed in EDA"
x-axis ["1D LUT", "2D LUT", "3D LUT", "Full Compute"]
y-axis "Relative Cost" 1 --> 100
line [2, 8, 40, 100]
line [10, 30, 80, 5]
]
**The EDA Reality:**
| Approach | Memory | Speed | Accuracy |
|----------|--------|-------|----------|
| 1D LUT | โ
Low | ๐ก Medium | ๐ก Medium |
| 2D LUT | ๐ก Medium | โ
High | ๐ก Medium |
| 3D+ LUT | โ High | โ
High | โ
High |
| Full Compute | โ
Low | โ Slow | โ
Perfect |
**Solution:** Interpolation & Compression! ๐ฏ
---
### Advanced Techniques ๐
**Making LUTs Better**
.mermaid[
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#1a73e8', 'primaryTextColor': '#fff', 'primaryBorderColor': '#fff', 'lineColor': '#f8f8f8', 'secondaryColor': '#006100', 'tertiaryColor': '#fff'}}}%%
graph TD
A[๐ LUT] --> B[๐ข Interpolation]
A --> C[๐๏ธ Compression]
A --> D[๐ Adaptive Grids]
B --> E[Bilinear]
B --> F[Bicubic]
B --> G[Non-linear]
C --> H[PCA/SVD]
C --> I[Polynomial Fitting]
C --> J[Quantization]
D --> K[Non-uniform]
D --> L[Adaptive Resolution]
style A fill:#1a73e8,color:#fff
style B fill:#e37400,color:#fff
style C fill:#e37400,color:#fff
style D fill:#e37400,color:#fff
style E fill:#137333,color:#fff
style F fill:#137333,color:#fff
style G fill:#137333,color:#fff
]
**Pro Tips:**
- ๐ฏ Bilinear interpolation for 2D tables (STA)
- ๐๏ธ Compress Liberty tables with SVD (commercial tools)
- ๐ Non-uniform grids where curves change rapidly
- โก `constexpr` for compile-time LUT generation (C++14+)
---
### Case Study โ Standard Cell Library ๐
**Real-World LUT Example**
.mermaid[
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#1a73e8', 'primaryTextColor': '#fff', 'primaryBorderColor': '#fff', 'lineColor': '#f8f8f8', 'secondaryColor': '#006100', 'tertiaryColor': '#fff'}}}%%
graph LR
A[๐ญ 50,000 Standard Cells] --> B[๐ 100 Arcs/Cell]
B --> C[๐ก๏ธ 10 Process Corners]
C --> D[๐ 7x7 LUT/Arc]
D --> E[๐พ 2.45 Billion Entries]
E --> F[๐๏ธ SVD Compression]
F --> G[๐พ 200M Compressed]
style A fill:#1a73e8,color:#fff
style B fill:#e37400,color:#fff
style C fill:#137333,color:#fff
style D fill:#137333,color:#fff
style E fill:#b31412,color:#fff
style F fill:#9334e6,color:#fff
style G fill:#ff6d00,color:#fff
]
**The Math:**
$$ 50{,}000 \times 100 \times 10 \times 49 \;=\; \color{#b31412}{2.45 \times 10^9} \;\text{values} $$
$$ \xrightarrow{\;\color{#9334e6}{\text{SVD compression}}\;} \color{#137333}{2 \times 10^8} \;\; (\text{10}\times \text{ smaller}) $$
- Runtime: LUT look-up **vs.** solving PDEs
- **Commercial Solution:** Primetime uses polynomial-based compression! ๐ก
---
### LUT vs. Memoization ๐
**Two Flavors of Table Look-ups**
.mermaid[
graph TD
A[๐ Table Look-up] --> B[๐ Static LUT]
A --> C[๐พ Dynamic Memoization]
B --> D[Pre-computed Offline]
B --> E[Fast O(1) Look-up]
B --> F[Example: sin/cos table]
B --> G[constexpr CORDIC]
C --> H[Compute on First Use]
C --> I[Cache Results]
C --> J[Example: Fib cache]
style A fill:#1a73e8,color:#fff
style B fill:#137333,color:#fff
style C fill:#9334e6,color:#fff
style D fill:#e37400,color:#fff
style E fill:#e37400,color:#fff
style F fill:#e37400,color:#fff
style G fill:#e37400,color:#fff
style H fill:#e37400,color:#fff
style I fill:#e37400,color:#fff
style J fill:#e37400,color:#fff
]
**EDA Uses Both:**
- โ
Liberty LUTs = **Static** (pre-characterized)
- โ
Formal Verification = **Dynamic** (signature caching)
- โ
FastRoute = **Static** (congestion maps)
- โ
CORDIC = **Static** (compile-time `constexpr`)
---
### Performance Numbers ๐
**Real EDA Benchmarks**
.mermaid[
xychart-beta
title "Runtime Comparison in EDA Tools"
x-axis ["STA", "Synthesis", "Routing", "DRC"]
y-axis "Speedup Factor (log scale)" 1 --> 1000
bar [20, 50, 132, 15]
]
**Specific Numbers:**
| Algorithm | Without LUT | With LUT | Speedup |
|-----------|-------------|----------|---------|
| Delay Calculation | 100ฮผs/cell | 5ฮผs/cell | $\color{#9334e6}{20\times}$ |
| Boolean Matching | 10ms/node | 0.2ms/node | $\color{#9334e6}{50\times}$ |
| FastRoute Routing | Days | Hours | $\color{#9334e6}{132\times}$ |
| DRC Checking | 20 hrs | 1.3 hrs | $\color{#9334e6}{15\times}$ |
> ๐ก **Source:** ISPD 2007 FastRoute Paper & OpenROAD Benchmarks
---
### Limitations & Pitfalls โ ๏ธ
**When LUTs Don't Work**
.mermaid[
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#1a73e8', 'primaryTextColor': '#fff', 'primaryBorderColor': '#fff', 'lineColor': '#f8f8f8', 'secondaryColor': '#006100', 'tertiaryColor': '#fff'}}}%%
graph TD
A[โ LUT Pitfalls] --> B[๐พ Memory Explosion]
A --> C[๐ฏ Cache Misses]
A --> D[๐ Accuracy Loss]
A --> E[๐ Dynamic Inputs]
B --> F[Large 3D+ Tables]
C --> G[Random Access Patterns]
D --> H[Interpolation Errors]
E --> I[Can't Pre-compute]
style A fill:#b31412,color:#fff
style B fill:#e37400,color:#fff
style C fill:#e37400,color:#fff
style D fill:#e37400,color:#fff
style E fill:#e37400,color:#fff
style F fill:#9334e6,color:#fff
style G fill:#9334e6,color:#fff
style H fill:#9334e6,color:#fff
style I fill:#9334e6,color:#fff
]
**EDA Solutions:**
- ๐ SVD/PCA compression for large tables
- ๐ฏ Block/range-based tables for cache efficiency
- ๐ Extrapolation for out-of-range inputs
- ๐ Hybrid compute/LUT for dynamic cases
- โก `constexpr` for zero-overhead static tables
---
### Modern C++ `constexpr` in EDA ๐ป
**The Future of Compile-Time Optimization**
.mermaid[
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#1a73e8', 'primaryTextColor': '#fff', 'primaryBorderColor': '#fff', 'lineColor': '#f8f8f8', 'secondaryColor': '#006100', 'tertiaryColor': '#fff'}}}%%
graph LR
A[โก constexpr] --> B[๐งฎ Compile-Time Math]
A --> C[๐ ROM Generation]
A --> D[๐ Table Creation]
B --> E[No Runtime Overhead]
C --> F[Zero Initialization Cost]
D --> G[Bit-Accurate Simulation]
style A fill:#1a73e8,color:#fff
style B fill:#e37400,color:#fff
style C fill:#e37400,color:#fff
style D fill:#e37400,color:#fff
style E fill:#137333,color:#fff
style F fill:#137333,color:#fff
style G fill:#137333,color:#fff
]
**GitHub Project Spotlight:** ๐ฆ `CORDIC_Rotate_APFX` by DrasLorus
- ๐๏ธ `CCordicRotateConstexpr` โ bit-accurate fixed-point for HW simulation
- โ
Supports rotations of ฯ and ฯ/2
**Why This Matters for EDA:**
- ๐ **Zero-cost abstraction** โ LUTs computed at compile time
- ๐ **Cleaner builds** โ no external ROM header generation
- ๐ฏ **Bit-accurate** โ perfect for hardware emulation
---
class: nord-light, middle, center
## ๐ฎ Future & Takeaways
---
### Future Trends ๐ฎ
**What's Next?**
.mermaid[
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#1a73e8', 'primaryTextColor': '#fff', 'primaryBorderColor': '#fff', 'lineColor': '#f8f8f8', 'secondaryColor': '#006100', 'tertiaryColor': '#fff'}}}%%
graph LR
A[๐ค AI/ML] --> B[Neural LUTs]
A --> C[Learned Indices]
D[๐พ Hardware] --> E[In-memory Compute]
D --> F[ReRAM/TCAM]
G[๐ฌ EDA] --> H[ML-based Timing]
G --> I[Adaptive Tables]
J[โก constexpr] --> K[Compile-Time Everything]
J --> L[Zero-Overhead Abstractions]
style A fill:#1a73e8,color:#fff
style B fill:#137333,color:#fff
style C fill:#137333,color:#fff
style D fill:#e37400,color:#fff
style E fill:#9334e6,color:#fff
style F fill:#9334e6,color:#fff
style G fill:#ff6d00,color:#fff
style H fill:#9334e6,color:#fff
style I fill:#9334e6,color:#fff
style J fill:#b31412,color:#fff
style K fill:#137333,color:#fff
style L fill:#137333,color:#fff
]
**Emerging Technologies:**
- ๐ง Neural networks replacing traditional LUTs
- ๐พ Hardware table look-ups (TCAM, ReRAM)
- ๐ฏ ML for adaptive interpolation
- โก C++20/23 `constexpr` and `consteval` for even more compile-time computation
---
### Key Takeaways ๐
.mermaid[
mindmap
root((Table Look-ups))
๐ Performance
100x speedups
O(1) vs O(n)
Real-time EDA
constexpr optimization
๐ฏ EDA Applications
STA/Liberty LUTs
FastRoute Hash
Boolean Matching
DRC Zonal Tables
๐ก Best Practices
Small domains
Pre-compute
Interpolation
Compression
constexpr generation
โ ๏ธ Watch Out
Memory limits
Cache misses
Accuracy trade-offs
Dynamic inputs
]
**The Golden Rule:**
$$ \text{bounded input domain} \;\Rightarrow\; \text{trade } \color{#9334e6}{\text{memory}} \text{ for } \color{#137333}{\text{speed}} $$
**Modern C++ Bonus:** Use `constexpr` to generate LUTs at compile-time with **zero runtime overhead**! โก
---
### References ๐
.pull-left[
**Classic Algorithms:**
- ๐ Volder, J. "The CORDIC Trigonometric Computing Technique" (1959)
- ๐ Ross Williams, "A Painless Guide to CRC Error Detection" (1993)
**EDA / Papers:**
- ๐ Pan, M., & Chu, C. "FastRoute: A Step to Integrate Global Routing" (ISPD 2007)
- ๐ Synopsys "Liberty NCX User Guide" โ LUT Characterization
- ๐ OpenROAD Project Documentation
]
.pull-right[
**Modern C++ & constexpr:**
- ๐ **CORDIC_Rotate_APFX** โ GitHub Project by DrasLorus
- `CCordicRotateConstexpr` โ compile-time ROM via C++14 `constexpr`
- `CCordicRotateRom` โ build-time ROM via system headers
- ๐ C++ ISO Standard โ `constexpr` (C++11 โ C++20)
- ๐ Stroustrup, B. "The C++ Programming Language" โ Templates & constexpr
**Advanced Techniques:**
- ๐ Kahng, A. et al. "Table Compression in EDA" (DAC 2019)
- ๐ "Machine Learning for EDA" (IEEE TCAD Special Issue)
]
---
count: false
class: nord-dark, middle, center
## ๐ Q&A ๐ค
.mermaid[
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1a73e8', 'primaryTextColor': '#fff', 'primaryBorderColor': '#fff', 'lineColor': '#f8f8f8', 'secondaryColor': '#006100', 'tertiaryColor': '#fff'}}}%%
graph TD
A[โ Questions?] --> B[๐ Performance]
A --> C[๐ฏ EDA Focus]
A --> D[๐ป Implementation]
A --> E[โก constexpr CORDIC]
B --> F[Max Speedup?\n100x-132x]
C --> G[FastRoute?\nHash Table Key]
D --> H[Best Language?\nC++/Rust]
E --> I[GitHub Project?\nCORDIC_Rotate_APFX]
style A fill:#1a73e8,color:#fff
style B fill:#e37400,color:#fff
style C fill:#e37400,color:#fff
style D fill:#e37400,color:#fff
style E fill:#e37400,color:#fff
style F fill:#137333,color:#fff
style G fill:#137333,color:#fff
style H fill:#137333,color:#fff
style I fill:#137333,color:#fff
]
**Discussion Topics:**
1. ๐น What's the most surprising LUT use case?
2. ๐น How would you apply LUTs in your work?
3. ๐น Any concerns about accuracy vs. performance?
4. ๐น Have you used `constexpr` for compile-time optimization?
5. ๐น What other algorithms could benefit from `constexpr` LUTs?
---
count: false
class: nord-dark, middle, center
# ๐ Thank You!
## Happy Table Look-ups! ๐
**Questions & Discussion** ๐
๐ง Email: [your.email@example.com]
๐ LinkedIn: [Your Profile]
๐ GitHub: [Your Repository]