simscope.config — Simscope Configuration
Simscope server is configured via a text configuration file, and loaded when the Simscope server process starts.
This file can be placed anywhere on disk, and is generally named simscope.config
.
- The config file is INI formatted.
Changing simscope.config
Simscope reads the simscope.config
file one time, as the server is loaded.
- If you change the configuration file, you must restart the Server for Simscope to use the new configuration.
Sample Simscope configuration
→ Save this to a file called simscope.config
Note: You can click the paper clipboard icon on the right corner → to copy this to your clipboard.
# Simscope configuration file (simscope.config)
# > https://admin-docs.simscope.com/server/simscope-config.html
# Project registrations (note that Components are registered automatically during import)
[project "alpha"]
defaultbranch = "main"
# Optional: restricted projects (limit access to users in a specific user group)
group = ""
# Workspace path is optional: for groups not using GitHub/Gitlab/Bitbucket
#workspacepath = "/path/to/workspace"
# Alternative: if you are using server-based URL's, like SVN:
# workspacepath = "https://github.com/octo-org/octo-docs"
# optional: Parent Project (if this is a derivative project, sharing a common repository for commits/rules)
# parentproject = "beta"
# Commit URL creates an HTML hyperlink to an external website for changelists.
# The %(id) is a variable will automatically be replaced with Commit ID/SHA by Simscope.
# commiturl = "http://jira/proj/commits/%(id)"
# Template for GitHub (replace COMPANY/PROJECT variables):
# commiturl = "https://github.com/COMPANY/PROJECT/commit/%(id)"
# Template for GitLab (replace COMPANY/PROJECT variables)
# commiturl = "https://gitlab.com/COMPANY/PROJECT/-/commit/%(id)"
# Template for Bitbucket (replace COMPANY/PROJECT variables)
# commiturl = "https://bitbucket.org/COMPANY/PROJECT/commits/%(id)"
# Template for Azure (replace ORGANIZATION/PROJECT/REPO variables)
# commiturl = "https://dev.azure.com/ORGANIZATION/PROJECT/_git/REPO/commit/%(id)"
# Enable this if your group wants to hide the "Global" signature state from users (and only show filtered state)
#hideglobalstate = true
# Nag Emails enables automatic nagging for users, where rules need to be resolved
#nagemails = true
[project "beta"]
defaultbranch = "main"
# Workspace path is optional: for groups not using GitHub/Gitlab/Bitbucket
#workspacepath = "/path/to/workspace/"
# Commit URL creates an HTML hyperlink to an external website for changelists.
# The %(id) is a variable will automatically be replaced with Commit ID/SHA by Simscope.
# Template for GitHub (replace COMPANY/PROJECT variables):
# commiturl = "https://github.com/COMPANY/PROJECT/commit/%(id)"
[tests]
testgroupfield = "group"
# If you want testname and testargs
#testnamefield = "test_name"
#testargsfield = "test_args"
# Interval between automatic snapshot of weekly metric charts.
# Reduce this if you want more up-to-date weekly charts (at the expense of more server computation).
metricsreindexhours = 6
# Enable signature triage index (enables build/testgroup search from signatures, and triage charts)
sigtriageindex = true
# Optional: add Job columns to Test List Search Table. Separate columns by commas.
# testlistautometadata = "user,cycles"
[sigs]
# Maximum number of Signature Job categories (for future growth)
maxcategories = 100
# Signature Job categories
# Docs: https://admin-docs.simscope.com/job/#category
# Format: "CATEGORY:CATEGORYID"
categories = "sim:1"
categories = "compile:2"
# Examples: any other job categories (fpga, emulation, generates, lint, etc)
#categories = "gen:X"
#categories = "emu:X"
#categories = "fpga:X"
#categories = "lint:X"
#categories = "synth:X"
# If you want to store "skip" job results, enable this variable.
# NOTE: enabling skip job tracking reduces the limit of job categories to 5 (instead of 9).
# Documentation: https://admin-docs.simscope.com/job/job-skip-json.html
#
# enableskip = true
#
# Optional: rename the skip field in display
# renameskip = "Unwritten"
# Enable Live Jobs
# > https://admin-docs.simscope.com/job/job-live-json.html
# enablelivejobs = true
# If Live Jobs are enabled and regressions time out or finish with live jobs pending, migrate them to this fail signature.
# (Note: this also requires enablelivejobs = true)
livetimeoutsignature = "LIVE Job Timeout or Missing"
# Default job sort order (when viewing/searching lists of jobs).
# By default, jobs are ordered by "runtime" (ie shortest first)
# defaultjobsort = "runtime"
# (To disable automatic job sorting in Signature view, set this to "off")
# defaultjobsort = "off"
# Signature title auto-replacer to make signature errors easier to read by users
# within the HTML GUI.
# For example, if every signature starts with UVM_ERROR, we can hide it like this:
# BEFORE > "UVM_ERROR mismatch value ..."
# AFTER > "mismatch value ..."
titlematch = "^FAIL|UVM_ERROR|UVM_FATAL"
titlereplace = "."
# Advanced: Simscope's builtin Signature Error Bucketizer can be turned off if you have your own
# Turn off bucketizer (not recommended)
#bucketizer = "off"
# Default bucketizer
#bucketizer = "v1"
# Latest signature bucketizer, with customizable hierarchy
bucketizer = "v2"
# Signature classifications
defaultclassification = "func"
classifications = "infra"
classifications = "assert"
classifications = "timeout"
# Enable dynamic signature classifications.
# Dynamic classifications enables setting a signature classification with any string value
# during job import. As opposed to being limited to the pre-defined classification list.
# classificationsdynamic = true
# Signature priorities (allows sorting of signatures by priority)
# priorities = "Low:1"
# priorities = "Medium:3"
# priorities = "High:5"
# Check every regression fail against rule templates
# alwayschecktemplates = true
# Optional plugin to run on the job details page (for example, this could be a job log parser)
# NOTE: this plugin only runs for 'fail' jobs, unless you also enable 'jobdetailspluginpass'
#jobdetailsplugin = "bin/simscope-job-details"
#
# Enable this to run the job details plugin on all jobs (instead of fail-only)
#jobdetailspluginpass = true
# Optional: change the order/layout of the Signature job table columns (job fields)
# NOTE: you can also add 'metadata' columns if you want to display them
#jobtablecolumns = "time,message,component,branch,model,build,testgroup,attributes,runtime,cycles,state,assignee,issue,config,regr,cps,seed,host,user"
[regr]
checkalias = true
# If you want to turn off duplicate job discard warnings, uncomment this line
#warnduplicate = false
# Auto timeout is a regression watchdog, where LIVE regressions will automatically be marked
# as finished, if there are no jobs updates in a regression for this many hours.
# This is to handle runaway/lost/killed regressions, so regressions do not show a
# LIVE tag forever.
# See docs at:
# > https://admin-docs.simscope.com/regression/live.html?#live-regression-automatic-timeout
autotimeouthours = 12
# Maximum number of NEW signatures allowed per regression (overflow triggering).
maxnewsignatures = 25
# Series separator the character between Regression Series Name/Number.
# Examples:
# - if a standard regression is "myrun/123", set this value to "/"
# - if a standard regression is "myrun:123", set this value to ":"
# - if using Jenkins default configuration, set this to "-"
seriesseparator = "/"
# Optional: regression metadata units.
# See docs:
# > https://admin-docs.simscope.com/regression/custom-metadata.html
#metaunit = "disk_usage_mb:MB"
#metaunit = "total_transactions:k transactions"
# Optional: show additional regression metadata columns in the Regression search table.
# See docs:
# > https://admin-docs.simscope.com/regression/custom-metadata.html
#tablemeta = "P4 Changelist"
#tablemeta = "disk_usage_mb"
#tablemeta = "license_seats_used"
#tablemeta = ".Coverage %"
# Enable this to turn on a [Builds] column in the Regression search table, showing which builds
# are contained in each regression.
# tablebuilds = true
# Display Regression Tool Version as a string, instead of a model link (SHA)
# toolversionstring = true
# Regression diff plugin (GitHub, Gitlab, Bitbucket). See docs at:
# > https://admin-docs.simscope.com/regression/regression-diff.html
# [regrplugin "diff-github"]
# title = "GitHub Diff"
# command = "PATH/simscope-regr-web-diff"
[chart]
# Enable daily checks (occur once per day).
# NOTE: this time is used for Regression Watch, Signature Watch, and Daily Charts.
autocheckschedule = "07:00 CST"
# Financial number scale: when enabled, abbreviate large numbers in charts using a
# financial-scale, instead of metric-scale.
# Example abbreviation: '1.24 B' (billions) instead of '1.24 G' (giga).
# Note: financial scales are automatically ignored when rendering byte-based units (e.g. 'GB')
# financialnumbers = true
# Optional: switch the Simscope homepage/status page to use sparkline charts instead of heatmaps
# statuslinechart = true
# Optional: add summary rows under heatmaps, to indicate the number of unique elements in each column
# heatmapsummary = true
# Optional: set default URL filters for the homepage (affecting the treemap and statistics)
# Example: only show homepage stats for 'release' regressions
# homepagefilters = "regr=release"
# Example: only show homepage stats for 'mainline' branch
# homepagefilters = "regr=smoke&branch=mainline"
# Set the maximum number of chart X-axis columns in a single chart, when using non-time-based X-axes.
# For example, if (X-axis = modelversion), this is the maximum number of X-axis model versions.
# If the chart hits this limit, all subsequent X columns will be merged into a special
# column named "(overflow: all other columns)".
# maxcolumns = 300
# Component Dashboard Templates enable one or more custom dashboards on the Component
# details page.
#dashboardtemplate = "userid/Template Dashboard Name"
#dashboardtemplate = "userid/Another Dashboard"
# Component Dashboard Metadata Widgets
# Regex pattern to match metadata regression fields and display as a large numeric widget
#dashboardwidgetmetadata = "total|Total"
# Enable filtering by queue on charts (replaces the user filter)
# queuefilter = true
# Custom Chart Heatmap Color Scales
# This lets you customize chart heatmap colors.
# See docs for more details:
# > https://admin-docs.simscope.com/metrics/custom-heatmap.html?#example-custom-heatmaps
# [heatmap "Global"]
# # Pass/Fail colors: black => red => orange => yellow => green
# color = "0.0 #000000" # black
# color = "0.001 #262626" # almost-black
# color = "0.1 #555555" # dary gray
# color = "0.5 #c12302" # rich red
# color = "0.7 #fb964c" # orange
# color = "0.85 #f4f86f" # yellow
# color = "0.92 #d6f89d" # light greenish
# color = "0.999 #8af16e" # medium green
# color = "1.0 #31e751" # bright green (perfect score)
# [heatmap "Red"]
# # Linear single-color gradient (white to red)
# color = "0.0 #ffffff" # white
# color = "1.0 #fa0000" # red
# # noblend turns off blending between colors (and use the highest color matching)
# noblend = true
[commitid]
enable = true
# Abbreviate model IDs/SHAs (only for hash-based systems like Git and Mercurial).
# This shortens a hash like "abcdef123456789" into "abcdef1..." for display.
abbrev = 7
# If using Perforce or SVN (or if you want to disable model ID abbreviation), set this to 0.
# abbrev = 0
# Exact Model Search *disables* fuzzy model searches.
# If using Perforce or SVN, enable this. For Git/Mercurial, this should be false (default value).
#exactmodelsearch = true
#commitinfo = "bin/simscope-hg-commit-info '%(commitid)' '%(branch)' '%(workspacepath)' '%(project)'"
# Fix Info is an optional plugin, which is invoked during Rule Fix, to find a Fix changelist (ie SHA)
#fixinfo = "bin/simscope-hg-commit-info '%(commitid)' '%(branch)' '%(workspacepath)' '%(project)'"
# If storing all changelists within Simscope, this flag enables resolving via the internal changelist database
searchchangelistdb = true
# Rabbit MQ configuration
[rabbitmq]
# RabbitMQ URL parameters:
# - RABBIT_USERNAME: shared account username
# - RABBIT_PASSWORD: shared shared password
# - RABBIT_HOSTNAME: the rabbit server host
url = "amqp://RABBIT_USERNAME:RABBIT_PASSWORD@RABBIT_HOST:5672/"
# Alternative: if you are using amqps (ie SSL secured-amqp):
# url = "amqps://RABBIT_USERNAME:RABBIT_PASSWORD@RABBIT_HOST:5671/"
retrytimeout = "5s"
# For running in environments like Docker, where you may need multiple attempts to connect
# at startup, increase the number of startup attempts before giving up.
#startupattempts = 10
# Rabbit Health is a watchdog timer, to indicate basic health of the Rabbit connection.
# If there are no Rabbit messages received within 'health' duration,
# Simscope will show a warning, indicating a potential RabbitMQ problem.
# Production Simscope systems should set this to a lower value (ie 60m),
# whereas development Simscope systems may set it higher (ie 12h).
health = "24h"
# Send a notification email if RabbitMQ receives no data within the 'health' interval
healthnotify = true
# Minimum physical machine memory free percentage (notifications)
minmemorypercent = 10
# Simscope input queue to read from: (this value should match [tunnel.config] outputqueue)
inputqueue = "simscope-in"
durable = true
autodelete = false
exclusive = false
# SMTP email configuration
# > https://admin-docs.simscope.com/user/email.html
[email]
# Enable emails from Simscope
#enabled = true
# Sender is what emails from Simscope will show as the message "sender"
# NOTE: replace @COMPANY.com with your company domain name.
sender = "Simscope Triage <no-reply-simscope@COMPANY.com>"
# Email self: enables sending emails where the job assignment recipient is the same user as the session user.
# If false, Simscope will discard assignment emails sent to self-users.
emailself = true
# Administrator email address (Simscope will send administration notifications to)
adminaddr = "administrator@COMPANY.com"
# Note: you can have multiple Simscope administrator emails, like this:
# adminaddr = "user1@COMPANY.com"
# adminaddr = "user2@COMPANY.com"
# Option A: Unix config (unauthenticated)
#smtpaddr = "127.0.0.1:25"
# Option B: Authenticated email config (plain)
#smtpaddr = "smtp.company.com:587"
#smtphost = "smtp.company.com"
#smtpaccount = "user@account.com"
#smtpauth = "auth-credentials"
[rules]
# Hide Manual Assignments: prefer Rules instead Manual assignments.
hidemanualassign = true
[bugs]
# Bug autorefresh interval ("30m", "2h", etc).
# Note: this is only used if at least one [bugtracker] has a 'refreshplugin' set
# autorefresh = "60m"
# Auto resolve rules. This enables automatic resolving of rules when a bug
# has been set to a fixed/resolved/closed state.
# See https://admin-docs.simscope.com/bugs/update.html
# autoresolverules = true
# Optional: auto-refresh script timeout. Simscope will terminate scripts after this amount of time (to prevent hangs)
# (Default is 2 minutes.)
# autorefreshtimeout = "2m"
# Optional: auto-refresh bug batch size. When auto-refreshing, Simscope splits the list of
# known bugs into batches, and calls the bug refresh script once per batch.
# (Default is 100 bugs per batch.)
# autorefreshbatchsize = 100
# ----------------------------------------
# Note about Python3 in simscope.config: if you want to customize the location of your
# Python interpreter, prefix the command with the Python location.
# For example:
# ### createplugin = "/my/path/bin/python3 /PATH/TO/simscope-jira-create.py"
# ----------------------------------------
# Note: "JIRA" is the title displayed in the user interface, this can be renamed per your preference.
# [bugtracker "JIRA"]
# NOTE: the official JIRA regex is here:
# https://community.atlassian.com/t5/Bitbucket-questions/Regex-pattern-to-match-JIRA-issue-key/qaq-p/233319
# example: SIM-12345
## regex = "[A-Za-z]+.[0-9]+"
# url = "http://localhost:9090/browse/%s"
# createplugin = "bin/simscope-jira-create.py"
# refreshplugin = "bin/simscope-jira-update.py --json %s"
# advanced = true
# If enabled, uppercase changes bug numbers to always be in uppercase.
# uppercase = true
# Manual state: disables Javascript automatic-state-selection.
# If you want to disable Javascript from automatically changing assignment (triage)
# state to OPEN/NEW/ASSIGNED as bugs are typed, cleared, or users are assigned, set this
# config variable to true.
# manualstate = false
# -----
# Template for Azure DevOps workitems (replace ORGANIZATION)
## [bugtracker "ADO"]
## regex = "^[0-9]+$"
## url = "https://dev.azure.com/ORGANIZATION/_workitems/edit/%s"
## createplugin = "PATH/TO/simscope-azure.py --create-work-item --config=/CONFIG/simscope_azure_config.py"
## refreshplugin = "PATH/TO/simscope-azure.py %s --config=/CONFIG/simscope_azure_config.py"
[server]
# External Simscope server name (for email links)
serverurl = "http://simscope"
# Alternative (if using https proxy)
# See docs at:
# > https://admin-docs.simscope.com/server/https.html
#serverurl = "https://simscope.company.com:443"
# Alternative (if using IP addresses)
#serverurl = "http://10.8.0.1"
# Simscope server listen address: local network port
httpaddr = "localhost:8080"
# Enable Cross-Origin Resource Sharing (CORS) support (Javascript iframe support)
# This is tied to the "Access-Control-Allow-Origin" HTTP header.
# > https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
# corsorigin = "*"
# Copy license key file to your $SIMSCOPE_CONFIG directory.
licensepath = "$SIMSCOPE_CONFIG/simscope-COMPANY-NAME.lic"
regexcomponents = true
# To use Signature Diff in Simscope, you need to set a 'Word diff' command.
# NOTE: to download adiff.py:
# > wget https://raw.githubusercontent.com/agriffis/adiff/master/adiff.py
#worddiffcommand = "bin/adiff.py"
# NOTE: wdiff is ~10x faster than adiff, since it does not have to launch the Python interpreter
#worddiffcommand = "/usr/local/bin/wdiff"
# For enabling custom CSS styles
#customcsspath = "simscope/client/simscope-custom.css"
# Time Zone (server). All charts/dashboards are displayed using Simscope Server Time Zone.
#
# List of Timezones
# > https:/e/en.wikipedia.org/wiki/List_of_tz_database_time_zones
#
# Note that DST (daylight saving time) is auto-truncated within Simscope.
# > DST is observed in certain regions of this time zone between the 2nd Sunday in March
# > and the 1st Sunday in November.
#timezone = "US/Central"
timezone = "US/Pacific"
#timezone = "UTC"
#timezone = "GMT"
#timezone = "CET" # Central Europe
#timezone = "Etc/GMT+5"
# Enabling Server Timestamps makes Simscope render display timesetamps in the server's timezone, irrespective of the client browser timezone.
# This disables dynamic Javascript timestamp behavior.
# (Note that Simscope charts are always rendered in the server timezone, regardless of this setting)
# servertimestamps = true
# Enable user group-based saved search sharing visibility.
# If enabled, the default search is private, but can be shared among other users too.
# > https://knowledge.simscope.com/saved-searches.html
enablesharing = true
# ProxyPaths enables file:// paths in regression metadata and job metadata to proxy through Simscope
# (for viewing log files, coverage reports, etc. directly from the web browser).
# See docs:
# > https://admin-docs.simscope.com/server/file-proxy.html
# proxypaths = "/proj/alpha/artifacts/"
# proxypaths = "/proj/beta/coverage/"
# proxypaths = "/proj/gamma/logs/"
# Custom job metadata fields
# See docs for more info:
# > https://admin-docs.simscope.com/server/job-metadata.html
metafields = "1:s:group"
# Enable if you want testname and testargs
#metafields = "2:s:test_name"
#metafields = "3:s:test_args"
# Custom job metadata examples
# Format:
# > ID:TYPE:FIELDNAME
# > ID:TYPE:FIELDNAME:UNIT (optional: for rendering charts with scaled units)
#metafields = "10:i:trans_count"
#metafields = "11:f:opacity"
#metafields = "12:s:cpu.fail_op"
# metafields = "13:i:disk_used_kb:KB" # Track disk usage per job (kilobytes)
# metafields = "14:i:peak_memory_mb:MB" # Track peak memory usage per job (megabytes)
# Automatic weekly Simscope database backup
#[backup]
#dir = "/PATH/TO/simscope-backup"
# NOTE: Simscope functional/formal coverage tracking is documented at:
# > https://admin-docs.simscope.com/coverage/
# [coverage]
# enabled = true
#
# Optional: Cover group separator to enable hierarchical tree grouping.
# This can be any string, and can also be multiple characters.
# - For example, cover group "a.b.c" with a groupseparator of "." would split into three hierarchical groups (a, b, and c)
# groupseparator = "."
#
# Optional: Submodel separator: allow multiple coverage models in the same regression (suffix).
# Example using "." as separator: "myblock_smoke/123.top" and "myblock_smoke/123.fpu"
# submodelseparator = "."
#
# To enable formal coverage property tracking, add these settings.
# enableformal = true
#
# For 'bounded' proof properties, set this to the minimum number of cycles for a bounded pass.
# Any undetermined property with cycles below this value is a fail.
# minimumcycles = 5
# NOTE: Simscope LDAP is documented at:
# > https://admin-docs.simscope.com/user/ldap.html
#
# [ldap]
# url="ldap://ldap.company.com:389"
# # For secure LDAPS
# #url="ldaps://ldap.company.com:636"
#
# basedn="dc=example,dc=com"
# userfilter="uid=%(uid)"
#
# LDAP session mode is a more secure LDAP authentication scheme, which does not store hashed authentication credentials, and requires re-authentication once sessions expire.
# enablesessions = true
#
# Optional: if your LDAP uses email addresses for usernames, enable this setting.
# allowemaillogin = true
#
# # If using Active Directory without a uid field, you may need to use
# #userfilter="sAMAccountName=%(uid)"
#
# # Mapping between Simscope Field and LDAP Fields
# # → Change the right-hand-side to your LDAP field names
# [ldapmapping]
# username="uid"
# fullname="cn"
# email="mail"
License File
The Simscope Server requires a license file to run. This file contains an issued license key, with an expiration.
This is an example fake license file:
"{\"product\":\"Simscope\",\"company\":\"ACME\",\"eval\":true,
\"expire\":\"2000-08-06T19:19:20.894125929-05:00\"}"|
48d39451e0f9e4ddd9bcdffd2002fa7f220f2600.bd70a6e44a9d15708e620b7a3f857a4feb633cea