The Veryl team has published a new release of Veryl, 0.11.0. Veryl is a new hardware description language as an alternate to SystemVerilog.
The latest version of Veryl can be downloaded from release page.
Breaking Changes
Clock domain annotation support #789
If there are some clocks in a module, clock domain annotation is required.
Clock domain annotation represents which clock domain each port belongs to.
Additionally, assignment over different clock domains requires unsafe (cdc)
block.
module ModuleA (
// clock domain 'a
i_clk_a: input 'a clock,
i_dat_a: input 'a logic,
o_dat_a: output 'a logic,
// clock domain 'b
i_clk_b: input 'b clock,
i_dat_b: input 'b logic,
o_dat_b: output 'b logic,
) {
unsafe (cdc) {
// assignment from 'a domain to 'b domain
assign o_dat_b = i_dat_a;
}
}
New Features
Support importing functions into modport #742
Function in interface can be imported through import
direction in modport
declaration.
interface InterfaceA {
var a: logic;
function get_a () -> logic {
return a;
}
modport slave {
a : input ,
get_a: import,
}
}
Add signed literal support #770
Signed literal with s
prefix is supported.
module ModuleA {
local a: u32 = 32'sb1111;
local b: u32 = 32'so7777;
local c: u32 = 32'sd9999;
local d: u32 = 32'shffff;
}
Enhance case statement/expression #783
As case item, range expression and expression with constant value can be used.
switch
which has arbitrary expression as the condition items is added too.
module Module16 {
local P: bit = 1;
var a: logic;
var b: logic;
let x: logic = 1;
let y: logic = 1;
always_comb {
case x {
5..=7 : a = 1;
P - 1 : a = 1;
// Error because y is not constant value
//y - 1 : a = 1;
default: a = 1;
}
}
always_comb {
switch {
// arbitrary expression includuing variable can be used
y == 0 : b = 1;
default: b = 1;
}
}
}
Other Changes
Check out everything that changed in Release v0.11.0.