Phần mềm Quartus® II phiên bản 6.0 và sau này tổng hợp tín hiệu định hướng VHDL nghiêm ngặt hơn. Vì nó thực thi các quy tắc VHDL, phần mềm Quartus II chuyển đổi bộ đệm hai chiều được mã hóa không chính xác thành các chân đầu ra.
Ví dụ: nếu bạn thực hiện bộ đệm hai chiều như được hiển thị trong mã sau, phần mềm Quartus II tổng hợp một chân đầu ra (bắt đầu với phiên bản 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;
Nếu mac_mdio là tín hiệu và mii_mdio là cổng hai chiều, tác vụ cuối cùng trên là định hướng. Như được viết, dữ liệu không thể chảy từ dữ liệu mii_mdio đến mac_mdio. Bắt đầu với phiên bản 6.0, phần mềm Quartus II thực thi bản chất định hướng của tác vụ VHDL này bằng cách chèn bộ đệm giữa mac_mdio và mii_mdio. Bộ đệm này xuất hiện trong RTL Viewer dưới dạng bộ đệm định hướng trong chuỗi với bộ đệm ba trạng thái và chân hai chiều dự định (mii_mdio) được tổng hợp là đầu ra duy nhất.
Các phiên bản trước đó của phần mềm Quartus II không thực thi bản chất định hướng của các loại bài tập này, tổng hợp mã trên dưới dạng chân hai chiều.
Để tuân theo tiêu chuẩn VHDL, hãy xóa tuyên bố chuyển nhượng tín hiệu cuối cùng trong ví dụ trên và ghi mã như sau:
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;