Цитата Сообщение от omercury Посмотреть сообщение
И да, always @ вовсе не гарантирует триггеров в цикле, например такая запись:
Код:
reg q;
always @(posedge clock) begin
q = a & b;
end
создаст честную комбинаторику.
Это в каком смысле "честную комбинаторику"? Нетрудно проверить:

Скрытый текст


(это можно скопипастить в https://www.tutorialspoint.com/compi...log_online.php)
Код:
/* 
 * Do not change Module name 
*/
module main;
  reg clk=0;
  reg fastclk=0;

  always #5 clk <= ~clk;
  always #1 fastclk <= ~fastclk;

  initial 
    begin
      $display("Hello, World");
      #20 $finish;
    end


  wire q_clocked;
  wire q_unclocked;
  
  reg [1:0] count = 0;
  always #2 count <= count + 1;
  wire a = count[0], b = count[1];

  always @(posedge fastclk) 
    $display("clk=", clk, " a=", a, " b=",b, 
        " q_clocked=", q_clocked, " q_unclocked=", q_unclocked);

  clocked boo1(clk, a, b, q_clocked);
  unclocked boo2(a, b, q_unclocked);
    
endmodule

module clocked(input clock, input a, input b, output reg q);
   always @(posedge clock) begin
        q <= a & b;
   end
endmodule

module unclocked(input a, input b, output reg q);
    always @* begin
        q <= a & b;
    end
endmodule
[свернуть]