Knowledge Base Administration Guide

Projects (and Subprojects)

Projects are the top-most grouping mechanism within Simscope, used to group components in the same project together.

In Simscope, each project contains:

  • One or more child Components.
  • A default branch.
  • Optional: A single repository workspace, or a URL if using server-based repositories.
  • Optional: hyperlink to external website for changelists in the project.
  • Optional: user group access restriction. If set, this allows only users who are a member of a group to access this project.

(admin) Adding New Projects and Editing Projects

Projects in Simscope are configured via the simscope.config file.

To add a new project, edit a project, or remove a project, edit the config file and then reload or restart the Simscope server.


Naming

Note: Project and component names are case sensitive within Simscope.

You can choose to name your projects either in UPPERCASE or lowercase, based on your preference.

Sample Simscope Project hierarchy

Here is an example Project/Component hierarchy.

# Project alpha
@alpha
├── alpha_gpu_core
├── alpha_gpu_shader
└── alpha_gpu_top

# Project beta
@beta
├── beta_cpu_core
├── beta_cpu_exc
├── beta_cpu_fpu
├── beta_cpu_ls
└── beta_cpu_top

Subprojects

If your Projects have many Components under them, you can optionally link common components together using Subprojects.

Each component be linked to a Subproject, to group them together.

  • This allows querying of all components simultanously via @PROJECT.SUBPROJECT (e.g. for Rules, Signature Searches, Regression Searches, Charts).

To edit Component Subprojects, go to MiscComponents

  • Note that Subprojects are dynamic, and changes are immediately activated after changing from the web interface (you don't need to reload Simscope).

For example, you now group components like this:

# Project alpha
@alpha
├── alpha_top
├── alpha_units
│   ├── alpha_gpu_core
│   └── alpha_gpu_shader
└── alpha_emu

# Project beta
@beta
├── beta_gpu_core
├── beta_gpu_shader
└── beta_gpu_top

# Project/Subproject/Component template example
@PROJECT
├── COMPONENT_A
├── SUBPROJECT1
│   ├── COMPONENT_B
│   └── COMPONENT_C
└── SUBPROJECT2
    ├── COMPONENT_E
    └── COMPONENT_F
  • Note that @alpha.alpha_units is a sub-project, containing components alpha_gpu_core and alpha_gpu_shader

  • Also note that nested subprojects (underneath subprojects) are not supported.

Example Projects, Subprojects, and Components

This is a basic example using projects, subprojects, and components:

Subproject

Notes:

  • The arrows point to Subprojects.
  • The red components are disabled Components.

Restricted Projects (Access Limits / Tenting)

You can restrict a project to users within a specific user group using the group attribute.

For example, this restricts the RocketChip project to only users in the army group.

[project "RocketChip"]
# Project User Group restrictions
group = "army"

When projects are restricted, it will show a Lock icon next to the name:

Restricted

Restricted projects prevent outside users from viewing data if outside the group:

  • Components
  • Regressions
  • Signatures
  • Jobs
  • Rules
  • Tests/Metrics
  • Chart Data

Users will get a not authorized error if accessing outside data.

Note: Simscope Administrators are automatically members of all groups, so they can always access any project.


Adding, Removing, or Changing Projects

Simscope registers projects upon startup, by reading the simscope.config file.

If adding, removing, or changing projects, you need to restart the Simscope Server for the changes to activate.

  • Note: you can change Components or Subprojects dynamically, while the server is running. It is recommended to restart Simscope server process after bulk changing these.

Example Project Configuration

This is a sample configuration for two projects (simscope.config file):

[project "alpha"]
defaultbranch = "main"

# Optional: restricted projects (limit access to users in a specific user group)
group = ""

# Optional: if using self-hosted (local workspace) for `diffs`
#workspacepath = "/path/to/my/repo"

# Optional: URL to view a changelist
# Github example:
# commiturl = "https://github.com/company/project/commit/%(id)"

# Local server example:
# commiturl = "http://myserver:1000/proj/src/%(id)"

[project "beta"]
defaultbranch = "A0"
# NOTE: this project has a URL-based repo as an example
#workspacepath = "https://github.com/octo-org/octo-docs"

# Optional: if sharing repositories between projects, use parentproject to tell Simscope this project is a derivative project (ie child)
# parentproject = "alpha"

Project Reposistories (Repos)

Simscope assumes each project is in a separate repository (ie git repo).

If they are in the same repo, you can link them together by setting the parentproject configuration field in the simscope.config file.

  • This will link a child project to be in the same repository as a parent project.

For example, this project config marks the beta project as sharing the same repo as alpha:

[project "beta"]
defaultbranch = "A0"
# NOTE: this project has a URL-based repo as an example
#workspacepath = "https://github.com/octo-org/octo-docs"

# Optional: if sharing repositories between projects, use parentproject to tell Simscope this project is a derivative project (ie child)
parentproject = "alpha"

# Optionl: user group access restriction.  If set, only users who are members of this group may access this project
group = ""