process process1(clkin uint#1 clk, rstin uint#1 rst, out uint#8 latch x)
{
    ...
    x = 100;
    while (1);
}ポート入出力は、記述されたタイミングで直接入出力されます。
  latch 属性を付けると、入力の場合は1クロック前の値がラッチされて入力され、出力の場合はラッチされて1クロック後に出力されます。
  入出力がバタつくと困る場合は、ラッチを使うと安定します。
process process1(clkin uint#1 clk, rstin uint#1 rst, out uint#8 tristate x)
{
    ...
    x = 100;
    while (1);
}tristate 属性を付けると、出力が発生したタイミングで値が出力され、それ以外のタイミングではハイ・インピーダンスになります。
  latch でも tristate でもない場合、その他のタイミングでの出力値は未定(でたらめ)になります。
process process1(clkin uint#1 clk, rstin uint#1 rst, in uint#8 pulldown x)
{
    ... = x;
    while (1);
}入力ポートに pullup や pulldown 属性を付けることで、回路上での電位を安定させることができます。
入出力が発生したタイミングを検出したい場合は、en 属性を使います。
process process1(clkin uint#1 clk, rstin uint#1 rst, out uint#8 en x)
{
    x = 100;
    while (1);
}この記述を高位合成すると、以下のような Verilog が生成されます:
module PROCESS1 (
    input wire  CLK,
    input wire  RST,
    output wire [7:0] X,
    output wire       X_EN);X_EN は、X に出力が発生したタイミングで1になり、それ以外は0になります。
process process2(clkin uint#1 clk, rstin uint#1 rst, in uint#1 x_en, in uint#8 x)
{
    ...
}
toplevel logicboy(in uint#1 clk, in uint#1 rst, ...)
{
    com uint#8 en x;
    process1(clk, rst, x);
    process2(clk, rst, x en, x, ...);
}トップレベルで com 信号を宣言する際にも en を付けます。
  実際の回路では、x に対して 8ビットの信号線と 1ビットのイネーブル信号が生成されます。
x en はイネーブル信号(1ビット)、x はデータ信号(8ビット)を表します。
  process2 はこれら両方を参照します。
同様に、入力ポートに対しても、入力が発生したタイミングで1になるイネーブル信号を生成することができます。
それでは皆さん、また次回お会いしましょう!