# VerilogToImage - Quick Start Guide

## 1. نصب سریع (Installation)

```bash
# در دایرکتوری پروژه خود
cd your_project/

# کپی فولدر کتابخونه
cp -r /path/to/VerilogToImage/verilog_framework .

# یا نصب global
pip install -e /path/to/VerilogToImage
```

## 2. استفاده ساده ترین شکل

### Parsing کردن Verilog

```python
from verilog_framework.core import parse_verilog

# کد Verilog
verilog_code = """
module adder(input a, input b, output sum);
    assign sum = a ^ b;
endmodule
"""

# پارس کردن
ast = parse_verilog(verilog_code)

# دسترسی به اطلاعات
print(ast.name)           # "adder"
print(len(ast.port_list)) # 3 (a, b, sum)
```

### تبدیل به عکس (Circuit Diagram)

```python
from verilog_framework.verilogtoimage import VerilogToImagePipeline

pipeline = VerilogToImagePipeline()

# تبدیل به SVG
pipeline.verilog_to_svg(verilog_code, "circuit.svg")

# تبدیل به PNG (اگر cairosvg نصب باشد)
pipeline.verilog_to_png(verilog_code, "circuit.png")
```

### نمایش ساختار AST

```python
from verilog_framework.visualization import GraphvizVisualizer

visualizer = GraphvizVisualizer()
dot_code = visualizer.generate_dot(ast)

# ذخیره و نمایش
with open("structure.dot", "w") as f:
    f.write(dot_code)
    
# در terminal:
# dot -Tpng structure.dot -o structure.png
```

## 3. استفاده از Command Line

```bash
# فقط parsing و نمایش معلومات
python examples/cli.py your_module.v

# تولید SVG
python examples/cli.py your_module.v --svg

# تولید PNG
python examples/cli.py your_module.v --png

# تولید AST graph
python examples/cli.py your_module.v --dot
```

## 4. مثال عملی - تحلیل فایل

```python
from pathlib import Path
from verilog_framework.core import parse_verilog
from verilog_framework.verilogtoimage import VerilogToImagePipeline

# خواندن فایل
verilog_file = Path("my_design.v")
code = verilog_file.read_text()

# تحلیل
ast = parse_verilog(code)

# نمایش معلومات
print(f"Module: {ast.name}")
print(f"Inputs: {[p.name for p in ast.port_list if p.direction == 'input']}")
print(f"Outputs: {[p.name for p in ast.port_list if p.direction == 'output']}")

# تولید عکس
pipeline = VerilogToImagePipeline()
result = pipeline.verilog_to_svg(code, f"{ast.name}_circuit.svg")

if result:
    print(f"Circuit saved: {result}")
```

## 5. برای Windows: WSL Setup

Circuit diagram generation نیاز به Yosys دارد:

```bash
# در WSL Ubuntu terminal:
sudo apt-get update
sudo apt-get install -y yosys npm
npm install -g netlistsvg
pip3 install cairosvg
```

## 6. Dependencies

پروژه نیاز به این بسته‌ها دارد:

| Feature | Package | Optional |
|---------|---------|----------|
| Parsing | (نیاز نیست) | ✓ |
| Visualization | graphviz | ✓ |
| Circuit Diagrams | yosys, netlistsvg | ✗ |
| PNG Output | cairosvg | ✓ |

## 7. Troubleshooting

### "ModuleNotFoundError: No module named 'verilog_framework'"

```python
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent / "verilog_framework"))
```

### "Parser error..."

کد Verilog باید از دستور زیر پیروی کند:

```verilog
module module_name(
    input input_name,
    output output_name
);
    assign output_name = input_name;
endmodule
```

### "Yosys not found" (Windows)

اطمینان دارید WSL Ubuntu نصب است:

```bash
wsl -d Ubuntu bash -c "which yosys"
```

## 8. مثال کامل

```python
import sys
from pathlib import Path

# Setup
sys.path.insert(0, str(Path(__file__).parent))
from verilog_framework.core import parse_verilog
from verilog_framework.verilogtoimage import VerilogToImagePipeline
from verilog_framework.visualization import GraphvizVisualizer

def analyze_verilog(filename):
    """تحلیل Verilog و تولید تمام خروجی‌ها"""
    
    code = Path(filename).read_text()
    ast = parse_verilog(code)
    
    # معلومات
    print(f"Module: {ast.name}")
    print(f"Ports: {len(ast.port_list)}")
    print(f"Statements: {len(ast.statements)}")
    
    # Circuit diagram
    pipeline = VerilogToImagePipeline()
    svg = pipeline.verilog_to_svg(code, f"{ast.name}.svg")
    print(f"SVG: {svg}")
    
    # AST visualization
    visualizer = GraphvizVisualizer()
    dot = visualizer.generate_dot(ast)
    Path(f"{ast.name}_ast.dot").write_text(dot)
    print(f"DOT: {ast.name}_ast.dot")

# استفاده
if __name__ == "__main__":
    analyze_verilog("my_module.v")
```

## 9. مزایا

✓ **Parsing کامل**: تک ‌Verilog modules  
✓ **AST Visualization**: نمودار ساختار  
✓ **Circuit Diagrams**: تبدیل به SVG/PNG  
✓ **Logging**: Debug کامل  
✓ **Cross-platform**: Windows/Linux/Mac  

## 10. بعد

برای اطلاعات بیشتر:
- مراجعه کنید README.md
- دیدن examples/ folder  
- چک کنید tests/ برای استفاده بیشتر

