RTL vs Verification system verilog code #770
amichai-bd
started this conversation in
General
Replies: 1 comment 1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
RTL Design Constructs
Module
Interface
Package
Function
Macro (define)
Generate Block (generate/endgenerate)
Always Block (always, always_comb, always_ff, always_latch)
Continuous Assignment (assign)
Parameter
Localparam
Typedef
Enum
Struct
Union
Not for RTL Design (With Explanation)
Program - Used for testbench synchronization and is not synthesizable.
Class - Object-oriented construct used for verification and simulation purposes.
Covergroup - Used for functional coverage in verification and is not part of synthesizable design.
Coverpoint - Defines specific conditions for coverage collection, only relevant in verification.
Cross - Used to analyze the correlation of multiple coverpoints for verification.
Clocking Block - Designed for testbench timing synchronization and is not synthesizable.
Assertion (assert, assume, cover) - Used for simulation checks and formal verification, not synthesizable.
Interface Class - Used in UVM for verification and simulation, not related to hardware design.
Constraint - Applies randomization rules in verification and cannot be synthesized.
Initial Block - Executes once during simulation and is not synthesizable, so it's not for RTL design.
Task - While tasks can be synthesizable if they don't contain timing controls, their use in RTL design is generally discouraged in favor of functions for better code clarity and maintainability.
Beta Was this translation helpful? Give feedback.
All reactions