Project Configuration
[project]
— Defines a project.name
— The name of the project.version
— The version of the project.authors
— The authors of the project.description
— A description of the project.license
— The project license.repository
— URL of the project source repository.
[build]
— Build settings.clock_type
— The type of clock.reset_type
— The type of reset.filelist_type
— The type of filelist.target
— The way of output.implicit_parameter_types
— Whether implicit parameter type is enabled.omit_project_prefix
— Whether omit project prefix.strip_comments
— Whether strip comments.
[format]
— Format settings.[lint]
— Lint settings.[test]
— Test settings.[publish]
— Publish settings.[dependencies]
— Library dependencies.
The [project]
section
The first section of Veryl.toml
is [project]
.
The mandatory fields are name
and version
.
The name
field
The project name is used as prefix in the generated codes.
So the name must start with alphabet or _
, and use only alphanumeric charaters or _
.
The version
field
The project version should follow Semantic Versioning. The version is constructed by the following three numbers.
- Major – increment at incompatible changes
- Minor – increment at adding features with backward compatibility
- Patch – increment at bug fixes with backward compatibility
[project]
version = "0.1.0"
The authors
field
The optional authors
field lists in an array the people or organizations that are considered the “authors” of the project.
The format of each string in the list is free. Name only, e-mail address only, and name with e-mail address included within angled brackets are commonly used.
[project]
authors = ["Fnu Lnu", "anonymous@example.com", "Fnu Lnu <anonymous@example.com>"]
The description
field
The description
is a short blurb about the project. This should be plane text (not Markdown).
The license
field
The license
field contains the name of license that the project is released under.
The string should be follow SPDX 2.3 license expression.
[project]
license = "MIT OR Apache-2.0"
The repository
field
The repository
field should be a URL to the source repository for the project.
[project]
repository = "https://github.com/veryl-lang/veryl"
The [build]
section
The [build]
section contains the configurations of code generation.
The clock_type
field
The clock_type
field specifies which clock edge is used to drive flip-flop.
The available types are below:
posedge
– positive edgenegedge
– negetive edge
The reset_type
field
The reset_type
field specifies reset polarity and synchronisity.
The available types are below:
async_low
– asynchronous and active lowasync_high
– asynchronous and active highsync_low
– synchronous and active lowsync_high
– synchronous and active high
The filelist_type
field
The filelist_type
field specifies filelist format.
The available types are below:
absolute
– plane text filelist including absolute file pathsrelative
– plane text filelist including relative file pathsflgen
– flgen filelist
The target
field
The target
field specifies where the generated codes will be placed at.
The available types are below:
source
– as the same directory as the source codedirectory
– specified directorybundle
– specified file
If you want to use directory
or bundle
, you should specify the target path by path
key.
[build]
target = {type = "directory", path = "[dst dir]"}
The implicit_parameter_types
field
The implicit_parameter_types
field lists the types which will be elided in parameter
declaration of the generated codes.
This is because some EDA tools don’t support parameter
declaration with specific types (ex.string
).
If you want to elide string
, you can specify like below:
[build]
implicit_parameter_types = ["string"]
The omit_project_prefix
field
If omit_project_prefix
is set to true
, the project prefix of module/interface/package name will be omitted.
This is false
by default.
[build]
omit_project_prefix = true
The strip_comments
field
If strip_comments
is set to true
, all comments will be stripped.
This is false
by default.
[build]
strip_comments = true
The [format]
section
The [format]
section contains the configurations of code formatter.
Available configurations is here.
The [lint]
section
The [lint]
section contains the configurations of linter.
Available configurations is here.
The [test]
section
The [test]
section contains the configurations of test by RTL simulator.
Available configurations is here.
The [publish]
section
The [publish]
section contains the configurations of publishing.
Available configurations is here.
The [dependencies]
section
The [dependencies]
section contains library dependencies.
Available configurations is here.