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 Misc → Components
- 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 componentsalpha_gpu_core
andalpha_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:
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 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 = ""