Introduction
ChipVerify Pro is an all-in-one web-based platform for learning Verilog development, offering simulation, synthesis, timing analysis, and verification tools—directly in your browser.
What Can You Do?
Simulate
Run simulations with Icarus Verilog or Verilator, with full waveform support and real-time logs
Synthesize
Technology-mapped synthesis using Yosys + SkyWater 130nm PDK
Analyze Timing
Static Timing Analysis with OpenSTA and custom SDC constraints
Lint & Share
Lint checking with Verilator, and share code snippets with others
Quick Start
Get started in 5 minutes with this simple workflow:
-
Write Your Code
Use the built-in Monaco editor or load templates from the "Code Templates" button.
-
Add a Testbench
Create a file with "test" or "tb" in the name for automatic testbench detection.
-
Run Simulation
Click the "Simulate" tab → Enable waveform → Click "Run Simulation"
-
View Waveforms
Press Alt + W or click the waveform button to view signals.
-
Synthesize (Optional)
Go to "Synth" tab → Select template → Run synthesis to get gate-level netlist and PPA metrics.
Site Tour
ChipVerify Pro includes an interactive guided tour to help you get familiar with all the features. The tour automatically launches when you first sign in.
What the Tour Covers
The 2-minute tour walks you through:
-
File Explorer
Create, organize, and manage your Verilog files with the file panel.
-
Code Editor
Monaco-powered editor with syntax highlighting, auto-completion, and error detection.
-
File Menu
Create projects, save/load, browse examples, and download files.
-
Simulation
Run simulations with Icarus Verilog or Verilator and view waveforms.
-
Synthesis & Analysis
Synthesize with Yosys, explore schematics, and run timing analysis.
-
Daily Quota
Understand FREE tier limits (20 sim/synth per day) vs PRO unlimited.
-
Customize Layout
Drag panels, resize borders, and save custom layouts (PRO).
-
More Features
Share projects, keyboard shortcuts, and clear outputs.
Restarting the Tour
To take the tour again at any time:
- Click the About menu in the top toolbar
- Select "Take Site Tour"
Interface Overview
Layout
The interface is divided into three main areas:
| Area | Purpose | Toggle |
|---|---|---|
| Left Sidebar | File explorer, simulation/synthesis controls | Alt + B |
| Center Editor | Monaco code editor with syntax highlighting | Alt + E |
| Right Panels | Console output, results, analysis views | Click minimize icons |
Left Sidebar Tabs
- Files - Manage Verilog files, add/delete/rename
- Simulate - Configure and run simulations
- Synth - Synthesis settings and templates
- Lint - Code quality checks
- STA - Static timing analysis settings
Right Panel Tabs
- Console - Simulation/synthesis output with search
- Lint - Verilator lint results
- Netlist - Synthesized gate-level Verilog
- Diagram - Visual schematic view
- Tree - Design hierarchy
- FSM - Finite State Machine viewer
- Cell Info - Detailed cell properties
- Connectivity - Net driver/load information
- PPA - Power, Performance, Area metrics
- STA - Timing analysis reports
Panel Details
ChipVerify Pro features multiple specialized panels for analyzing your designs. Each panel provides unique insights into your Verilog code and synthesized netlist.
Console Panel
The Console panel displays real-time output from simulation, synthesis, and lint operations.
Features:
- Real-time Output - Watch compilation and simulation logs stream live
- Search Functionality - Click the search icon to find text in output
- Queue Status - Badge shows number of pending/running jobs
- Scrollable History - Review past output without losing context
FSM Panel (State Machine Viewer)
Extract and visualize Finite State Machines from your Verilog code.
How to Use:
-
Select File
Choose a specific Verilog file from the dropdown, or select "All files" to scan everything.
-
Click "Analyze FSM"
The tool extracts state machines from case statements and generates a diagram.
-
Explore the Diagram
Use zoom controls to navigate. Click states to highlight transitions.
Zoom Controls:
- + - Zoom in
- - - Zoom out
- Fit - Fit diagram to viewport
- 100% - Reset to actual size
- Clear - Remove state highlights
Cell Info Panel
View detailed information about standard cells in your synthesized design.
What It Shows:
- Instance Name - Cell instance and ABC optimization name
- Cell Type - Gate type (AND2, OR3, DFF, etc.) with function description
- Input/Output Ports - Port names and connected net names
- Fanin Cells - Cells that drive this cell's inputs
- Fanout Cells - Cells driven by this cell's outputs
- Timing Paths - Setup/hold timing with slack and delay values
Liberty Cell Characteristics:
| Property | Description |
|---|---|
| Area | Physical cell area in um² |
| Leakage Power | Static power consumption (nW/pW) |
| Drive Strength | Output drive capability (x1, x2, etc.) |
| Input Capacitance | Load on input pins (fF) |
| Boolean Function | Logic equation implemented |
| Timing Delays | Rise/fall propagation delays |
Connectivity Panel
Analyze net connectivity to understand signal flow through your design.
What It Shows:
- Drivers - Cells that output (drive) the selected net
- Loads - Cells that consume (load) the selected net
- Net Name - The wire/signal being analyzed
How to Use:
- Click on any net (wire) in the schematic diagram
- The Connectivity panel updates with driver and load information
- Click "Clear" to reset the selection
Diagram Panel (Schematic Viewer)
Interactive visual representation of your synthesized netlist.
Features:
- Pan - Click and drag to move around
- Zoom - Scroll wheel to zoom in/out
- Cell Selection - Click cells to highlight and view info
- Net Highlighting - Click nets to see connectivity
- Hierarchy Navigation - Double-click modules to descend
Tree Panel (Design Hierarchy)
Explore the hierarchical structure of your design.
- View module instantiation tree
- Expand/collapse hierarchy levels
- Click modules to navigate in schematic
- See cell counts per module
File Management
Adding Files
Click the + button in the Files panel or drag & drop .v/.sv files into the browser.
.v/.sv- Design files (synthesis + simulation)*test*.v- Testbenches (simulation only).sdc- Timing constraints (STA only)
Organizing Files
File Grouping:
- Select multiple files (hold Ctrl and click)
- Right-click → "Create Group"
- Name your group (e.g., "ALU", "Control Logic")
Reordering: Drag and drop files to reorder them.
File Actions
- Rename: Right-click file → Rename
- Delete: Right-click file → Delete
- Download: Save/Load button → Download options
GitHub Integration
Connect your GitHub account to import repositories and sync your ChipVerify projects with GitHub.
Connecting Your GitHub Account
-
Open Account Settings
Click your profile icon in the top-right corner, then select "Settings".
-
Click "Connect GitHub"
In the GitHub Integration section, click the connect button.
-
Authorize ChipVerify
You'll be redirected to GitHub. Review the permissions and click "Authorize".
-
Connection Complete
You'll see your GitHub username and connection date in Settings.
Importing from GitHub
Once connected, you can import Verilog files from your repositories:
-
Open Project Browser
Click "Save/Load" → "Browse Projects"
-
Click "Import from GitHub"
A dialog shows your available repositories.
-
Select Repository
Choose the repository containing your Verilog files.
-
Select Branch
Pick the branch to import from (default: main/master).
-
Import Files
Verilog files (.v, .sv) are imported into a new ChipVerify project.
Syncing Projects
Keep your ChipVerify projects in sync with GitHub:
| Action | Description |
|---|---|
| Pull | Download latest changes from GitHub to ChipVerify |
| Push | Upload your ChipVerify changes to GitHub |
| Sync | Two-way sync: pull then push to keep both in sync |
Linking Existing Projects
Connect an existing ChipVerify project to a GitHub repository:
- Open your project in ChipVerify
- Click "Save/Load" → "Link to GitHub"
- Select the target repository and branch
- Choose sync direction (pull from GitHub or push to GitHub)
Disconnecting GitHub
To remove your GitHub connection:
- Go to Settings (profile icon → Settings)
- In the GitHub Integration section, click "Disconnect"
- Confirm the disconnection
Code Editor
Features
- Syntax Highlighting - Verilog support
- Auto-completion - Built-in IntelliSense
- Multi-file Editing - Tab-based interface
- Auto-save - Saves changes every 30 seconds
Keyboard Shortcuts in Editor
| Action | Shortcut |
|---|---|
| Save Project | Ctrl + Shift + S |
| Find | Ctrl + F |
| Replace | Ctrl + H |
| Comment Line | Ctrl + / |
Using Templates
Click "Code Templates" button in Files panel to load pre-built modules:
- Basic gates (AND, OR, XOR)
- Flip-flops and registers
- Counters and FSMs
- Multiplexers
- Testbench template
Simulation
Choosing a Simulator
ChipVerify Pro supports two industry-standard simulators:
| Simulator | Type | Best For |
|---|---|---|
| Icarus Verilog | Event-driven | Standard testbenches, learning, quick simulations |
| Verilator | Cycle-accurate | High-performance, large designs, faster execution |
Select your preferred simulator from the dropdown in the "Simulate" tab.
Icarus Verilog
Traditional event-driven simulator, ideal for learning and standard Verilog designs:
- Full support for delays (
#10,#5ns) - Supports all Verilog constructs including non-synthesizable code
- Easy to debug with familiar simulation behavior
- Common compilation args:
-g2005 -Wall
Verilator
High-performance cycle-accurate simulator that compiles Verilog to C++:
- Much faster execution for large designs
- Strict lint checking catches more issues
- Requires synthesizable code (no delays in design files)
- Best for designs that need fast simulation
- Common compilation args:
--timing --trace
Daily Simulation Quota
ChipVerify tracks your daily simulation usage:
| Tier | Daily Limit | Resets |
|---|---|---|
| FREE | 20 simulations per day | Midnight UTC |
| PRO | Unlimited | N/A |
Your remaining quota is displayed in the Simulate tab. The indicator changes color as you approach the limit:
- Green - Plenty remaining (< 80% used)
- Yellow - Running low (80-90% used)
- Red - Almost exhausted (> 90% used)
Running a Simulation
-
Prepare Your Design
Ensure you have at least one design file (.v) and one testbench file (with "test" or "tb" in name).
-
Configure Settings
Go to "Simulate" tab in left sidebar:
- Simulator: Choose Icarus Verilog or Verilator
- Compilation Args:
-g2005 -Wall(Icarus) or--timing(Verilator) - Compile Order: Drag files to set compilation order (if module dependencies matter)
- Enable "Dump Waveform (VCD)" for signal viewing
-
Run Simulation
Click "Run Simulation" or press Alt + R
-
View Real-Time Logs
Watch compilation and simulation output stream in real-time in the Console panel. You'll see clear section headers for compilation vs simulation phases.
-
View Results
Console output appears in right panel. Green checkmark = success!
Compilation Order Control
For designs with module dependencies, you can control the exact order files are compiled:
- Look for the "Compile Order" panel in the Simulate tab
- Drag and drop files to reorder them (files with dependencies should come after their modules)
- Click the "X" button to remove files you don't want to compile
- Click "+ Add Files" to add files back or include new ones
- The compile order is saved with your project
Clearing Simulation Cache
ChipVerify caches simulation results to speed up repeated runs. If you've modified code but still see old results:
- Go to the "Simulate" tab
- Click the yellow "Clear Simulation Cache" button
- Wait for confirmation showing how many cache entries were cleared
- Run your simulation again for fresh results
Testbench Requirements
`timescale 1ns/1ps
module tb;
// Your testbench signals
reg clk, rst;
// Clock generation
initial begin
clk = 0;
forever #5 clk = ~clk;
end
// Stimulus
initial begin
rst = 1;
#20 rst = 0;
// Your test cases here
#1000 $finish; // End simulation
end
// VCD dump for waveform
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, tb);
end
endmodule
- Missing
$finish- simulation runs forever - No
$dumpvars- no waveform data - Syntax errors - check console for compilation errors
Synthesis
What is Synthesis?
Synthesis converts your RTL (Register Transfer Level) Verilog code into a gate-level netlist using actual hardware cells from the SkyWater 130nm PDK.
Synthesis Workflow
-
Select Template
Choose a synthesis strategy in the "Synth" tab:
- Technology-Mapped (Default) - Uses SkyWater PDK liberty files
- Generic - No technology library (faster, less accurate)
- Speed-Optimized - Maximize frequency (uses more area)
- Area-Optimized - Minimize chip size (slower)
- Fast Synthesis - Quick results, minimal optimization
-
Load Template
Click "Load" to populate Yosys commands in the editor
-
Configure Options
- Process Corner: Choose TT (typical), FF (fast), or SS (slow)
- PPA Analysis: Enable for power/timing/area metrics
- Generate Schematic: Create visual diagram
-
Run Synthesis
Click "Run Synthesis" button
-
View Results
- Console: Yosys output log
- Netlist: Gate-level Verilog code
- Diagram: Visual schematic (pan/zoom enabled)
- Tree: Design hierarchy
- PPA: Metrics (if enabled)
Process Corners Explained
| Corner | Conditions | Use Case |
|---|---|---|
| TT (Typical) | 25°C, 1.8V | Normal operating conditions |
| FF (Fast) | -40°C, 1.95V | Best-case performance, highest leakage |
| SS (Slow) | 125°C, 1.65V | Worst-case timing, lowest power |
Verilator Lint
What is Lint Checking?
Lint checking analyzes your Verilog code for common mistakes, coding style issues, and potential bugs before simulation or synthesis.
Running Lint
- Go to "Lint" tab in left sidebar
- Optional: Add Verilator arguments (e.g.,
-Wall --lint-only) - Click "Run Verilator Lint"
- View results in the "Lint" panel on right
What Lint Checks For
- Unused signals - Variables declared but never used
- Undriven nets - Wires without drivers
- Multiple drivers - Signals driven from multiple sources
- Width mismatches - Assignment size issues
- Combinational loops - Feedback without registers
- Case statement issues - Missing defaults, overlapping cases
- Blocking vs non-blocking - Improper assignment usage
Interpreting Results
%Warning-UNUSED: design.v:15: Signal is not used: 'temp_data'
%Warning-WIDTH: design.v:23: Operator ASSIGN expects 8 bits, got 4
Each warning shows:
- Type: UNUSED, WIDTH, UNDRIVEN, etc.
- Location: File name and line number
- Description: What's wrong
Static Timing Analysis
What is STA?
STA (Static Timing Analysis) verifies that your design meets timing requirements at a given clock frequency. It analyzes all paths through the design without running simulation.
STA Workflow
-
Run Synthesis First
⚠️ REQUIRED: STA analyzes the gate-level netlist from synthesis
-
Configure STA Settings
In "STA" tab:
- Clock Period: Target clock period in nanoseconds (e.g., 10.0 = 100 MHz)
- Process Corner: Must match synthesis corner!
-
Edit SDC Constraints (Optional)
Click "Edit Timing Constraints (SDC)" to customize timing requirements
-
Run STA
Click "Run STA Analysis"
-
Analyze Results
View timing report in STA panel:
- Setup Slack: Positive = timing met ✅, Negative = violation ❌
- Hold Slack: Usually passes if setup passes
- Critical Path: Slowest path through design
- Max Frequency: Highest achievable clock speed
Understanding Slack
Setup Slack: +1.234 ns ✅ (TIMING MET)
Hold Slack: +0.089 ns ✅ (TIMING MET)
Critical Path Delay: 8.766 ns
Max Frequency: 114.1 MHz (for 10ns period)
| Slack | Meaning | Action |
|---|---|---|
| Positive (+) | Timing requirement met with margin | ✅ All good! Can increase frequency |
| Negative (-) | Timing violation - data arrives too late | ❌ Reduce frequency or optimize design |
| Near Zero (~0) | Barely meeting timing | ⚠️ Risky - add margin or optimize |
Fixing Timing Violations
- Reduce Clock Frequency - Easiest solution, but slower performance
- Pipeline Design - Add register stages to break long paths
- Use Speed-Optimized Synthesis - Trades area for speed
- Reduce Logic Depth - Simplify combinational logic
- Check FF Corner - Best-case conditions for max performance
Waveform Viewer
Viewing Waveforms
- Enable "Dump Waveform (VCD)" in Simulate tab
- Run simulation successfully
- Press Alt + W or click waveform button
- Waveform viewer opens at bottom of screen
Waveform Controls
- Zoom: Scroll to zoom in/out on timeline
- Pan: Click and drag to move timeline
- Measure: Click two points to measure time difference
- Signal Selection: Click signals to expand/collapse hierarchy
Troubleshooting
Check your testbench has:
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, tb); // Dump all signals in testbench
end
PPA Analysis
What is PPA?
Power, Performance, Area - the three key metrics for evaluating chip designs.
Enabling PPA
- Go to "Synth" tab
- Check "Run PPA Analysis"
- Run synthesis with a template that uses Liberty files
- View results in "PPA" panel
Metrics Explained
📏 Area Analysis
- Total Cells: Number of standard cells used
- Chip Area: Physical silicon area (µm²)
- Cell Breakdown: Which gates are used most
⚡ Performance (Timing)
- Critical Path Delay: Longest path through design (ns)
- Max Frequency: Highest achievable clock speed (MHz)
- Logic Levels: Depth of combinational logic
🔋 Power Estimation
- Dynamic Power: Power when switching (active)
- Leakage Power: Power when idle (static)
- Total Power: Sum of dynamic + leakage
- Speed-Optimized: Higher frequency, more area, more power
- Area-Optimized: Smaller chip, slower, less power
PPA History (PRO)
Track and compare PPA metrics across multiple synthesis runs to understand how your design evolves and how different optimization strategies affect results.
Enabling PPA History
-
Enable PPA Analysis
In the Synth tab, check "Run PPA Analysis"
-
Enable History Tracking
Check "Compare with Past Runs" option
-
Run Synthesis
Each synthesis run is automatically saved to history
Availability
| Tier | PPA History |
|---|---|
| FREE | Not available |
| PRO | Last 10 runs with full comparison |
What Gets Tracked
Each synthesis run captures:
- Timestamp - When the synthesis was run
- Library & Corner - HD/HS/MS/LS/HVL and TT/FF/SS
- Area Metrics - Cells, wires, chip area (um²)
- Timing - Critical path, max frequency, slack
- Power - Dynamic, leakage, and total power (uW)
- Timing Status - Whether setup/hold constraints were met
Trend Charts
When you have 2 or more runs, trend charts appear showing:
- Max Frequency Trend - Line chart with % change indicator
- Total Area Trend - Track area growth/reduction
- Total Power Trend - Monitor power consumption changes
Arrows indicate improvement (green up) or regression (red down) compared to previous run.
Sparkline Summary Cards
Quick visual overview of all metrics with mini bar charts showing historical trends. Each card displays:
- Latest value in large font
- Percentage change from baseline
- Color-coded improvement/regression
Run History Table
Detailed tabular view of all saved runs with columns for:
- Run number and timestamp
- Library and corner settings
- Cell count and wire count
- Area, frequency, and power
- Timing met status (checkmark or X)
- Delete button to remove individual entries
Using History for Optimization
-
Establish Baseline
Run synthesis with default settings to get baseline metrics
-
Experiment with Settings
Try different templates (Speed-Optimized, Area-Optimized)
-
Compare Results
Use trend charts to see which changes improved PPA
-
Iterate
Refine your design based on the trade-offs you observe
SDC Constraints
What are SDC Files?
SDC (Synopsys Design Constraints) files define timing requirements, clock specifications, and exceptions for Static Timing Analysis.
Opening SDC Editor
- Go to STA tab → Click "Edit Timing Constraints (SDC)"
- Or press Alt + C
Common SDC Commands
1. Create Clock
# Define a 100 MHz clock (10ns period)
create_clock -name clk -period 10.0 [get_ports clk]
2. Input/Output Delays
# Data arrives 2ns after clock edge
set_input_delay -clock clk 2.0 [all_inputs]
# Data must be stable 2ns before clock edge
set_output_delay -clock clk 2.0 [all_outputs]
3. Clock Uncertainty (Jitter + Skew)
# Add 100ps margin for clock jitter
set_clock_uncertainty 0.1 [get_clocks clk]
4. False Paths (Ignore Timing)
# Reset is asynchronous, don't check timing
set_false_path -from [get_ports reset]
5. Multicycle Paths
# Multiplication can take 2 clock cycles
set_multicycle_path 2 -setup -from [get_pins mult/*]
set_multicycle_path 1 -hold -from [get_pins mult/*]
SDC Template Examples
Load templates from the SDC editor dropdown:
- Basic: Single clock domain
- Multi-Clock: Multiple clock domains with crossing constraints
- Advanced: Complex constraints with exceptions
How SDC Changes STA Results
| SDC Change | Effect on Slack |
|---|---|
| Increase clock period (slower) | More positive (easier to meet) |
| Decrease clock period (faster) | More negative (harder to meet) |
| Add clock uncertainty | Worse (less margin) |
| Add false paths | Better (ignores slow paths) |
| Increase I/O delays | Worse (less time available) |
Projects
Saving Projects
- Sign in with your Google account (required)
- Click "Save" button or press Ctrl + Shift + S
- Enter a project name (e.g., "alu_design")
- Project saved to your account ✅
Loading Projects
- Click "Save/Load" → "Browse Projects"
- See list of your projects and example projects
- Click a project to load it
What Gets Saved
- ✅ All Verilog files (.v, .sv, .sdc)
- ✅ Project description
- ✅ File organization (groups, order)
- ✅ File metadata
- ❌ Simulation results (temporary)
- ❌ Waveform data (too large)
Downloading Projects
Click "Save/Load" → "Download as ZIP" to get all files locally:
- All Verilog files
- README.txt with project description
- VCD waveform (if available)
- STA report (if run)
- Synthesized netlist (if available)
Learning Sessions
Learning Sessions help you track your progress while working on a single problem or assignment. As you experiment with code changes, each simulation and synthesis run is automatically recorded, allowing you to compare results and understand how each code update affects the outcome.
Why Use Learning Sessions?
When learning digital design, you often:
- Make incremental changes to your code
- Run simulation or synthesis multiple times
- Want to compare "before" and "after" results
- Need to understand what change caused an improvement or regression
Learning Sessions automatically capture every run so you can revisit and compare previous results.
Starting a New Session
-
Click "Start New Session"
Look for the session toolbar below the main navigation bar.
-
Enter Session Details
Provide a title (required) and optionally:
- Description - What you're working on
- Learning Objectives - Goals for this session
- Course/Assignment IDs - For academic tracking
-
Start Working
The session toolbar shows your active session with a timer and run counter.
How Runs Are Recorded
Every time you run simulation or synthesis during an active session:
- Run Number - Auto-incremented (Run #1, Run #2, etc.)
- Input Files - Your Verilog code at the time of the run
- Output Files - Generated netlists, waveforms, logs
- UI State - Panel contents, editor position, analysis data
- Metrics - Timing, area, power (for synthesis), pass/fail status
Viewing Run History
Click the "History" button in the session toolbar to open the Run History panel.
For each run, you can see:
- Job type (Simulation, Synthesis, Lint, STA)
- Status badge (Success/Failed)
- Timestamp
- Library and corner settings (for synthesis)
- Key metrics (timing met, VCD available, etc.)
Comparing Runs
Understanding how code changes affect results is the core benefit of Learning Sessions.
Compare Files
- In the Run History panel, click "Files" on any run
- The panel shows a comparison with the previous run
- See which files were added, deleted, or modified
- View line-by-line diffs showing exactly what changed
Compare Logs
- Click "View Log" to see the full compilation/simulation log
- Click "Compare" to see logs from two runs side-by-side
- Useful for understanding why one run passed and another failed
Restore Previous State
- Click "Analyze" on any run to restore that run's state
- The editor, schematic, waveform, and all panels restore to that point
- Great for reviewing what your code looked like at a specific run
Session Toolbar
When a session is active, the toolbar displays:
| Element | Description |
|---|---|
| Session Title | Name of your current session |
| Run Counter | Total runs in this session (e.g., "Run #5") |
| Timer | Time spent in this session |
| Success Rate | Passed runs vs total (e.g., "3/5 Passed") |
Pausing and Resuming
- Pause - Click the pause button to stop the timer. Your session remains active but paused.
- Resume - Click resume to continue working. The timer picks up where it left off.
Pausing is useful when you take a break but want accurate time tracking.
Closing a Session
- Click the "Close" button in the session toolbar
- Confirm in the dialog that appears
- The session is saved and can be resumed later
Browsing Past Sessions
- Click "Browse Sessions" in the session toolbar (when no session is active)
- See all your past sessions with:
- Title and status (Active/Paused/Completed)
- Creation date and run count
- Success rate
- Click a session card to load and continue it
- Use the search box to filter by title or description
Session Actions
| Action | Description |
|---|---|
| Mark Complete | Mark a session as finished (can still be viewed) |
| Download | Export session archive with all runs and files |
| Delete | Permanently remove session and all its data |
Use Case Example
Imagine you're debugging a counter that isn't incrementing correctly:
-
Start Session
Create a session titled "Debug 4-bit Counter"
-
Run #1 - Initial Test
Run simulation, see the counter stuck at 0. (Failed)
-
Run #2 - Fix Clock Edge
Change posedge to negedge, run again. Still failing.
-
Run #3 - Fix Reset Logic
Notice reset was inverted. Fix it, run again. Success!
-
Compare Runs
Compare Run #2 vs Run #3 files to see exactly what fix worked.
Now you have a complete record of your debugging journey, showing what you tried and what ultimately fixed the issue.
Account Settings
Manage your ChipVerify account, connected services, and preferences from the Settings modal.
Accessing Settings
- Click your profile icon in the top-right corner
- Select "Settings" from the dropdown menu
Account Information
View your account details:
- Email Address - The email associated with your account
- User ID - Your unique identifier (useful for support requests)
- Account Type - FREE or PRO tier
GitHub Integration
Connect or disconnect your GitHub account. See the GitHub Integration section for details.
- Connected Status - Shows GitHub username and connection date
- Connect/Disconnect - Manage the GitHub link
Appearance Settings
Customize the visual theme:
| Theme | Description |
|---|---|
| Dark | Default dark theme, easy on the eyes |
| Light | Bright theme for well-lit environments |
| System | Follow your OS dark/light mode setting |
Project Limits
View your project storage limits:
| Tier | Project Limit |
|---|---|
| FREE | Up to 30 projects |
| PRO | Up to 100 projects |
Subscription & Billing
Manage your ChipVerify PRO subscription and view payment history.
FREE vs PRO Comparison
| Feature | FREE | PRO ($20/mo) |
|---|---|---|
| Daily Simulations | 20/day | Unlimited |
| Daily Synthesis | 20/day | Unlimited |
| Projects | 30 max | 100 max |
| PPA History | - | Last 10 runs with comparison |
| Custom Layouts | - | Save/restore layouts |
| Priority Support | - | Email support |
Upgrading to PRO
-
Open Settings
Click your profile icon → Settings
-
Click "Upgrade to PRO"
In the Subscription section, click the upgrade button
-
Complete Payment
Enter payment details on the secure Stripe checkout page
-
Enjoy PRO Features
Your account is upgraded immediately after payment
Managing Your Subscription
In Settings → Subscription, PRO users can:
- View Status - See if subscription is active or canceled
- Next Renewal Date - When your subscription renews
- Manage Billing - Update payment method via Stripe portal
- Cancel Subscription - End your PRO subscription
Canceling Your Subscription
- Go to Settings → Subscription
- Click "Cancel Subscription"
- Confirm in the dialog that appears
- You keep PRO access until the end of your current billing period
- After that, your account reverts to FREE tier
- Your projects remain accessible (but subject to FREE limits)
- You can resubscribe anytime to restore PRO access
Payment History
View your recent payments in the Settings modal:
- Date - When the payment was processed
- Description - What the payment was for
- Amount - Payment amount (e.g., $20.00)
- Status - Succeeded (green) or Failed (red)
The last 10 payments are displayed. For complete billing history, click "Manage Billing" to access the Stripe customer portal.
Keyboard Shortcuts
| Action | Shortcut |
|---|---|
| New Project | Alt + N |
| Save Project | Ctrl + Shift + S |
| Toggle Files Sidebar | Alt + B |
| Toggle Waveform | Alt + W |
| Run Simulation | Alt + R |
| Run Lint | Alt + L |
| Search Console | Ctrl + F |
| Show Templates | Alt + T |
| Show SDC Editor | Alt + C |
| Toggle Editor | Alt + E |
| Show Shortcuts | Alt + / |
Code Templates
Verilog Templates
Click "Code Templates" button to load pre-built modules:
Basic Logic
- AND Gate - 2-input AND gate
- 2:1 Multiplexer - Parameterized mux
Sequential Logic
- D Flip-Flop - Positive edge-triggered with reset
- 4-bit Counter - Up counter with reset
State Machines
- Simple FSM - Template for state machine design
Testbenches
- Testbench Template - Complete testbench skeleton with clock generation and VCD dump
Synthesis Templates
In Synth tab, load Yosys command templates:
- Technology-Mapped - Full synthesis with SkyWater PDK
- Generic - No library, faster results
- Speed-Optimized - Maximize frequency
- Area-Optimized - Minimize chip size
- Fast Synthesis - Quick with minimal optimization
Troubleshooting
Simulation Issues
❌ "No testbench found"
Solution: Ensure filename contains "test" or "tb" (e.g., "counter_tb.v")
❌ Compilation errors
- Check syntax errors in console output
- Ensure all modules are defined
- Verify port connections match module definitions
❌ Simulation hangs (never finishes)
Solution: Add $finish; in your testbench initial block
❌ No waveform data
Solution: Add to testbench:
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, tb);
end
❌ Seeing old simulation results after code changes
Solution: Cache may not have been invalidated. Click "Clear Simulation Cache" button in Simulate tab.
❌ Verilator simulation fails but Icarus works
Solution: Verilator is more strict and requires synthesizable code. Check for:
- Delays in non-testbench code (remove
#delayfrom design files) - Non-synthesizable constructs (initial blocks in modules)
- Width mismatches (Verilator is very strict about bit widths)
❌ Module not found / undefined reference errors
Solution: Files may be compiled in wrong order. Go to Simulate tab → Compile Order panel, and drag files so that module definitions come before modules that use them.
Synthesis Issues
❌ "Failed to generate netlist"
- Check Yosys template for errors
- Ensure design has no syntax errors
- Try "Generic" template first for debugging
❌ "No PPA data available"
Solution: PPA requires Liberty files - use "Technology-Mapped" template and enable "Run PPA Analysis"
STA Issues
❌ "No synthesized netlist found"
Solution: Run synthesis BEFORE STA. STA analyzes the gate-level netlist.
❌ "Corner mismatch"
Solution: Set STA corner to match synthesis corner (e.g., both TT, both FF, etc.)
❌ All slack values are zero
Solution: SDC constraints missing. Either create constraints.sdc file or let STA auto-generate them.
File Management Issues
❌ Can't delete last file
By design: At least one file is required. Add a new file before deleting.
❌ File disappeared after reload
Solution: Files are not saved until you save the project. Click "Save" before closing browser.
Click the feedback button (star icon) in the header to report problems!
Frequently Asked Questions
General
Q: Do I need to install anything?
A: No! Everything runs in the browser. Tools run on our servers.
Q: Is my code private?
A: Yes. Signed-in users' projects are private. Anonymous usage is also supported.
Q: What's the file size limit?
A: Individual files should be under 1MB. Total project size under 10MB.
Features
Q: What synthesis tool is used?
A: Yosys with SkyWater 130nm PDK (open-source ASIC flow)
Q: What simulators are supported?
A: Two simulators are available:
- Icarus Verilog (iverilog) - Event-driven simulation, great for learning
- Verilator - Cycle-accurate, high-performance simulation for larger designs
You can choose between them in the Simulate tab.
Q: Can I use my own PDK?
A: Currently only SkyWater 130nm is supported.
Q: Is this suitable for tapeout?
A: ChipVerify Pro is primarily for learning and prototyping. For production tapeout, use commercial EDA tools with your foundry's PDK.
Technical
Q: Why do different synthesis templates give different STA results?
A: Different optimization strategies produce different gate-level implementations. Speed-optimized uses faster cells (more area), area-optimized uses smaller cells (slower).
Q: What's the difference between simulation and synthesis?
A: Simulation tests functionality (does it work?). Synthesis maps to hardware gates (can it be built?).
Q: Why does STA require synthesis first?
A: STA analyzes timing of the gate-level netlist (actual hardware cells). RTL code doesn't have gate delays.
Q: Can I download my synthesized netlist?
A: Yes! Click "Save/Load" → "Download as ZIP" - includes netlist, reports, and all files.
Accounts & Projects
Q: Why should I sign in?
A: Signing in enables:
- Save/load projects from any device
- Auto-save (no lost work)
- Access to synthesis, STA, and advanced features
Q: Can I share projects with others?
A: Yes! Use the "Share" button to create a shareable link that anyone can access. Shared code is read-only, but viewers can fork it to make their own editable copy. You can also use "Download as ZIP" to share files manually.
Q: How long are projects stored?
A: Projects are stored indefinitely for active accounts. Inactive for 1+ year may be archived.
Q: Why am I seeing old simulation results after changing my code?
A: Results are cached for performance. The cache should auto-invalidate when you change code, but if you're seeing stale results, click the "Clear Simulation Cache" button in the Simulate tab to force a fresh run.
Q: What's the difference between Icarus Verilog and Verilator?
A: Icarus Verilog is event-driven (traditional simulation) and works great for learning and standard testbenches. Verilator is cycle-accurate and much faster for large designs, but requires clocked testbenches. Try both and see which works better for your design!
Q: How do I control the order files are compiled?
A: In the Simulate tab, you'll see a "Compile Order" panel. Drag and drop files to reorder them. This is important when you have module dependencies - modules must be compiled before they're used.