agentic-ic 3.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agentic_ic-3.0.0/.codex +0 -0
- agentic_ic-3.0.0/.dockerignore +81 -0
- agentic_ic-3.0.0/.env.example +41 -0
- agentic_ic-3.0.0/.gitattributes +15 -0
- agentic_ic-3.0.0/.github/workflows/ci.yml +57 -0
- agentic_ic-3.0.0/.github/workflows/deploy.yml +89 -0
- agentic_ic-3.0.0/.github/workflows/oracle-deploy.yml +133 -0
- agentic_ic-3.0.0/.gitignore +94 -0
- agentic_ic-3.0.0/Dockerfile +70 -0
- agentic_ic-3.0.0/LICENSE +7 -0
- agentic_ic-3.0.0/Makefile +68 -0
- agentic_ic-3.0.0/PKG-INFO +168 -0
- agentic_ic-3.0.0/README.md +113 -0
- agentic_ic-3.0.0/Training-script/chat_verilog.py +51 -0
- agentic_ic-3.0.0/Training-script/create_repo.py +24 -0
- agentic_ic-3.0.0/Training-script/github_push.py +36 -0
- agentic_ic-3.0.0/Training-script/hf_push.py +23 -0
- agentic_ic-3.0.0/Training-script/main.spec +45 -0
- agentic_ic-3.0.0/Training-script/patch_config.py +122 -0
- agentic_ic-3.0.0/Training-script/test_dummy.py +14 -0
- agentic_ic-3.0.0/Training-script/test_llm.py +12 -0
- agentic_ic-3.0.0/Training-script/train_fixed.py +100 -0
- agentic_ic-3.0.0/Training-script/train_verilog_reasoning.py +110 -0
- agentic_ic-3.0.0/archived_dev_scripts/fix2.py +24 -0
- agentic_ic-3.0.0/archived_dev_scripts/patch.py +19 -0
- agentic_ic-3.0.0/archived_dev_scripts/patch_logger.py +44 -0
- agentic_ic-3.0.0/archived_dev_scripts/patch_prompt.py +36 -0
- agentic_ic-3.0.0/archived_dev_scripts/test_bundle.py +31 -0
- agentic_ic-3.0.0/archived_dev_scripts/test_bundle_run.py +28 -0
- agentic_ic-3.0.0/archived_dev_scripts/test_decomp.py +3 -0
- agentic_ic-3.0.0/archived_dev_scripts/test_main.py +9 -0
- agentic_ic-3.0.0/archived_dev_scripts/update_license.py +149 -0
- agentic_ic-3.0.0/artifacts/benchmark_data.json +92 -0
- agentic_ic-3.0.0/artifacts/benchmark_report.md +49 -0
- agentic_ic-3.0.0/benchmark/run_benchmark.py +235 -0
- agentic_ic-3.0.0/designs/axistream_mac_array_2/src/axistream_mac_array_2.v +138 -0
- agentic_ic-3.0.0/designs/eval_fsm3onehot/src/eval_fsm3onehot.v +68 -0
- agentic_ic-3.0.0/designs/eval_fsm3onehot/src/eval_fsm3onehot_tb.v +69 -0
- agentic_ic-3.0.0/designs/eval_fsm3onehot/src/eval_fsm3onehot_tb_compile_gate.json +35 -0
- agentic_ic-3.0.0/designs/eval_fsm3onehot/src/eval_fsm3onehot_tb_compile_gate_attempt1.json +35 -0
- agentic_ic-3.0.0/designs/eval_fsm3onehot/src/eval_fsm3onehot_tb_static_gate.json +13 -0
- agentic_ic-3.0.0/designs/eval_fsm3onehot/src/eval_fsm3onehot_tb_static_gate_attempt1.json +13 -0
- agentic_ic-3.0.0/docker-compose.yml +212 -0
- agentic_ic-3.0.0/docs/AGENTIC_ARCHITECTURE_CONTEXT.md +62 -0
- agentic_ic-3.0.0/docs/OPERATIONS_RUNBOOK.md +140 -0
- agentic_ic-3.0.0/docs/agentic-critical-changes.md +93 -0
- agentic_ic-3.0.0/main.py +15 -0
- agentic_ic-3.0.0/metrics/apb_timer/apb_timer_industry_benchmark_20260306_020245.json +80 -0
- agentic_ic-3.0.0/metrics/apb_timer/apb_timer_industry_benchmark_20260306_020245.md +39 -0
- agentic_ic-3.0.0/metrics/apb_timer/latest.json +80 -0
- agentic_ic-3.0.0/metrics/apb_timer/latest.md +39 -0
- agentic_ic-3.0.0/metrics/counter8/counter8_industry_benchmark_20260306_013138.json +100 -0
- agentic_ic-3.0.0/metrics/counter8/counter8_industry_benchmark_20260306_013138.md +39 -0
- agentic_ic-3.0.0/metrics/counter8/latest.json +100 -0
- agentic_ic-3.0.0/metrics/counter8/latest.md +39 -0
- agentic_ic-3.0.0/metrics/the_dhruva_chip_is/latest.json +90 -0
- agentic_ic-3.0.0/metrics/the_dhruva_chip_is/latest.md +39 -0
- agentic_ic-3.0.0/metrics/the_dhruva_chip_is/the_dhruva_chip_is_industry_benchmark_20260309_125527.json +90 -0
- agentic_ic-3.0.0/metrics/the_dhruva_chip_is/the_dhruva_chip_is_industry_benchmark_20260309_125527.md +39 -0
- agentic_ic-3.0.0/notebooks/Colab_Trial.ipynb +475 -0
- agentic_ic-3.0.0/ops/grafana/dashboards/agentic-overview.json +142 -0
- agentic_ic-3.0.0/ops/grafana/provisioning/dashboards/dashboards.yml +9 -0
- agentic_ic-3.0.0/ops/grafana/provisioning/datasources/prometheus.yml +10 -0
- agentic_ic-3.0.0/ops/prometheus/prometheus.yml +9 -0
- agentic_ic-3.0.0/pyproject.toml +66 -0
- agentic_ic-3.0.0/requirements.txt +28 -0
- agentic_ic-3.0.0/scripts/ci/nightly_full.sh +36 -0
- agentic_ic-3.0.0/scripts/ci/smoke.sh +8 -0
- agentic_ic-3.0.0/scripts/run_benchmark.py +146 -0
- agentic_ic-3.0.0/server/api.py +2499 -0
- agentic_ic-3.0.0/server/approval.py +144 -0
- agentic_ic-3.0.0/server/auth.py +290 -0
- agentic_ic-3.0.0/server/billing.py +228 -0
- agentic_ic-3.0.0/server/db.py +112 -0
- agentic_ic-3.0.0/server/lab.py +453 -0
- agentic_ic-3.0.0/server/report_gen.py +445 -0
- agentic_ic-3.0.0/server/schema.sql +133 -0
- agentic_ic-3.0.0/server/stage_summary.py +366 -0
- agentic_ic-3.0.0/server/storage.py +71 -0
- agentic_ic-3.0.0/server/tasks.py +46 -0
- agentic_ic-3.0.0/src/__init__.py +0 -0
- agentic_ic-3.0.0/src/agentic/__init__.py +4 -0
- agentic_ic-3.0.0/src/agentic/agents/__init__.py +0 -0
- agentic_ic-3.0.0/src/agentic/agents/architect.py +19 -0
- agentic_ic-3.0.0/src/agentic/agents/designer.py +106 -0
- agentic_ic-3.0.0/src/agentic/agents/doc_agent.py +25 -0
- agentic_ic-3.0.0/src/agentic/agents/sdc_agent.py +31 -0
- agentic_ic-3.0.0/src/agentic/agents/testbench_designer.py +124 -0
- agentic_ic-3.0.0/src/agentic/agents/verifier.py +84 -0
- agentic_ic-3.0.0/src/agentic/cli.py +1079 -0
- agentic_ic-3.0.0/src/agentic/config.py +307 -0
- agentic_ic-3.0.0/src/agentic/contracts.py +158 -0
- agentic_ic-3.0.0/src/agentic/core/__init__.py +43 -0
- agentic_ic-3.0.0/src/agentic/core/architect.py +424 -0
- agentic_ic-3.0.0/src/agentic/core/cdc_analyzer.py +1100 -0
- agentic_ic-3.0.0/src/agentic/core/deep_debugger.py +820 -0
- agentic_ic-3.0.0/src/agentic/core/feasibility_checker.py +830 -0
- agentic_ic-3.0.0/src/agentic/core/graph_builder.py +80 -0
- agentic_ic-3.0.0/src/agentic/core/hierarchy_expander.py +821 -0
- agentic_ic-3.0.0/src/agentic/core/react_agent.py +447 -0
- agentic_ic-3.0.0/src/agentic/core/self_reflect.py +522 -0
- agentic_ic-3.0.0/src/agentic/core/spec_generator.py +1003 -0
- agentic_ic-3.0.0/src/agentic/core/verification_planner.py +925 -0
- agentic_ic-3.0.0/src/agentic/core/waveform_expert.py +680 -0
- agentic_ic-3.0.0/src/agentic/golden_lib/__init__.py +9 -0
- agentic_ic-3.0.0/src/agentic/golden_lib/template_matcher.py +236 -0
- agentic_ic-3.0.0/src/agentic/golden_lib/templates/counter.v +52 -0
- agentic_ic-3.0.0/src/agentic/golden_lib/templates/counter_tb.v +89 -0
- agentic_ic-3.0.0/src/agentic/golden_lib/templates/fifo.v +70 -0
- agentic_ic-3.0.0/src/agentic/golden_lib/templates/fifo_tb.v +85 -0
- agentic_ic-3.0.0/src/agentic/golden_lib/templates/fsm.v +102 -0
- agentic_ic-3.0.0/src/agentic/golden_lib/templates/fsm_tb.v +50 -0
- agentic_ic-3.0.0/src/agentic/golden_lib/templates/pwm.v +36 -0
- agentic_ic-3.0.0/src/agentic/golden_lib/templates/pwm_tb.v +69 -0
- agentic_ic-3.0.0/src/agentic/golden_lib/templates/shift_register.v +33 -0
- agentic_ic-3.0.0/src/agentic/golden_lib/templates/shift_register_tb.v +52 -0
- agentic_ic-3.0.0/src/agentic/golden_lib/templates/spi_master.v +131 -0
- agentic_ic-3.0.0/src/agentic/golden_lib/templates/spi_master_tb.v +56 -0
- agentic_ic-3.0.0/src/agentic/golden_lib/templates/timer.v +60 -0
- agentic_ic-3.0.0/src/agentic/golden_lib/templates/timer_tb.v +52 -0
- agentic_ic-3.0.0/src/agentic/golden_lib/templates/uart_tx.v +101 -0
- agentic_ic-3.0.0/src/agentic/golden_lib/templates/uart_tx_tb.v +67 -0
- agentic_ic-3.0.0/src/agentic/install_tools.py +103 -0
- agentic_ic-3.0.0/src/agentic/orchestrator.py +5248 -0
- agentic_ic-3.0.0/src/agentic/tools/__init__.py +0 -0
- agentic_ic-3.0.0/src/agentic/tools/vlsi_tools.py +4236 -0
- agentic_ic-3.0.0/tests/__init__.py +0 -0
- agentic_ic-3.0.0/web/.env.example +15 -0
- agentic_ic-3.0.0/web/.env.production +8 -0
- agentic_ic-3.0.0/web/.gitignore +28 -0
- agentic_ic-3.0.0/web/eslint.config.js +23 -0
- agentic_ic-3.0.0/web/index.html +16 -0
- agentic_ic-3.0.0/web/package-lock.json +5519 -0
- agentic_ic-3.0.0/web/package.json +40 -0
- agentic_ic-3.0.0/web/public/install.sh +47 -0
- agentic_ic-3.0.0/web/public/vcdrom/IosevkaDrom-Italic.woff2 +0 -0
- agentic_ic-3.0.0/web/public/vcdrom/IosevkaDrom-Oblique.woff2 +0 -0
- agentic_ic-3.0.0/web/public/vcdrom/IosevkaDrom-Regular.woff2 +0 -0
- agentic_ic-3.0.0/web/public/vcdrom/index.html +35 -0
- agentic_ic-3.0.0/web/public/vcdrom/vcd.wasm +0 -0
- agentic_ic-3.0.0/web/public/vcdrom/vcdrom.js +13 -0
- agentic_ic-3.0.0/web/public/vite.svg +1 -0
- agentic_ic-3.0.0/web/src/App.tsx +518 -0
- agentic_ic-3.0.0/web/src/api.ts +33 -0
- agentic_ic-3.0.0/web/src/assets/react.svg +1 -0
- agentic_ic-3.0.0/web/src/components/ActivityFeed.tsx +188 -0
- agentic_ic-3.0.0/web/src/components/ApprovalCard.tsx +189 -0
- agentic_ic-3.0.0/web/src/components/AuthPage.tsx +221 -0
- agentic_ic-3.0.0/web/src/components/BillingModal.tsx +377 -0
- agentic_ic-3.0.0/web/src/components/BuildMonitor.tsx +270 -0
- agentic_ic-3.0.0/web/src/components/ChipSummary.tsx +361 -0
- agentic_ic-3.0.0/web/src/components/ElaborationCard.tsx +93 -0
- agentic_ic-3.0.0/web/src/components/FabricationViewer3D.tsx +45 -0
- agentic_ic-3.0.0/web/src/components/HomeComponent.tsx +230 -0
- agentic_ic-3.0.0/web/src/components/MagicUI.tsx +139 -0
- agentic_ic-3.0.0/web/src/components/StageProgressBar.tsx +132 -0
- agentic_ic-3.0.0/web/src/hitl.css +2584 -0
- agentic_ic-3.0.0/web/src/index.css +8237 -0
- agentic_ic-3.0.0/web/src/main.tsx +11 -0
- agentic_ic-3.0.0/web/src/pages/Benchmarking.tsx +103 -0
- agentic_ic-3.0.0/web/src/pages/BuildHistory.tsx +164 -0
- agentic_ic-3.0.0/web/src/pages/Dashboard.tsx +188 -0
- agentic_ic-3.0.0/web/src/pages/DesignStudio.tsx +544 -0
- agentic_ic-3.0.0/web/src/pages/Documentation.tsx +474 -0
- agentic_ic-3.0.0/web/src/pages/EDALab.tsx +450 -0
- agentic_ic-3.0.0/web/src/pages/Fabrication.tsx +119 -0
- agentic_ic-3.0.0/web/src/pages/HumanInLoopBuild.tsx +1087 -0
- agentic_ic-3.0.0/web/src/pages/LandingPage.tsx +228 -0
- agentic_ic-3.0.0/web/src/pages/WaitlistDashboard.tsx +236 -0
- agentic_ic-3.0.0/web/src/pages/WorkspaceSettings.tsx +229 -0
- agentic_ic-3.0.0/web/src/premium.css +1621 -0
- agentic_ic-3.0.0/web/src/supabaseClient.ts +19 -0
- agentic_ic-3.0.0/web/src/utils/useAnimations.ts +188 -0
- agentic_ic-3.0.0/web/tsconfig.app.json +28 -0
- agentic_ic-3.0.0/web/tsconfig.json +7 -0
- agentic_ic-3.0.0/web/tsconfig.node.json +26 -0
- agentic_ic-3.0.0/web/vite.config.ts +50 -0
agentic_ic-3.0.0/.codex
ADDED
|
File without changes
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Python cache
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.pyc
|
|
4
|
+
*.pyo
|
|
5
|
+
*.pyd
|
|
6
|
+
.Python
|
|
7
|
+
*.egg-info/
|
|
8
|
+
dist/
|
|
9
|
+
build/
|
|
10
|
+
.mypy_cache/
|
|
11
|
+
.pytest_cache/
|
|
12
|
+
.ruff_cache/
|
|
13
|
+
|
|
14
|
+
# Git
|
|
15
|
+
.git/
|
|
16
|
+
.gitignore
|
|
17
|
+
|
|
18
|
+
# Secrets
|
|
19
|
+
.env
|
|
20
|
+
.env.*
|
|
21
|
+
!.env.example
|
|
22
|
+
|
|
23
|
+
# Virtual environments
|
|
24
|
+
.venv/
|
|
25
|
+
.venv-agentic/
|
|
26
|
+
venv/
|
|
27
|
+
env/
|
|
28
|
+
agentic_env/
|
|
29
|
+
|
|
30
|
+
# Benchmark results (large data, not needed at runtime)
|
|
31
|
+
benchmark/results/
|
|
32
|
+
|
|
33
|
+
# SymbiYosys workdirs
|
|
34
|
+
*.sby
|
|
35
|
+
**/*.sby
|
|
36
|
+
**/workdir/
|
|
37
|
+
**/*_workdir/
|
|
38
|
+
|
|
39
|
+
# Verilator object directories
|
|
40
|
+
obj_dir/
|
|
41
|
+
**/obj_dir/
|
|
42
|
+
|
|
43
|
+
# OpenLane designs (skip entirely)
|
|
44
|
+
OpenLane/
|
|
45
|
+
designs/
|
|
46
|
+
|
|
47
|
+
# IDE and OS files
|
|
48
|
+
.vscode/
|
|
49
|
+
.idea/
|
|
50
|
+
*.DS_Store
|
|
51
|
+
Thumbs.db
|
|
52
|
+
|
|
53
|
+
# Node / web build artifacts
|
|
54
|
+
web/node_modules/
|
|
55
|
+
web/dist/
|
|
56
|
+
client/node_modules/
|
|
57
|
+
client/dist/
|
|
58
|
+
|
|
59
|
+
# Large artifacts not needed at runtime
|
|
60
|
+
artifacts/*.gds
|
|
61
|
+
oss-cad-suite/
|
|
62
|
+
|
|
63
|
+
# Docs and non-runtime
|
|
64
|
+
docs/
|
|
65
|
+
training/
|
|
66
|
+
|
|
67
|
+
# Log files
|
|
68
|
+
*.log
|
|
69
|
+
run_log.txt
|
|
70
|
+
|
|
71
|
+
# Test files
|
|
72
|
+
tests/__pycache__/
|
|
73
|
+
|
|
74
|
+
# Database
|
|
75
|
+
agentic_jobs.db
|
|
76
|
+
*.sqlite3
|
|
77
|
+
|
|
78
|
+
# Temporary fix scripts
|
|
79
|
+
fix_*.py
|
|
80
|
+
*.tmp
|
|
81
|
+
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# ── NVIDIA / Cloud LLM ──────────────────────────────────────────────────────
|
|
2
|
+
NVIDIA_API_KEY=your_nvidia_api_key_here
|
|
3
|
+
NVIDIA_MODEL=meta/llama-3.3-70b-instruct
|
|
4
|
+
NVIDIA_BASE_URL=https://integrate.api.nvidia.com/v1
|
|
5
|
+
|
|
6
|
+
# ── Groq (optional fallback) ─────────────────────────────────────────────────
|
|
7
|
+
GROQ_API_KEY=your_groq_api_key_here
|
|
8
|
+
|
|
9
|
+
# ── Local LLM (Ollama / VeriReason) ─────────────────────────────────────────
|
|
10
|
+
LLM_MODEL=ollama/hf.co/mradermacher/VeriReason-Qwen2.5-3b-RTLCoder-Verilog-GRPO-reasoning-tb-GGUF:Q4_K_M
|
|
11
|
+
LLM_BASE_URL=http://localhost:11434
|
|
12
|
+
LLM_API_KEY=NA
|
|
13
|
+
|
|
14
|
+
# ── Verilog Code-Gen override (optional) ────────────────────────────────────
|
|
15
|
+
VERILOG_CODEGEN_ENABLED=false
|
|
16
|
+
|
|
17
|
+
# ── Container Infrastructure (set strong values in production) ──────────────
|
|
18
|
+
POSTGRES_PASSWORD=change_me_postgres_password
|
|
19
|
+
REDIS_PASSWORD=change_me_redis_password
|
|
20
|
+
MINIO_ROOT_USER=agentic_minio_admin
|
|
21
|
+
MINIO_ROOT_PASSWORD=change_me_minio_password
|
|
22
|
+
|
|
23
|
+
# ── Public deployment safety ────────────────────────────────────────────────
|
|
24
|
+
# Keep this false on Oracle/public deployments so users must bring their own LLM key.
|
|
25
|
+
# Set to true only for private/local testing when you intentionally want the server to spend your key.
|
|
26
|
+
ALLOW_BACKEND_LLM_FALLBACK=false
|
|
27
|
+
|
|
28
|
+
# ── Supabase Auth (leave blank to disable auth — all builds allowed) ────────
|
|
29
|
+
SUPABASE_URL=
|
|
30
|
+
SUPABASE_SERVICE_KEY=
|
|
31
|
+
SUPABASE_JWT_SECRET=
|
|
32
|
+
# REQUIRED if using BYOK plan — generate with: python -c "import secrets; print(secrets.token_hex(32))"
|
|
33
|
+
ENCRYPTION_KEY=
|
|
34
|
+
|
|
35
|
+
# ── Razorpay Billing (leave blank to disable payments) ──────────────────────
|
|
36
|
+
RAZORPAY_KEY_ID=
|
|
37
|
+
RAZORPAY_KEY_SECRET=
|
|
38
|
+
RAZORPAY_WEBHOOK_SECRET=
|
|
39
|
+
VERILOG_CODEGEN_MODEL=
|
|
40
|
+
VERILOG_CODEGEN_BASE_URL=
|
|
41
|
+
VERILOG_CODEGEN_API_KEY=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Track binary files for Hugging Face Spaces
|
|
2
|
+
*.woff2 filter=lfs diff=lfs merge=lfs -text
|
|
3
|
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
|
4
|
+
*.woff filter=lfs diff=lfs merge=lfs -text
|
|
5
|
+
*.ttf filter=lfs diff=lfs merge=lfs -text
|
|
6
|
+
*.otf filter=lfs diff=lfs merge=lfs -text
|
|
7
|
+
*.png filter=lfs diff=lfs merge=lfs -text
|
|
8
|
+
*.jpg filter=lfs diff=lfs merge=lfs -text
|
|
9
|
+
*.jpeg filter=lfs diff=lfs merge=lfs -text
|
|
10
|
+
*.ico filter=lfs diff=lfs merge=lfs -text
|
|
11
|
+
*.pdf filter=lfs diff=lfs merge=lfs -text
|
|
12
|
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
|
13
|
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
|
14
|
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
|
15
|
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
name: AgentIC CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches: [ "main", "master" ]
|
|
7
|
+
schedule:
|
|
8
|
+
- cron: "0 3 * * *"
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
pr-smoke:
|
|
13
|
+
name: PR Smoke
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- name: Checkout
|
|
17
|
+
uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- name: Setup Python
|
|
20
|
+
uses: actions/setup-python@v5
|
|
21
|
+
with:
|
|
22
|
+
python-version: "3.11"
|
|
23
|
+
|
|
24
|
+
- name: Install deps
|
|
25
|
+
run: |
|
|
26
|
+
python -m pip install --upgrade pip
|
|
27
|
+
pip install -r requirements.txt
|
|
28
|
+
|
|
29
|
+
- name: Smoke checks
|
|
30
|
+
run: |
|
|
31
|
+
bash scripts/ci/smoke.sh
|
|
32
|
+
|
|
33
|
+
nightly-full:
|
|
34
|
+
name: Nightly Full Flow
|
|
35
|
+
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
|
|
36
|
+
runs-on: ubuntu-latest
|
|
37
|
+
steps:
|
|
38
|
+
- name: Checkout
|
|
39
|
+
uses: actions/checkout@v4
|
|
40
|
+
|
|
41
|
+
- name: Setup Python
|
|
42
|
+
uses: actions/setup-python@v5
|
|
43
|
+
with:
|
|
44
|
+
python-version: "3.11"
|
|
45
|
+
|
|
46
|
+
- name: Install deps
|
|
47
|
+
run: |
|
|
48
|
+
python -m pip install --upgrade pip
|
|
49
|
+
pip install -r requirements.txt
|
|
50
|
+
|
|
51
|
+
- name: Nightly full workflow
|
|
52
|
+
env:
|
|
53
|
+
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
|
|
54
|
+
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }}
|
|
55
|
+
OPENLANE_ROOT: ${{ vars.OPENLANE_ROOT }}
|
|
56
|
+
run: |
|
|
57
|
+
bash scripts/ci/nightly_full.sh
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
name: Deploy to Hugging Face Spaces
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
deploy:
|
|
10
|
+
name: Push to HuggingFace Space
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- name: Checkout full history
|
|
14
|
+
uses: actions/checkout@v4
|
|
15
|
+
with:
|
|
16
|
+
fetch-depth: 0
|
|
17
|
+
lfs: false
|
|
18
|
+
|
|
19
|
+
- name: Configure Git identity
|
|
20
|
+
run: |
|
|
21
|
+
git config user.email "deploy-bot@github-actions"
|
|
22
|
+
git config user.name "GitHub Actions Deploy Bot"
|
|
23
|
+
|
|
24
|
+
- name: Install git-lfs
|
|
25
|
+
run: |
|
|
26
|
+
sudo apt-get install -y git-lfs
|
|
27
|
+
git lfs install
|
|
28
|
+
|
|
29
|
+
- name: Migrate binary files to LFS across full history
|
|
30
|
+
run: |
|
|
31
|
+
# This rewrites ALL commits in history to store binaries as LFS pointers.
|
|
32
|
+
# This is required because HuggingFace checks every commit, not just the latest.
|
|
33
|
+
git lfs migrate import \
|
|
34
|
+
--include="*.woff2,*.wasm,*.woff,*.ttf,*.otf,*.png,*.jpg,*.jpeg,*.ico,*.gif,*.mp4,*.webp" \
|
|
35
|
+
--everything \
|
|
36
|
+
--yes
|
|
37
|
+
echo "✓ LFS migration complete"
|
|
38
|
+
|
|
39
|
+
- name: Push to Hugging Face Space
|
|
40
|
+
env:
|
|
41
|
+
HF_TOKEN: ${{ secrets.HF_TOKEN }}
|
|
42
|
+
run: |
|
|
43
|
+
if [ -z "$HF_TOKEN" ]; then
|
|
44
|
+
echo "::error::HF_TOKEN secret is not set. Go to repo Settings → Secrets → Actions → New secret"
|
|
45
|
+
exit 1
|
|
46
|
+
fi
|
|
47
|
+
git remote add hf "https://hf_user:${HF_TOKEN}@huggingface.co/spaces/vxkyyy/AgentIC"
|
|
48
|
+
# Force push because history was rewritten by lfs migrate import
|
|
49
|
+
git push hf main --force
|
|
50
|
+
|
|
51
|
+
- name: Sync LLM secrets to HuggingFace Space
|
|
52
|
+
env:
|
|
53
|
+
HF_TOKEN: ${{ secrets.HF_TOKEN }}
|
|
54
|
+
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
|
|
55
|
+
NVIDIA_MODEL: ${{ secrets.NVIDIA_MODEL }}
|
|
56
|
+
NVIDIA_BASE_URL: ${{ secrets.NVIDIA_BASE_URL }}
|
|
57
|
+
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
|
|
58
|
+
LLM_MODEL: ${{ secrets.LLM_MODEL }}
|
|
59
|
+
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }}
|
|
60
|
+
GROQ_API_KEY: ${{ secrets.GROQ_API_KEY }}
|
|
61
|
+
run: |
|
|
62
|
+
HF_SPACE="vxkyyy/AgentIC"
|
|
63
|
+
API="https://huggingface.co/api/spaces/${HF_SPACE}/secrets"
|
|
64
|
+
|
|
65
|
+
set_secret() {
|
|
66
|
+
local key="$1"
|
|
67
|
+
local value="$2"
|
|
68
|
+
if [ -z "$value" ]; then
|
|
69
|
+
echo "⏭ Skipping ${key} (not set in GitHub secrets)"
|
|
70
|
+
return
|
|
71
|
+
fi
|
|
72
|
+
HTTP=$(curl -s -o /dev/null -w "%{http_code}" -X PUT "$API" \
|
|
73
|
+
-H "Authorization: Bearer ${HF_TOKEN}" \
|
|
74
|
+
-H "Content-Type: application/json" \
|
|
75
|
+
-d "[{\"key\":\"${key}\",\"value\":\"${value}\"}]")
|
|
76
|
+
if [ "$HTTP" = "200" ] || [ "$HTTP" = "201" ]; then
|
|
77
|
+
echo "✓ ${key} synced to HF Space"
|
|
78
|
+
else
|
|
79
|
+
echo "::warning::Failed to sync ${key} (HTTP ${HTTP})"
|
|
80
|
+
fi
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
set_secret "NVIDIA_API_KEY" "$NVIDIA_API_KEY"
|
|
84
|
+
set_secret "NVIDIA_MODEL" "$NVIDIA_MODEL"
|
|
85
|
+
set_secret "NVIDIA_BASE_URL" "$NVIDIA_BASE_URL"
|
|
86
|
+
set_secret "LLM_API_KEY" "$LLM_API_KEY"
|
|
87
|
+
set_secret "LLM_MODEL" "$LLM_MODEL"
|
|
88
|
+
set_secret "LLM_BASE_URL" "$LLM_BASE_URL"
|
|
89
|
+
set_secret "GROQ_API_KEY" "$GROQ_API_KEY"
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
name: Deploy Backend to Oracle Cloud
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
push:
|
|
6
|
+
branches:
|
|
7
|
+
- main
|
|
8
|
+
paths:
|
|
9
|
+
- 'server/**'
|
|
10
|
+
- 'src/**'
|
|
11
|
+
- 'ops/**'
|
|
12
|
+
- 'docker-compose.yml'
|
|
13
|
+
- 'Dockerfile'
|
|
14
|
+
- 'requirements.txt'
|
|
15
|
+
- '.github/workflows/oracle-deploy.yml'
|
|
16
|
+
|
|
17
|
+
concurrency:
|
|
18
|
+
group: oracle-deploy
|
|
19
|
+
cancel-in-progress: false
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
validate:
|
|
23
|
+
name: Validate Backend Before Deploy
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
steps:
|
|
26
|
+
- name: Checkout Code
|
|
27
|
+
uses: actions/checkout@v4
|
|
28
|
+
|
|
29
|
+
- name: Setup Python
|
|
30
|
+
uses: actions/setup-python@v5
|
|
31
|
+
with:
|
|
32
|
+
python-version: "3.11"
|
|
33
|
+
|
|
34
|
+
- name: Install deps
|
|
35
|
+
run: |
|
|
36
|
+
python -m pip install --upgrade pip
|
|
37
|
+
pip install -r requirements.txt
|
|
38
|
+
|
|
39
|
+
- name: Compile and config checks
|
|
40
|
+
run: |
|
|
41
|
+
python -m py_compile server/db.py server/api.py server/lab.py server/tasks.py src/agentic/orchestrator.py src/agentic/cli.py
|
|
42
|
+
python -m json.tool ops/grafana/dashboards/agentic-overview.json > /dev/null
|
|
43
|
+
touch .env
|
|
44
|
+
docker compose config > /dev/null
|
|
45
|
+
|
|
46
|
+
deploy:
|
|
47
|
+
needs: validate
|
|
48
|
+
runs-on: ubuntu-latest
|
|
49
|
+
steps:
|
|
50
|
+
- name: Checkout Code
|
|
51
|
+
uses: actions/checkout@v4
|
|
52
|
+
|
|
53
|
+
- name: Setup SSH
|
|
54
|
+
run: |
|
|
55
|
+
mkdir -p ~/.ssh/
|
|
56
|
+
echo "${{ secrets.ORACLE_SSH_KEY }}" > ~/.ssh/id_rsa
|
|
57
|
+
chmod 600 ~/.ssh/id_rsa
|
|
58
|
+
ssh-keyscan -H ${{ secrets.ORACLE_HOST }} >> ~/.ssh/known_hosts
|
|
59
|
+
|
|
60
|
+
- name: Sync files to Oracle VM via rsync
|
|
61
|
+
run: |
|
|
62
|
+
rsync -avz --delete \
|
|
63
|
+
--exclude '.git' \
|
|
64
|
+
--exclude '.env' \
|
|
65
|
+
--exclude 'node_modules' \
|
|
66
|
+
--exclude '__pycache__' \
|
|
67
|
+
--exclude '.venv-agentic' \
|
|
68
|
+
--exclude '.pytest_cache' \
|
|
69
|
+
--exclude '.mypy_cache' \
|
|
70
|
+
--exclude '.codex' \
|
|
71
|
+
--exclude 'artifacts' \
|
|
72
|
+
--exclude 'designs' \
|
|
73
|
+
--exclude 'designs_root_owned' \
|
|
74
|
+
--exclude 'metrics' \
|
|
75
|
+
--exclude 'notebooks' \
|
|
76
|
+
--exclude 'agentic_jobs.db' \
|
|
77
|
+
--exclude 'build.log' \
|
|
78
|
+
./ ${{ secrets.ORACLE_USER }}@${{ secrets.ORACLE_HOST }}:~/AgentIC/
|
|
79
|
+
|
|
80
|
+
- name: Rebuild & Restart Docker Containers
|
|
81
|
+
uses: appleboy/ssh-action@v1.0.3
|
|
82
|
+
with:
|
|
83
|
+
host: ${{ secrets.ORACLE_HOST }}
|
|
84
|
+
username: ${{ secrets.ORACLE_USER }}
|
|
85
|
+
key: ${{ secrets.ORACLE_SSH_KEY }}
|
|
86
|
+
script: |
|
|
87
|
+
set -eu
|
|
88
|
+
cd ~/AgentIC
|
|
89
|
+
|
|
90
|
+
if [ ! -f .env ]; then
|
|
91
|
+
echo "Missing ~/AgentIC/.env on Oracle VM"
|
|
92
|
+
exit 1
|
|
93
|
+
fi
|
|
94
|
+
|
|
95
|
+
required_keys="POSTGRES_PASSWORD REDIS_PASSWORD MINIO_ROOT_USER MINIO_ROOT_PASSWORD ALLOW_BACKEND_LLM_FALLBACK"
|
|
96
|
+
for key in $required_keys; do
|
|
97
|
+
if ! grep -Eq "^${key}=.+$" .env; then
|
|
98
|
+
echo "Missing required env key: ${key}"
|
|
99
|
+
exit 1
|
|
100
|
+
fi
|
|
101
|
+
done
|
|
102
|
+
|
|
103
|
+
sudo docker-compose config > /dev/null
|
|
104
|
+
|
|
105
|
+
compose_version=$(sudo docker-compose version --short 2>/dev/null || echo unknown)
|
|
106
|
+
if echo "$compose_version" | grep -Eq '^1\.'; then
|
|
107
|
+
echo "Legacy docker-compose detected (${compose_version}); using clean container replacement"
|
|
108
|
+
legacy_containers=$(sudo docker ps -a --format '{{.Names}}' | grep -E '(^agentic_|^[0-9a-f]{12,}_agentic_)' || true)
|
|
109
|
+
if [ -n "$legacy_containers" ]; then
|
|
110
|
+
echo "Removing legacy compose containers:"
|
|
111
|
+
echo "$legacy_containers"
|
|
112
|
+
echo "$legacy_containers" | xargs -r sudo docker rm -f
|
|
113
|
+
fi
|
|
114
|
+
fi
|
|
115
|
+
|
|
116
|
+
sudo env COMPOSE_PROFILES=observability docker-compose up -d --build --remove-orphans
|
|
117
|
+
|
|
118
|
+
for i in $(seq 1 30); do
|
|
119
|
+
api_health=$(sudo docker inspect -f '{{if .State.Health}}{{.State.Health.Status}}{{else}}unknown{{end}}' agentic_api 2>/dev/null || true)
|
|
120
|
+
worker_health=$(sudo docker inspect -f '{{if .State.Health}}{{.State.Health.Status}}{{else}}unknown{{end}}' agentic_worker 2>/dev/null || true)
|
|
121
|
+
if [ "$api_health" = "healthy" ] && [ "$worker_health" = "healthy" ] && \
|
|
122
|
+
curl -fsS http://127.0.0.1:7860/livez >/dev/null 2>&1 && \
|
|
123
|
+
curl -fsS http://127.0.0.1:7860/readyz >/dev/null 2>&1; then
|
|
124
|
+
echo "AgentIC backend is healthy"
|
|
125
|
+
exit 0
|
|
126
|
+
fi
|
|
127
|
+
echo "Waiting for AgentIC backend to become healthy... api=${api_health} worker=${worker_health}"
|
|
128
|
+
sleep 5
|
|
129
|
+
done
|
|
130
|
+
echo "AgentIC backend failed health checks after deploy"
|
|
131
|
+
sudo docker-compose ps
|
|
132
|
+
sudo docker-compose logs --tail=100 api worker
|
|
133
|
+
exit 1
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.pyc
|
|
4
|
+
*.pyo
|
|
5
|
+
*.pyd
|
|
6
|
+
.Python
|
|
7
|
+
env/
|
|
8
|
+
venv/
|
|
9
|
+
.env
|
|
10
|
+
.venv
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
*.egg-info/
|
|
24
|
+
.installed.cfg
|
|
25
|
+
*.egg
|
|
26
|
+
|
|
27
|
+
# AgentIC Specific
|
|
28
|
+
# Ignore massive run logs or temporary build artifacts if they end up here
|
|
29
|
+
runs/
|
|
30
|
+
*.log
|
|
31
|
+
*.vcd
|
|
32
|
+
work/
|
|
33
|
+
transcript
|
|
34
|
+
|
|
35
|
+
# OSS CAD Suite (large binary toolchain - download separately)
|
|
36
|
+
oss-cad-suite/
|
|
37
|
+
oss-cad-suite-*.tgz
|
|
38
|
+
|
|
39
|
+
# System
|
|
40
|
+
.DS_Store
|
|
41
|
+
Thumbs.db
|
|
42
|
+
|
|
43
|
+
# OpenLane outputs (if copied here)
|
|
44
|
+
# Uncomment the line below if you don't want to version control large GDS files
|
|
45
|
+
*.gds
|
|
46
|
+
temp_*.svg
|
|
47
|
+
designs/*/src/sim
|
|
48
|
+
.venv-agentic/
|
|
49
|
+
|
|
50
|
+
# Node / Frontend
|
|
51
|
+
node_modules/
|
|
52
|
+
web/node_modules/
|
|
53
|
+
web/dist/
|
|
54
|
+
web/.vite/
|
|
55
|
+
dist/
|
|
56
|
+
|
|
57
|
+
# Temporary / test scripts
|
|
58
|
+
*.tmp
|
|
59
|
+
global_reqs.tmp
|
|
60
|
+
venv_reqs.tmp
|
|
61
|
+
nodesource_setup.sh
|
|
62
|
+
test_import.py
|
|
63
|
+
test_signoff.py
|
|
64
|
+
test_signoff2.py
|
|
65
|
+
test_direct_call.py
|
|
66
|
+
test_llm_call.py
|
|
67
|
+
fix_recursion.py
|
|
68
|
+
fix_subprocess.py
|
|
69
|
+
test_tb.v
|
|
70
|
+
benchmark_verieval.py
|
|
71
|
+
scripts/remote_setup.sh
|
|
72
|
+
*.jsonl
|
|
73
|
+
leaderboard.md
|
|
74
|
+
verieval_results.json
|
|
75
|
+
|
|
76
|
+
# PLY parser cache (auto-generated, 2+ MB)
|
|
77
|
+
parser.out
|
|
78
|
+
parsetab.py
|
|
79
|
+
|
|
80
|
+
# Database
|
|
81
|
+
agentic_jobs.db
|
|
82
|
+
*.sqlite3
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
# Temporary fix scripts
|
|
86
|
+
fix_*.py
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
# Security build outputs
|
|
90
|
+
secure_build/
|
|
91
|
+
build_secure_ip.py
|
|
92
|
+
update_readme.py
|
|
93
|
+
test.js
|
|
94
|
+
modify_*.py
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Build frontend web UI
|
|
2
|
+
FROM node:20 AS frontend-builder
|
|
3
|
+
WORKDIR /app/web
|
|
4
|
+
COPY web/package*.json ./
|
|
5
|
+
RUN npm install
|
|
6
|
+
COPY web/ ./
|
|
7
|
+
RUN npm run build
|
|
8
|
+
|
|
9
|
+
# Base Python runtime
|
|
10
|
+
FROM python:3.11-slim
|
|
11
|
+
|
|
12
|
+
# Install system dependencies and EDA tools
|
|
13
|
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
14
|
+
build-essential \
|
|
15
|
+
cmake \
|
|
16
|
+
git \
|
|
17
|
+
curl \
|
|
18
|
+
libboost-dev \
|
|
19
|
+
zlib1g-dev \
|
|
20
|
+
libfftw3-dev \
|
|
21
|
+
libreadline-dev \
|
|
22
|
+
tcl-dev \
|
|
23
|
+
pkg-config \
|
|
24
|
+
verilator \
|
|
25
|
+
iverilog \
|
|
26
|
+
gtkwave \
|
|
27
|
+
yosys \
|
|
28
|
+
fontconfig \
|
|
29
|
+
fonts-dejavu \
|
|
30
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
31
|
+
|
|
32
|
+
# Install SymbiYosys
|
|
33
|
+
RUN pip install --no-cache-dir symbiyosys 2>/dev/null || \
|
|
34
|
+
(git clone --depth 1 https://github.com/YosysHQ/sby /tmp/sby \
|
|
35
|
+
&& cd /tmp/sby && make install && rm -rf /tmp/sby) || true
|
|
36
|
+
|
|
37
|
+
WORKDIR /app
|
|
38
|
+
|
|
39
|
+
ENV PYTHONPATH=/app
|
|
40
|
+
|
|
41
|
+
# Disable CrewAI telemetry
|
|
42
|
+
ENV CREWAI_TRACING_ENABLED=false
|
|
43
|
+
ENV CREWAI_DISABLE_TELEMETRY=true
|
|
44
|
+
ENV OTEL_SDK_DISABLED=true
|
|
45
|
+
|
|
46
|
+
# Install Python dependencies
|
|
47
|
+
COPY requirements.txt .
|
|
48
|
+
RUN pip install --no-cache-dir --upgrade pip && \
|
|
49
|
+
pip install --no-cache-dir uvicorn[standard] fastapi && \
|
|
50
|
+
pip install --no-cache-dir -r requirements.txt && \
|
|
51
|
+
pip install --no-cache-dir 'apscheduler>=3.10.0'
|
|
52
|
+
|
|
53
|
+
# Copy application code
|
|
54
|
+
COPY . .
|
|
55
|
+
|
|
56
|
+
# Copy built artifacts from frontend-builder
|
|
57
|
+
COPY --from=frontend-builder /app/web/dist /app/web/dist
|
|
58
|
+
|
|
59
|
+
# Runtime directories
|
|
60
|
+
RUN mkdir -p /app/designs /app/artifacts /app/pdk
|
|
61
|
+
|
|
62
|
+
ENV PDK_ROOT=/app/pdk
|
|
63
|
+
|
|
64
|
+
# HuggingFace Spaces runs as non-root user 1000
|
|
65
|
+
RUN useradd -m -u 1000 appuser && chown -R appuser:appuser /app
|
|
66
|
+
USER appuser
|
|
67
|
+
|
|
68
|
+
EXPOSE 7860
|
|
69
|
+
|
|
70
|
+
CMD ["uvicorn", "server.api:app", "--host", "0.0.0.0", "--port", "7860"]
|
agentic_ic-3.0.0/LICENSE
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Copyright (c) 2026 Vicky Nishad. All Rights Reserved.
|
|
2
|
+
|
|
3
|
+
This software and associated documentation files (the "Software") are PROPRIETARY and CONFIDENTIAL.
|
|
4
|
+
|
|
5
|
+
You may NOT use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software in any form, or permit persons to whom the Software is furnished to do so.
|
|
6
|
+
|
|
7
|
+
Any unauthorized use, reproduction, or distribution of this Software, in whole or in part, without the express written permission from the copyright owner is strictly prohibited and may result in severe civil and criminal penalties.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# AgentIC Makefile - Structured Verification & Hardening Workflow
|
|
2
|
+
# Usage: make <target> [DESIGN=name]
|
|
3
|
+
|
|
4
|
+
DESIGN ?= simple_counter
|
|
5
|
+
OPENLANE_ROOT ?= $(HOME)/OpenLane
|
|
6
|
+
DESIGN_SRC = designs/$(DESIGN)/src
|
|
7
|
+
RTL = $(DESIGN_SRC)/$(DESIGN).v
|
|
8
|
+
TB = $(DESIGN_SRC)/$(DESIGN)_tb.v
|
|
9
|
+
PDK_ROOT ?= $(HOME)/.ciel
|
|
10
|
+
OPENLANE_IMAGE ?= ghcr.io/the-openroad-project/openlane:ff5509f65b17bfa4068d5336495ab1718987ff69-amd64
|
|
11
|
+
|
|
12
|
+
.PHONY: all lint sim verify harden clean help
|
|
13
|
+
|
|
14
|
+
# Complete flow
|
|
15
|
+
all: lint sim harden verify
|
|
16
|
+
@echo "=========================================="
|
|
17
|
+
@echo " COMPLETE WORKFLOW FINISHED FOR $(DESIGN)"
|
|
18
|
+
@echo "=========================================="
|
|
19
|
+
|
|
20
|
+
# Step 1: Lint (syntax check)
|
|
21
|
+
lint:
|
|
22
|
+
@echo "━━━ [1/4] LINTING $(DESIGN) ━━━"
|
|
23
|
+
iverilog -t null $(RTL)
|
|
24
|
+
@echo "✓ Syntax OK"
|
|
25
|
+
|
|
26
|
+
# Step 2: Simulate (functional verification)
|
|
27
|
+
sim: lint
|
|
28
|
+
@echo "━━━ [2/4] SIMULATING $(DESIGN) ━━━"
|
|
29
|
+
iverilog -o $(DESIGN_SRC)/sim $(RTL) $(TB)
|
|
30
|
+
cd $(DESIGN_SRC) && vvp sim | tee sim.log
|
|
31
|
+
@grep -q "TEST PASSED" $(DESIGN_SRC)/sim.log && echo "✓ Simulation PASSED" || (echo "✗ Simulation FAILED" && exit 1)
|
|
32
|
+
|
|
33
|
+
# Step 3: Harden (RTL → GDSII via OpenLane Docker)
|
|
34
|
+
harden:
|
|
35
|
+
@echo "━━━ [3/4] HARDENING $(DESIGN) → GDSII ━━━"
|
|
36
|
+
@echo "Copying design to OpenLane..."
|
|
37
|
+
cp -r designs/$(DESIGN) $(OPENLANE_ROOT)/designs/
|
|
38
|
+
@echo "Running OpenLane flow (may take 5-15 min)..."
|
|
39
|
+
docker run --rm \
|
|
40
|
+
-v $(OPENLANE_ROOT):/openlane \
|
|
41
|
+
-v $(PDK_ROOT):$(PDK_ROOT) \
|
|
42
|
+
-e PDK_ROOT=$(PDK_ROOT) \
|
|
43
|
+
-e PDK=sky130A \
|
|
44
|
+
-e PWD=/openlane \
|
|
45
|
+
$(OPENLANE_IMAGE) \
|
|
46
|
+
./flow.tcl -design $(DESIGN) -tag agent_run_$(shell date +%Y%m%d_%H%M%S) -ignore_mismatches
|
|
47
|
+
@echo "✓ Hardening complete. Check $(OPENLANE_ROOT)/designs/$(DESIGN)/runs/"
|
|
48
|
+
|
|
49
|
+
# Step 4: Verify (DRC/LVS)
|
|
50
|
+
verify:
|
|
51
|
+
@echo "━━━ [4/4] VERIFYING $(DESIGN) (DRC/LVS) ━━━"
|
|
52
|
+
bash scripts/verify_design.sh $(DESIGN)
|
|
53
|
+
|
|
54
|
+
# Utilities
|
|
55
|
+
clean:
|
|
56
|
+
rm -f $(DESIGN_SRC)/sim $(DESIGN_SRC)/sim.log $(DESIGN_SRC)/*.vcd
|
|
57
|
+
@echo "Cleaned simulation artifacts."
|
|
58
|
+
|
|
59
|
+
help:
|
|
60
|
+
@echo "AgentIC Makefile Targets:"
|
|
61
|
+
@echo " make lint - Check Verilog syntax"
|
|
62
|
+
@echo " make sim - Run RTL simulation"
|
|
63
|
+
@echo " make harden - Run OpenLane (RTL→GDSII)"
|
|
64
|
+
@echo " make verify - Run DRC/LVS checks"
|
|
65
|
+
@echo " make all - Run complete flow"
|
|
66
|
+
@echo " make clean - Remove temp files"
|
|
67
|
+
@echo ""
|
|
68
|
+
@echo "Override design: make DESIGN=my_counter sim"
|