Quartus® II ソフトウェア・バージョン 6.0 以降では、VHDL の方向信号をより厳密に合成します。VHDL ルールを強制するため、Quartus® II ソフトウェアは誤ってコーディングされた双方向バッファーを出力ピンに変換します。
例えば、次のコードに示すように双方向バッファーを実装した場合、Quartus® II ソフトウェアは (バージョン 6.0 以降) の出力ピンを合成します。
process(mdio_out,mdio_oe)
begin
if (mdio_oe = '1') then
mac_mdio <= mdio_out;
else
mac_mdio <= 'Z';
end if
end process;
mdio_oe <= NOT(mdio_oe_n);
test_out <= mac_mdio and test;
mii_mdio <= mac_mdio;
mac_mdioが信号で、mii_mdioが双方向ポートの場合、上記の最後の割り当ては方向です。書き込まれたように、データをmii_mdio から mac_mdio に 流すことは不可能です。バージョン 6.0 以降、Quartus® II ソフトウェアは、mac_mdioとmii_mdioの間にバッファーを挿入することで、この VHDL の割り当ての方向を強制します。このバッファーは、RTL ビューアーにトライステート・バッファーを備えたシリーズの方向バッファーとして表示され、目的の双方向ピン (mii_mdio) は出力として合成されます。
以前のバージョンの Quartus® II ソフトウェアでは、上記のコードを双方向ピンとして合成するため、このようなタイプの割り当ての指向性を強制しません。
VHDL 規格に準拠するには、上記の例の最後のシグナル割り当てステートメントを削除し、次のようにコードを記述します。
process(mdio_out,mdio_oe)
begin
if (mdio_oe = '1') then
mii_mdio <= mdio_out;
else
mii_mdio <= 'Z';
end if;
end process;
mdio_oe <= NOT(mdio_oe_n);
test_out <= mii_mdio and test;