always_comb, always_ff et always_latch
Choisir entre always_comb, always_ff et always_latch en SystemVerilog pour éviter pilotes multiples, latchs involontaires et erreurs de sensibilité.
Dire ce que le bloc doit représenter
Verilog utilise always pour plusieurs types de logique. SystemVerilog propose trois formes spécialisées :
always_combpour la logique combinatoire ;always_ffpour les registres et bascules ;always_latchpour un latch volontaire.
Ces blocs décrivent mieux l'intention et imposent des contrôles supplémentaires. Une variable écrite dans l'un de ces blocs ne doit normalement pas être écrite ailleurs.
Logique combinatoire
always_comb calcule automatiquement la liste de sensibilité à partir des signaux lus, y compris ceux lus dans une fonction appelée. Le bloc est aussi exécuté une fois au début de la simulation.
module alu4 (
input logic [3:0] i_a,
input logic [3:0] i_b,
input logic [1:0] i_op,
output logic [3:0] o_y