IDXcelium
This extension aims to aid in (System)Verilog development by providing an easy-to-run interface to the Cadence® XCELIUM product suite.
Prerequisite on your machine
XCELIUM product suite
The XCELIUM executable xrun must be installed on your machine.
Verible
The extension requires the verible-verilog-ls executable installed
on your machine.
On Linux and Windows, the plug-in will try to download the necessary
executable (if it's not already available).
Get a binary distribution for your Operating System at
https://github.com/chipsalliance/verible/releases
Extension Settings
This extension contributes the following settings:
idxcelium.verible.path: The path to verible-verilog-ls executable, e.g.: /usr/bin/verible-verilog-ls.
idxcelium.verible.arguments: Arguments for verible-verilog-ls server.
idxcelium.build.path: Specify custom path of the build directory.
idxcelium.xcelium.path: Specify custom path of the XCELIUM install (where the bin/ and tools/ are located).
idxcelium.xcelium.noWarn: List of string messages to ignore when parsing the log file, e.g.: NOMTDGUI.
Test view
A test is encapsulated in a view.
A full yml view is shown below with additional information about the options.
The optional parameters are annotated and filled with their default value, unless stated otherwise.
Be careful, # counts as a comment in YML, if a # inside of a command or signal is required, it must be properly escaped.
Example test view
name: example # identifier for the test, e.g. rtl, synth, pnr, ...
top: example_tb # module name used as top level for this test, e.g. hello_world_tb
directories: # (optional)
build: ${workspaceFolder}/build # (optional) where to put the build files
include: # (optional) list of directories to search for include files
- ${workspaceFolder}/include
parameters: # (optional) list of parameter objects as NAME: VALUE, must be integers
- PARAMETER: 1
defines: # (optional) list of define objects as NAME: VALUE, the value is optional
- DEFINE:
files: # list of all required (System)Verilog files, (shell) wildcards are allowed
- ${workspaceFolder}/rtl/**.sv
- ${workspaceFolder}/test/**.sv
- ${workspaceFolder}/testbench/example_tb.sv
xrun: # (optional) additional xrun command line options, e.g. -gui to open the gui (not done by default)
- -gui
simvision: # (optional) simvision commands, e.g. to probe signals (not done by default)
- probe -create -shm -all -depth all -packed 4k -unpacked 1024 -memories # this will probe all signals
signals: # (optional) list of signals to view in the waveform window, more information below
- /clk
Both xrun, simvision and signals options also accept a string instead of an array of strings.
This allows the user to create their own files to use instead of using the list.
This string is allowed to contain ${workspaceFolder} if a relative path is preferred.
The string option is mutually exclusive with the array of strings and thus cannot be used together.
xrun: ${workspaceFolder}/config/xrun.f
simvision: ${workspaceFolder}/config/simvision.tcl
signals: ${workspaceFolder}/config/signals.svwf
signals
The signals options tries to make viewing signals easier.
The user can put their own lines here, or he can use custom options:
waveform add -signals { example_tb.clk }: any simvision command can be put here, additional options (e.g. color) can be specified here.
add_signal clk: shorthand version of the above, bypasses the need to provide the module name, making reuse easier
/clk: even shorter version of the one above
waveform add -cdivider divider: add a divider (normal simvision command)
---: shorthand version of the above
To change color or the radix of a waveform, this can currently only be done by storing the added waveform in a variable
and changing settings in new lines, e.g.:
signals:
- set id [add_signal write_buffer]
- waveform hierarchy expand $id
- waveform format $id -radix %h
- waveform format $id -color \#44AA99
Symphony view
It can be usefull to group certain tests in a single file for ease of use or group settings for RTL, SYNTH and/or PNR simulations.
A reduced yml view is shown below with additional information about the options.
# all configurations of a normal test view are valid here
# they will be used as the default (or base) for each of the tests
top: counter_tb
directories:
build: ${workspaceFolder}/build/new # you can specify a default build directory
files: # files to be included in all tests
- ${workspaceFolder}/counter_tb.sv
- ${workspaceFolder}/counter.sv
parameters: # parameters for all tests
- dut.INCREMENT: 1
defines: # defines for all tests
- PERIOD: 100
# default timescale for all tests
timescale: 1ns/1ps
# default xrun options for all tests
# in this case an external files is specified
# but it will get overwriten in the tests so it does
# not really matter and is only shown for illustration
xrun: example_file.will_get_overwritten
# probe the rst clk and enable signals
simvision:
- probe -create -shm rst clk en
# base list that gets extended for each test
signals:
- /rst
- /clk
- /en
- ---
# now we can define all tests, a small test and big test is shown here
tests:
- name: small_increment # identifier for the test, e.g. rtl, synth, pnr ...
# each test contains all configurations so they can be overwriten for each
# test individually, if not specified, the main configuration is used (or the default)
directories:
build: ${workspaceFolder}/build/new_small
parameters:
- dut.INCREMENT: 2
defines:
- PERIOD: 10
timescale: 10ns/1ps
xrun:
- -gui
# this test probes all signals, usefull for simple rtl test, but not for post-pnr tests
simvision:
- probe -create -shm -all -depth all -packed 4k -unpacked 1024 -memories
# additional signals to view, only in this test
signals:
- /dut/internal_count
- name: large_increment
directories:
build: ${workspaceFolder}/build/new_big
parameters:
- dut.INCREMENT: 14
xrun:
- -gui
# only the count and overlow signals are probed
simvision:
- probe -create -shm count
- probe -create -shm overflow
# additional signals to view, only in this test
signals:
- /count
- waveform format $id -trace analogSampleAndHold
- waveform axis range $id -for default -min 0 -max 256 -scale linear
- /overflow