Veryl Standard Library
axi3_config
### AXI3 configuration definitions
axi3_pkg::<ADDR_W, DATA_W_BYTES, ID_W>
### AXI3 bus package
axi4_config
### AXI4 configuration definitions
axi4_lite_config
### AXI4-Lite configuration definitions
axi4_lite_pkg::<ADDR_W, DATA_W_BYTES, ID_W>
### AXI4-Lite bus package
axi4_pkg::<ADDR_W, DATA_W_BYTES, ID_W, AWUSER_W, WUSER_W, BUSER_W, ARUSER_W, RUSER_W>
### AXI4 bus package
selector_pkg
types
A package for pre-defined types
Asynchronous FIFO
Asynchronous FIFO based on gray-code pointer.
Generic parameter S is a module name of synchrinozer.
WIDTH
u32
Data width
TYPE
type
Data type
STAGES
u32
Stages of synchronizer
DEPTH
u32
Depth of FIFO
THRESHOLD
u32
Threshold for almost full signal
USE_OUT_DATA_RESET
bool
Whether output data is reset
INITIAL_OUT_DATA
TYPE
Reset value of output data
MERGE_RESET
bool
Whether both reset are merged
RESET_SYNC_STAGES
u32
Stages of reset synchronizer
is_clk
input
's
clock
src clock
is_rst
input
's
reset
src reset
os_almost_full
output
's
logic
FIFO is almost full
os_full
output
's
logic
FIFO is full
is_push
input
's
logic
push to FIFO
is_data
input
's
TYPE
push data
id_clk
input
'd
clock
dst clock
id_rst
input
'd
reset
dst reset
od_empty
output
'd
logic
FIFO is empty
id_pop
input
'd
logic
pop from FIFO
od_data
output
'd
TYPE
pop data
Asynchronous handshake
Asynchronous data transmitter based on handshake protocol.
Generic parameter S is a module name of synchrinoizer.
WIDTH
u32
Data width
TYPE
type
Data type
STAGES
u32
Stages of synchrinoizer
INITIALIZE_DATA_OUT
bit
Whether output data is reset
INITIAL_DATA_OUT
bit<$bits(TYPE)>
Reset value of output data
MERGE_RESET
bit
Whether both reset are merged
RESET_SYNC_STAGES
u32
Stages of reset synchronizer
is_clk
input
's
clock
src clock
is_rst
input
's
reset
src reset
is_valid
input
's
logic
src data is valid
os_ready
output
's
logic
src data is acceptable
is_data
input
's
TYPE
src data
id_clk
input
'd
clock
dst clock
id_rst
input
'd
reset
dst reset
od_valid
output
'd
logic
dst data is valid
id_ready
input
'd
logic
dst data is acceptable
od_data
output
'd
TYPE
dst data
A binary decoder.
Converts a bit vector from a binary encoding to
a bit vector with a unary encoding.
BIN_WIDTH
u32
Width of the input binary vector
i_en
input
logic
Enable Signal. Dynamic power is minimzed when not enabled.
i_bin
input
logic
Binary encoded input.
o_unary
output
logic
Unary encoded output.
A binary encoder.
Transforms a unary encoded value into a binary encoding.
UNARY_WIDTH
u32
Width of the input unary vector
i_en
input
logic
Enable Signal. Dynamic power is minimzed when not enabled.
i_unary
input
logic
Unary encoded input.
o_bin
output
logic
Binary encoded output.
Value counter
WIDTH
u32
Counter width
MAX_COUNT
bit
Max value of counter
MIN_COUNT
bit
Min value of counter
INITIAL_COUNT
bit
Initial value of counter
WRAP_AROUND
bit
Whether counter is wrap around
i_clk
input
clock
Clock
i_rst
input
reset
Reset
i_clear
input
logic
Clear counter
i_set
input
logic
Set counter to a value
i_set_value
input
COUNT
Value used by i_set
i_up
input
logic
Count up
i_down
input
logic
Count down
o_count
output
COUNT
Count value
o_count_next
output
COUNT
Count value for the next clock cycle
o_wrap_around
output
logic
Indicator for wrap around
i_data
input
logic
o_ones
output
logic
Delay input by configured cycle
DELAY
u32
Clock cycle of delay
WIDTH
u32
Input/output data width
TYPE
type
Input/output data type
i_clk
input
clock
Clock
i_rst
input
reset
Reset
i_d
input
TYPE
Input
o_d
output
TYPE
Output
WIDTH
u32
DATA_TYPE
type
DEFUALT_DATA
u32
ENTRIES
u32
KIND
selector_kind
SELECT_WIDTH
u32
i_select
input
logic
i_data
input
DATA_TYPE
o_data
output
DATA_TYPE
Edge detector
WIDTH
u32
Data width
INITIAL_VALUE
bit
Initial value of internal FF
i_clk
input
clock
Clock
i_rst
input
reset
Reset
i_clear
input
logic
Clear
i_data
input
logic
Data
o_edge
output
logic
Both edges
o_posedge
output
logic
Positive edge
o_negedge
output
logic
Negative edge
WIDTH
u32
TYPE
type
DEPTH
u32
THRESHOLD
u32
FLAG_FF_OUT
bool
DATA_FF_OUT
bool
RESET_RAM
bool
RESET_DATA_FF
bool
CLEAR_DATA
bool
PUSH_ON_CLEAR
bool
MATCH_COUNT_WIDTH
u32
i_clk
input
clock
i_rst
input
reset
i_clear
input
logic
o_empty
output
logic
o_almost_full
output
logic
o_full
output
logic
o_word_count
output
COUNTER
i_push
input
logic
i_data
input
TYPE
i_pop
input
logic
o_data
output
TYPE
TYPE
type
DEPTH
u32
THRESHOLD
u32
FLAG_FF_OUT
bool
DATA_FF_OUT
bool
PUSH_ON_CLEAR
bool
RAM_WORDS
u32
RAM_POINTER_WIDTH
u32
MATCH_COUNT_WIDTH
u32
POINTER_WIDTH
u32
i_clk
input
clock
i_rst
input
reset
i_clear
input
logic
o_empty
output
logic
o_almost_full
output
logic
o_full
output
logic
o_word_count
output
COUNTER
i_push
input
logic
i_data
input
TYPE
i_pop
input
logic
o_write_pointer
output
RAM_POINTER
o_write_to_ff
output
logic
o_write_to_ram
output
logic
o_read_pointer
output
RAM_POINTER
o_read_from_ram
output
logic
Value counter using Gray Encoding
WIDTH
u32
Counter width
MAX_COUNT
bit
Max value of counter (in binary)
MIN_COUNT
bit
Min value of counter (in binary)
INITIAL_COUNT
bit
Initial value of counter (in binary)
WRAP_AROUND
bit
Whether counter is wrap around
i_clk
input
clock
Clock
i_rst
input
reset
Reset
i_clear
input
logic
Clear counter
i_set
input
logic
Set counter to a value
i_set_value
input
COUNT
Value used by i_set
i_up
input
logic
Count up
i_down
input
logic
Count down
o_count
output
COUNT
Count value
o_count_next
output
COUNT
Count value for the next clock cycle
o_wrap_around
output
logic
Indicator for wrap around
Converts a Gray encoded bit vector to a binary encoded bit-vector
Space Complexity: O(WIDTH log WIDTH)
Time Complexity: O(log WIDTH)
WIDTH
u32
Input and output bit vector width
i_gray
input
logic
Input Gray encoded Bit Vector
o_bin
output
logic
Output binary encoded Bit Vector such that
o_bin[k] = ^o_bin[WIDTH-1:k]
Converts a binary encoded bit vector to a Gray encoded bit-vector
Space Complexity: O(WIDTH)
Time Complexity: O(1)
WIDTH
u32
Input and output bit vector width
i_bin
input
logic
Input Binary encoded Bit Vector
o_gray
output
logic
Output Gray encoded Bit Vector
SIZE
u32
Size of the LFSR in bits
TAPVEC
TAPVEC_T
Bit-vector representing the taps of the LFSR.
Default values provided for `SIZE` in range [2, 64]
i_clk
input
clock
Clock
i_en
input
logic
Enable - LFSR shifts only when enabled. Active high.
i_set
input
logic
Flag to set value of LFSR. Active High.
i_setval
input
logic
Value which LFSR is set to when `i_set` is set.
o_val
output
logic
LFSR value.
WIDTH
u32
DATA_TYPE
type
ENTRIES
u32
KIND
selector_kind
i_select
input
logic
i_data
input
DATA_TYPE
o_data
output
DATA_TYPE
i_data
input
logic
o_onehot
output
logic
1'b1 iff i_data contains exactly one set bit
o_zero
output
logic
1'b1 iff i_data is zero
WORD_SIZE
u32
ADDRESS_WIDTH
u32
DATA_WIDTH
u32
DATA_TYPE
type
BUFFER_OUT
bool
USE_RESET
bool
INITIAL_VALUE
DATA_TYPE
i_clk
input
clock
i_rst
input
reset
i_clr
input
logic
i_mea
input
logic
i_wea
input
logic
i_adra
input
logic
i_da
input
DATA_TYPE
i_meb
input
logic
i_adrb
input
logic
o_qb
output
DATA_TYPE
WIDTH
u32
TYPE
type
STAGES
u32
ASCENDING_ORDER
bool
FULL_BANDWIDTH
bool
DISABLE_MBFF
bool
USE_RESET
bool
i_clk
input
clock
i_rst
input
reset
o_ready
output
logic
i_valid
input
logic
i_data
input
TYPE
i_ready
input
logic
o_valid
output
logic
o_data
output
TYPE
i_clk
input
'd
clock
i_rst
input
'd
reset
i_d
input
's
logic
o_d
output
'd
logic
master - AXI Master IP
slave - AXI slave IP
monitor - Debugging - All signals are declared as input
write_master - Reduced signal count for master IP that only writes to slave
read_master - Reduced signal count for master IP that only reads from slave
write_slave - Reduced signal count for slave IP that only receives writes from master
read_slave - Reduced signal count for slave IP that only replies to read requests from master
awaddr_ack() = awready && awvalid
wdata_ack() = wready && wvalid
bresp_ack() = bready && bvalid
araddr_ack() = arready && arvalid
rdata_ack() = rready && rvalid
inst b: axi3_if::< axi3_pkg::< ADDR_W, DATA_W_BYTES, ID_W > >;
module my_axi3_slave ( aclk: input clock_posedge,
aresetn: input reset_sync_low,
axi: modport axi3_if::<axi3_pkg::<32, 4, 8>>::slave ) {
}
master - AXI Master IP
slave - AXI slave IP
monitor - Debugging - All signals are declared as input
write_master - Reduced signal count for master IP that only writes to slave
read_master - Reduced signal count for master IP that only reads from slave
write_slave - Reduced signal count for slave IP that only receives writes from master
read_slave - Reduced signal count for slave IP that only replies to read requests from master
awaddr_ack() = awready && awvalid
wdata_ack() = wready && wvalid
bresp_ack() = bready && bvalid
araddr_ack() = arready && arvalid
rdata_ack() = rready && rvalid
inst a: axi4_if::< axi4_pkg::< ADDR_W, DATA_W_BYTES, ID_W,
AWUSER_W, WUSER_W, BUSER_W,
ARUSER_W, RUSER_W > >;
module my_axi4_slave ( aclk: input clock_posedge,
aresetn: input reset_sync_low,
axi: modport axi4_if::<axi4_pkg::<32, 4, 8,
8, 8, 8,
8, 8>>::slave ) {
}
master - AXI Master IP
slave - AXI slave IP
monitor - Debugging - All signals are declared as input
write_master - Reduced signal count for master IP that only writes to slave
read_master - Reduced signal count for master IP that only reads from slave
write_slave - Reduced signal count for slave IP that only receives writes from master
read_slave - Reduced signal count for slave IP that only replies to read requests from master
awaddr_ack() = awready && awvalid
wdata_ack() = wready && wvalid
bresp_ack() = bready && bvalid
araddr_ack() = arready && arvalid
rdata_ack() = rready && rvalid
inst c: axi4_lite_if::< axi4_lite_pkg::< ADDR_W, DATA_W_BYTES, ID_W > >;
module my_axi4_lite_slave ( aclk: input clock_posedge,
aresetn: input reset_sync_low,
axi: modport axi4_lite_if::<axi4_lite_pkg::<32, 4, 8>>::slave )
{
}
The awid, arid, bid and rid signals on the slave* modports are optional.
These and are used to connect compatible AXI4-Lite slaves to a full AXI4 interface (AXI ID reflection on slave required).
axi3_config
### AXI3 configuration definitions
axi3_pkg::<ADDR_W, DATA_W_BYTES, ID_W>
### AXI3 bus package
axi4_config
### AXI4 configuration definitions
axi4_lite_config
### AXI4-Lite configuration definitions
axi4_lite_pkg::<ADDR_W, DATA_W_BYTES, ID_W>
### AXI4-Lite bus package
axi4_pkg::<ADDR_W, DATA_W_BYTES, ID_W, AWUSER_W, WUSER_W, BUSER_W, ARUSER_W, RUSER_W>
### AXI4 bus package
selector_pkg
types
A package for pre-defined types
A package for pre-defined types