p.236
インバーターを4つ直列につないだ回路を作る。LEを4個消費した。
entity delay_line is port( x : in bit; y : out bit ); end entity; architecture rtl of delay_line is -- a, b, cという名前の信号を中間ノードの信号をとして宣言して、 signal a, b, c : bit; -- keepという名前の属性を宣言して、 attribute keep : boolean; -- その属性を信号a, b, cに割り当てる。 attribute keep of a, b, c : signal is true; begin a <= not x; b <= not a; c <= not b; y <= not c; end architecture;
RTLビュー:
ためしに上のkeep
属性の定義を外してみる。途中のゲートが最適化されて消えた。消費したLEは1個であった。
entity delay_line is port( x : in bit; y : out bit ); end entity; architecture rtl of delay_line is -- a, b, cという名前の信号を中間ノードの信号をとして宣言して、 signal a, b, c : bit; /* -- keepという名前の属性を宣言して、 attribute keep : boolean; -- その属性を信号a, b, cに割り当てる。 attribute keep of a, b, c : signal is true; */ begin a <= not x; b <= not a; c <= not b; y <= not c; end architecture;
RTLビュー: