Skip to content

Releases: chaseruskin/orbit

0.22.0

05 Sep 14:57
Compare
Choose a tag to compare

Features

  • ability to generate a new uuid to be copied into an existing ip using orbit init --uuid

Changes

  • changes table name [systemverilog-format] to [verilog-format] in config.toml settings
  • relative path written to lockfile now stays as original unresolved relative path obtained from manifest to prevent lockfile being updated for nonrelevant reasons across systems
  • string swapping during build process for dut, top, and tb name are now accessible as orbit.dut.name, orbit.top.name, and orbit.tb.name respectively

Fixes

  • resolves bug where ip in channel would not display/use the ip's given uuid in the catalog
  • improves module dependency detection for vhdl design units with better checks around subprogram declarations and subprogram bodies
  • correctly identifies import statements within architecture of sv modules

0.21.0

26 Aug 02:45
Compare
Choose a tag to compare

Features

  • allows versions to have an optional label (ex: 1.0.0-alpha)
  • supports finding ip using their name and their uuid in the catalog
  • adds uuid field to manifest
  • adds ORBIT_IP_UUID environment variable
  • copies the ip's lockfile to the channel now too (not just the manifest)
  • adds --offline flag to skip checking coherency with remote source when installing a local ip

Changes

  • refactors how ips are stored in the archive and cache (uses uuid instead of name)
  • writes the full ip spec to the lock file (includes uuid)
  • extends checksum display length from 10 characters to 16 characters
  • requires the uuid field for ip manifests
  • reformats how uuid appears (uses base36 encoding instead of hyphenated format)
  • creates lockfile during orbit new and orbit init commands

Fixes

  • resolves bug with trying to check if lockfile is up to date when comparing depedency UUIDs

0.20.0

13 Aug 22:35
Compare
Choose a tag to compare

Features

  • improves install command to check the coherency with an ip's source
  • orbit config writes modified values to place where value exists, with it being the global config if it does not exist at any level
  • adds additional check for data integrity during orbit publish by testing the download and install of the local ip from its source
  • adds -t switch for shorthand to use --target option for orbit test and orbit build
  • "interface class" sv design elements are now detected
  • "program" sv design elements are now detected
  • "checker" sv design elements are now detected
  • "primitive" verilog/sv design elements are now detected
  • increases capabilities of orbit config to modify varying levels of configuration data
  • handles reading invalid UTF-8 code from HDL source code files
  • adds ip.include and ip.exclude fields to the manifest format

Changes

  • removes environment variables ORBIT_CACHE and ORBIT_ARCHIVE since they were dependent upon ORBIT_HOME and should not be messed with by the user
  • adopts easier approach to specifying design units using positional arguments for orbit tree command
  • no longer uses .orbitignore files, see the ip manifest's ip.include and ip.exclude fields to now explicitly set what files should be ignored or included during an ip's file discovery
  • removes explanation field from targets and protocols in configuration data

Fixes

  • errors if include key is set in non-global configuration file
  • improves robustness for verilog/sv module declaration parsing

0.19.1

09 Aug 18:23
Compare
Choose a tag to compare

Changes

  • uses more descriptive error messages when trying to get or read a design unit that is not set to an allowed visibility for an external ip

Fixes

  • fixes hashing of identifiers to use their corresponding hashing rules of their respective language
  • safely handles unwrap() for VHDL package generics

0.19.0

09 Aug 03:32
Compare
Choose a tag to compare

Features

  • adds support for parsing sv modports and using package scopes as types for module port declarations
  • adds checks for duplicate names within local ip between sv files and between verilog files
  • improves verilog/sv parsing

Changes

  • improves component detection and filtering for orbit tree and dependency analysis during planning stage
  • enhances orbit remove to delete ip from cache and archive and ask confirmation prompt by default before doing destructive task
  • removes unncessary orbit download command; the recommended/common usage is to use orbit install to add ip and its reverse action orbit remove to uninstall ip
  • minor updates and polishing to command documentation/man pages

Fixes

  • error message for duplicate identifiers across languages now displays nicer file paths with line and column where units were declared

0.18.0

06 Aug 21:22
Compare
Choose a tag to compare

Features

  • adds support for sv classes
  • improves overall verilog/sv parsing support
  • adds support for capturing multidimensional packed and unpacked arrays for module port/parameter delcarations for verilog/sv
  • improves non-ANSI style port list parsing for verilog/sv
  • adds ability to use --json for verilog and systemverilog modules with orbit get command
  • adds global flag --sync to synchronize channels if they are stored on the internet as well as locally on the user's system
  • adds formatting options for verilog and sv languages by adding new table entry in configuration files: "systemverilog-format"

Changes

  • formats the ip's manifest for writing it to the output index path of its channel during orbit publish

Fixes

  • resolves issues when compiler directives are used in port/parameter lists in verilog/sv
  • resolves bug when installing a local ip without a lockfile would place it into archive but refuse to load it for future use due to erroneous state

0.17.0

25 Jul 06:06
Compare
Choose a tag to compare

Features

  • implements first attempt at the full process for publishing an ip to a channel
  • adds ORBIT_IP_INDEX environment variable during publish process for channels to use in custom processes
  • supports basic publish action where the manifest gets copied to the channel's index path
  • implements a series of checks during the dry run of the orbit publish command
  • users can now straight install an ip directly from its manifest stored in a channel
  • channels are now searched through to find ip manifests and report their data for orbit search and orbit view
  • allows source.tag field in ip manifest to use string swapping
  • adds channels entry to the ip manifest
  • adds serde for [[channel]] in config.toml files
  • adds ability to specify a partial version for dependencies in an ip's manifest
  • orbit tree --ip now reports the ip graph in sorted order for consistency between calls
  • allows strings of a target's argument list to support string swapping
  • adds truncated checksum of local ip available as env var under ORBIT_IP_CHECKSUM
  • updates orbit help command to have latest manuals and available subcommands to display manual pages
  • adds --no-clean flag to orbit build and orbit test to prevent automatic cleaning before build process

Changes

  • removes ability to disable hdl languages, leaving all of them permanently enabled
  • source file visibility levels are ignored for relative ip dependencies
  • renames orbit launch to orbit publish in favor of clearer intentions behind the command

Fixes

  • prevents user from naming local ip as dependency to prevent stack overflow
  • resolves bug with protected files not being detected during hdl source code analysis as a cached ip or relative ip dependency
  • resolves bug where string swapping would not occur on source url if using a custom protocol

Docs

  • adds architecture diagram for topics overview page
  • updates command workflow diagram to use newer commands
  • renames "variable substitution" to "string swapping"

0.16.0

15 Jul 06:11
Compare
Choose a tag to compare

Features

  • grants ability to omit the ip name during orbit install when using --url if there is only 1 ip that exists at that url
  • adds support for specifying a relative path to an ip as dependency
  • adds support for systemverilog interface design elements as well as detecting references to them in module port declarations
  • systemverilog code can now be read using orbit read command
  • adds support for verilog/systemverilog config design elements
  • adds support for systemverilog package design elements (along with detecting imports in other design elements)

Changes

  • ip names can no longer end with a dash or underscore
  • improves error messages surrounding planning stage and grabbing ips from a lockfile
  • the default library for an ip is now the ip's "name" field, to override this provide a value for the "library" field in the manifest file
  • Changes --bench <unit> option to --tb <unit> for orbit test
  • viewing design units of a local ip now display the private units by default without having to specify --all; private units are typically hidden on views of ip outside the local path

Fixes

  • fixes --force behavior on orbit install to now correctly store the archive of an ip's version
  • explicit relative dependences are now correctly chosen over cached versions of that ip if they exist as well
  • fixes bug where user could change ip name and ip would not verify the name is allowed when loading the manifest
  • adds hints and clearer error messages around build process (orbit build, orbit test) and tree viewing (orbit tree)
  • adds proper error message when a source file does not contain valid UTF-8 data instead of panicking
  • properly detects module instances that use the range specificer in verilog and systemverilog files

0.15.0

09 Jul 06:36
Compare
Choose a tag to compare

This update brings initial support for SystemVerilog! Now Orbit can recognize and sort the order of design units across VHDL, Verilog, and SystemVerilog source code.

Features

  • initial systemverilog support includes: module declarations, instantiations, wire declarations, recognition within Verilog and VHDL files (TODO: handle import statements, classes, packages, structs, allow reading of systemverilog source code using orbit read)

Fixes

  • the path displayed for the blueprint file after the planning stage in the build process now is unified across platforms and will use '/' and never '' in path

0.14.0

08 Jul 13:25
Compare
Choose a tag to compare

This update brings a more streamlined command sequence/development process, better error messages, and the first initial support for Verilog!

Features

  • initial verilog support includes: module declarations, instantiations, wire declarations, recognition within VHDL files, DST, reading verilog files using orbit read, setting them as top level units or testbenches for the build process
  • adds new environment variable ORBIT_DUT set during orbit test
  • allow targets to define what types of blueprints they can handle
  • adds --library option to orbit get command
  • allows configuration file to be found on parent directories of the current working path with appropriate precedence
  • adds orbit lock command to save the state of the local ip by writing the Orbit.lock file
  • allows orbit config to change the language support mode

Changes

  • targets are new spawned inside a folder with their name within the TARGET_DIR directory (this is where the blueprint and .env file are written during the planning stage as well)
  • orbit test forces user to have a testbench, if there is not one, see orbit build
  • no longer allows orbit build to specify a testbench, see orbit test
  • fixes configuration precedence
  • renames "plugin" to "target" to more closely align with software language terminology relating to back end processes
  • renames "downloads" directory to "archive" to better describe what is stored in that catalog level
  • deprecates plan command- this step is now integrated into the build and test commands for a more unified development approach
  • renames show command to view and adds new switches (-u, -v) for faster lookups for units and versions of an ip
  • Adds more error messages

Fixes

  • renames library in blueprint if it is a matching identifier to one that is a design unit that underwent DST in that particular ip during the planning stage of the build process

Documents

  • updates tutorials with latest changes
  • adds information about ip and their naming
  • adds information about catalog
  • adds information about targets
  • adds information of configurations