c ontents 1 circuit design in ruby 1 1.1 introduction

60

Upload: ngokiet

Post on 05-Feb-2017

228 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

� �����������

� �����������������������! "�# %$&�('�) �*�+,*�-/.103254�617!8905:;4<.>=?=?=@=?=?=@=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?= **<+;*<+,* BDCFE�G5C!H�IJE@4LK(03CF:;GM85C!HLI�03EN2O=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?= P*<+;*<+QP BDCFE�2�R4�S,E?4�K�I�:T89037�25E�G�=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?= U*�+QP VW4<XYIJ4�G3:,05:;4<.ZHL.!6[:,.]\<E�23G5E^=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?= _*<+ PF+,* `aE�IJEbH�05Eb6c894�X[I!4<G3:,03:,4�.d=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?= e*<+ PF+QP -/.1\<E�23G5E�=?=@=?=?=@=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?= e*<+ PF+QU -36fE�.103:,0/gYH�.!6[0/g1IJE�Gh=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?= i*<+ PF+ _ VW4<.bj97�k1H�05:;4<.l=?=@=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?= m*�+QU no:;G503GMHL.!6[037�I�S,E�Gp=@=?=?=@=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?= q*<+ UF+,* r�HL2sH�S,S,E�St894�X[I!4<G3:,03:,4<.h=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?= q*<+ UF+QP r�HL:;25GuHL.!6[I�234vj9Eb8905:;4<.�GM=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?= w*<+ UF+QU BWg1I!ENGWK#4�2DS,:,G305G�=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?= w*<+ UF+ _ xyH�Iz=?=?=@=?=?=@=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?={*�**<+ UF+Qe `aE�\�EN23G3E|=@=?=?=@=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?={*bP*<+ UF+Qi B�25:}HL.�k�S,E~=@=?=?=@=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?={*bU*�+ _ `a4��DGuHL.!6c894�S,7�X[.�G�=?=@=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?={*�_*<+ _J+,* ��E�G5:}6fE�H�.!6&�!ENS;4���=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?={*�_*<+ _J+QP `aE9�!Eb8�03:,4�.�G�=?=@=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?={*bm*<+ _J+QU ��05C�E�2M4<2305C�4�k<4�.!HLS;S,g�894�.F.�Eb8905Eb6l89:,2s8�7�:,03G�=A=�=?=?=@=?=?=@=?={*bm*<+ _J+ _ `a4��DG�=?=?=@=?=?=@=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?={*bq*<+ _J+Qe VW4<S,7�XY.�GW=@=?=?=@=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?={*bw*<+ _J+Qi �a4�25.�E�2b� GD257�S,Ed=@=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?=�P��*�+Qe B�2sHL.�G3IJ4�G5:,03:,4�.cH�.!6[��:,I�G~=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?=�P�P*<+ eF+,* �J:,I�IF:;.Fk�254��DGD034�k<E�03CFE�2h=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?=�P�U*�+Qi �1Ev��7FE�.103:TH�S�89:,29897�:,03G�=?=@=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?=�P�_*<+ iF+,* BD:,X[EDG3Eb�<7�E�.J89E�G^=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?=�P�e*<+ iF+QP VW4<XYIJ4�G5:;05:,4�.���IJH�2sHLS,S;ENS�894<XYIJ4�G5:;05:,4�.YH�.J6YG54�4�. =@=?=?=@=?=�P�i*<+ iF+QU ��E�STHvgYHL.!6�G50sH�05El=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?=�P�i*<+ iF+ _ BD:,X[E�S,E�G3G5.�E�G3G�=@=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?=�P�q*<+ iF+Qe �fS;4��D:,.�k|=@=?=?=@=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?=�P�q:

Page 2: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

:,:*<+ iF+Qi `aE�03:,X[:;.Fk�=?=?=@=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?=�P�w*�+Qm ��G5g]G5034<S;:T8?894<2323ENS}HL034<2d=@=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?=�U��*<+ mF+,* �fI!Eb8�:�K�g]:,.�kp03CFE�894�2523E�STHL034�2�=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?=�U��*<+ mF+QP -/X[I�S,E�XYEN.]05:,.�kM05C�E@G3CF:�K�0D23E�k<:;G503E�2�=?=@=?=�=A=�=?=?=@=?=?=@=?=�U�**<+ mF+QU � S;:,X[:;.JH�03:,.�k�03C�E&¡�¢¤£¥=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?=�U�P*<+ mF+ _ -/X[I�S,E�XYEN.]05:,.�kM05C�E�H�8N897�X�7�STH�054�2¦=?=@=?=�=A=�=?=?=@=?=?=@=?=�U�U*<+ mF+Qe xyH�§1:,.�k@03CFE�89:,2s897F:;0DG5g1G3034<S,:}8�=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?=�U�_*<+ mF+Qi `aE9¨!.�:,.�kp034YHA��:,0DS,E�\�ENSt:;X[I�S,E�XYEN.]09H�05:;4<.h=A=�=?=?=@=?=?=@=?=�U�m*<+ mF+Qm xyH�§1:,.�k@03CFE@:,XYI�S,E�X[E�.10sH�05:,4�.�G5g]G5034<S;:T8?H�0D05C�E?��:,0DS,E�\�E�SW=@=?=©_]P*�+Qq ��7�0305E�2/�Jgª.FE�0/��4<23§1G{=?=@=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?=©_]U*<+ qF+,* BDCFE�IJE�2«K#Eb890�G3C171¬YEO=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?=©_]U*<+ qF+QP BD�W4�H�.!6[:,.103E�25S;EvHv\�E>=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?=©_�_*<+ qF+QU ­JH�0D894<XYIJ4�G3:,05:;4<. =�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?=©_]e*<+ qF+ _ ��E�G98923:,��:,.�k�05C�E?��7�0503E�2«�!gc.�E�0/�W4�23§�=@=?=�=A=�=?=?=@=?=?=@=?=©_]e*�+Qw BDC�E@­F4�7�25:,E�2D0329H�.�G«K#4�25X =?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?=©_]q*<+ wF+,* BDCFE®6f:;G98923EN03E�­F4�7�25:,E�2D0329H�.�G«K#4�25X =?=@=?=�=A=�=?=?=@=?=?=@=?=©_]q*<+ wF+QP VDHLG305:;.Fk�05C�E�H�S,k<4�23:,05C�X©:;.[03C�EA.�4�09H�03:,4<.¯=A=�=?=?=@=?=?=@=?=©_]w*<+ wF+QU ��:,\1:T61:,.�k@STH�25k�EMIF234��FS;ENXYGW:;.1054�G5XªH�S,S,E�2W4�.�ENG°=?=?=@=?=?=@=?=�e�**<+ wF+ _ ��:,\1:T61:,.�k@03CFE®6f:;G98923EN03E�­�4<7�23:,E�2W0329H�.�G«K#4�25X =�=?=?=@=?=?=@=?=�e�P*<+ wF+Qe ��7�05S,:;.FEM4�K�HL.Y:,XYI�S,E�X[E�.10sHL03:,4�.�=?=?=@=?=�=A=�=?=?=@=?=?=@=?=�e�i*�+,*b�~`aE9K#E�25E�.!89E�Gl=?=?=?=@=?=?=@=?=�=?=@=?=?=@=?=?=?=@=?=�=A=�=?=?=@=?=?=@=?=�e�m

Page 3: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

± ²|³´�µ·¶�¸ ¹

� º?»�¼d½ ºD� ¾ �¿©º�À¯� º?� Á ½ Â�Ã

Ä|ÅlÆ�ÇAȪÉWÊÌËÎÍ�ÈyÏ�РŪÑ�ÒcÉWÉ�Ó�Í�ÈcÔ

ÕpÖbÕ ×�ØpÙ Ú�ÛYܷݪÞaÙWßbÛ�ØBDC�E���7FG3:,.�E�G5G�4LK�XªHL§]:,.�k�:,.103ENk�2sHL03Eb6^8�:;29897�:,03Gp:,G@HYIJEb897FS;:THL23S,g>61:áàª897�S,0?E�.�k<:,.�E�E�2«â:,.�kc0sHLG3§lSTH�25k�E�S,gl�JEb8�HL7�G3E[:,0�G5I!H�.FG@G37!85CãHc�D:T61Ep2sHL.�k�E�4LKuS,E�\<E�S,G?4�KMH���G5032sH<8903:,4<.�+­�:,k�7�25Eª*<+;*AG37�k<k�E�G503G@05C�EpG34�2503G@4LK�.!HLXYE�G�03C!HL0MXY:,k<C]0D�JEp7�G3Eb6·054l61E�Gs8�23:,�!E�05C�E�G5ESTHvg�E�25Gb+��~k�414�6@61E�G5:;k<.�IF234�89E�G5G�X�7�G50t.�Eb89ENG3GsHL23:,S,g�:,.�G57�STH�05E�EbH<85C�G503E�I�4LK!03C�ED61E�G5:,k�.ä HLG�KåH�2?H�GM:,G�I!4<G3G3:,��S,E ä K#254�X{05C�EZ8�4�.!89EN23.�G@05C!H�0@HL23E@X[4�G30�23EbH<61:,S,gY7�.!6fE�23G503414�6H�.J6c0sH<83§1S,Eb6·H�0�4�03CFE�2?S;EN\�E�S,Gb+��MG?7�G5Eb6yC�E�23E<��05C�E@�W4�2s6~æ�ç�è�¢,é�ê�¢Tê1éYG5:,XYI�S,g�XYEvH�.�GXªHL§1:;.Fk�IF234�k<23E�G5G@614��D.Y05C�E@G3IJEb8905237�X�K�234�XG3IJEb89:á¨�8�HL03:,4�.l054�:,X[I�S,E�XYE�.109H�03:,4<.�+��.Y03CFEM�DC�4<S;E<���WE�HL23EM.F4�0Wk�4�:,.�k?054@�!E@894<.!89E�25.�Eb6[�D:,03CY61EN0sH�:,S,GW4�K�:,XYI�S,E�X�EN.1â0sHL03:,4�.·S,:,§�Epk]H�05E�G�H�.!6y0329H�.�G5:;G5034<23Gb+l�f4l034l7FG@03C�E��W4�296%ë�¢íìsëNî]¢}ï�X[EbH�.�G?.�4yXY4�25E03CJH�.Y05C�E?G34<230D4�K(HLS,k�4�25:,03C�X©03CJH�0WXY:,k�C10���ENS;St�JE?:,XYI�S,E�X�E�.105Eb6p�1g�G34�X[E�03CF:;.Fk�S,:,§�EH�.·:,.103E�k<2sH�05Eb6^89:,2s8�7�:,0�4<2@Hª8�4�S,S,Eb8903:,4<.>4LKu05C�E�X>+p��E�G3:,k�.F:;.Fkª89:,2s8�7�:,03G@:,G?03C�E��F7�G3:áâ.�E�G5G�4LK�¨!S,S,:,.�kM:,.p03C�EDk1H�I@:,.p03C�EW¨!k<7�23ED�JE�0/�WE�E�.[G3IJEb89:á¨�8�HL03:,4�.Y8�HLI�037F23EMH�.J6�89:,29897�:,0KåHL��23:T8�HL03:,4�.�+BDC!H�0[XYEbHL.�Gb��K#4<2�E9ð!H�X[I�S,E��Ì05C!H�0[��El�D:,S,SD�JE>:,.103E�25E�G305Eb6ñ:;.~C�:,k<C�S,gãI!HL2sH�S,S,E�SH�S,k<4�23:,05C�XYGW�D:,03C>HpX[4�23E?4<2MS,E�G3G?G50sH�05:T8@G503237J89037�25E�ò�H�S,G34�05C!H�0���E�H�25E@k�4<:;.Fk�034Y�JE894<.!89E�25.�Eb6^054cXY:,.�:,X�:,��E?E9ð�I!E�.FG3:,\�E�G54�2305G@4�KD894�X[X�7�.�:T8�H�05:,4�.��1S,:,§�E@�F234]H<6�8�HLG303:,.�kJ�H�.J6c:,.lE�XYIFC!H�G5:;�N:;.Fk�S;4�8�HLS,:;0/gt+Dó^EA�D:;S,S�.�4�0v�!CF4���E�\<E�2b�J�JEZHL0@H�S,S(894<.!89E�25.�Eb6·�D:,03C03CFEZ61EN0sH�:,S,GM4LK�H�.1g[KåH���25:T8�H�05:;4<.c03Eb85C�.�4<S,4�k�gtòJ.�4<2M:,.lG37J83C^894<.!89E�25.�G�H�G�C�4���XªHL.1g0329H�.�G5:,G3034<23G?8�H�.c�JEMK/H���25:}8NH�03Ev6Y4<.lHpG3:,.�k�S,E?83CF:;I�+ôNõ�öN÷;ø�ùåúWûtü�ý�þ�ÿ«ù��íý������Jø�� ���TýQü��������]ø�ù�����ø9ù�����������ÿ�� ��ÿ���ø���ú��bõ�öN÷;ø9ù/úMõ! ��#"%$'&(�%)Fü������9ü�ú*�&(ÿ+��9ù����Mÿ«ü,�vø9÷-�Jø��� ���íýQü��/.10«ý�ÿ/ü�05ÿ��/ûtü�ý�þ�ÿ«ù��íý�����ø9÷324�����5�Nø�6���2'�����7��ø�682#��9;:%$�$#��.103ø������9ü�ú

*

Page 4: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

P <>= ?A@BDC%?;EGFIHA@�@�J�C%?

K#L1MON PRQ�S�P�T�U VAT�L1WXU Y[Z\'YOZ�]+P_^�P�T1N1WXL>`�a PbQ�S3P�T�U VAT�L1WXU YOZc�`1QXW�d�L T�WeL>a M�Y�d�U W�f�ghiY�d�j1]�a P�k P1aAL>a M�Y�d�U W�f�gl�U W7]�a P�k P1aAL>a M�Y�d�U W�f�gm L1WXPQn�d�L>Z%Q�U QXW�Y�doQp!P�T�WXL>Z1MOa P�Qq Ura UsTYOZ

tT�L>S%W�N�d�P

tu�L>` dvUsT�L1WXU Y[Z

­�:,k�7�25EZ*<+,*�w�03C�E�6fE�G3:,k�.cI�254�89E�G3G-/0?:;G@�<7�:,03E�894<XYXY4<.[K#4�2�03C�EY61ENG3:,k�.·I�234�89ENG3Gp034c�!E�25EbH�S,:,��Eb6y�1g>H[.17�X��!EN2M4�KG305E�I�G�I!H�G5G3:,.�kpK#254�X�4<.�E?S;EN\�E�S�034YHAS;4��WE�2DS,E�\<E�S/�1�DC�E�23EA03C�E@61E�G5:,k�.�E�2yxQ:;.1\<E�.103Gb�105C�E:,XYI�S,E�X[E�.10sHL03:,4�.YH�0D05C�E@.�E9ð�0�S;EN\�E�S�H�.!6[03CFE�.lI�254�\�E�G ä H K#03E�2�03C�E®KåH�890 ä 05C!H�0�03C�:,G.�E��{61E�G5:,k�. 6f4]ENG�:;.J61E�Eb6":,XYI�S,E�X�EN.]0?05C�EcG3IJEb89:á¨�8�HL03:,4�.%H�0p03CFEYI�25Eb89Eb61:,.�k^S,E�\<E�S/+BDC�E�G5E@£!ì�z%z+{cG305E�I�G?��4<7�ST6��JE?7�I1�uHL2s61GD:,.c03C�E�¨!k<7�23E<+��.^03C�E�4<03C�E�2AC!H�.!6o��G54�XYEpG305E�I�Gp4�KD03C�EY6fE�G3:,k�.^IF234�89E�G5GZ894<.�G3:,G50@4�KMH[I�7�23ENS;gXYEv83CJH�.�:T8�HLS�0329H�.�G«K#4�25XªH�05:,4�.p4�K�G3IJEb89:á¨�8NH�03:,4<.ª:,.1034A:;X[I�S,E�XYEN.]09H�05:;4�.'w�K�4�2ÌE9ð!HLXYI�S,E��03CFE�057�23.F:;.Fk�4LK HpG3EN0D4�K(XcH�G5§]G�:;.1054ZHAI!H�0503E�25.l4�.[G3:,S,:T894�.�+�BDC�E�G5E�8�HL.ª�JE?03C�4<7�k�C104�KDH�GZë�z3|M£J¢�}�~ ïå¢5zLê·G303ENI�Gb��H�.!6 23Eb�<7�:,23E�.F4Y:,.�k�EN.]7F:;0/g[4�2?:,.1\�E�.103:,4<.�+M-/.J61E�Eb6t�o03C�E�gH�25E?7�G37!HLS,S;g�05Eb61:,4�7FG�H�.J6YH�25E@�JE�G30�S;E�K#0�054��!E@614<.�E@�1gYHpXªH<85C�:,.�E�+ó^EÌ03EN.!6@054M7�G5E�4LK!03CFE��W4�296Yë�~ };ëNî�}�~ ïå¢5zLê@054�X[EbH�.?G50sH�k<E�G�:,.@03C�EW61E�G3:,k<.�I�254�89E�G3G�DC�:T85CcI�234�89E�Ev6cK#4<23�DH�2961Gb�1�D:,03CF4�7�0DSTH�25k�E�:;.1\<E�.103:,\�E?S,EbH�IFGMH�.!6[G37F��G3Eb�<7�EN.]0?I�25414�K#G4�K�894<2325Eb8903.FE�G3Gv����7F0Mg�EN0D�D:;05C�4�7F0D.�Eb89E�G5GsHL23:,S,gl�!EN:;.Fk�I�7�23ENS;gcX[Eb85C!H�.�:T8�HLS/+Ì`D7��1gY:,GHAK#29H�XYEN��4<23§p:;.[�DC�:T85Cª054Y614�03CFE�G3E�8NH�ST897�STH�05:,4�.�Gv+

�#�_�#�X� ���e�����R�4�y�������O�e�X���[�e�����O���BDC�:,G(85C!HLI�03EN2(:,.103254�617!89E�GÌ`a7��1g]��H�.J6@HD8�H�ST897FS}HL03:,4�.JH�S�G50/g1S;E�:;.A�DC�:T83CA034ME�ðfIFS;4<23EÌ05C�E61E�G5:,k�.�4�K(6f:;k<:,0sH�SFG3:,k�.!HLS�I�254f8�E�G3G5:;.FkZ89:,29897�:,03GDH�.!6pG5:,XY:,STH�2(6fE�\1:}8�E�GuHL.!6�H�S,k<4�23:,05C�XYGv+BDC�E�K�7�.!6�HLXYE�.10sHLS�:}6fEbHc:,.103234�617J89Eb6"�1g��b*<+QPY:,Gp03C!HL0�89:,2s8�7�:,03G�H�23E[��7�:,S,0�K#234<XI!HL2303G��]gpHMIF234�89E�G5G�4LK�ë�z |�£Ozvè�¢,ï/¢5z�ê��<H�.!6A03C!HL0�03C�:,G�894<XYIJ4�G5:;05:,4�.?C!H�G�G3:,XYI�S,E�XªHL03C1âE�XcH�03:T8�HLS�I�234<I!E�2503:,E�GpS,:;§<E�05C�4�G5E�4�KD03C�Ec894�X[I!4<G3:,03:,4<.ª4LKDK#7�.!8�03:,4�.�G@HL.!6·03C�EY8�4�X�âIJ4�G3:,05:;4<.ã4LKM23E�STH�05:,4�.�Gv+ãBDC!HL0�k<:,\�E�Gp7�GYHy�uHvg·4�K@61E�Gs8�23:,��:,.�kã89:,2s8�7�:,03G��DC�:T85C HL23E894<XYIJ4�G3Ev6�xQG3Eb�<7�EN.]05:TH�S,S,g����1g^�JE�:,.�kã894<.�.�Eb8905Eb6~054^EbH�85C~4�05C�E�2b�DHL.!6":;.~894�.1052sH�G50�b*<+ U[61E�G98923:,�JE�GZH�xQI!HL2sH�S,S,E�S/�!8�4�XYIJ4�G5:,03:,4�.c4�KWI!H�2503G?�DC�:T85C>4<I!E�29H�05E�:;.J61E�IJE�.!61E�.105S;g4�.cG503237J89037�25Eb6y:;.FI�7�03G1w�S,:;G503GMHL.!6�057�I�S,E�GM4LK(G5:;k<.!H�S,Gv+BDC�EW23EbHLS;:,0/g?:,G�03C!HL0�XY4<G30�89:,29897�:,0�G303257!89057�23E�GWS,:,EÌG34<XYE��DC�EN23EW�!E�0/�WE�E�.�05C�E�G5ED0/��4E9ð�0325E�XYENGb�<�!E�:,.�kA4�.�S,gpI!H�2503S,g@:,.103E�29894�.�.FEb8903Ev6ªHL.!6pI!HL2303S,gp:,.!61E�IJE�.!61EN.]05S,g�I!HL2sHLS;S,E�S/+BDC�E�25EYH�25E�I!HL2305:}8�7�STH�2?I!H�0503E�25.�G@4LK�:,.]05E�2s8�4�.�.�Ev8903:,4�.^05C!H�0@HL23:,G3Ep4�K#05E�.���HL.!6y�DC�:T83CXªHL§�E�G3E�.�G5E�7F.!61E�2�03C�E�8�4�.�G5032sHL:,.]05G�4<.@03C�E K#EbH�G5:,��:,S;:,0/gW4�K�STHvg�4<7�0b+J-/.@05C�EÌG37F��G3Eb�<7�EN.]0

Page 5: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  UG3Ev8903:,4�.FG(G57!85C@I!HL0303EN23.�G�4�K�:,.]05E�2s8�4�.�.�Ev8903:,4�.�H�25EÌ61:,Gs897�G5G3Eb6p:,.@`D7F�]g1��H�.J6?��E�E9ð�I�S,4<23E03CFEªXcH�05C�E�XªHL03:T8�HLS�I�254�IJE�2305:;ENGY4�K�8�:;29897�:,03G��DCF:}85C~H�23El894<XYIJ4�G5Eb6·:,.ã03CFE�G3Ec�DHvg]Gv+BDC�E�:}6fEbH?:,G�054@�JEb894�X[EDKåHLXY:,S,:;HL2��D:,03C�05C�E�G3E?I�254�IJE�2305:,E�GDG34p03C!HL0�05C�E�gY8�HL.Y�JEM7�G5Eb6034�E�ðfIFS;4<23E@61E�G5:,k�.l85C�4�:T89E�G�:,.ª61E�\<E�S,4�I�:,.�k�H�89:,2s8�7�:,0b+��.�E?4�K�03CFEM:,XYIJ4�250sH�.10Ì85C!H�29H�8905E�23:,G503:T89GD4�K(`a7��1g�:,GW03C!HL0�:,0Ì:,GÌ.F4�X[4�23ED61:áàª897�S,0034Y6fEbH�S��D:;05CcG3Eb�<7�E�.105:}HLS(89:,29897�:,03G ä 4�.�E�G��D:,03Cc:,.]05E�23.JH�S�G50sHL03E ä 05C!H�.c:,0D:,GD034Y61EbHLS�D:,03C�8�4�X���:,.!HL03:,4�.!HLSb89:,2s8�7�:,03Gb+�BDCFE�61E�G5:;k<.@:,G(614<.�EÌ�1g?03C�EWGsHLXYE�G34<230�4�K�8�HLST897�STH�05:;4<.:,.Y�J4�05C 8NH�G3ENGb�J:,.Y03CFE�G9H�X[EMG34<230D4LK H�S,k<E���2sHF+�-/.��b*�+QiA03C�E?:,.103E�25I�23E�09H�05:;4<.c4�K `a7��1gE9ð�I�25E�G3G5:;4<.�GlH�G�G5Eb�<7�E�.103:TH�S?89:,2s897F:;05G�:,G�:;.105234�617!89Ev6t+%ó^Ec03CFE�.~k�4^4�.~054¥61:,G9897�G3GXªHL.�:,I�7�STH�05:,4�.�G�S,:,§�E�I�:,IJE�S,:,.�:,.�kuHL.!6?6�H�09Hvâ/G3§<E��D:,.�kD�DC�:T85C�H�25EÌG3IJEb89:á¨�8�034�G3Eb�<7�E�.105:}HLS89:,2s8�7�:,03Gb+�Ìg·03CF:;GAI!4<:;.10?g�4<7>G5C�4�7FS}6yC!Hv\<E�E�.�4�7Fk�Cã`D7F�]gy034c�!EYHL��S,E�034c0sH<85§]S,EYH[G3:,��E�âH��FS;E?E9ð!HLXYI�S,E���HL.!6��b*<+ m�6f4]ENG(j97�G50M05C!H�0v+�-/0�4�7�05S,:;.FE�G�HpI!HL03Cl05C�234<7�k�Cc05C�E�61E�G5:,k�.4�KDH�G3g1G5034�S,:T8@894<2325E�STH�034<2b�JK�234�X�:,.�:,03:TH�S�61Eb89:,G5:;4<.�G@H��J4�7�0�C�4���034[23E�IF23E�G5E�.10@03C�Ep:,.1â03EN2/KåH<89Ec034l05C�Eª894<.�G3Ev��7FE�.!89E�Gc05C�:,G�C!HLG?K#4<2�05C�E�¨!.JH�SD89:,2s897�:,0v�ÌH�.!6 7�S,03:,XªHL03E�S,gc0344�IF03:,XY:,�bHL03:,4�.�G�4�K(05:,XY:,.�k?I!EN2/K#4<23XªHL.!89E�+�MS,SJ4�K�03CFEM89:,2s897�:,0�K#4�25XYGÌ61:,Gs8�7�G3G5Eb6[7�IY054@03C!HL0ÌIJ4�:,.10�H�25EME�G5G3E�.103:THLS;S,gp:,03E�29H�03:,\<E����7�0��b*�+Qq·G5C�4��DG�03C!HL0Y05C�ElGsHLXYEcG34<2305GY4�K@:T61EbHLGYH�25E>H�I�IFS;:T8�HL��S,Ec034ã89:,2s8�7�:,03GYS,:,§�E03CFE�xQ��7�0305E�2/�Jg���.�E�0/�W4�25§ã03CJH�0YH�25Ec.!H�057�2sHLS;S,gã61ENGs8925:;�JEb6ñ:,. Hy23Ev897�23G5:,\�EyKåH�G5C�:,4�.�+��7�0305E�2/�!g~.�EN0/��4<23§1GYH�25E 8�4�XYX[4�.·:,.ãXªHL.1glG34<2303G[4�K@89:,2s897�:,05Gb�W��7�0YHL23EcI!EN23C!HLI�GXY4<G30aKåH�X[:;S,:TH�2�K#254�Xz:,X[I�S,E�XYE�.109H�03:,4�.�GD4LKu05C�E¡x KåH�G50@­�4<7�23:,E�2?0329H�.�G«K#4�25X>�,+�­�:,.!HLS;S,g�b*<+ w[G5C�4��DG?03C!HL0�05C�E���7�0503E�2«�!g·:;X[I�S,E�XYEN.]09H�05:;4�.[4�KD03C�EY­�­�B 8NH�.·�!EY61:,G9894�\�E�25Eb6�1gY8�H�ST897FS}HL03:,4�.&K#234<X©03C�E?G3IJEb89:á¨�8NH�03:,4<.l:,.�j97�G50�05C�E?GsHLXYEM�DHvgYH�GW�WE®6f:}6&�D:,03CY05C�E894<2323ENS}HL034<2b+�#�_�#��¢ ���e���¤£�#¥X�¦�§���e�_�¨�O©e�O�'�BDC�254�7�k<C�4�7�0[03C�:,Gc83CJH�I�05E�2c03C�E�25EãH�25E>I�:T89057�23ENGª05C!H�0cH�25E>:,.103E�.J61Eb6ñ034ãX[4�05:;\�HL03E03CFEª61:,Gs8�7�G3G5:;4<.ã05C!H�0@k<41E�G��D:,05C^03C�E�X·+Y�D0pS,EbH�G50?K#4<2@G34<XYEpI!E�4<I�S,E���03CFEYI�:T89057�23E�GC�E�S,I[�D:;05CªHL.Y:,.1037�:,03:,\<ED7�.!61E�25G309H�.!61:,.�k�4LK(�DC!HL0uHL.YEb�<7!HL03:,4�.�X[EbH�.FGb�<4�2W4�K(�DC1gYH8�HLS}8�7�STH�03:,4<.YI�254f8�E�Eb61G?:,.ªH�89EN230sHL:,.ª�DHvg1+BDC�E�G5Eªx�H���G5032sH<890D�J4]4<23I�STHL.�Gb�1G5C!H�25E�XcH�.1gp4�K(05C�E@:,XYIJ4�250sHL.]0�I�234<I!E�2503:,E�G�4�K(05C�E89:,2s8�7�:,03G?�D:,03Cc�DC�:T85C>HY61ENG3:,k�.�EN2��W4�7FS}6[�JEZ8�4�.!89EN23.�Eb6o+@r�23:,.!89:,I!HLSÌH�XY4<.�k�G50�05C�E�G5E:,G«}ozbë�~3}�¢,ï�¬Aw��DC�E�05C�E�2D4<2�.�4<0u8�4�XYIJ4�.FE�.103GDH�23E@894<.�.�Eb8�03Eb6c054Z8�4�XYIJ4�.FE�.103GW03C!HL0uHL23E.�EbHL2?034c03C�ENX>+@��Eb8�H�7FG3E�03CFEY894�G503G?�DC�:T85C¥614<XY:,.!HL03E?:,.>89:,2s897F:;0@894<.�G305237!8�03:,4�.ãHL23E03CF4�G3E�4LKu894<XYX�7�.�:T8�HL03:,4�.��1S,4�8�H�S,:,0/gc:,G�\<E�23gy:;X[I!4<2309H�.10b+?�1:,XY:,STH�25S;g1�<03C�E�E9ð�05E�.10@034�DC�:T85Cª894<.�.�Eb8�03:,4�.�GM8�234�G5GM4�\<E�2�EvH�85Cc4�03CFE�2DG3C�4��DGW7�I���HL.!6�05C�:,G�:,GMHL.�4�05C�E�2D894�G50D:;.89:,2s8�7�:,0M894�.�G503257!8903:,4<.�+�ÌEN�uHL23E���C�4���EN\�E�2v�Ì4�KM25EbH�G54�.�:,.�k^H��J4�7F0@03C�E[I�:T89037F23E�Gv+^-/.^I!H�2503:T897�STHL2b��.�4<03:T89E03CJH�0��<7�:,03EW4�K�03E�.�05C�EDI�:T89037F23E�GDH�25E�j97�G30�I!H�2503:T897�STH�2�:,.�G50sH�.J89E�GW4�Kt03C�EDEb�<7!HL03:,4�.FG�H�.!68�HLS}8�7�STH�03:,4<.>�DC�:T85C·03C�E�g^IJ4�250329Hvg]+�BDCFE�23E[:;GpHª6FH�.�k<E�2�:,.·0325g]:,.�kc054l23EbHLG34<.·K#234<X03CFE@E9ð!H�X[I�S,ED:;.c05C�E@I�:T89057�23E@05C!H�0Dg<4�7[XY:,k�C10Ìk<E�.�E�29H�S,:,��E�Hp23ENG37�S,0M�DCF:}85CcC!HLI�I!EN.�G4�.FS;g�054��!E?05237�E?K�4�2D03CFE�IJH�2305:T897�STH�2D:,.�G50sH�.J89E�+

Page 6: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

_ <>= ?A@BDC%?;EGFIHA@�@�J�C%?

­ ®

­�:,k�7�25E�*�+QPOw�03C�Ep894�X[I!4<G3:,03:,4�.¯­ñò%®­ ® °

­�:,k<7�23E�*�+QU[w(894<XYIJ4�G5:;05:,4�.�:,GMH�G5G34�89:TH�05:;\<E�w(±�­ñò%®�²Ìò�°¦³¦­%ò1®>ò�°¦³¦­%ò3±�®·ò�°e²ÕpÖ�´ µ�Ûª¶¸·^Ûb¹�ß�ÙÌß�Û�Ø»ºpØªÜ ß�Øb¼¾½?Ú#¹�½BDC�EM89EN.]052sHLS!:T61EbH�:,.Y`D7F�]gA:;G�05C!H�0Ì4LK�IF7�0305:;.Fk�0/�W4@89:,2s897F:;05G�054�k<E�03C�EN2Ì034�8�4�â/4�IJE�2sHL03E�D:,03CpEbH�85C�4<03C�E�2v+�BDCFEM894�X[I!4<G3:,03:,4�.A4�K!0/�W4@89:,2s897�:,05G�­%H�.J68®y�D:,S;S1�JED�D23:,0305E�.¯­lò7®H�.J6lg<4�7·G3C�4<7�ST6lC!Hv\<E�:,.>X[:;.J6Y05C�E�:T61EbHc4LKuHl89:,29897�:,0?:;.·�DC�:T85Cã894�.F.�Eb8905:;4<.�G�HL23EXªH<61EWK#254�X©4�.�E?G5:}6fEM4�K#­ 034p03C�E?4<03C�E�2WG3:T61E?4LK§®W�12sHL03C�E�2MHLG�G5C�4��D.c:,.p¨!k�7�25E�*�+QP�+BDC�Eyx S,E9K�0/â/C!H�.!6o�bEv61k�E�4�K�H@89:,2s897F:;0W�D:,S,S]�JE�8NH�S,S,Eb6p:,03G�æ>z |ª~�¢TêcH�.!6p05C�E¿xQ23:,k�C10«âåC!HL.!6t�Eb61k<E�:,05G�ì�~Lê1é�ç�+DBDCFEZ614<XªHL:;.�4LKÀ­%ò ®~:,G�03C!HL0M4�K�­p�J:,03GM29H�.�k<E@:,GM05C!H�0�4�K�®W��H�.!603CFE�2sH�.Fk�E�4�Ke­©:,G@894�.F.�Eb8905Eb6^054l03C�EY6f4�XªHL:,.ª4LKÁ®W+�BDCFEpKåH�890?05C!H�0@05C�EY614<XªH�:,.H�IFI!EbHL23G�4�.Y05C�E@S,E9K#0W4�KÌ05C�E?I�:T89037�25E�H�.J6�03CFE@2sHL.�k�E?4�.c05C�E?23:,k�C10W:;GD4LK 894<7�23G5E�j97�G50H�894<.]\<E�.103:,4�.��1��7�0D�D:,S,S!�JE@4�.FE�054��DC�:T85CY�WE®H<61C�E�25E@X�7!85CY4LK(05C�E@03:,X[E�+Â�4�7[G3C�4<7�ST6[03C�:,.�§[4�K Hp89:,2s8�7�:,0MH�GD�JE�:,.�kYH@25E�STH�05:;4<.c�DC�:T83C[C�4�ST61GD�JE�0/�WE�E�.l05C�EG3:,k<.!H�S,G�4�.�:,03GÌ894<.�.�Eb8�03:,4�.�GW�D:,03C�05C�ED4�7�05G3:T61ED�W4�25S}6o+�BDC�:,G�:,GÌ03CFED23E�STH�05:,4�.p�DC�:T83C�:,0E�.1K�4�2s8�E�GM�1gYH�252sHL.�k�:,.�kp03C!HL0D03C�E?\�HLS;7FE�G�4LK(:,03GD4<7�03IF7�03GMHL23E@894�.FG3:,G305E�.10M�D:,03C[03C�4<G3E4�K�:,05G�:,.�I�7F03Gb+Ì��E��DH�25E�05C�E?03E�X[I�0sHL03:,4�.p034p03CF:;.F§�4�K�03CFE®6f4�XªHL:,.@G3:,k�.JH�S,G�H�GW:,.�I�7�05GH�.J6@05C�EM29H�.�k<E�G5:;k<.!H�S,GÌH�G�4�7�05I�7�03Gv+�BDC�EM61:,\1:,G3:,4�.@�JE�0/�WE�E�.c614�XcH�:,.@H�.!6p29H�.�k<ED:;GÌHI�7�25E�S,gYk<E�4�k<2sH�IFC�:T8�H�St4<.�E��!HL.!6�05C�E�25E@XªHvgp�!EA:;.FI�7�03GMHL.!6[4�7�05I�7�05GD4�.cE�:,03C�EN2DG3:T61E4�K�4�.�E?4LK 4<7�2M89:,2s8�7�:,03Gb+VW4�X[I!4<G3:,03:,4�.�4LKÌ23E�STH�05:,4�.�GD:,GM61E9¨J.�Eb6c�1g�þ±�­ ò�®�²4Ä�ÅªÆ Ç[È�+�Ã8­ÉÈ8ÊËÈ¿®�ÄF+BDC�:,GY:,GlH�. H�G3G54�89:TH�03:,\<E>4<I!E�29H�05:;4<.����DC�:T83Cñ:;Gc054ãGsHvg~05C!H�0c03CFE>4<2s61E�2y:;.ñ�DC�:T83C03CFE�894�X[I!4<.�E�.103G�4�K�¨!k<7�23EY*<+QU�HL23E�HLG3G3ENX���S,Eb6l8�HL.�.�4�0MH,Ì�Ev890?03C�E@X[EbH�.F:;.Fk�4LK 05C�E89:,2s8�7�:,0b+[�MG3G54�89:TH�03:,\1:,0/glk�:,\<E�G@7�G�HL.^E9ð!897�G5E�K#4<2@S,EbHv\1:;.FkY4�7F0@03C�E[I!H�25E�.103C�ENG3E�G�:,.��K#4<2DE9ð!H�XYIFS;E<�-­ñò�®^ò�°@+n�HL03E�2Ì�DCFE�.���EM8�4�XYE�034@61EbHLS!�D:,03CpG3Ev��7FE�.103:TH�S!8�:;29897�:,03G�:;0��D:,S,S1I�234�\<ED.�Eb89E�G5GsHL23g034p83CJH�.�k<EM4�7F2Ì:T61EbH?4LK��DC!H�0�H®G3:,k�.!HLS�:,Gb�1H�.!6p:,.!6fE�Eb6�4LK��DC!H�0WH@89:,2s897F:;0�:;Gvò1��7�0Ì05C�E03CF:;.Fk�GM05C!H�0DG50sHvgc03CFE@GsHLXYE@H�25E@03C�EAS}Hv�DGMHL�!4<7�0�8�:;29897�:,0DK�4�23X[Gb+W�14!�fK#4�2DE9ð!HLXYI�S,E��894<XYIJ4�G3:,05:;4<.c�D:;S,S�G309Hvg>H�G5G34�89:TH�05:,\�E�+p-/0?�D:,S;S�I!Hvgc054ªG50sHL230�HLG��WE�XYEvH�.l054ªk<4Y4<.�+

Â�4<7>G5C�4�7�ST6c0523g·034lHv\�4<:T6c23EbHLG34<.�:,.�klH��J4�7�0?03CFEZ6�HL0sH ä Ã��'È���ÄY:,.·03C�:,G?E9ð!H�X[I�S,Eä H�.J6YH�GaKåH�2DH�GDIJ4�G5G3:,��S,E��Fg�4�7[G3C�4<7�ST6[0323g[034YHv\<4�:T6�25EbH�G54�.�:,.�kYHL�!4<7�0D03C�E?G5I!Eb8�:�¨t8894<XYIJ4�.�E�.10M89:,29897�:,03G ä ­��O®W�¨° C�E�23E ä 894<.!89E�.10329H�05:;.FkY:,.�G305EbH�6[4<.ª05C�E�894<X���:,.�:,.�kK#4<23XYGv��S,:,§�E�8�4�XYIJ4�G5:,03:,4�.��<H�.!6&03C�E?STHv�DGÌ�DC�:T85CY05C�E�gY4<�!ENg]+�BDC�E?H�G5G34�89:TH�05:;\<E?S}Hv� ä03CJH�0D±�­ ò,®�²Wò�°�³�­ ò>±�®^ò�°e²WK#4<2�H�.1gi­p�A®%HL.!6¡° ä :;G�.�4�0?H��J4�7�0�03C�Ep6�H�09H�4�.

Page 7: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  e�DC�:T85Cc03C�E�89:,2s897F:;0�4�IJE�2sHL03E�Gv�J.�4�2�:;GD:,0MHL�!4<7�0�HL.]g[I!H�2503:T897�STHL2M89:,2s897�:,0?894�X[I!4<.�E�.103G­p�O®~H�.!6�°@ò12sHL03C�EN2M:,0�:,GMHpk<E�.�E�29H�S�G50sHL03E�X[E�.10MH��J4�7�0RxTò;�,+�#�+¢��X� Í��'�D���'�O��ÎÏ�!�¤ÐÏ�D�#�����O�_�#Ñó%C�EN23E@:,0WXªH�§<E�GWG3E�.�G5E@034�IFS;7Fk�0/�W4Y894�X[I!4<.�E�.103GW4�K�03C�EAGsH�X[EM§1:,.!6�054�k<E�03C�EN2b���WE8�HL.�0sH�S,§�HL�!4<7�0Ì05C�EeÒFâå05:,XYE�G�23ENI!EbHL03Eb6c894<XYIJ4�G5:;05:,4�.@4LK;­p�<�D23:,0305E�.¯­RÓ��1H�.J6p�DC�:T83C:,GM61E9¨!.FEb6c�1g¯­yÔ�³�­p��H�.J6�­RÓ�Õ'Ô�³�­ñò%­RÓt+�1:,.!89El�WEl§1.�4���03C!HL0Y894�X[I!4<G3:,03:,4<.ã:,GYH�G5G34�89:TH�05:;\<E��W��E·H�S,23EbH<61gã§1.�4���XªHL.1g03CF:;.Fk�G�HL�!4<7�0�25E�IJEbH�05Eb6c894�X[I!4<G3:,03:,4�.���K�4�2ÌE9ð!HLXYI�S,Ee­RÓ-Õ'Ô�³¦­RÓ?òX­p�]HL.!6¯­RÖ�Õ¨Ó¾³­RÖ�ò,­RÓt��HL.!6lG54c4�.�+?BDC�EpI�254]4LK#G@8�H�.·�JEZ614<.�E��1gc:;.J617!8905:;4<.l4�.�Ò���HL.!6c.�4<03:T89E03CJH�0?03C�E�IF23414�KM61E�IJE�.!61Gp4�.FS;gc4<.>05C�EYH�G5G34�89:TH�05:;\1:,0/gl4LKu894�X[I!4<G3:,03:,4<.��JG34c03C�EN23EY:,G.�4�.�ENEb6c034�H�IFI!EbHLS�054�03C�E?XYEvH�.�:,.�k@4LK§­ÎH�0MH�S,S/+�17�I�IJ4�G5E���E�H�G5G37�X[E?K#4<2�G54�X[E×­H�.!6�®~03CJH�0D­ ò,®Ø³Ù® ò,­p�J03CFE�.ãH�G5:;X[I�S,E:,.!617!8�03:,4�.[G3C�4��DG�03C!HL0e­%ò�®'Ó¯³�®'ÓYò1­p+���G5:;X[:,S}HL2Ì:,.!617!8�03:,4�.[G3C�4��DGD05C!H�0D4<.ª05C�EGsHLXYE?H�G3G57�XYIF03:,4�.�±�­%ò1®�²�Ó¯³¦­RÓ�ò%®'Ó�+ÚD4��@��.�4�05:T89EY05C!H�0�HLS,03C�4<7�k�C�­�ò�®'Ó۳ܮ'Óªò>­OHL.!6ɱ�­Îò ®4²+Ó۳ܭRÓªò�®'ÓãHL23E4�.FS;g·I�254�\�Eb6·:,.ã8�HLG3Ei­OHL.!6�®�894<XYX�7�05E¯±�:;.ã8NH�G3E¡­ ò>®�³Ý®ãò�­¿²���H�.!6 G34>HL23EG309H�05E�XYE�.105G®HL�!4<7�0«­©HL.!6i®Wòt.�E�\<E�2305C�E�S,E�G5G�05C�E�05C�E�4<23E�X[GDxQ-�KÀ­ ò%®�³Þ® ò,­Î05C�E�.

­%ò1®'Ó¯³�®'ÓYò1­���HL.!6�xQ-�K§­%ò1®�³�®·ò1­ 03C�E�.ß±�­%ò1®�²�Ó�³Ë­RÓ�ò1®�Ó���H�25E ä j97�G30DS,:,§�E03CFE®HLG3G54f8�:}HL03:,\�E?STHv� ä G50sH�05E�XYEN.]05GMH��J4�7�0M8�4�XYIJ4�G5:,03:,4�.�+BDC�E�G5E>G50sH�05E�XYEN.]05GªHL�!4<7�0Y894�X[I!4<G3:,03:,4<. 8�HL.%�!E·H�6�61Ev6~034^05C�E>894<S;S,Eb8�03:,4�.~4�KSTHv�DGM05C!H�0?�WEZHL23E�H�8�897FX�7�STH�03:,.�kJ��H�.!6y�DC�:T85Cl�D:,S,S�E�\<E�.1037!HLS;S,g>8�4�.�G503:,037�05EZH[�J4�61g4�K�§1.�4��DS,Eb61k�E@HL�!4<7�0D03C�E�{%zLì�|Aè�4LK H�S,S�89:,29897�:,03Gv+�#�+¢���¢ à�Ñ#á(���O���BDC�E�:,.1\�E�25G3Ep4�KMHc89:,2s897�:,0?:,G?:;05G?S;E�K#0/â/034Lâå25:;k<C10�25E9�!Eb8�03:,4�.�w?05C�EY894<.�.�Eb8905:,4�.�G@4<.>05C�ES,E9K#0�4�K4­ñH�I�IJEbH�2�4�.�03CFED23:,k�C10�4�K�­yâ�Ô�H�.J6p\]:T89ED\<E�23G9H�+Ì�1:,.!8�ED23E9�!Ev8903:,.�kp0/�D:T89EDk�E�05G7�G?�!H<83§y03C�E�4<23:,k�:,.!HLS(89:,2s8�7�:,0b����Ep23Eb�<7�:,25E�03C!HL0MK�4�2@H�.1g>89:,29897�:,0D­©03C�E�:,.1\�EN23G3Ep4�K:,03G�:;.1\<E�23G5E�G3C�4<7�ST6c�!Ep03CFE�G9H�XYEp89:,2s897�:,01w¿±�­ â�Ô ² â'Ô ³Þ­p+?-/.1\�EN23G3Ep:,GM4LK#03E�.^8�HLS;S,Eb6894<.]\<E�23G5E��tH�.!6&:,GM61E9¨!.�Ev6c�1g�ÃD­yâ�Ô�È�ÅªÆ ÈR­�Ã�+VW4�.�G5:T61E�2D03CFE@23E�STHL03:,4�.[�DC�:T83Cc25E�I�23ENG3E�.103G?.�ENk]H�05:,4�.Y4LK��Ì414�S,EbHL.�G%w n êAz ï#ãYH�.!6ã�êAz ï n +&-/03G@:,.1\�E�25G3ElêAz ï�â�Ô@:,G?4�KM894<7�23G5EY03CFE�GsH�X[E@23ENS}HL03:,4�.�+�BDC!H�0?X[EbH�.�G?05C!H�0êAz ï�â�Ô�³ÎêAzvïv��G54@g�4<7�G5C�4�7�ST6p�JEMHv�uHL23ED05C!H�0�xQ25E9�!Eb8905:,.�k@03CFEDI�:T89037�25E��<4�K�êAz ïÌS;EvHv\�E�G:,0M7�.J83CJH�.�k<Eb6t+@-/.·I!HL2303:T897FS}HL2b�J03CFE�23E�:,GM.F4ª:T61EvH�03CJH�0?03C�Ep:,.�I�7�05G@H�.!6c4<7�03IF7�03G?4�KHpk]HL03E@CJHv\�E@�JE�E�.·E9ð!85C!H�.�k<Eb6!wW03CFE@G3E�.FG3E�:,.c�DC�:T83C"êAzvï â'Ô ³©êAz ï�H��FG30329H�8905G�K#234<XG37J83C·894�.!8�E�23.�G?H�GD�DC�:T85CcG3:,k�.JH�S,GuHL23E@:,.�IF7�03GMHL.!6��DC�:T85ClH�25E�4<7�03IF7�03Gv+BDC�EY.FE9ð�0��<7�E�G305:,4�.^034·H�G3§y:;GAC�4�� :,.1\�E�25G3E[:;.105E�2sH<8903Gp�D:,03C^894�X[I!4<G3:,03:,4�.�+���GG3CF4��D.ª:,.[¨!k<7�23EY*<+ _�g�4�7l8�HL.c23E9�!Ev890?03C�E@IF:}8�037�25E�4LK HY8�4�XYIJ4�G5:,03:,4�.��1gYG5�uHLI�I�:,.�k03CFE�894�X[I!4<.�E�.103G?H�.!6 23E9�!Ev8903:,.�kcEbH<83Cy4�KÌ03C�ENX>��G54Y§<E�E�I�:,.�kc894�2523E�G5I!4<.!61:,.�kcEb61k<E�G894<.�.�Eb8905Eb6t+D�109H�03Ev6ªHLGuH�`a7��1g�STHv�@���WEMC!Hv\<E?03C!HL0e±�­%ò�®�²�â'ÔÀ³ä±�®¤â�Ô�²�ò1±�­yâ�Ô�²�K#4�2H�.1g¯­ÎH�.!6¡®W+

Page 8: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

i <>= ?A@BDC%?;EGFIHA@�@�J�C%?

®¤â�Ô ­yâ'Ô

­�:,k�7�25E�*�+ _Aw�03C�E?:,.1\�E�25G3E@4LK H�894<XYIJ4�G5:;05:,4�.�w�±�­%ò1®4²â�Ô�³�±�®#â'Ô²�ò1±�­yâ�Ô�²-/0ÌK�4�S,S,4��DG(05C!H�0R±�­RÓO²�â'ÔÀ³Ë±�­yâ�Ô�²�Ó��<G34�H�G�HA.�4<0sH�05:,4�.!HLS!894�.1\<E�.�:,E�.!89E?�WE�61E�¨!.�E

­yâAÓå³æ±�­Dâ'Ô²+Ó�+���EY8�HL23E9K#7FSÌ.�4�0A034cS,E�0?03C�:,G?23E�IF23E�G5E�.10sH�05:,4�.!HLS�25Eb85§]S,E�G5G3.�ENG3G�S,EbH�6g�4<7lH�G3052sHvg ä 03C�E@:,.!6f7!8903:,4<.ª05C!H�0�I�234�\<E�Ge­RÖÀÕ¨Ó¡³�­RÖ ò%­RÓc6141E�G?G34pK#4<2DI!4<G3:,03:,\�EÒ�+�ÚD4�05:T89Ec03C!HL0�G3:,.!89Ec�WEª§1.�4��.�4�05C�:,.�k>:,."k�E�.�EN2sH�S?H��J4�7�0ª­©ò�­yâ�Ô��Ì:,0p:,G�.�4�0.�Eb8�E�G3G9H�23:,S,gY05C�E@8�H�G5EM05C!H�0�­RÖeâ¨Ó¯³�­RÖãò�­yâAÓ�+�-/.Y05C�:,G�25E�G3IJEb890?H�0WS;EvH�G30W:,0u8NH�.Y�JEH�25k�7�Ev6�03CJH�0W:;0��uHLGuHAXY:,G309H�§<E�054Z85C�25:;G503E�.c05C�EM25E9�!Eb8905:,4�.c4�K(Hp89:,2s897F:;0W:,03GRxQ:;.1\<E�23G5E���D:,03ClH�S,SJ03C�Ep894�.�.F4�0sHL03:,4�.FG�05C!H�0DC!HLGb+�#�+¢��5ç à�Îe�'Ñ#�O��� èÜ�4ÑRÎÜ� èe�D����MHv\1:,.�k>6fE9¨!.�Eb6É­RÓ^K#4<2@I!4<G3:,03:,\<EYH�.!6 .�E�k]HL03:,\�E¯Ò���:,0p:,G@.!H�057�2sHLS�054>G5E�E�§~H�.^:,.1â03EN23I�25E�0sHL03:,4�.·K#4<28­¿ép�DC�:T85Cl¨!05G@.�EbHL03S,gl:,.1034c03CFE�23E�XcH�:,.�:,.�kYk1H�I�+pBDC�E�05:,XYEpC!H�G894<XYEW034?�!EDCF4�.�E�G50�H��J4�7F0(0/g1IJE�Gb+(±/r�E�23C!HLI�Gb�1G5:,.!89ED�WEMH�23ED09H�S,§1:,.�k�HL�!4<7�0(x¤8�:;29897�:,03Gv�H�.J6p.�4�0Ì25E�STH�05:;4<.�Gb�<:,0ÌXY:,k<C]0�C!Hv\�ED�JE�E�.[�!EN0303EN2D034@09H�S,§@4�K#xT¢Têfï«çNì�{%~<ësç�è���29H�03CFE�2�05C!H�.0/g1I!ENGb+s²�MG&KåH�2YHLG��D:;S,SM894<.!89E�25. 7FGb�DH·0/g1I!El:,GMj97FG30YH^894<S;S,Eb8�03:,4�.~4�K@\�HLS;7FE�Gb+ñ-/. 05C�E�W4�23ST6y4�KM25E�STH�03:,4<.�Gb��03C�E[03C�:,.�k<G?03C!HL0@S,4]4<§>S,:,§�Ep0/g1I!ENGZHL23E�Eb�<7�:,\�H�S,E�.J89E�23E�STHL03:,4�.�G1wH�.[Eb�<7�:,\�H�S,E�.!8�E�25E�STH�05:;4<.ª61EN03E�25XY:,.�E�GDHpG3E�0D4LK(Eb�<7�:,\�HLS;EN.!89E�8�S}HLG3G5E�Gb�tH�.J6�03CFE�G5E�0D4�KEb�<7�:,\�H�S,E�.J89EM89STH�G5G3E�GD61E�05E�23X[:;.FE�G�03C�E�Eb�<7�:,\�H�S,E�.!89EW23ENS}HL03:,4�.�+�B�4@61E�G98923:,�JEM�DC!HL0Ì:,0(:,G034��JE�Hp0/g1IJE����WE?C!Hv\�E?034�EN.!894�61Ep:;.l`a7��1g�03C�E@IF234�IJE�2503:,E�GM05C!H�0�XªHL§�EMHp23ENS}HL03:,4�.�JE�H�.[Eb�<7�:,\�H�S,E�.!89E?25E�STH�03:,4<.�+�M.�Eb�<7�:,\�HLS;EN.!89EW23E�STH�05:,4�.p:;G�4<.�E��DCF:}85Cp:,GÌ23E9�JE9ð�:;\<E��<G3g1XYX[E�0325:}8�HL.!6@052sHL.�G3:,03:,\<E�wG3g1X[XYE�0523g@:,G!j97FG30W03C!HL0�­�³Ë­yâ�Ôbò<0329H�.�G5:,03:,\1:;0/gp4�K(H®23E9�!E�ðf:,\<E�25E�STH�05:;4<.�:,Gtj97�G50�05C!H�0­Ï³Ï­¿ê�±�g�4�7^8�HL.^G3C�4��Î03C!HL0�H�.1gl052sH�.FG3:,03:,\�Ep23ENS}HL03:,4�.^894<.]09H�:,.�G@:,05G�G9�<7!H�25E����F7�0g�4<7>.FE�Eb6·23E��!E9ð�:,\]:,0/g·034cG3CF4�� 894<.]09H�:,.�X[E�.10�4LK�03CFE�23E�STH�05:,4�.·:;.·03CFE�Gs�<7!H�25E%²�+c�14H�.1gå­�K#4<2@�DC�:T85C�­Ï³ë­yâ'Ô8³ë­¿ê�±åHL.!6·G34�­ë³Ü­RÓlK#4<2�H�S,SÌ.F4�.1â/��E�254åÒ!²?:,G�H�.Eb�<7�:,\�H�S,E�.J89EM4<.YH�S,S!05C�EM25E�S,E�\�H�.10W\�H�S,7�E�Gvò�G57!85CªHL.�­ñ��E?8�H�S,StHpï�¬9£�çN+�-/0��D:,S,S!89S,EbHL23S,g614�.�4pC!HL23X�034�4�7F2�:,.1037�:,05:;4<.Y054Y61E9¨!.�Eb­«é�³Ø­�G34�S,4<.�kZHLGe­�:,GDHp0/g]IJE�+��0/g1I!E¯ì�:,G@H[0/g]IJE�4�KD03CFEY614�XcH�:,.�±#.�4<0b��.�4�05:}8�E���ï7ífç&0/g]IJE�4�KD03CFEY614�XcH�:,.A²4�KMHY8�:;29897�:,08î:áKÀîϳÏìò,î&��H�.!6yG3:,X[:;STHL23S,gYH[0/g]IJE¯­©:,G@H[0/g]IJEp4�KD:;05G?2sH�.Fk�Ep:�KîϳïîÎò,­p+��14<XYE�05:;X[E�GD03CF:;G?�D:,S,S��JE��D23:,0305E�.ãH�GDîÝw!ìñðò­p��HL.!6y��EpG3IJEbH�§·4�Kìiðñ­ HLGÌHM0/g1IJEÌK�4�2#î�+�ó%C�E�.pG3IJEbH�§1:,.�k?4�KtH�8�:;29897�:,0#î����WE�4<7�k�C10�23EbHLS;S,g@054��<7�4<03EH�I!H�2503:T897�STHL2§ìÎH�.!6b­p��H�.J6@G5I!EbHL§@4�Kt03CFEu89:,29897�:,0�îñw�ìåð�­p+�VW4�X[I!4<G3:,03:,4�.?XcH�§�ENGX�7!85CYX[4�25E�G5E�.�G5E�:áKÌg�4<7ª4<.�S,gYE�\<E�2@894�X[I!4<G3E@89:,2s8�7�:,03GM�D:,05ClXªHL0s85C�:,.�kp0/g]IJE�Gv�!G9Hvgóïw>ôÛðöõ�H�.J6�÷æw-õØðöî��F:;.c�DC�:T85C>8�HLG3E�±�ó ò%÷y²ew>ôÛðøî��!HLGMg�4<7l8�H�.>85C�Ev83§K#254�X�05C�E�61E9¨J.�:,03:,4�.�+-/.�03C!HL0Ì8�H�G5E��1:,0(XcH�§<E�G�G5E�.�G3E?054�09H�S,§@4LK�25E�I!EvH�03Ev6Y894<XYIJ4�G3:,05:;4<.?4�.�S,g@�DC�EN.�g�4�7

Page 9: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  m®¤â'Ô ­ ®

­�:,k�7F23E�*�+QeOw�03CFE�894�.vj97�k]HL03:,4�.¯­�ù(®"4�K§­ �1g�®C!Hv\<ED:;.�X[:,.!6@HbíOz |ªz9é�ç�êJç�zLî<è®894<XYIJ4�.�EN.]0#­ñw °¯ðï°@�<:,.��DC�:T85CY8�HLG3ED­RÓ�w °¯ðú°K#4<2MH�S,StI!4<G3:,03:,\<E®HL.!6[.�E�k1H�03:,\<E×Ò�+W­�4<2D03C!HL0D23EbHLG34<.l:,0�:,GD:,.1037�:,03:,\<E�S,g�GsHvK�E@034Y61E�¨!.�E­¿é[034^�JE�°@���!Ev8�H�7�G5E>05C�E�.%89E�250sHL:;.FS;g�­RÓ-Õ!éi³ø­eÓ¦³û­RÓlò�°Ý³û­RÓlò-­¿écH�.!6G3:,X[:;STHL23S,gpK#4�2b­«é�Õ¨Ó^H�.!6 K#4<2�.FE�k]HL03:,\�EpI!4��WE�25Gb+c�ÌEY8�HL23E9K�7�S��D:,05C>05C�:,G�61E9¨!.F:;05:,4�.�wG30523:T8905S;g^G5I!EvH�§1:,.�k^:,0�6141E�G�.�4<0�XªH�§<E�G5E�.�G5El034·0sHLS;§ãHL�!4<7�0ª­«é&�D:,03C�4<7�0�XcH�§1:,.�kE9ð�I�S,:T89:,0?�DC�:T83C·I!HL2303:T897FS}HL2?0/g]IJEpg�4�7·C!Hv\<E�:,.·XY:,.!6&K#4�2D­ ä 25E�XYE�X��JE�2�03C!HL0�05C�E0/g1I!EW:,G�.�4<0�7�.�:T�<7�E ä H�.!6AHDIJEb6�H�.10��W4�7�ST6?:,.�G5:;G50�4�.@G9Hvg]:,.�k�03C!HL0�:,0�:,G(±�­äw °8ðØ°e²Xé03CJH�0D:,GM61E9¨!.FEb6c034p�JED°@+�aK�894�7�25G3E[03C�E�25EbH�G54�.·K#4<2��JE�:,.�klG5S,4�I�I1gl:,G?03C�E[7�G37JH�SÌ4<.�E�w@05C!H�0?:,0@6141E�Gp.�4�04�K�03E�.lXcH�0503E�2MHLS;S�03C!HL0MX�7!85CcE9ð!H�8�03S,gc�DC!H�0?83CF4�:T89Epg�4�7cXcH�§�E<�!H�.J6c�DC�E�.l:,0?6141E�G03CFEM23:,k<C]0Ì85C�4<:}8�EM:,G�4��1\1:;4<7�Gb+;Â�4<7�G5C�4�7�ST6p�JE��DH�23E<�1C�4���EN\�E�2v��4LK(H�.1g@:,.1037�:,03:,4<.�05C!H�0S,EbH�6fG@g�4<7>054lE9ð�I!Ev890¾­¿ép.�Ev89E�G3G9H�25:;S,g^054l�!E�05C�EY:T61EN.]05:,0/gl4�KM894�X[I!4<G3:,03:,4<.�+pBDC!H�0�W4�7�ST6��JE�HL.�ü K#4�2W�DC�:T85Cýü�ò%÷˳Ë÷�³Ë÷ ò%ü�K#4<2MH�S,S�÷�+�#�+¢��5þ ÿå�¤Ñ���©��#�'�O�X�¤Ñ�%89:,2s897F:;0WH�.!6A:,03G�:,.]\<E�23G5ED4�K#05E�.�H�I�IJEbH�2�034�k<E�03CFE�2Ì��29H�85§�E�05:,.�k@H�.�4<03C�E�2W894�X[I!4<.�E�.10b�H�GD:,.&¨!k�7�25E�*�+Qe�+�BDC�E@894�.vj97�k]HL03:,4�.[4�K#­ �]g¯®":,GD61E9¨!.�Ev6c�1g¯­�ù(®�³¦®¤â�Ô�ò1­~ò�®�+�O894<.bj97�k1H�03:,4<.lS,:;§<E¾­Øùe® �JE�C!Hv\�ENG@2sHL03C�E�2AS;:,§<E�05C�E�:,.�G3:T61E¯­©IJH�230v�(HL.!6yg�4�78�HL.l03C�:,.�§c4LKÀ®%H�G?H¡xQ0329H�.�G5STH�03:,4<.��!±�:;.·H�S,XY4<G30DH�.1gc4�KÌ03C�EpXªHL.1gY61:rÌ�E�25E�.10@G3EN.�G3E�G4�K�05C!H�0���4<2s6O²WH�I�IFS;:,Eb6p054@03CFEMSTH�.�k<7!H�k<E�:,.��DC�:T85CYg<4�7Y894<XYX�7�.F:;8�HL03EW�D:;05C¯­p+(­F4�2E9ð!H�X[I�S,E��>±�­¡ù�®�²â�ÔÀ³Ë­yâ�Ô-ù'®W��G54@03C�ED:,.1\�EN23G3ED4LKoHA894�.bj�7�k]HL03:,4�.@4LK;­ñ:,G�03C�E�GsH�X[E894<.bj97�k1H�03:,4<.Y4�K�03C�EA:;.1\<E�23G5E�4LK§­p+VW4�.bj�7�k]HL03:,4�.�GD8�HL.ª�JE@894�X[I!4<G3Eb6&:,.Y03CFE�4<�1\]:,4<7�G��DHvg1���JEb8�HL7�G3E�±�­�ù�®�²!ù(°Û³­�ùR±�®^ò�°e²N+Ì-/0D:,GMH�S,X[4�G30�03C�E�8NH�G3EA03C!HL0D03C�E�8�4�XYIJ4�G5:,03:,4�.�4LK 0/�W4�894�.bj�7�k]HL03:,4�.�GD:,G03CFEY894�.bj�7�k]HL03:,4�.l4LKu05C�EY894<XYIJ4�G3:,05:;4<.�Gb+A-�KÁ­ ò�­yâ�Ô?:;GpHY0/g1IJE�4�K�05C�E�2sHL.�k�E�4LKÁ®H�.J6Y05C�E@614�XcH�:,.�4�K�°@�103C�EN.

±�®¡ù�­¿²�ò ±5°�ù�­¿²»³ ­ â�Ô ò%®·ò ±�­%ò%­ â'Ô ²�ò�°~ò%­³ ­ â�Ô ò ±�®·ò�°e²�ò%­³ ±�®^ò�°e²�ù�­

�17!85C HL.�­{:,Gc8�H�S,S,Eb6~H%ì9ç/£Jìsç�èNçNê1ïX~vï/¢5z�ê~4LK@03C�E·0/g1I!Eå­©òO­yâ'Ôb�MH�.J6Û­yâ'ÔY:,GªH�.~���è9ïåì�~�ë�ïå¢7z�êc034�05C!H�0D0/g1IJE�+BDC�EM:T61EvH?�!ENC�:,.!6p03C�ENG3E?.!H�X[E�G�:,GÌ03C!HL0Ì�WEDG30sHL230�K#234<X G54�XYED4<I!EN2sH�05:,4�.Y61E9¨J.�Eb64�."G34<XYEªHL��G3052sH<890Y4<��j9Eb8905Gb�WGsHvg".�E�k]HL03:,4�."4�K@�Ì414�S,EbHL.�G%w n ê¨zvï«ã^HL.!6¦ã[êAzvï n +�17�IFI!4<G3E?03C!HL0��WEM85C�414�G5E�054�25E�I�25E�G3E�.10?�Ì414�S,EbHL.�GW�]gp��:,03G1w�EbH�85C[��:,0Ì\�H�S,7�E�:;G�k�:,\�E�.

Page 10: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

q <>= ?A@BDC%?;EGFIHA@�@�J�C%?

� �

��ìsç«£�â'Ô

�±sìsç«£Yò�ì9ç/£'â�Ô�² ­ ±9ìsç«£Yò�ì9ç/£;â�Ô�²

t

ì9ç/£�­�ù?ì9ç/£

­�:,k�7F23E�*�+QiOw�­�ù?ì9ç/£y:;X[I�S,E�X�E�.103G(­�w�±sì9ç/£[ò�ìsç«£!â'Ô²!ð ±sìsç«£Yò�ì9ç/£'â�Ô�²HpXYEvH�.�:,.�kp�1gª05C�E@25E�I�23ENG3E�.10sHL03:,4�.'wDGsHvg�ã�ì9ç/£���HL.!6 n ì9ç/£[*�+¤Â�4�7l8�HL.>8�HLS}8�7�STH�03E03CJH�0Yì9ç/£lò1ìsç«£'â�Ô@:,G@03CFEY:T61E�.103:,0/gl25E�STH�05:;4<.^4�.·03C�Ec�Ì414<S;EvH�.�Gv+YBDC�EN. êAz ï�ù�ì9ç/£^:,GH�.·:,XYI�S,E�X�EN.]09H�05:;4<.Y4LK�03C�EYHL��G3052sH<890?.�E�k]HL03:,4�.·4�IJE�29H�03:,4<.��t�DC�:T85Cl:áK�:,0?:;G?k<:;\<E�.>H23ENI�23E�G5E�.10sHL03:,4�.·4�K�Hp��:,0D23ENS}HL03E�G?:,0D034YHp25E�I�25E�G3E�.109H�03:,4<.>4LK :,05GD.�E�k]HL03:,4�.�+#ÂW4�7ª8NH�.8�HLS}8�7�STH�03E?05C!H�0M�R±9êAzvï4ù?ì9ç/£¨²�*@H�.!6·*¤±sêAz ï4ù?ìsç«£A²��F+BDC�E�8�4�.!61:,05:;4<.�05C!H�0�ìsç«£Mò9ìsç«£!â�ÔW�!EMH?0/g1IJED:,G!j97�G50Ì03C�ED25Eb�<7�:,23E�X[E�.10Ì03CJH�0Ì:áKtg�4�70sHL§�E?H�.1gYH���G50329H�890D4<��j9Eb890D4LK(03CJH�0W0/g]IJE��F03C�E�.^ì9ç/£[�D:;S,SJk�:,\�E?H�0WS,EbH�G50�4<.�E@894�.!8�23E�05E23ENI�23E�G5E�.10sHL03:,\�Ec4�KD03CJH�0@4<��j9Eb890v�ÌH�.!6·05C!H�0�HL.1gl23E�IF23E�G5E�.10sH�05:,\�Eck�:,\�EN.>�1g~ìsç«£^�D:;S,S�JEZH&23E�I�25E�G3EN.]09H�05:;\<E�4�KÌ03CJH�0MG9H�X[E�H���G50329H�890?4���j�Eb890b+�BDC!HL0M:,GM054YGsHvg1��ìsç«£lk�:,\<E�G�HKåHL:;05C1K#7�SJ23ENI�23E�G5E�.10sHL03:,4�.·4�K�03C�E?0/g1I!E<+ÕpÖ �ãß%¹�Ù#¹ëºZØªÜ Ù�Ý¡· �%½¿¹-/.c4�2961E�2D034�09H�S,§YH��J4�7F0D4�IJE�2sHL03:,4�.�GD4<.l894�S,S,Eb8905:;4<.�GW4�K�6�H�09H��1�WE?.�E�Eb6cG54�X[EMG305237!8sâ037F23Eb6 0/g]IJE�GpS,:;§<E�S,:,G305GZHL.!6y037�I�S,E�Gv+ló^EYHL23E�k�4<:,.�kc034l��S,7�2A03C�Ec61:,G303:,.!8�03:,4�.^05C!H�0IJE�4�I�S,E@7FG37!HLS;S,g�XcH�§�E��!EN0/��E�EN.>S,:,G305GMH�.!6c057�I�S,E�G1wÌ03CFE�23Ep�D:,S;St�JE@.�4Y6f:�ÌtE�25E�.!89Ep�!E�â0/�WE�E�. H 0323:,I�S,E�4LKM03C�:,.�k<G@03C!HL0@C!HLI�I!EN.ã034·C!Hv\<EYHl894�X[XY4<.ª0/g1IJE��ÌH�.J6^HcS,:;G50@4�K03CF:;.Fk�G�03C!HL0�C!Hv\�EW03C!HL0Ì0/g1I!EMHL.!6A�DC�:T83CpC!HLI�I!EN.�GÌ034?�JED03C�25E�EDE�S,E�X[E�.103GÌS,4�.Fk!+tBDC�:,GXªHL§�E�GDG54�X[EM03CF:;.Fk�GMEvH�G3:,E�2v�tH�.!6[G34<XYE?03CF:;.Fk�G ä S,:,§�E?X[Eb85C!H�.�:T8�HLSt0/g1I!E�6fEb617!8905:,4�.ä 0325E�XYEN.!614�7FG3S,gY61:áàª897�S,0b+�#�7ç��X� �����O��¥X¥X�'¥8�!�¤ÐÏ�D�#�����O�_�#ÑBDC�EWK#7F.!6�H�X[E�.10sHLS�4�IJE�29H�03:,4<.�05C!H�0���7�:,ST61GÌ89:,2s8�7�:,03GÌ05C!H�0�4�IJE�29H�03E�4�.pS,:;G503G�:,G�£I~Lì�~ } };ç�}ë�z |�£Iz è�¢,ïå¢7z�ê�+[BDC�E�I!HL2sH�S,S,E�S�8�4�XYIJ4�G5:,03:,4�.��s­���®��W4�Ke­�H�.!6�® :,G@Hl89:,29897�:,0@�DC�4<G3E614<XªH�:,.?H�.!6?29H�.�k<EuHL23EWI!H�:,25G�4�KJG3:,k�.!HLS,G ä HLG�G5C�4��D.�:,.�¨!k<7�23E?*�+Qm ä �DC�:T85C@C!H�GÌHL.8­894<XYIJ4�.�E�.10W4�IJE�2sHL03:,.�k�4<.ª05C�E�¨!23G50ME�S,E�X[E�.103GD4LK(03CFE@I!H�:,25Gb��H�.J6ªHL.i®ã894<XYIJ4�.�E�.10:,.!61E�IJE�.!6fE�.10Ì4�Kt:,0�4�IJE�29H�03:,.�k?4<.�05C�E�G5Eb894<.!6pE�S,E�XYEN.]05Gb+�BDC!H�0�:,G�054?GsHvg��7Ã���È����s­���®�����������E9ð!H�8905S;g[�DC�E�.c�J4�03C¡Ã¿­��ªHL.!6¯È�® ��+#Úa4�03:T89E?05C�E�K#4�S,S,4��D:,.�k�894<.1\�E�.103:,4<.��1034�DC�:T85Cl03CFE�I�:T89057�23ENG@:,.l03C�:,G?83CJH�I�05E�2�H�6fC�E�23E>wM05C!H�0�03C�EA¨!23G50�894<XYIJ4�.�E�.10D4LKuH�S,:,G304�K�G3:,k�.JH�S,G�:,GD4<.Y03CFE�S,E9K�0D:�K�g�4<7YG309H�.!6[:,.Y05C�E@29H�.�k<EM4�K�Hp89:,2s897F:;0v��S,414�§1:,.�k@054��uHL2s61G

Page 11: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  w

­

®

­�:,k<7�23E�*�+Qm[w�05C�E?I!H�29H�S,S,E�S�894�X[I!4<G3:,03:,4<.!� ­���®��03CFE�614�XcH�:,.�+��1:,.!89E@05C�E@29H�.�k<E@:,GD4�.l05C�E@23:,k<C]0D4LK�¨!k<7�23E[*�+Qm���HL.!6c03CFE�614�XcH�:,.�4�.03CFE�S,E9K�0b��05C�E�¨!23G50�894<XYIJ4�.�EN.]0W:,GMH�0W03C�EA�!4<03034<XOH�.J6Y05C�E@STH�G50uHL0D03C�E?054�I�+BDC�EM:,.!6fE�I!EN.!61E�.!8�E@4�K�05C�E�894<XYIJ4�.�EN.]05GÌ4�K(H®I!H�29H�S,S,E�S!894<XYIJ4�G3:,05:;4<.�:,GÌ25E9�!Eb8�03Eb6:,.Y05C�E?�uHvgp03C!HL0u8�4�XYIJ4�G5:,03:,4�.YHL.!6�:,.1\�E�25G3E@61:,G30523:,��7�05EM4�\<E�2D:,0b�1H�G"� ­���®��fò#� °$�&%'�[³�s­ ò °$��®"ò(%$�uHL.!6)� ­���®���â'Ô׳*�s­yâ�Ô+��®¤â�Ô,�«+[�ÌE��DH�25E�03C�EcH�I�IJH�23EN.]05S,glXY:,G3S,EbH<61:,.�kI�7�.J89037!HL03:,4�.c:,.-�s­ñò�°$��®·ò.%$�3���DC�:T85Cl8�H�.c4<.�S,g�XYEbHL.-�r±�­ñò�°e²&��±�®yò#%«²/�3+�#�7ç���¢ �����X�O�É�4ÑRÎö�R�O�������¨�O�_�#Ñe�BDC�E@IJH�2sHLS,S;ENS�894�X[I!4<G3:,03:,4�.�4LK�H�89:,2s897�:,0��D:;05ClH�.c:T61E�.103:,0/gYH�25:,G3E�G�G34Y4LK#03EN.ª05C!H�0D�WEH��F��23E�\1:TH�05Ec03C�EcK�4�23X[G u5Q_W ­ø³0� ­���ü1�3��23EbH<6¦x ¨!25G30¯­p�,��HL.!6 Q�Z,j ­ö³0�sü��­$�D23EvH�6xQG3Eb8�4�.!6�­p�,+>��G�g<4�7~8�H�.~8�H�ST897�STHL03E[K#234<X¦03C�El61E9¨J.�:,03:,4�.��ÌH ¨!25G30YH�.J6ãHyG3Eb894<.!6894<XYX�7�05E(�D:,05C�EbH<85C�4�03CFE�2b� u5QXW ­lò Q�Z,j ®�³ Q�Z,j ®Aò u5Q_W ­p��HL.!6pEbH<83C�61:,G30523:,��7�05E�GW4�\�E�2894<XYIJ4�G3:,05:;4<.ªHL.!6[:;.1\<E�23G5E��FK#4�2 u5Q_W ±�­ ò%®�²�³ u5QXW ­%ò u5Q_W ®~H�.!6 ± u5Q_W ­¿²�â'ÔÀ³ u5Q_W ­yâ'Ôb�H�.J6YG5:,XY:,STH�23S,g?K�4�2WG3Eb894<.!6t+ó^EM�D:,S,S�HLS,G34@4LK#03E�.[.�E�Eb6[054�E9ð�052sH�8�0�j97�G30W4�.FE®8�4�XYIJ4�.FE�.10Ì4�K(HAI!H�:,2v���DC�:T85CY�WE614[�D:;05C>IF234bj9Ev8903:,4�.FG%w"2 Ô I�234vj9Eb8905G�H[I!H�:,2M4<.1034Y:,05GM¨J23G30@894<XYIJ4�.�EN.]0v�3�5Ã���È��42 Ô Ã��H�.J6�2 ê 4�.1054>:,03GpG3Ev894�.!6o���5Ã���È��52 ê ÈF+^BDC�Ec:,.]\<E�23G5EY4LK®HcI�254bj9Eb8�03:,4�.���4�K@894�7�25G3E��:,.bj9Eb8�03Gp:;05GZ6f4�XªHL:,.l:,.]054>HcI!HL:,2ª±#�D:,03C~H�.ãHL23��:,0329H�25g^4�03CFE�2Z8�4�XYIJ4�.FE�.10�²?G54>05C!H�02 Ô â�ÔMò#2 Ô ³ÏüD:,G@05C�E�7�.�:,\�EN23GsHLSÌ0/g1I!E<�(HLG@:,G62 ê â�ÔDò�2 ê +�BDC�E�I�254bj9Eb8905:,4�.�G@k<:,\�Ep7�GHp�DHvg�4�KÌ0sHLS;§1:,.�k�H��J4�7�0D05C�:,.�k�GD05C!H�0D�JE�C!Hv\<E?S;:,§<E�IJH�:,23Gv��H�.!6[G34�4LKÌ0sH�S,§1:,.�k�H��J4�7�04�IJE�29H�03:,4<.�GÌ4�.�X[4�25E�05C!H�.�4<.�EMH�25k�7�X[E�.10b+tBDC�ENg�G9H�03:,G«K#g7�s­���®���ò82 Ô ³ Q�Z j ®�ò82 Ô ò�­H�.J6-�s­���®��!ò92 ê ³ u5Q_W ­%ò92 ê ò1®�+�ÌEN�uHL23E@05C!H�0MHLS;05C�4�7Fk�C u7QXW ­ñò&2 Ô ³:2 Ô ò�­p�1:,.Yk<E�.�E�29H�S5� ­���®��!ò&2 Ô<;³:2 Ô ò1­ñK#4�2E�\<E�23gª®W+Ì-�K�®l:,GÌ05C�EDE�XYIF0/g@23E�STHL03:,4�.p03C�EN.�G34@:,G��s­���®��3��H�.!6pG54@:,GÌH�.1gZ8�4�XYIJ4�G5:,03:,4�.:,.ã�DC�:T85Cã:,0�HLI�IJEbH�25Gb�W��7�0=2 Ô ò�­�.�E�Ev6ã.F4�0p�!EcE�X[I�0/gt+¥�f4>:,0p:;Gp03CFEª8�HLG3El05C!H�0± u7QXW ­¿²!ù$2 Ô ³¦­p�F��7�0<�s­���®��-ù$2 Ô<;³�­p+�#�7ç��5ç ��èe�D�'�����#��¥X�X�>�O�ó%:,03CF4�7�0?k�4<:,.�kY:,.1034cH�.1gcK#7�2503C�EN2?K#4�25XªHLS;:,0/g1�103C�E�.F4�03:,4<.l4�KD03C�E�IJH�2sHLS,S;ENS 8�4�XYIJ4�âG3:,05:;4<.c4�K�0/�W4ª89:,29897�:,03G�E9ð�03E�.!6fG@.!H�057�2sHLS,S;g[034[03C�E�894�X[I!4<G3:,03:,4<.Y4�K�HL.]gc.17�X��JE�2D4�K894<XYIJ4�.�E�.105Gb+�-/.�I!HL2305:}8�7�STH�2b�v05C�E�23E�:,G(05C�EWI!H�29H�S,S,E�S�894�X[I!4<G3:,03:,4�.?4LK!4�.�ED894<XYIJ4�.�E�.10H�S,4<.�E��J�D23:,0305E�.>� ­'�3+DBDC�Ep614�XcH�:,.YG5:;k<.!H�S�4LK 05C�:,G@89:,2s897�:,0?:,G�H&G3:,.�k�S,E�054�.lS,:,G30v�!HLG�:,G:,03GD29H�.�k<E�G5:,k�.!HLSå+�ó^23:,05:;.FkY*�K#4�2W03CFE@0/g1I!E=�sü1��4�K�G3:,.�k�S,E�054�.�Gv���s­'��w�*#ðd*<+

Page 12: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

*b� <>= ?A@BDC%?;EGFIHA@�@�J�C%?

? @@@@AA ?

­�:,k�7�25EZ*<+QqOw�:;.FG30sHL.!89E�G�4�K«~9£¨}/��~9£<£(�JH�.!6�~9£Jì>â�Ô-/.ãH[I�:T89037�25E�:,0�:,G?C!HL2s6·034c:,XªHLk�:,.�E?03CFE�23E[�!E�:,.�klHL.]g·61:rÌ�E�25E�.!89E[�!EN0/��E�EN. H�.E�S,E�X[E�.10M4�KDG34<XYE@0/g1IJEZHL.!6·H�S,:,G30?4�K�G5:,k�.!HLS;G�03C!HL0@894�.�G5:,G303GA4�K�j97FG30?4�.�EpG3:,k<.!H�S�4�K03CJH�0Wk�:,\�E�.�0/g1IJE�+�BDC�EWK#4<23XcH�S,:,�bH�05:;4<.@4�K�05C�:,GÌG3:,X[:;STHL23:,0/g?:;G�03C!HL0�H@S,:,G30�4�Kt4�.�E�03C�:,.�k8�HL.l�!Ep7�G5Eb6l054�23E�IF23E�G5E�.10�05C!H�0�03C�:,.�kJ�!H�.J6lH�.1gY05C�:,.�kª8NH�.l�JE�7FG3Eb6y034�25E�I�23ENG3E�.10H[S,:;G50@894�.�G5:,G303:,.�kc4LK�03C!HL0@03CF:;.FkªH�S,4<.�E�+pBDC�E�H���G5032sH<8903:,4<.^03C!HL0�25E�STH�05E�G@G3:,k<.!H�S,G?034G3:,.�k<S,E�034<.YG3:,k<.!H�S,GD:,G�CFE�23E@�D25:,0303EN.��/â#��w�üAð *��1�DC�:T85CYg<4�7l8�HL.ª25EbH�6cHLG¿x G5:,.�k�S,E�054�.��

±#4<2ixQk�:áK#0«âå�D29H�I��s²N+ -/0[:,GªH^25E�I�25E�G3E�.109H�03:,4<.%K#4<2ªHL.]g"0/g1I!E����DC�:T85C%:,GY054ãGsHvg~05C!H�0�«â#� òB�«â#� â�Ô ³Ýü9��HL.!6·:,0�:,G�H�.~H���G5032sH<8903:,4<.ã034·G3:,.�k<S,E�034<.�Gb���DC�:T85Cã:,Gp034·GsHvg^05C!H�0�«â#� â'Ô ò#�«â#�;³�*<+-/.ã4<2s61E�2p034y0sH�S,§^H��J4�7�0pS,4�.�k<E�2@S,:,G305Gb��XY4<23E�894�.FG30sHL.103G¡±XxQI�S,7�X��F:;.FkY89:,2s897�:,05Gb�s²H�25E@.�E�Ev61Eb6t+�BDC�E@05C�:,.�k�03C!HL0�894<2325E�G3IJ4�.!6fG@034YHLI�I!EN.!61:,.�kYS,:,G305GM:,GD03CFE�~9£<£¥89:,29897�:,0K#4<2D�DC�:T83C

�s­ é ��­ Ô �v+b+v+��­DCE��­DC Õ'Ô ��­DC Õ!ê �v+b+v+E��­ Ó �³ �F� ­ é ��­ Ô �v+b+v+��­DCF�E�9�s­�C Õ'Ô ��­�C Õ!ê �v+v+b+,��­ Ó �F�-ùD~9£�£

K#4<2®HL.1gåÒ~H�.!6 G"HÙÒ�+&-/.>05E�23X[G@4�KD23E�STHL03:,4�.�G?4<.>G5:;k<.!H�S,Gv�À~�£�£^23ENS}HL03E�G�H[I!H�:,2?4�KS,:,G303GD054�03C�EAS;:,G50D4���09H�:,.�Eb6[�1gª894<.!8�HL03E�.!HL03:,.�k�05C�E�X>ò1�F7�0M.�4<03E?03CJH�0�HLS,St03C�E?.!HLXYE�G:,.Y05C�:,GDEb�<7!H�05:;4<.lH�23E?.!HLXYE�GW4�K�89:,29897�:,03Gv��2sHL03C�EN2D03C!HL.ªG5:,k�.!HLS;Gv+Â�4�7AXªHvgM�JEDXY4<23E�K/H�XY:,S,:;HL2!�D:,05C@03C�ED:T61EvHD4�KJ��7�:,ST61:,.�kM7�IpS,:,G303G�4�.�ED894<XYIJ4�.�E�.10H�0?H[03:,XYE�wD~�£A}�³ u7QXW �«â#��òO~9£�£��t25EbH�6ßx�H�I�IJE�.!6cS,E9K�0b�J4�2?�1gcG34�X[E@IJE�4�I�S,E�x�894�.�Gv�,�!:,GHc89:,2s897F:;0?�DC�:T85C^H�6�61G?4<.�E�G5:,k�.!HLS(054c03C�EpS,E9K#0?4�KMH�S,:,G30vò�H�.!6�~9£J쪳 Q�Z j �/â���òI~�£�£��23EvH�6�x�H�I�IJE�.!6p25:,k�C10b��4<2�xQG3.�4�8��,��H<6�61G�H®G3:,k�.!HLS1034@05C�ED23:,k�C10«âåC!HL.!6AE�.!6�4LKoH�S,:,G30v+(­F4�2E9ð!H�X[I�S,E����s­��+�s®3�_°5�I��òO~9£¨}�³Ï~9£¨}tòJ�s­���®3�X°5�(HL.!6 �I�s­���®��E�_°5�!ò-~�£!ì8³Ï~�£!ì?ò��s­���®3�X°5�G34K�s­��+�s®3�_°5�I�1ò�~9£A}Jò ~9£!ìIâ�Ô�³ï~9£A}Fò�~9£!ìIâ�Ô(ò#�F�s­���®��E�_°5�«+'ÚD4�05:T89E?03C!HL0L�s­��+�s®3�_°5�F��H�.!6

�F�s­���®��E�X°5��HL23E@61:rÌtE�23E�.10M89:,29897�:,03Gv��EbH<83C[23E�STHL03:,.�kpI!H�:,23Gv��H�.!6&EbH�85Cc:,Gu6f:�ÌtE�25E�.10WK#234<X�s­���®3�_°5���DCF:}85Cc23ENS}HL03E�G�0325:;IFS;ENGb+�103257!89057�23E�G·�D:,03C%4<.�E>894<XYIJ4�.�EN.]0[C!Hv\�Ey0/g]IJE~*�³M�sü1�«+ BDC�4�G5E>�D:,03CËÒ!N�*894<XYIJ4�.�E�.105G@C!Hv\�E[4�.�E[XY4<23EY894<XYIJ4�.�E�.10@05C!H�."03C�4<G3E[4�KMS,E�.�k<03CÛÒ��ÌHL.!6ã8NH�.ã�JE�D23:,0503E�.�H�GÌH�.1g?4�.FEÌ4�K/Ò3N[*e³ Q�Z,j Ò�ù�~9£¨}!³O�,*���ÒP�Xù�~9£<£¯³Q�sÒ3�b*R�+ù�~�£�£¯³ u5QXW Ò�ù�~9£Jì�+ÚDEN:;05C�E�2D~9£¨}bò�~9£¨} â�Ô .�4<2e~9£A} â�Ô ò�~�£A}�:,G�03CFED:}6fE�.103:,0/g]�L��7�0ÌEbH<85C�:;GÌH�0/g1I!E>we~9£A} â'Ô ò�~9£¨}:,G�05C�EM0/g1IJE?4�K�S,:,G303GW4�K(HL0�S,EbHLG30W4�.�E�E�S,E�XYEN.]0v�]HL.!6i~9£¨}�ò ~9£A} â'Ô 05C!H�0W4�K�I!H�:,23G��D:;05CªHS,:,G30Ì:,.�03CFEMG3Ev894�.!6&E�S,E�XYEN.]0vò�G5:,XY:,STH�23S,gaK#4�2«~�£!ì�+�-/.�4�2961E�2W034�894�X[I�S,E�03EW03CFEMI�:T89057�23E��03CFEY.!HL037�29H�S�61E�¨!.�:,03:,4�.·K�4�2��¡³*�8�3�t05C�EYI!HL2sHLS;S,E�SW894�X[I!4<G3:,03:,4�.y4�KM.�4l894<XYIJ4�.�E�.10

Page 13: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  *�*

­

­

­

­�:,k�7�25EZ*<+QwOw�H�.c:,.�G309H�.!89E?4LK gDL>S ­89:,2s8�7�:,03Gb�FXªHL§�E�GW:,0��JE�C!Hv\<E@S,:;§<EM05C�E?:}6fE�.103:,0/gY25E�STH�03:,4<.Y4�.c��EN234�S,E�.�k<03CcS,:;G503Gv+�#�7ç��5þ S �4�

BDC�E�I!H�29H�S,S,E�S!894<XYIJ4�G3:,05:;4<.�G�03C!HL0�8�HL.Y�JEM�D23:,0503E�.[�D:;05C�03C�E�.�4�09H�05:;4<.ZHL�!4�\<EMH�25E�H�S,S89:,2s8�7�:,03GM4LK�H�k�:,\<E�.��<¨�ð�Eb6c�D:T6105C�+D�14!�fK#4�2DE�ðFHLXYI�S,E����s­���­$��09H�§<E�GMI!HL:,23GD4�KÌG5:;k<.!H�S,G:,.l03CFEZ614<XªHL:;.cH�.!6 :;.y03C�Ep2sHL.�k�E�+�BDC�E�xQXªH�I���894�.�G503257!8903:,4<.>k<E�.�E�29H�S,:,��E�G?03C�:,Gv�tG3403CJH�0 g×L>S ­�:,Gp03C�EcI!HL2sHLS;S,E�SD894<XYIJ4�G3:,05:;4<.^4�K�HL.]g^.17�X��JE�2p4�KD­{89:,2s897�:,05Gb+"BDC!H�0XYEvH�.�G�03C!HL0�*Mò gDL>S ­Þ³T�s­'�4³ gDL>S ­ ò�*pH�.!6·P@ò g×L>S ­Þ³T�s­���­$��³ gDL>S ­ òbPF�H�.J6·G34l4<.�+ª­�:,k�7F23El*�+Qw[G3CF4��DGZHL.^:;.FG30sHL.!89E�4LK g×L>S ­pò�03C�:,G@:,G�HL.^E9ð!H�X[I�S,E�4LKaHI�:T89057�23E?K�234�X�DC�:T83C[:,0D��4<7�ST6��JE®6FH�.�k<E�234<7�GD034�k<E�.�E�29H�S,:,��E����JEb8�HL7�G3EA:;0DCJH�GDXªHL.1gI�254�IJE�2305:;ENGM.�4<0DG3C!HL23Eb6c�1g1�<K#4�2WE9ð!H�X[I�S,E��[± gDL>S ­¿²!ù?*bU�mF�14�2R± gDL>S ­¿²!ù?*�+�Ìgp:,.!617!8�03:,4�.p4�.p03C�ED�D:T6105C�g<4�7�8�H�.pG3CF4�� 05C!H�0 gDL>S 61:,G30325:,��7�03ENGÌ4�\�E�2�G3Eb�<7�E�.fâ03:THLS�894�X[I!4<G3:,03:,4�.YHL.!6[:,.]\<E�23G5E?:;.c05C�E?GsH�X[EM�DHvgY05C!H�0DI!HL2sHLS;S,E�St894<XYIJ4�G3:,05:;4<.Y6141E�Gb�G34 g×L>S ±�­�ò�®�²b³Ý± g×L>S ­«²Wò�± g×L>S ®4²pH�.J6 g×L>S ±�­Dâ'Ô²y³Ý± g×L>S ­¿²â�Ôb+c-/0?K�4�S,S,4��DG03CJH�0W:�K�°ñ:;GWH@0/g1IJE��103C�EN.ªG54�:,G gDL>S °@�<:,.�KåH<890Ì:,0�:,GW03C�E�0/g1I!E�4�K HLS,S�S,:;G503GW4�K�G5:;k<.!H�S,G4�K�0/g1I!ED°�H�.J6�:,.cI!H�2503:T897�STH�2 gDL>S ü�:,GD03C�E?0/g1IJE@4�K�S;:,G503Gb+BDC�E�25E�H�25E�HAk�23EvH�0D.17�X��JE�2�4LK�03C�:,.�k<GD03C!HL0�g<4�7[XY:,k�C10��uHL.10�054��JE?034�ST6[H��J4�7�0gDL>S 034M�JEWG37�25E�05C!H�0���EÌ�WE�25EuHLS;S<03C�:,.�§1:,.�kD4LK!03C�E�GsH�X[EÌ89:,2s897�:,0�G305237!8�037�25E��]HLXY4<.�k�G5003CFE�XOIJE�25C!H�I�G

*Dò g×L>S ­ ³ �s­$�ÒYò g×L>S ­ ³ g×L>S ­ ò�Ò�«â#��ò g×L>S ­ ³ ­%ò��/â#�~9£<£ªò g×L>S ­ ³ g×L>S�gDL>S ­%ò�~9£<£

³ � g×L>S ­�� gDL>S ­'�!ò-~9£<£~�£A}tò g×L>S ­ ³ �s­�� gDL>S ­'��ò�~9£A}~9£!ì?ò g×L>S ­ ³ � g×L>S ­���­'�!ò�~9£!ì

��7�0D:,0W:,GM89S,EbH�2D05C!H�0DG54�XYE�4�K�03C�E�G5E�H�25E@894�.�G5Eb�<7�E�.!8�E�G@4�K�03C�E?4<03C�E�25Gb+�-/.YK/H�890v�1g�4�7

Page 14: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

*bP <>= ?A@BDC%?;EGFIHA@�@�J�C%?

U UU UU UUV V V V V VVU UU UU UUV V V V V VV U U

U UU UUV V V V V VVU UU UU UUV V V V V VV

WW??

WW??

WW??

WW??

ó

÷

­

®

­

®

ó

÷

­�:,k<7�23E�*�+,*v�Ow5�I�só$��÷D�E�9� ­X��®��F�,ù?ì9ç&Y�H�.J6Y05C�E?Eb�<7�:,\�H�S,E�.10"�I�s­���®��E�9�só$��÷L�I�4�7Fk�C10�054��!Ep894�.1\1:,.!89Eb6[�1gY�JE�:,.�k�034<ST6�4�.FS;g�05C!H�0

�«â#��ò g×L>S ­ ³ ­%ò��/â#��[Z!��ÒP�!ò�~9£<£ªò g×L>S ­ ³ � g×L>S ­�� gDL>S ­'�!ò��[Z!��ÒP�!ò-~�£�£

± gDL>S ­«² â�Ô ³ g×L>S ±�­ â�Ô ²

H�.J6�IJE�23C!HLI�GDG34<XYEWEb�<7!H�05:,4�.�GW:,.]\<4�S,\1:,.�k@��+�BDC�E�G3E?Eb�<7!HL03:,4�.FGÌK#4<2�H�S,S�ZOHL.!6¯ÒcHL23EXY4<23E�03C!HL.ªEN.�4�7�k<Cc034�61E9¨!.�E g×L>S +�#�7ç��8\ Í��;á����O���BDC�E�25Ec:;Gp89S,EbH�25S;gãHy894�.�.FEb8903:,4<.ã�JE�0/��ENE�.~S;E�K#0/â�H�.J6·23:,k�C10/â/C!HL.!61Eb6·\1:,E��DGp4�KMS,:,G303Gv+�1:,.!89EMHL.1g@¨!.F:;05EDS,:;G50Ì894�7�ST6pC!Hv\<E��JE�E�.[��7�:,S,0�7�I�:,.�E�:,05C�E�2W�uHvg1�vE�\�E�25g�03:,XYEWg�4<7�G9HvgG34<XYE�05C�:,.�k�HL�!4<7�0«~�£A}Jg�4<7ZHL23EDGsHvg1:,.�k?G34<XYE�05C�:,.�k�HL�!4<7�0«~�£!ì1�]HL.!6AE�\�E�25g�03:,XYE�g�4�7GsHvg[G34<XYE�05C�:,.�kZHL�!4<7�0W�!4<03Cl05C�E�23EA:;GMHp6�HL.�k�E�2�4�K�GsHvg1:,.�k�G54�X[E�03C�:,.�kp:,.!894<.�G3:,G305E�.10H��J4�7F0D03C�E�X·+B�4ªXcH�§<E�:,0?EbHLG3:,E�2@054ª09H�S,§lH��J4�7�0?05C�E�XY:,23254�2«âåG5:;X[:�STHv23:,0/g�4LKy~�£A}�HL.!6�~9£!ì1�t�WE7�G5E¥H·I�:,Eb8�E>4LK®IFS;7FX���:,.�kãìsç]Y�w gDL>S ü#ð g×L>S ü9�W23EvH�6äx 25E�\�EN23G3E<�;�a�DC�:T83C �!:,I�GªHS,:,G30D4�\�EN2b+Ì-/.cI!HL2305:}8�7�STH�2b�oè&^�~9£¡³©ìsç]YÀùDPpE�ðF85C!HL.�k�ENG�0/�W4�G3:,k<.!H�S,Gb�1G54lìsç]Y�GsHL03:,G/¨JE�Gìsç]Y�ò8�s­���®��A³_�s®3��­'�bò/ìsç]Y�+�­F4�2�4�05C�E�2�S,E�.�k�05C�G�4�K!S,:,G30�:,0 8NH�.p�!ED61E9¨!.FEb6p�1g®��ò/ìsç]Y¿³ �H�.J6-�«â#��ò�ì9ç&YD³_�«â#�(H�.!6�~9£<£ªò�ì9ç&YD³_�,ìsç]Y(�bì9ç&Y9�tò�ìsç]Y@ò�~9£<£Ì+-/XYX[Eb61:TH�05E�S,glK#254�X|03C�ENG3Eã61E9¨J.�:,03:,4�.�Gv�Dg�4<7%8�H�. 8NH�ST897�STH�05El03CJH�0 ~�£A}Wòtìsç]YÛ³ìsç]YMò u5Q_W ìsç]YMò ~9£Jì�HL.!6å~�£!ìDòvìsç]YD³�ìsç]YMò Q�Z j ì9ç&Y�ò,~�£A}/+Ì��g�:;.J617!8905:;4<.Y4<.Y03CFE�S,E�.Fk�03C4�K�03C�EAS;:,G50b�tìsç]Y¿³ ì9ç&Y�â'Ô�H�.J6lìsç]Y@ò gDL>S ­¦³ g×L>S ­ñò�ìsç]Y�H�.!6&G34�4<.�+�ÌEv8�H�7�G5E^ìsç]YY25E�\�E�25G3E�GYH[S,:,G30@4LKuG5:,k�.!HLS;Gv��H�.J6l�JEb8�HL7�G3E[03C�Ec894�.1\�EN.]05:,4�.^H��J4�7�06129Hv�D:;.Fk�89:,2s897F:;05GDI�7�05G�05C�E?�!E�k<:,.�.�:,.�k@4LK H?S,:,G30DH�0W03C�E��!4<03054�X�4LK�03C�E�I�:T89037�25E���05C�EE�.!6&4�K�05C�EMS,:,G30�HL0Ì03CFEM034<I��<g�4�7�X[:,k�C10�E9ð�I!Eb8�0D03C!HL0�H?I�:T89057�23E?4�K4­�ùWìsç]YM�W4�7FS}6p�JE03CFEMGsHLXYEDH�GW03C!HL0Ì4�K4­ñ��7�0 �!:,I�I!Ev6�4�\�EN2�H��J4�7�0WH?C�4�25:,��4�.10sHLS!Hvð�:,Gb+�BDC�:,GÌ:,GDH�S,XY4<G3023:,k<C]0v���F7�0��JE�8NH�23E�K#7�S�w�G57�I�IJ4�G5E×­ñ�WE�23E@H@89:,29897�:,0�4<I!EN2sH�05:,.�k@4�.�S,:,G305G�4LK�S,:;G503Gv��05C�E�.03CFE�4<7�03E�25XY4<G30MS,:,G30���4<7�ST6[�!Ep23E�\<E�23G5Eb6·��7�0?05C�E�ENS;ENXYE�.103G�:,.l03C!HL0MS,:,G30�23E�XcH�:,.c:;.

Page 15: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  *bU

­

­

­

­

­ ­

­

­

­

­

­ ­

­�:;k<7�23E�*<+;*<*�w�H�.[:;.FG30sHL.!89E@4LK W�d�U ­��JH�.!6[H�.c:,.�G309H�.!8�E@4�K Urd�W ­03CFE�G9H�X[EM4�2961E�2v��G34AK#4<2�E9ð!HLXYI�S,E��F�só$��÷D�E�+� ­��X®��I�O³O�F�s­���®��E�9� ó'��÷'�F�%ùMì9ç&Y�H�GD8�HL.ª�JEG3ENE�.l:,.[¨!k�7�25E�*�+,*b�F+`DE�\<E�23G5E@:,G�05C�ED¨J23G30DE�ðFHLXYI�S,ED:,.ª`a7��1g�4LK(G54�XYEN03C�:,.�k@05C!H�0Wg�4<7YX[:;k<C10(.FE�Eb6[03461E�G98923:,�JE����F7�0Ì�DC�:T85C�:,0(�W4�7FS}6p�JED7�.�IFS;EvH�GsHL.10Ì034@CJHv\�ED034A:;X[I�S,E�X�E�.10�:,.�H�¨!.�:,G5C�Eb689:,2s8�7�:,0b+��M.1gc.�4�.1â/0325:,\]:THLSt:;.FG30sHL.!89Ep4�KÌ23EN\�E�25G3EY6129Hv�D.>H�G?HpI�STH�.!HL2MI�:T89057�23EpC!H�G�034894<.]09H�:,.ª8�234�G5G3:,.�k[�D:;25E�G%wDì9ç&YRùDP�894<.10sH�:,.�GDE�ðFH<8903S,g[4�.�E@89254�G3G5:,.�k!��ìsç]YÀù�Ò·894<.]09H�:,.�GÒ'±�Ò ` *%²Ea<P�+?-/.l05C�EY894<7�23G5E�4�Ku61ENG3:,k�.�:,.�kcHY89:,29897�:,0?:;0?�D:,S,S�7�G57!H�S,S,gc�!E�H�.·H�:,X{034E�S,:,XY:,.!HL03EÌ:,.�G50sH�.J89E�GD4�KÌìsç]Y��1H�.!6p:áK�05C!H�0�8NH�.�.�4<0Ì�!E?614�.FE�H�0�S;EvH�G30�034@25Eb617!89E?05C�E�:,2�D:T6103C�+�#�7ç���b �b�O�_�4ÑD�#¥X��©7�G3E�K#7�SD894�.�G503257!8903:,4<.^03C!HL0�:,G�8�S;4<G3E�S,gl25E�STH�05Eb6·034 gDL>S ����7F0��DCF:}85C·G3E�ENXYG@054ª�JEH�S,X[4�G30tIJEb897FS;:THL2(054?03C�EWG34<2303G�4�K!I�254�k<2sH�X[G�05C!H�0ÌH�25:,G3EW:;.p61E�Gs8�23:,��:,.�k�89:,29897�:,03Gv��:,G(05C�E0325:TH�.�k<S;E<+�-/.�G50sHL.!89E�GD4LK�03C�:,GDH�23E�:,S;S,7�G50329H�03Ev6p:;.p¨Jk�7�25E�*�+,*<*�+�­F4�2DH�.1gpC�4�X[4�k�EN.�E�4�7FG­ïw�°�ðÝ°@�J05C�E@0325:TH�.�k<S;E W�dvU ­ïw gDL>S °�ð g×L>S ° 25E�STH�03ENG�S,:,G305GM4LK G5:,k�.!HLS;Gv�bj97FG30@H�GgDL>S �W4�7�ST6t�N��7�0�:,0t23E�STH�05E�GÌ05C�EcG}âå05CZ894<XYIJ4�.�EN.]05G(H<8�894�2961:,.�kM054«­ C +�­�4<2�E9ð!HLXYI�S,E��N:�K±+dÌP>²�:,GÌ03C�E?89:,2s897F:;0��DC�:T83CY6f4�7���S,E�GWH?.17�X��!EN2b� W�d�U ±+dÌP�² 23E�STH�05E�GDH?S,:;G50Ì4�Kt��E�2541E�GMH�.!64�.FE�G?034lH�S,:,G30�4�K�05C�4�G5E���:,05G��WE�:,k�C105Eb6c�1gl03CFE�IJ4���EN23G?4�K�0/�W4Y�DCF:}85Cl05C�E�gl�W4�7FS}623ENI�23E�G5E�.10c:;.%Hy��:,.!H�25gã.17�X��JE�2p�D:;05C~:;05G�S,EbH�G50�G3:,k�.�:á¨�8NH�.10��F:;0p¨J23G30v+ �1:,X[:;STHL23S,g��± W�d�U ±+dÌP>²X²�ùpìsç]YY�W4�7�ST6yk�:,\�EA03C�E�X¦05C�E��WE�:,k�C105G�H�I�IF234�IF23:TH�05E�054ªCJHv\]:,.�k[03C�E�X[4�G50G3:,k<.�:á¨�8�H�.10���:,0�¨!25G30v+�BDC�EWK#4�25Xϱ W�dvU ­¿²�ù�ìsç]Y@H�I�IJEbH�25GÌG34A4�K#05E�.�03C!HL0Ì�WED23EbHLS;S,[email protected]�Eb6H�.JH�XYE�K#4<2D:,0bòJ:,.ª05C�:,G@83CJH�I�05E�2?��E�H<614�IF0�`D4<��:,.ª�1CJH�23I�� G�.�4�09H�05:;4<.cK#4<2D:;0v�J�DC�:T83C:,G Urd�W ­p+-/0MG5C�4�7�ST6cG571àª89Ep034[03E�S,S�g<4�7l05C!H�0ª~9£¨}tò W�d�U ­�³T�s­¿é#� g×L>S ­ ò W�d�U ­$�tòO~9£A}/�J05C!H�0± W�d�U ­¿² â�Ô ³ W�d�U ±�­ â�Ô ²��1H�.!6A03CJH�0���ò W�d�U ­�³ñ�Ìò g×L>S ­��L��7�0Ì4LK(894�7�25G3E�03C�E�25EM:,G�H?25:T83C894<S;S,Eb8�03:,4�.c4�KÌSTHv�DGD03CJH�0�8NH�.c�!E�61E�25:,\�Eb6[K�234�X�03CFE�G3E�H�.!6[05C�E@I�254�IJE�2305:;ENG�4LKÌ4�03CFE�24�IJE�29H�034<23GD�1g�:,.!617!8�03:,4�.[4�\�E�2WS,:;G503Gv+��MXY4<.�k?03C�E?X[4�23ED7FG3E9K#7FSt4�.�E�GMHL23E?03CF4�G3E?05C!H�023ENS}HL03E@0523:TH�.Fk�S,E�G�HL.!6[XªHLI�GD4�KÌ03CFE@GsHLXYE@894�X[I!4<.�E�.103GDG57!85C>H�Gy± W�d�U ­«²+Ó�³ W�d�U ±�­RÓA²H�.J6 W�d�U ­©ò gDL>S ­ ³ gDL>S ­ ò W�d�U ­zH�.J6ã05C�4�G5E>H��J4�7F0Y894�X[X�7�03:,.�kl89:,2s8�7�:,03Gb�uK#4�2

Page 16: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

*�_ <>= ?A@BDC%?;EGFIHA@�@�J�C%?

­

j3YOgDL UrZ

? ??

???

dvL>Z1M-P

­�:;k<7�23E�*<+;*vPOw�H�61:rÌ�EN23E�.10DI�:T89057�23E@4LK�­�w�P�ðzP:áK×­©ò�®Ï³û®%ò�­{g<4�7 8NH�.~G3C�4���03CJH�0 W�d�U ­©ò W�d�U ®æ³ W�d�U ±�­©ò�®�²YHL.!6 K#4�2�0/g1IJE�GW�d�U ±�­¿é%²�³ g×L>S ±�­¿é�²DHL.!6[G34 W�d�U ­äw g×L>S ­«é�ð g×L>S ­¿é�+��Eb894�X[I!4<G3:,.�kMH�0325:TH�.�k<S;E��D:;05C�~9£JìD:,.�G305EbH�6A4�K#~9£A}/�L4�2Ì61Eb894<XYIJ4�G5:;.FkMHM25E�\�EN23G3Ev60325:TH�.�k<S;E��D:,05C�~9£A}/��g<4�7ã8�HL.ãG5C�4����1g>:,.!6f7!8903:,4<.^4�.�Ò~05C!H�0 u7QXW Ò·òA~9£Jì�ò W�d�U ­ë³�sÒYò W�d�U ­���­RÓ#��ò-~�£!ì�H�.J6Y:,0�037�25.�GM4<7�0M05C!H�0�03C�:,GM894<.1¨!k�7F2sH�05:,4�.>HLI�I!EvH�23G�4�K#05E�.�wDH�.­RÓ��D:,S,S!HL23:,G3EDG54�XYEN�DC�E�23E��DC�E�25EM�1g��D25:,03:,.�kb± W�d�U ­«²>ù�~�£!ì�â'ÔÌ4�2�± Urd�W ­¿²>ù�~9£¨} â'Ô g�4�78�HL. Hv\<4�:T6�X[E�.103:,4�.F:;.Fk×Ò·H�S,054�k�EN03C�E�2v+

ÕpÖEe fzÛ�gö¹ÜºpØªÜ Þ�Û=��Ýi¶�Ø�¹BDC�E�25EYH�25E@K#7F.!6�H�X[E�.10sHLS�23EvH�G34<.�G?K#4<2M�JE�:,.�kc:,.]05E�23ENG303Ev6·:;.^89:,2s8�7�:,03G?�DC�:T85C¥8�HL.>�JESTH�:T6y4�7�0@:,.ãHcS,:,0305S,E�X[4�23Ep03CJH�.^0/�W4>61:,XYE�.FG3:,4�.�Gv+Y��.1g>\<E�23g·STH�23k<E�G3g1G305E�Xd�D:,03CXªHL.1g¥894<.�.�Eb8�03:,4�.�GcC!HLG�034^�JElXY4<23E[4�2YS,E�G5G���HL0b+ñBDC�:,G�XYEbHL.�G�05C!H�0[03C�EN23E>HL23Ek�414�6~25EbH�G54�.�Gc034"�!Ey:;.105E�23E�G503Eb6 :,.%0/�W4�â361:,XYEN.�G3:,4�.JH�SWXYE�G5C�E�Gb+ÎBDC�:,GYG5Eb8905:;4<. :,GH�S,X[4�G30WE�.103:,25E�S,g HL�!4<7�0M89:,2s8�7�:,03GD­Þw�P�ð¦Pp�D:,03C·HpI!H�:,2D4�KÌG5:;k<.!H�S,GD:,.l05C�E�614<XªH�:,.H�.J6ãH·I!HL:;2p4�K?G3:,k�.JH�S,G@:,.ã05C�El2sHL.�k�E<+ãB�4lXcH�§�E[I�:T89037F23E�G�4LK�.�E�0/�W4�25§1G�4�K�05C�E�G5E89:,2s8�7�:,03G�S,:,E�.!H�057�2sHLS,S;gD4<.?03C�EÌIJH�k�E<�b05C�E�g@H�25EÌ612sHv�D.?�1g�K#4�S,S,4��D:,.�kÌHW.�E��ã894<.]\<E�.103:,4�.:,S,S;7FG30329H�05Eb6c:,.[¨!k�7�25EY*�+,*vP�+WBDC�E?¨!25G30@894<XYIJ4�.�E�.10D4LK 05C�E�614<XªHL:;.[S,:;ENGD034Y05C�E@S,E9K#0v�03CFElG3Eb8�4�.!6%8�4�XYIJ4�.FE�.10ZHL�!4�\<Eª05C�El89:,2s897F:;0vòM05C�E[¨!23G50ª894<XYIJ4�.�EN.]0p4�K@05C�Ec2sH�.Fk�ES,:,E�GD�!ENS;4�� 03CFE�89:,2s897F:;0v�!HL.!6[03C�E@G5Eb894<.!6l894<XYIJ4�.�E�.10D054�:;05GD23:,k�C10v+ÌBDC�:,GD§�ENE�I�GM05C�E4�2961E�2D4LK 05C�E?G3:,k�.JH�S,G�4<.Y05C�E@I!HLI!E�2M8�4�.�G5:;G503E�.10��D:;05Cc03C�E@894<.]\<E�.103:,4�.[k�:,\�EN.YEbHL23S,:,E�2K#4<2M612sHv�D:,.�k�89:,2s897F:;05GD03C!HL0D4�IJE�2sHL03E@4<.cI!H�:,23Gv+�#�7þ��X� h��'���XÎe�Ë��ÑeÎjiD�'¥X��kBDC�E�25ElH�23Ec0/�W4>�DHvg1G@4�K@894�.F.�Eb8905:;.Fk^03C�E�G5EcGs�<7!H�25Ec03:,S,E�G�05C!H�0�G5E�E�Xd.JH�037F2sH�S�wcH�GG3CF4��D.Y:,.�¨!k<7�23E�*<+;*vU�+t-/.cEbH<85C 8NH�G3E?05C�E?�D:;25E�GDH�23E?k<234�7FI!Eb6[G54�05C!H�0D�J4�05C�­)lÏ®��23EvH�6¡x�­ �JE�G3:T61ED®W�,��H�.!6ª­)m�®��125EbH�6ýx�­ �!E�S,4��¦®W�,��H�23E@HLS;G54@4�K�0/g1IJE@P#ðOPFò�:,.!6fE�Eb6­>lÝ®�w Q�Z,j P�ð u7QXW P�HL.!6¯­nm�®Éw u5Q_W P�ð Q�Z,j P�+-/0�:,G�8�S;EvH�2p03C!HL0�89:,2s897F:;05G�XcH�61E��1g·�!ENG3:T61EªHL.!6^�JE�S,4���H�25EY.�4<0@.�E���4<.�E�Gv��:;.03CFE�G3E�.�G5E�03C!HL0@�WEZHLS;25EbH�6fgl§1.�4���E�.�4<7�k�C^�D:,23:,.�k[034c�JEZHL��S,E�054 6f7�I�S,:T8�H�05E�05C�E�:,2K#7�.J8903:,4�.y�D:;05C�4�7F0�H�.1gc.�E��ÎI�23:,X[:;05:,\�E�Gv+M`DEbH<61:,.�kY43Ì¥05C�EpI�:T89037�25E�:,.c¨Jk�7�25Eª*<+;*N_!�

Page 17: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  *be

­ ®­

®

­�:;k<7�23E�*<+;*vUOw�­ �!ENG3:T61E8®"XªHL§1:;.Fk×­ol ®W�!HL.!6¡­ �!ENS;4���®"XªHL§]:,.�kD­om�®? W ?

­®

? W ?~�£A}X~�£!ì�â'Ô u5Q_W ­ ~�£!ìO~9£¨} â�Ô Q�Z j ® ~9£¨}X~9£!ìIâ�Ô

­�:,k�7F23E�*�+,*�_¨w(HL.�4�05C�E�2M89:,29897�:,0MSTHvg�4<7�0Ì�DC�:T85Cc:,XYI�S,E�X[E�.103G�­olë®

03CFE®6fE9¨!.�:,03:,4<.�GD4�KÌ�JE�G3:T61E�HL.!6��JE�S,4�� ��4<7�ST6YH�IFI!EbHL2D034��JE@G3052sHL:;k<C10/K#4<23�DH�2s6­>lë® ³ ~9£A}Jò ±_± u5Q_W ­«²!ùD~�£!ì ²Ìò1±_± Q�Z,j ®4²�ùD~�£A}�²�ò-~�£!ì â�Ô­>m�® ³ ±�­ â�Ô l ® â'Ô ² â�Ô

³ ~9£!ì�ò ±_± Q�Z j ®�²'ùD~9£A}7²�ò ±_± u5Q_W ­¿²�ùD~�£!ì ²�ò-~�£A} â�ÔpD.fK#4�25037�.!HL03E�S,g1�103C�ENG3E�61E9¨!.�:,05:;4<.�GD�W4�7�ST6�.F4�0D�JE@\�E�25gY7�G5E9K#7�S�w�03C�:,GD:,GMH�.cE9ð!H�X[I�S,E4�KÌ25Eb85§]S,E�G5G3S,glk<E�.�E�29H�S,:,��:,.�kpK#234<X°H&I�:T89037F23E�HL.!6ck�EN0303:,.�k[XY4<23EM05C!H�.y4�.�E@�JH�23k1H�:,.�GK#4<2b+ ��.�ED4�Kt03C�EWI�254�IJE�2305:;ENG��WE�E�ðfIJEb890W4�KJ�!E�G5:T61EMH�.!6A�JE�S,4��ã:,G�03C!HL0�±7ôKl�õD²�m!±�îql쪲¿³Ü±5ô:meîD²rlû±�õ_m�쪲�+Y`a:}85C!HL2s6·�Ì:,296>� ��:,2s6�q<q]�u61E�G98923:,�JE�Gp03C�:,G@I�254�IJE�230/g·�1gGsHvg1:,.�k@05C!H�0¿xQ�JE�G3:T61Eª~��N¢#æ�ç�è<^Ì¢,ï7í��JE�S,4��@�,�]Hp894�.1052sH�8�03:,4�.c4�K(HL�!4�\<E9â3H�.!6<â/�JE�G3:T61E�Gv+Ì-/0037F23.�GD4<7�0�05C!H�0D05C�EM4<I!EN2sH�054�25G�61E9¨J.�Eb6cH��J4�\�E?614�.F4�0DH���:T61E�w�05C�E�HL��:T61E�GDI�254�IJE�230/g4�KÌ�JE�G3:T61E�H�.J6Y�JE�S,4���61E�IJE�.!61G?4�.y03C�E�8�4�XYIJ4�.FE�.10M89:,2s897�:,05GM�JE�:,.�kY4LK 0/g1IJE�P�ðzPF+��E�0305E�2@61E9¨!.�:,05:;4<.�GD�W4�7�ST6�05C�E�25E9K#4�25E@�JE�k<:,\�E�.c�1g

­ol ® ³ ~�£A}tò ±_± u5Q_W ±�­�ùDP�²X²!ùD~�£!ì ²Ìò1±_± Q�Z,j ±�®�ùDP>²X²!ùD~�£A}�²Ìò�~�£!ì â'Ô­>m�® ³ ~�£!ì?ò ±_± Q�Z j ±�®¡ùDP�²_²!ùD~9£A}7²�ò ±_± u5Q_W ±�­�ùDP>²X²!ùD~�£!ì ²Ìò�~�£A} â'Ô

�DC�:T85Cc:;GD:,.!6fE�Eb6cH�.lH��F:}6f:;.Fk@I!H�:,2D4LK(4�IJE�29H�034<23Gv+r�H�2305:T897�STH�25S;gp7�G5E9K#7�SJ:,.Y61:,Gs897�G5G3:,.�k@IJH�:,2/â/034LâåI!HL:,2 8�:;29897�:,03GW�D:,S,S��!ED05C�E�HL�!4�\<EMH�.!6�JE�G3:T61El4LK�0/�W4>:T61EN.]05:,0/gã894�X[I!4<.�E�.103Gv+ noE�0lì9è�íÛ³ûürl ü9� K#4�2�xQ23:,k�C10pG3C�:áK#0v�;�WH�.!6}Qè�íª³�ü�mÀü9�<K#4<2¿xQS;E�K#0�G5C�:áK#0b�,ò�89S,EbHL23S,g>ì�è�íª³ï}Qè�í â�Ô H�.!6�}¤è�íª³©ì9è�í â'Ô +��f:;.J89E8ü�l ü�³~9£¨}�ò3UWò%~�£!ì1â'ÔÌg�4�7Y8NH�.�G3ENEM03CJH�0��[st�+�[u#�v,�F�]ò9ì5è�í«³ ì�è�íDò&�F�[st�wu,�E�v,�å�N�DC�E�.!8�E�05C�ED.!HLXYE�òH�.J6ª6f7!H�S,S,g�}¤è�í¾³ï~9£!ì�òbU?ò�~9£A} â'Ô H�.J6!�F�[sx�u,�E�v,�]ò�}¤è�í¾³�}¤è�í�ò#�[st�+�[u#�v,�F�3+

Page 18: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

*bi <>= ?A@BDC%?;EGFIHA@�@�J�C%?

ô õ

î ì

­�:,k�7F23E�*�+,*be[w�±5ônl õD²ym�±�înlë쪲#³ä±5ônm�îD²�lö±�õzm�쪲

??WW ?

?WWî

ô

ìõ

­�:,k�7F23E�*�+,*bi[w#±�sü��îX��ü1�,ù¿|p¢#æ â'Ô ²Ìò�� ô���ìX�!ò3±w�sü��õ=��ü1��ù¿|p¢#æ â�Ô ²BDC�E>61E�¨!.�:,03:,4�.FG�4�K@�!ENG3:T61E>HL.!6"�!E�S,4��{8�H�.ñ�!El25Eb8�HLG30Y:,.~03EN23XYG�4LK@S;E�K#0YH�.!623:,k<C]0�G3C�:áK#05Gb�JK�4�2«­nlö®�³�ì9è�í�ò u5QXW ­�ò�}¤è�íYò Q�Z j ®^ò1ì9è�ílH�.!6y�1gl617!H�S,:,0/g�­nm�®Û³

}Qè�í�ò Q�Z j ®·ò�ì�è�ípò u5QXW ­%ò>}Qè�ít+BDC�EDEbHLG3:,E�G30WI�254]4LK�05C!H�0��!E�G5:T61E�HL��:T61E�GÌ�D:,03Cp�JE�S,4�� k<41E�GÌ�1g@G3CF4��D:;.Fk�05C!H�0�EbH�85C4�K#±7ô lÙõD²Pm�±�î{lÙ쪲ÌH�.J6¡±5ô m�îD²Plï±�õ)m�쪲�:;G�Eb�<7!H�SJ034@05C�EMG9H�X[E�G5g]X[XYE�0523:T8�HLSK#4<23X>òLK#4<2±5ônl õD²�m�±�îzlÝ쪲»³ ±w�sü��îX��ü1� ù¿|�¢#æ â'Ô ²�ò�� ô���ìX�!ò ±w�sü��õ=��ü1�-ùe|p¢#æ â'Ô ²

�DC�E�25Ei|�¢�æc:,G?03C�E�7�.F:}�<7�E¡|p¢#æ�w3� PP�sP|�Ið0�sü�sPP��ü1�tK�4�2M�DCF:}85C>�F� st�u,�E�+�[v#�}9�F��ò�|�¢#桳|p¢#æWò� st�9�[u#�wvw�/�}9�3+�� 8�:;29897�:,0ÌSTHvg�4<7�0�G57�k�k<E�G305:,\�ED4�Kt03CF:;G�G3g1XYX[E�0325:}8NH�S�K�4�23XÎ:,GÌG3C�4��D.:,.�¨!k<7�23E[*�+,*biF+!Â�4<7ª8�HL.c03C�E�.yG3C�4��%�1g[0sH�§1:,.�kp:,.]\<E�23G5E�GM05C�234<7�k�CF4�7�0D05C!H�0

±7ô>m�îD²�lö±�õ:m�쪲»³ ±w�sü��îX��ü1� ù¿|�¢#æ â'Ô ²�ò�� ô���ìX�!ò ±w�sü��õ=��ü1�3ù¿|p¢#æ â�Ô ²�DC�:T85CcG3C�4��DGD05C!H�0D�JE�G3:T61EpH���:T61E�GD�D:,05CY�JE�S,4��@+BDC�EM4<03C�EN2D03C�:,.�k<GÌ03C!HL0�4<.�EMXcHvg?�uHL.]0W034A§].F4�� HL�!4<7�0W�!E�G5:T61E�HL.!6��JE�S,4��%H�S,G34GsHvgA03C!HL0Ì:,0 6f4]ENG�.�4<0�XªH�0503E�2�C�4��~g<4�7�83CF4]4<G3ED054@��2sH<85§�E�0�H�I�:T89057�23E<�1G37!85CYH�G�03C�4<G3E:,.^¨!k<7�23E·*�+,*bmF+>­�:,23G50�:;0A:;Gp03CFE 8NH�G3Ec05C!H�0�±�­Îò Q�Z,j3~ ²'l ®ñ³ö­:l ± u7QXW(~ ò�®�²H�.J6^G3:,X[:;STHL23S,gc�]g^:,.1\�EN2303:,.�k·�J4�03C"G3:T61E�G¯­�mD±�®~ò u5Q_W�~ ²¯³ ± Q�Z,jr~ ò�­¿²5m«®W+ã-/.I!HL2303:T897FS}HL2b��:áKyó�òO÷ ³��°òB�¦HL.!6¦­ ³ ­�ò Q�Z,j ��HL.!6 u5Q_W �òO®Ý³ ®©05C�E�.±�­ñò Q�Z,j óD²�lø± u5Q_W ÷ ò1®�²#³�­ol ®W+�1Eb894<.!61S,g^:,0@:,G@03CFEª8�HLG3Ec03C!HL0�� ô��9�sõ=��îL�I�tò�±�­�lò®�²�òB�F� ìK��D�E��D�§³ø±� ô���õL�(ò­ ò u5QXW 쪲rlû± Q�Z j î ò%®"òJ�[�=��D�5²WH�.!6·617!HLS;S,g �I� ô���õD�E��îD�!ò>±�­nme®�²�ò(�sìK�9� ���w�D�F�/³± u7QXW ô ò1­ ò��sìK�w�D�5²ym�±w�sõ=��îD��ò1®^ò Q�Z,j îD²�+Mx 4�G30?4LK 05C�Ep03C�:,.�k<GD03C!HL0M4�.FE�.�ENEb61G?034I�254�\�E�HL�!4<7�0Ì05C�E�G3E@89:,29897�:,03GMHL23E�8�4�.�G5Eb�<7�E�.!89ENGM4�K�05C�E�G5E�STHLG30W4���G5E�23\�HL03:,4�.�Gv��G5E�0305:,.�k\�H�25:,4�7�GW4�K�03C�E@\�HL23:TH��FS;ENG�054�03C�E?:T61E�.103:,0/g1+

Page 19: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  *bm

­ ~ ® ôõ î­ ®ì �

­�:,k�7�25E>*�+,*vmOw�±�­Îò Q�Z,j3~ ²'l ®ñ³ö­�l ± u7QXW(~ ò�®�²�H�.!6n� ô��9� õ���îD�F�tòO±�­Qlò®�²�ò�F�sìK�w�D�E��D�I³ ±w� ô���õD��ò1­%ò u5QXW 쪲3lö± Q�Z j îñò%®·ò��[�=��D�5²�#�7þ���¢ Í����«���¨�O�_�#Ñe�BDC�254�7�k<C�4�7�0W03CFE®6f:;G9897�G5G3:,4�.[4�K�xQ�JE�G3:T61E<��H�.!6ýx �JE�S,4��@�<��E�XªH�6fED7�G3E?4�K�05C�E@617!HLS;:,0/g4�KM05C�EY0/�W4·4�IJE�2sHL034�25Gb+·BÌH�§1:,.�kc03C�E[:,.]\<E�23G5Ec4�K�HlPDð Pl89:,2s897F:;0�894<2323ENG3IJ4�.!61G[034�!:,I�I�:,.�kc05C�EYI�:T89057�23EcH��J4�7�0p03CFEY61:TH�k�4<.!H�S�S;:,.�E��JE�0/�WE�E�."03C�Ec614�XcH�:,.>H�.J6·2sH�.Fk�Eä 03CFE�S,:,.�E?G3C�4��D.y:;.[¨!k<7�23E[*�+,*bPF+u�f:;.J89E@03CF:;G�037�25.�G?\�E�2503:T8�HLS(614<XªH�:,.c894�.�.FEb8903:,4<.�G:,.1034cC�4�25:,��4�.10sHLSÌ2sHL.�k�E�894<.�.�Eb8905:,4�.�G�H�.!6y\1:T89E�\�E�25GsHF��:;0?057�23.�GA�!E�S,4��©:,.1034c�!ENG3:T61EH�.J6�\1:T89E?\�E�25GsH�+�BDCJH�0W:;GW03CFE®6f7!H�S,:,0/g�E�ðfIF23E�G5G3Eb6c�1g¡±�­)lú®�²�â'Ôe³Ë±�­yâ�Ô�²�m#±�®¤â�Ô%²N+�aK#03E�.��!�WE�¨!.!6c4<7�23G5E�S,\�E�G��uHL.103:,.�kp034YG5�uHLIc0/��4�4LK(03CFE@�D:,23E�G�4�KÌ4�.�EA4�K(05C�E�G5EK#4<7�2/â/G3:T61Eb6[05:;S,E�Gv+���E9¨!.FE���st�wu&� Q,��S ­z��v.�w}(��³O��}t�wu&�!­n��v#�s(���1G54�03C!HL0�HAI�:T89037�25E@4�KQE�ÁS ­Î:,G?03C�EpGsHLXYE@H�G?4�.FE�4LKÀ­ÎE9ð!89E�I�0@05C!H�0?05C�EZ8�4�.�.�Ev8903:,4�.FG@4�.l05C�E�23:,k<C]0?H�.!6S,E9K#0@H�25E�E9ð!85C!H�.�k<Eb6t+pBDC�EY894<.�.�Eb8�03:,4�.�GpH�0?03C�E�054�I^H�.!6y�J4�03054�X¦H�23E�E�ðFH<8903S,gl05C�EGsHLXYE�+��MX[4�.�k<G30W03C�E?7�G5E9K#7�S�03C�:,.�k<GD034�§1.�4�� HL�!4<7�0 QE�ÁS H�25E?03C!HL0

QE�ÁS4Q,��S ­ ³ ­ÉùDP± QE��S ­¿²�lö± Q,��S ®�² ³ Q�Z,j è&^�~�£Yò Q,��S ±�®ql ­¿²�ò u7QXW è&^�~�£± QE�ÁS ­¿²3m�± Q,��S ®�² ³ Q,��S ±�­zm�®�²

�aKa8�4�7�25G3E�03CFE�23E�:,G�H[617!HLSÌ4�IJE�2sHL03:,4�.'wD03C�E�89:,2s8�7�:,08± QE��S ­yâ�Ô�²�â'Ô�:,GM05C�E�4�.FE�05C!H�0g�4<7~k�E�0��1gã25E9�!Eb8�03:,.�k¦­zHL�!4<7�0YH·C�4�25:,��4�.10sHLSDS,:;.FE��W�D:;05C~03C�El054�I%H�.J6ã�J4�05034<X894<.�.�Eb8905:,4�.�GcE9ð!85C!H�.Fk�Eb6%HL.!6~05C�ElC�4<23:,��4�.109H�SM4<.�E�G[7�.!85C!H�.Fk�Eb6t+ BDC�:,GY4�IJE�29H�034<2C!HLG�G5:;X[:,S}HL2MI�254�IJE�2305:,E�Gb�DH�Gpg�4<7 8�HL. 85C�Eb85§"�]g·0sHL§1:;.Fkl:,.]\<E�23G5E�G�03CF234�7Fk�C�4<7�0�05C�EEb�<7!HL03:,4�.�GM6fE�Gs8925:,��:,.�k QE��S +�#�7þ��5ç ���O�e�'���#�I�I�R���#�#ÑR��¥X¥�èÜ�!�#ÑeÑR���¨�O��ÎÜ�!�X�O�!©R���O�BDC�E�25E¥HL23E^H^.17�X��JE�2Y4LK@4�03CFE�2c�uHvg1GY05C!H�0l89:,29897�:,03GcXY:,k<C]0p�JE¥894<.�.�Eb8�03Eb6 �D:,03C03CFE��D:,25E�G�S,g1:,.�k@4<2303CF4�k�4<.!H�S,S,gp034pEbH�85CY4<03C�EN2b�!HL.!6�05C!H�0WXY:,k<C]0��JE?:;.105E�23E�G503:,.�k¨w�K#4�2E9ð!H�X[I�S,EÌ:,0��D:,S,S1�!ED894�X[XY4<.M034@894<.�.�Eb8�0�89:,2s897F:;05GÌ�D:,03C@0/�W4?:,.�I�7�05G HL.!6?4<.�E�4<7�03IF7�0:,.l234��DG��DC�E�.^614�:,.�k�05C�:,.�k�G�03C!HL0�HL23EpS;:,§<E®H<6�61:,.�k�7�I^H�254�� 4LK�.17�X��JE�23Gv+MBDC�EN23EG3ENE�Xz054Y�JEZH&\�H�G30�.17�X��!EN2D4�KÌI!4<G3G5:;�F:;S,:,03:,E�G?894�2523E�G5I!4<.!61:,.�kc034[03C�E�894<X���:,.!H�05:;4<.�G4�KM894<.�.�Eb8905:,4�.�G@05C!H�0AXY:,k�C10D�JE�XY:,G3G5:;.FkpK#234<Xz03CFE�I�:T89037�25E�4�KD�!ENG3:T61EYH�.J6l�JE�S,4��@+BDC�25E�E@4�K�03C�ENG3E�894�.1¨Jk�7�29H�03:,4<.�GuHL23E@:,S,S,7�G3052sHL03Eb6&:;.[¨!k<7�23E�*<+;*vq�+

Page 20: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

*bq <>= ?A@BDC%?;EGFIHA@�@�J�C%?

­ ® ­ ® ­ ®

­�:,k�7�25EM*�+,*bq[w�25E�I�23ENG3E�.10sHL03:,4�.p4�K!±�­�òs®4²_ù�P�H�.!6 Q�Z,j 2 ê â�Ô�ò�±_±/2 Ô òs­¿²l�±�®Dò[2 ê â�Ô�²_²�ò u5Q_W 2 ÔH�.J6i±_±�­ñò+2 ê â�Ô�²�lö±�®>ò92 ê â�Ô�²X²�ò+2 ê­ ­ ­ ­

­�:;k<7�23E�*<+;*vwOw�0/��4p:,.�G309H�.!8�E�GM4LK doY#� ­­�4<23057�.!H�05E�S,g]��C�4��WE�\�EN2b��03CFE�G3ElH�25EªHLS;SJj97�G30A:;.FG30sHL.!89E�G�4LKu�JE�G5:}6fE���K#4<2@E9ð!H�X[I�S,E

±�­ ò,®�²#ù?P�³ Q�Z j 2 Ô â�ÔMò>±_±�­�ò#2 ê â'Ô�²rl ±/2 Ô ò ®�²X²aò u5QXW 2 ê +�BDC�:,G?XYEbHL.�G?03C!HL0�05C�EE9ð�:,G305:;.FkY23ENG37�S,03G@HL�!4<7�0?�!E�G5:T61EZ8NH�2325gl4�\�EN2M:,XYX[Eb61:TH�05E�S,g�054ªH�.1gc.�E���4<I!EN2sH�054�2?4�K03CF:;GWK�4�23X©05C!H�0D�WEMX[:;k<C10Ì�uHL.10b+�­�4<2�E9ð!HLXYI�S,E��<G37�IFI!4<G3E@05C!H�0�­���®�³ Q�Z,j 2 ê â�ÔÌò±X±82 Ô ò ­¿²rl ±�®"ò�2 ê â�Ô�²X²Wò u7QXW 2 Ô ���DC�:T85C·:;GA03C�Ep¨!25G30�894�.f¨!k�7�29H�05:;4<.>G5C�4��D.^:,.>05C�E¨!k<7�23E��F03C�EN.l:,XYXYEv61:TH�03ENS;g®K#234<X�03C�EAI�234<I!E�2503:,E�G�4�KÌ�!ENG3:T61E@:,0WK#4<S;S,4��DGÌ05C!H�0�� ô���õD�!ò±�­n�¦®�²�ò(�sî<��ìX�§³æ±7ô ò ­�ò u5Q_W îD²��˱ Q�Z j õÎò ®ãò 쪲�+p-/0?:,G?03C�E�E9ð�:,G305E�.!89E[4�K�05C�E:,.1\�E�25G3E�GD4LK�03C�E?I�254bj9Eb8905:,4�.�GD05C!H�0WXªHL§�EW03C�:,GW7�.�:á¨�8�HL03:,4�.[I!4<G3G3:,��S,E���HL.!6�05C�:,G�:,GÌ4<.�E4�K?03C�EcE9ð!897FG3E�G&K#4�2p.�4�0�894<.1¨!.�:,.�k·4�7�25G3E�S,\<E�GY054lK#7F.!8903:,4<.�Gb��.�4�2p:,.!61E�Eb6"054>054�0sHLSK#7�.J8903:,4�.FGb+�#�7þ��5þ Í���k���MHv\1:,.�kcI�7�0A0/��4>8�:;29897�:,03Gp.�E9ð�0@054lEbH<83C"4�05C�E�2p�D:;05C>�JE�G5:}6fE��Ì05C�EY.�E�ðf0AG303ENIã:,G@4�K894<7�23G5E�054�I�7�0�HL.�4�05C�E�2�.�E9ð�0M054�03C�E�XzHL.!6[G34[4�.��JH�GDG3CF4��D.l:,.Y¨Jk�7�25EY*�+,*bwF+ÌBDC�:,G:,GM05C�E�G9H�X[E@k�E�.FE�2sHLS;:,�bHL03:,4�.y03C!HL0�09H�§<E�G?g�4�7 K#234<XOI!HL2sHLS;S,E�SÌ894<XYIJ4�G5:;05:,4�.Y054cXªH�I��H�.J6Y05C�E�K#4�S,S,4��D:,.�k?23Eb�<7�:,25E�XYE�.105GM4�. d�Y#� G3C�4<7�ST6YS,414�§�\<E�23g[S,:;§<EM05C�4�G5EMK�4�2 gDL>S

Q�Z j �«â#��ò d�Y#� ­ ³ ­ ò u5QXW �«â#�doY#� ­ñò u5QXW �«â#� â'Ô ³ Q�Z j �«â#� â�Ô ò�­

Q�Z,j ±w�[Z!��ÒP��ò�~�£�£�²�ò d�Y#� ­ ³ ±X± d�Y#� ­%ò u5QXW Z¯²ylݱ doY#� ­ñò u5Q_W Ò!²X²�ò u5Q_W ~�£�£d�Y#� ­%ò u7QXW ±~9£<£ â�Ô ò��[Zq��ÒP�5² ³ Q�Z j ~�£�£ â�Ô ò3±X± Q�Z,j Z�ò doY#� ­¿²�lø± Q�Z j Ò[ò doY#� ­¿²X²ÚD4<03:T89Ep03C!HL0M05C�E�G3EpK�4�7�2?894�.!6f:;05:,4�.�G?8�H�.�.F4�0M�JE�H�����25E�\1:TH�03Ev6l:,.l05C�E�G9H�X[E��DHvglH�G03CF4�G3E®K#4�2WXªHLI����1g[7�G3:,.�kp:,.]\<E�23G5E����JEb8�HL7�G3E�± doY#� ­¿²â�Ô ;³ d�Y#� ­yâ�Ô�+BDC�EM:,.103EN2/KåH<89EM257�S,EDK#4<2�254��@���1g�H�.!HLS;4<k�g@�D:,05C�03C!HL0ÌK#4<2Ì�JE�G3:T61E��F��4<7�ST6@G5E�E�X�034�JE@03C!HL0�:áK#ì©ò�ô�³>�Îò+� �DC�E�25E8­�w u7QXW ��ð Q�Z,j �Y��05C�E�.

� ô�� g×L>S õD�tò doY#� ­%ò�� gDL>S î<��ìX�A³ doY#� ±� ô���õD�!ò%­ñò��sî<��ìX�5²

Page 21: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  *bw

­ ­ ­ ­

­�:,k<7�23E�*�+QP<�Ow�H�.Y:,.�G50sHL.!89E@4LK d�j�a ­

­

­

­

­

®

®

®

®

°

°

°

°

­�:,k�7F23E�*�+QP�*>w(HL.Y:,.�G50sH�.J89E@4�K T�YOa ­p��4<.�E?4�K dvjId ®W�JH�.!6[4�.FE�4LK�± d�j�a ±5°¿â'Ô²_²�â'Ô��gã:,.!617!8�03:,4�. K#234<Xd03C�Ec257�S,E HL�!4<7�0YH·894�X[I!4<.�E�.10�S,g1:,.�k·�!E�0/�WE�E�.ñ0/��4^89:,2s897F:;05G�JE�G3:T61E�EbH�85CY4<03C�EN2b�1:,0�K#4�S,S,4��DG�03C!HL0 u5QXW(~ ò d�Y#� ±�­^ò Q�Z,j3~ ²(³ d�Y#� ± u7QXW(~ òX­¿²Jò Q�Z j3~ +�1:,XY:,STH�25S,g��]g·:,.!617!8�03:,4�.yK#234<Xz05C�EY257�S,E�23E�STH�05:,.�k QE��S HL.!6·�JE�G3:T61E����WE�k�EN0�H[237�S,EH��J4�7F0D23E9�!Ev8903:,.�kcH@254��@��03CJH�0 QE�ÁS#d�Y#� ­¦³ Q�Z,j ìsç]Y?ò doY#�ªQE��S ­%ò u5QXW ìsç]Y�+BDC�E�25E�:,GDH?234��Wâ/S,:,§�ED23ENI!EbHL03Eb6&K#4<23X©03CJH�0D61E�G3EN23\�ENG�H?G5I!Eb8�:}HLS�X[E�.103:,4�.��v.!HLXYE�S,gd�j�a ­~23EvH�6Gx 25Eb617!8�E¿±TK#254�X�03CFE%²�S,E9K#0v�;+oBDC�:,G(:,G�:;S,S,7�G5032sHL03Eb6A:,.?¨!k<7�23E?*�+QP���H�.!6p61E9¨J.�Eb6�1g dvjIa ­Ë³ doY#� ±�­Yò�2 ê â'Ô�²vò�2 ê +�-/03G�I�234<I!E�2503:,E�G�HL23EÌ:,X[XYEb61:THL03EJK#254�X�03CFE�894�2523E�G5I!4<.!6<â:,.�kYIF234�IJE�2503:,E�G@4LK doY#� +@-/0?G5C�4�7�ST6y�!EpG37Fk�k�ENG303:,.�kc4<I!E�29H�05:;4<.�G?S,:;§<E@G37FXYXªHL03:,4�.[034g�4<7�wJK#4<2tE9ð!H�X[I�S,E���:áK��5Ã���È�� ~�æ�槱�Ã�NyÈ�²�05C�E�.���sx�9�����w�(��#�E��± dvjIa ~<æ�æ[²1±X±_±/sBN$�¨²N<� ²N�� ²N+BDC�E?4�2961E�2D4LK�03C�E?��29H�85§�E�05:,.�k ä K�234�X©05C�E?S;E�K#0 ä :,G�:,X[I!4<230sHL.10�K#4�2W.�4<.1â«HLG3G54f8�:}HL03:,\�E4�IJE�29H�034<23Gv�1K#4<2DE9ð!H�XYIFS;E d�j�a ~9£!ìA4�2 d�j�a ±3è&^�~9£[ò�~9£A}7²���HL.!6[E9ð�I�STH�:,.�GW03C�[email protected]�XYE<+�#�7þ��8\ ÿå�¤¥X©eÐæÑe��aK!894�7�25G3EWG3:,.!89E��!E�G5:T61E�CJH�G��JE�S,4��^H�Gt:,03G�617!H�S<03C�EN23EÌ:,G�k<4�:,.�kW034D�JEuHD8�4�2325E�G3IJ4�.J61:,.�k617!HLS�K#4�2�234�� �DCF:}85Cl:,G@894<S;7FXY.��J61E9¨!.�Ev6·�]g T�Y[a ­Ù³æ± d�Y#� ­yâ�Ô�²�â'Ô +?��.>:,.�G50sHL.!89E4�K?03C�:,G[:;Gp:,S,S;7FG30329H�05Eb6":;."¨!k<7�23E"*�+QP�*<�ÌH�.!6":,03G�I�254�IJE�2305:,E�GlH�23Ec05C�E>617!HLS,G�4�K�05C�EI�254�IJE�2305:;ENGM4�KÌ254��@+

u5Q_W �/â#�tò T�YOa ­ ³ ­ñò Q�Z,j �«â#�T�Y[a ­%ò Q�Z,j �/â#� â'Ô ³ u5Q_W �«â#� â�Ô ò�­

u5QXW ±� Zq��ÒP�!ò�~9£<£/²�ò T�YOa ­ ³ ±_± T�Y[a ­ñò Q�Z,j Z�²3m�± TYOa ­%ò Q�Z,j Ò!²X²�ò Q�Z j ~�£�£

Page 22: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

P�� <>= ?A@BDC%?;EGFIHA@�@�J�C%?

­ ­ ­ ­ ­ ­ ­

­ ­ ­ ­ ­ ­ ­

­ ­ ­ ­ ­ ­ ­

­�:,k�7F23E�*�+QP�P[w(HL.Y:,.�G50sH�.J89E@4�K d�Y#�¡T�YOa ­¦³ T�Y[a�doY#� ­T�Y[a ­ñò Q�Z j ±�~9£<£ â�Ô ò��[Z!��ÒP�5² ³ u5Q_W ~�£�£ â�Ô ò3±X± u7QXW Z©ò T�Y[a ­«²�m�± u5QXW Ò[ò T�Y[a ­«²_²

H�.J6YG54�4�.�+BDC�E�894�S,7�X[.1âåG5C!H�IJEb6c05C�:,.�kY05C!H�0@894<2325E�G3IJ4�.!6fG�054Y23Ev617!89E&K#234<X{03C�EpS,E9K#0?:,GM23E�â617!8�EcK#234<Xd03CFEª25:,k�C10b�D61E9¨J.�Eb6~�1g d�j�d ­ø³ TYOa ±�­ ò(2 Ô â�Ô�²Mò(2 Ô +~-/0�XY:,k�C10@G5E�E�X03CJH�0?:,0M�W4�7�ST6cC!Hv\<E��JE�E�.^X[4�25E@S,4�k�:T8�HLS�054ª85C�23:,G503E�.^05C�:,G�G54�X[E�03C�:,.�k�S,:,§�EGx 25Eb617!8�E614��D.1�DH�2s6fGb�,�t��7�0pH�k]HL:,.>:,03GA.!H�X[E�61E�25:;\<E�GAK#234<Xz03CFEY��29H�85§�E�05:,.�kc:;.^05C�EpK#4<23X�7�STH�DC�:T85Cl61E�Gs8�23:,�!ENG�05C�E?23Eb6f7!8903:,4<.l4�KÌH?K#7F.!8903:,4<.�ò<K#4�2DE�ðFHLXYI�S,E��<:áK��7Ã���È��#~<æ�æy±�ÃXNÛÈ>²03CFE�.��E������(�w�#�]�ws(�¨± dvjId ~�æ<æO²'±F�<N¦±8�cNر8�cN>s�²X²_²�+�ÌEN�uHL23EM05C!H�0�23Eb617J89EM25:;k<C10Ì:,G(.F4�0Ì05C�ED:,.]\<E�23G5E9â3617!H�SJ4�Kt23Ev617!89E�S;E�K#0+��BDC�EMEvH�G3:,E�G50�DHvg�054?G3E�E�03C�ED61:rÌ�EN23E�.!8�EM:,G�034@894�X[I!H�25EÌ03CFEDE9ð!H�XYIFS;ENG�4�K d�j�d ­%H�.J6ª± dvjIa ±�­yâ�Ô�²X²â�Ô03CJH�0DH�23E�G3C�4��D.�:,.p¨!k<7�23Ep*�+QP�*<+(�aK(894<7�23G5Eb± d�j�d ±�­yâ�Ô�²_²�â�ÔD:,GÌg<E�0uH�K#4�7�2503Cc61:rÌ�E�25E�.1023Ev617!89E9â/G3CJH�IJEb6>8�:;29897�:,0b+�1:,.!89EWK#4<2ÌH�.1g8­ñw�P!ð�P?�J4�03C doY#� ­�w�P!ðÎP?H�.!6 T�YOa ­ñw�P!ð PF��:,0�:;G�IJ4�G5G3:,��S,ED034XªHL§�E doY#��T�Y[a ­�H�.!6 T�Y[a�doY#� ­p+��Ì4<03Cl4LK(05C�E�G3EA�D:;S,SJS,4]4<§�S,:;§<EM05C�E?E9ð!H�XYIFS;E�G3C�4��D.:,.@¨Jk�7�25E@*�+QP�PF� HL.!6p:,.@K/H�890�g�4<7Z8NH�.�G3CF4�� �1g@:,.!6f7!8903:,4<.@K#254�XÎ03C�EMHL��:T61E�GÌI�254�IJE�230/g4�K��!ENS;4���H�.J6Y�JE�G5:}6fE@03C!HL0 doY#��TYOa ­�³ T�YOa�doY#� ­p+�#�7þ���b �Ë�#�OÑR�����7���O©e¥_��D4<23.�EN2b� GÌ237FS;ED:,G�03CFE�.!HLXYEW7�G37JH�S,S,g�k<:,\�E�.p034@H�XYE�05C�4�6?4�KtE�\�HLS;7JH�03:,.�k�I!4<S,g].F4�XY:THLS�G�D:,03C�4<7�0?.�E�Eb6f:;.Fkl034c2sHL:,G3E�IJ4���E�25G@4�2p614c7�.�.�Eb8�E�G3G9H�23g"X�7�S,03:,I�S,:T8�H�05:�4<.�GbòJ:,0?:;G?E�.fâ8�HLI�G37�STHL03Eb6&:;.�05C�E?Eb�<7!H�S,:,0/gp4�K4s é NåÃts Ô N��9�9�/N�Ã[ÓOâ/ê]s Ó[â/ê N�ÃOÓ[â�Ôws Ó[â�Ô N�ÃOÓBs Ó ³s é NbÃ!±8s Ô N �9�+��NbÃ;±/s ÓOâ!ê NbÃ!±8s Ó[â�Ô N8Ãts Ó ²X²��9�9� ²�+�ÚMH]� �,\�EÌE�\�HLS,7!H�05:;4<.?4�K!05C�E�S,E9K�0/â/C!H�.!6G3:T61Ep�W4�7�ST6·H�I�IJEbH�2?054ª25Eb�<7�:,23EYHc�<7!H�6f2sH�05:[email protected]�X��JE�2?4�K�X�7FS;05:,I�S,:}8NH�03:,4�.�Gv��05C!H�0?4�K03CFE@23:,k�C10«âåC!HL.!6�G5:T61E@4�.FS;gYHpS,:,.�EbHL2D.17�X��!EN2b+�BDC�E@Ev��7JH�S,:,0/g�:;GMH�8�4�.�G5Eb�<7�E�.!89Ep4�K�HI�254�IJE�230/g·03C!HL0@:,G?7�G37!HLS,S;gyE9ð�I�23E�G5G3Eb6~HLG@03C�EY6f:;G50325:;�F7�03:,4�.·4�KDX�7�S,03:,I�S,:,8�H�05:;4<.c4�\�E�2H�6F61:,03:,4�.�+��1IJEb89:á¨�8�HLS,S;g[:,0ÌK#4<S,S;4��DG K#234<X ÃKdKs�N�ÃKdKu�³¦ÃKd�±/sDN�u�²�+BDC�E�237FS;EYHLI�I�S,:,E�G?034lH�.1glG503257!89037F23Ec�D:,03C·0/��4c4�IJE�29H�03:,4<.�G@03CJH�0@61:,G30523:,��7�05E�:;.03CF:;GD�DHvg1�]HL.!6[:;.[I!H�2503:T897�STHL2D:;0WC!HLG�Hp894�7�.105E�23I!HL230�:;.l89:,29897�:,03G1w

�s­���­'�!ò�®�³Ë®·ò�­ ³!Æ ±_± W�d�U ­«²'ùD~9£Jì â'Ô ²�ò dvjId ®å³ dvjId ± W�dvU ­%ò1®�²

Page 23: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  P�*

­ ®­

­®

­�:,k�7�25EZ*<+QP�UOwo03C�E@C1g1IJ4�03CFE�G3:,GWK#4<2M�D4�25.�E�2v� G�237�S,E��105C!H�0<�s­���­$�!ò�®�³Ë®·ò�­

®

®

®

®

­

­

­

­

­

­

­

­

­­

®­®­®­®­�

­�:,k�7�25E�*<+ PL_AwtH�.p:,.�G309H�.!8�E�4LK!03C�EM8�4�.�G5Eb�<7�E�.!89E�4�K��a4�25.�E�2b� GÌ257�S,E���05C!H�0 W�d�U ­còX~�£!ì>â�Ô1òd�j�d ®�³Ù~�£!ì>â�ÔWò dvjId ± W�d�U ­%ò1®4²

Page 24: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

P�P <>= ?A@BDC%?;EGFIHA@�@�J�C%?

BDC�EDC1g1I!4<03C�ENG3:,GÌ:,GÌ:,S,S;7FG30329H�05Eb6@:,.A¨!k�7F23E@*�+QP<UMH�.J6�H�.pE9ð!H�XYIFS;E�4�Kt03C�EM894<.�G3Ev��7FE�.!89EK#4<2MH@I!HL2305:}8�7�STH�2DG3:,��E@HLI�I!EvH�23G�:,.Y¨Jk�7�25EZ*<+QP�_!+BDC�E@X[4�G30�KåHLXY:,S,:;H�2�:;.FG30sHL.!89E@4LK �a4�23.FE�2b� GM257�S,E?�D:;S,S�894<.1\�E�250�HpS,:,G30D4�K���:,03GD:,[email protected]�X��!EN2D03C!HL0M03CFE�gc23E�I�25E�G3EN.]0A:;.c��:,.!HL23g[.�4�09H�03:,4<.�+D�17�I�IJ4�G5E8­Î:;GD05C�E�89:,29897�:,0±+dÌP>²M05C!H�0p614�7��FS;ENG®H[.17�X��JE�2b�o03C�E�.^25Eb8�HLS;S�03C!HL0 W�d�U ±+dÌP>²M25E�STH�05E�GZH&S,:;G50?4�KD��E�2341E�GH�.J6?4�.�ENG(054�H�S,:,G30t4�KJ03C�4<G3EW��:,03G���EN:;k<C103Eb6?�1g?03CFE�IJ4���EN23GÌ4LKf0/�W4M�DCF:}85Cp03C�ENg��W4�7FS}623ENI�23E�G5E�.10?:;.cHp��:,.!H�25g�.17�X��!EN2��D:,03C[:,03GDS,EbH�G50DG3:,k�.F:�¨t8�H�.10W��:,0̨!25G30v+��17�IFI!4<G3E@05C!H�0®":,G�05C�E@89:,2s897�:,0ª~�æ�æ&03CJH�0D23ENS}HL03E�G?H@IJH�:,2�4LK(.17�X��JE�23GD054�05C�E�:,2MG57�X>�<03CFE�.�~9£!ìIâ�ÔÌòd�j�d ~�æ<æp23E�STHL03E�GMH?S,:,G30�4LK�.]7FX��!E�25GÌ034A03C�E�:,2WG37�X·ò�G34K��¢Tê�³ W�d�U ±+dÌP�²Jò%~�£!ì>â�Ô�ò dvjId ~<æ�æ23ENS}HL03E�GpHYS,:,G30�4�K��F:;05G?034c03C�E�.17�X��JE�2�03C!HL0�05C�E�gl25E�I�25E�G3E�.10YHLG®H&��:,.!H�25gl.17�X��JE�2b�S,EbH�G50?G3:,k�.�:á¨�8NH�.10?��:,0M¨J23G30v+¡±#-/0@HLS;G54c23E�STH�05E�G@4<03C�E�2AS;:,G503G?4�KD.17�X��!EN23G?034c03CFE�GsH�X[E\�H�S,7�E<�1��7�0D03CJH�0M6141E�GD.�4<0DXªHL0303EN2ÌK#4<2D03C�E?X[4�XYEN.]0v+s²BDC�E@C1g1I!4<03C�ENG3:,GM4LK �D4<23.�EN2b� GM257�S,E�:,GDG9H�03:,G«¨!Eb6c�1gY05C�E�G5E�0/�W4Z8�:;29897�:,03Gv�J�!Eb8NH�7�G5E03CFE®8�:;29897�:,0W4�.Y4<.�E?G3:T61E�:;G"�r±+dÌP�²]��±9dÌP�²���ò�~�æ<æ��DCF:}85C[23E�STH�05E�GMHAI!H�:,2Ì4LK(.17�X��JE�23GW03403CFEMG37FX 4LK�0/�D:T89EMEbH<85C�4�K�03CFE�X>��HL.!6p03CJH�0W4�.�03CFEM4�05C�E�2W:,G u5QXW ±+dÌP>²Xé�ò%~<æ�æ�ò�±+dÌP>²4³~�æ<æpò ±9d P>²W�DC�:T85Cª25E�STH�05E�G�HpI!HL:,2D4�K(.17�X��JE�25GD034�0/�D:T89E?03C�EN:;2�G37�X·+�BDCFE�G3E�H�25E�05C�EGsHLXYED89:,2s897F:;0��!Eb8NH�7�G5E®P>ÃcNcP>È8³ P�±�ÃcN¡È�²N�1G34��r±9d P>²&��±+dÌP�²/��ò~<æ�æb³ u5QXW ±9d P>²Xé�ò�~�æ�æaò±+dÌP>²�+���7�2®K#4�25X�7�STH�03:,4<.Y4�KD�D4�25.�E�2v� GA237�S,Ep03C�E�25E9K#4<23EYH�S,S,4��DGM05C�EY894<.!89S,7�G3:,4<.>05C!H�0�N¢T꯳ï~9£!ì>â'Ô ò d�j�d ± W�d�U ±+dÌP�²�ò�~<æ�æ[²#³Þ~9£Jì�â�ÔÌò d�j�d è9ï«ç«£l�DC�EN23Epè9ï«ç«£�³ Q�Z,j ±+dÌP>²�ò�~�æ�æo��DC�:T85C^:,G�054lGsHvg^05C!H�0�Hy��:,0/â/\�Ev89034<2Z8�HL.^�!El894<.1\�E�2503Eb6 :;.1054l03C�Ec.17�X��JE�2?03C!HL0�:,023ENI�23E�G5E�.103Gc�1g H·25:;k<C10/â/23Eb617J8903:,4�."4�K�è9ï«ç«£%894�X[I!4<.�E�.103Gv�ÌEbH<85C%4�K?�DC�:T83C~614�7F��S,E�G4�.FE�:,.�IF7�0MH�.!6cH<6�61GD:,0�054�03C�E?4<03C�E�2v+BDC�E�25E@:,GMHpG30sHL03E�X[E�.10�4LK��D4�25.�E�2v� GD257�S,E?K#4<2�S,E9K#0D25Eb617!8�03:,4�.�w

�s­���­'�fò1®å³Ë®·ò%­ ³!Æ ±X± UrdoW ­¿²!ùD~9£¨} â�Ô ²�ò d�j�a ®�³ dvjIa ± UrdoW ­ñò%®�²�1:,XY:,STH�25S,g@03C�EN23E�H�23E?G50sH�05E�XYEN.]05GDK#4<2D03C�EA:;.1\<E�23G5E�GM4LK �J4�05Cc23Eb617J8903:,4�.FGb+DBDC�EN23E�HL23EH�S,G54�HD\�HL23:,E�0/g?4�KJG3:,XY:,STH�2J23E�G57�S,03G�K�4�2�254��ãH�.!6A894�S,7�X[.���H�.!6�K�4�2�k<23:T61Gv+�BDC�EN:;2�I�25414�K#G�1gY:,.!617J8903:,4�.c�W4�7�ST6&�!E@05Eb61:,4�7FG�H�.J6YS,E�.Fk�03C1g1�1��7�0D05C�E@�DC�4<S;E?IJ4�:,.10D4�KÌ03CF:;GD�W4�25§:,G�05C!H�0WG37J83CcI�25414�K#GD4<.!89E?C!Hv\1:,.�k@�JE�E�.l614�.FE��103C�EN:;2M8�4�.�G5Eb�<7�E�.!89ENG®8NH�.Y�JE@H�I�IFS;:,Eb6:,.Y05C�E�894<7�23G5E@4�KÌH�61E�G3:,k<.ª�D:,05C�4�7�0D05C�E?.�Eb89ENG3G3:,0/gc4�KÌ25Eb894�7F23G3Ep034p:,.!617!8�03:,4�.�+ÕpÖ� �~Ú#ºpØ�¹�·^Ûb¹Ìß�ÙWßbÛ&Ø ºpØcÜ��?ß%·�¹�14AKåH�2���E?C!Hv\<ED4�.�S,g�G3ENE�.c�D:;25E�GM89254�G3G5Eb6[4�\�E�2W:,.>ì9ç&Y��1�F7�0�05C�E�25E�:,GDH�.�4<03C�EN2u89S,:T85C$�E4�K�89:,29897�:,0M61E�G5:;k<.l�DC�:T85Cc:;GDEN\�E�.l�W4�25G3E�K#254�X�03C�E@IJ4�:,.10W4�KÌ\1:;EN� 4LK�8�234�G5G3Eb6y�D:,23E�Gv+�17�IFI!4<G3EDHM89:,2s8�7�:,0(09H�§<E�G�:;05G�:,.�I�7F0tK#254�X HDIJH�:,2�4LKf�F7�G3E�Gv�]HL.!6@8�HLST897�STH�05E�GÌHWK#7�.J8903:,4�.4�KW03C�EpG3:,k�.JH�S,GM4<.lI!H�:,25GM4�KW�D:;25E�G@612sHv�D.yK#254�X{894�2523E�G5I!4<.!61:,.�klIJ4�G5:;05:,4�.�G�:;.y03C�4<G3E��7�G5E�Gb+W�14�X[E��DC�E�25ED:,.�05C!H�0�8�:;29897�:,0W03C�EM61ENG3:,k�.�EN2�C!HLGÌ034pH�2329H�.�k<ED034@:,.103EN23S,EbHv\�ED05C�E��7�G5E�Gb��H�S,4<.�k�03C�EpS,:,.�E�GMG5C�4��D.·:;. ¨!k�7�25Eª*<+QP�e��JH�.!6y03CJH�0�8�4�G305G�H�.17�X��JE�2�4�KÌ�D:,23E89254�G3G5:,.�k�G?��7JH�6129H�03:T8�:,.Y05C�E?�D:}6f03C�GD4LK 05C�E?��7�G5E�Gb+B�4ª61E�G98923:,�JE�G37!85Cã89:,29897�:,03G?:,.>`D7F�]gc�WE�.FE�Eb6·H�.�E��ÎI�:,Eb89E�4LK�I�S,7�X���:,.�kJ�J¡�¢¤£��61E9¨J.�Eb6A�]g��5Ã���È��9¡�¢Q£!Ä�Ūơ �G3+�Ä&C�³_�5ÃPC��È9C��N+�BDCFEÌSTHv�>H��J4�7�0�89:,2s897F:;0�894�.FG303257!89054�23G

Page 25: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  P�U

? ?¢¢ ¢¢

U UU UU UUW W£ £ £ £

V V V V V VV

­�:,k<7�23E�*�+QP<eOw�H�.c:,.�G309H�.!89E?4LKu¡�¢Q£03CJH�0�894<2325E�G3IJ4�.!6fGD034@05C�:,GÌ:,G(05C!H�0D� gDL>S ­�� gDL>S ®���ò5¡�¢Q£¯³ ¡�¢¤£�ò gDL>S � ­���®��«+��M.F4�03CFE�2�DHvg>4LKMGsHvg1:,.�k>05C�:,G�:,G@05C!H�0K� g×L>S ­�� g×L>S ®��;ùZ¡�¢¤£Û³ gDL>S �s­���®��3����7�0p�!El8�HL23E9K�7�S�JEb8�H�7FG3E�± gDL>S �s­���®��5²4ùA¡�¢Q£ â'Ô ;³*� g×L>S ­�� gDL>S ®��3+l�1:,XY:,STH�25S,g-� W�dvU ­�� W�d�U ®���ù@¡�¢Q£�³W�d�U � ­���®��«�1�F7�0D.�4�0D05C�E@4<03C�E�2�Eb�<7!H�05:,4�.�+�BDC�:,GD:,GD�JEb8�H�7FG3Epg�4�7l8�HL.c4�.�S,gY:,.103EN23S,EbHv\�E��7�G5E�G@05C!H�0@H�25E�05C�E�GsHLXYE@�D:T6105C��t05C!H�0?:,G@¡�¢Q£ â�Ô ò<¡�¢¤£å³ gDL>S P[��7F0�¡�¢Q£cò<¡�¢Q£ â�Ô :,G03CFE�0/g1IJE@4�KÌHpI!H�:,2W4�K�S;:,G503GD03CJH�0DC!Hv\<E�05C�E?GsHLXYEMS,E�.Fk�03C�+xc4�25Elk�EN.�E�2sHLS,S;gãHL.1gã.17�X��JE�2�4LK���7FG3E�Gc8�H�.~�JEl:,.]05E�23S,EbHv\<Eb6"�1g^032sHL.�G3IJ4�G5:,.�k03CFE�X{�D:,03C·ïåìNê��!6fE9¨!.�Eb6y�1g�Ãpï/ì�êbÈÙÅªÆ  ¤G,�¦¥f+�à C�§ ¨ ³�È ¨&§ C �!G54cïåìNê�³Îï/ì�ê!â'Ôb���F7�0�JEZ8�HL23E9K�7�S��!Eb8NH�7�G5Ecïåì�ê�ò<ï/ì�ê!â'Ô ;³ gDL>S4gDL>S ü9+M�1:,.!89E[¡�¢Q£i³ PAò�ï/ì�êi³ÎïåìNêYò g×L>S P03CFE�23EMHL23EDSTHv�DG�S;:,§<EÌ03C�4<G3EMHL�!4<7�0���:,I�I�:,.�k?��7�0ÌH��J4�7F0(052sHL.�G3IJ4�G5:;05:,4�.�H�.!6AXªHLI��vG37!85CH�G gDL>S#gDL>S ­%ò�ï/ì�꯳ ï/ì�ê�ò gDL>S#gDL>S ­ÎH�.!6[X[4�23E�G37�k<k�E�G503:,\�ENS;g g×L>S!W�d�U ­ òLïåìNê¾³ï/ì�ê�ò W�d�U�g×L>S ­ HL.!6�G54�4�.�+�aK�894�7�25G3E[�!Eb8NH�7�G5EY��:,I^H�.!6·052sH�.FG3IJ4�G3EcH�25E¡x E�ðfIJE�.�G5:,\�E��t:,0@:,G@H[k�414�6l:T61EvHc034Hv\�4<:T6l05C�E�Xd:,.^03CFE�¨!.!HLS�K#4<23X¦4�K�Hl8�:;29897�:,0b���F7�0�CJHv\]:,.�kc05C�E�Xd:,.^03CFEYSTH�.�k<7!H�k<EXªHL§�E�G�:,0ÌX�7!85CpEbH�G5:,E�2�054�614pG34<XYED8�H�ST897�STHL03:,4�.�Gv+(��.�E�C!H�G�034@�JE�HL��S,ED034pGsHvgp�DC!H�0:,0D:,G�05C!H�0D4<.�E?��4<7�ST6�.�4<0D�uHL.]0D054��F7�:,S}6o��H�GD�WE�S,S�H�GD�DC!HL0D034YH�:,XÎK#4<2b+�#�¦\��X� ©D�X�R�e�_Ñ��ï�O��k��ß�O���#�!�O�R�����.�E@4LK 05C�E�894<XYX[4�.�4�IF03:,XY:,�bHL03:,4�.�G�:;.l89:,29897�:,0�61ENG3:,k�.c:,GD034[:;.105E�23S,EbHv\<E®Hp.17�X��JE�24�KDG3:,X[:;STHL2D23E�k<7�STH�2@k<23:T6<â/G3C!HLI!Eb6·8�HLS}8�7�STH�03:,4<.�Gb��G37!85CãHLG®HL23:,G3E�:,.^61EbHLS;:,.�kc�D:,03C·��:áâ.!HL23gY25E�I�25E�G3E�.109H�03:,4<.�GM4LK(.17�X��JE�23Gv�1034�G3CF4�2305E�.c03C�EA�D:;25E�GD03CJH�0M894<.�.�Eb890�03C�ENX>�LK#4�2E9ð!H�X[I�S,EÌ��25:;.Fk�:,.�k?��:,03G�4�Kt03CFEDGsH�X[E��WE�:,k�C10�:,.Z6f:�ÌtE�25E�.10Ì.17�X��!EN23G�034<k�E�05C�E�2W:�KJ03C�E�gH�25ED034?�JE�H�6F61Eb6t+�BDC�:,GÌ:,G�03C�ED052sH�.FG/K#4<23XªHL03:,4�.A03C!HL0Ì0sHL§�E�G�H�.17�X��JE�2�4�K�H�25:;05C�XYEN03:T889:,2s8�7�:,03G�HL.!6�:,.103EN23S,EbHv\�ENGM03CFE�XO054�XcH�§<EM03CFE®6FH�0sH âåIJH�03Cc4LK HpI�254f8�E�G3G54�2b+-/.ª`a7��1g�05C�EM\�HLS;:T61:,0/g@4LK�03C�:,GÌ052sHL.�G/K#4<23XcH�03:,4<.�:,GD8�H�I�057�23Ev6��1g�03C�E�4���G5E�23\�HL03:,4�.03CJH�0R±w� ô���õD��ùW¡�¢Q£ â�Ô ²tlæ±w�sî<��ìX�3ùu¡�¢¤£ â�Ô ²�³ Q�Z,j ¡�¢Q£ â�Ô ò�±w� ô�lÞîX��õ{lÙìX��ùW¡�¢Q£ â�Ô ²tòu5Q_W ¡�¢Q£lHL.!6[4�K 8�4�7�25G3E@05C�E�617!HLSt23E�G57�S,0WK#4�2D�JE�S,4��@+�-/0Dk�EN.�E�2sHLS,:;�NE�GM�1g�:,.!617!8�03:,4�.c034

doY#� ±� ­���®��Iù�¡�¢Q£ â'Ô ²»³ Q�Z,j ¡�¢Q£ â�Ô ò ±� doY#� ­�� d�Y#� ®��Aù�¡�¢¤£ â'Ô ²Ìò u5Q_W ¡�¢¤£T�YOa ±� ­���®��Iù�¡�¢Q£ â'Ô ²»³ u5QXW ¡�¢Q£ â'Ô ò ±� TYOa ­�� T�Y[a ®��Aù�¡�¢Q£ â�Ô ²�ò Q�Z,j ¡�¢Q£

Page 26: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

P�_ <>= ?A@BDC%?;EGFIHA@�@�J�C%?

ô

õ

ô

õ

î

ì

­�:,k<7�23E�*�+QP<iOw5� ô���õL�-ù�¡�¢¤£ â'Ô HL.!6�±w� ô���õD�-ù�¡�¢Q£ â�Ô ²�lö±� îX��ìX��ù�¡�¢Q£ â�Ô ²doY#� ±X± gDL>S ­¿²!ù�¡�¢Q£ â'Ô ²»³ Q�Z,j ï/ì�ê â'Ô ò ±_± gDL>S4doY#� ­¿²!ù�¡�¢Q£ â'Ô ²�ò u5QXW ï/ì�êT�Y[a ±X± gDL>S ­¿²!ù�¡�¢Q£ â'Ô ²»³ u5QXW ï/ì�ê â'Ô ò1±X± g×L>S4TYOa ­¿²!ù�¡�¢¤£ â'Ô ²Ìò Q�Z,j ïåì�ê

H�.J6Y�1gYHLI�I�S,:T8�H�05:;4<.Y4LK(0/�W4�4�K(05C�E@H��J4�\�E?034�G57!85Cc4���G5E�23\�HL03:,4�.�GMHLGd�Y#�¯T�Y[a ±_± gDL>S ­¿²!ù�¡�¢Q£ â�Ô ² ³ ±_± gDL>S4doY#��TYOa ­¿²!ù�¡�¢¤£ â'Ô ²�ù"�áï/ì�ê���ï/ì�ê��

ÕpÖª «¯½"¬cÝ�½AØpÙ�ß%º��¥Þ?ßbÚ�Þ?Ýlß�Ù#¹�14�KåHL2(�WEDC!Hv\<E�:,.103E�.J61Eb6p034?k<:;\<E�05C�ED:,XYI�25E�G3G5:,4�.@05C!H�0ÌH�S,S103CFEM89:,2s897�:,05GÌ03C!HL0Ì�WEuHL23E0sHLS,§]:,.�kcH��J4�7�0?H�25EY894�X���:,.!HL03:,4�.JH�S�wÌ05C!H�0?03CFE�gl�JE�C!Hv\�EYHLG@61E�Gs8�23:,�!Ev6^:,.>H[G305EbH�61gG309H�05E���:,.l�DCF:}85C·03C�ENg>H�25E�I�25E�G3EN.]05Eb6^�D:,05C>H�.·7�.!85C!HL.�k�:,.�k[:;.FI�7�0@H�.!6y61E�S,:,\�E�2@H�.7�.!85C!HL.�k�:,.�kc4<7�03I�7F0��DCF:}85Cã61ENI!E�.J61G�4<.�S,gl4�.·03CJH�0?:,.�I�7�0v+Y�aKa894<7�23G5EY.�4l89:,29897�:,0:,G�E�\�EN2�7�G3Eb6 :;."03C�:,G��DHvg!wªHL0�05C�El\�EN23gãS,EbHLG30�05C�E�23Ey�uHLGZH·05:;X[E��!E�K#4�25Eª:,0��DH�GI�25E�G3E�.105Eb6~�D:,03C~H�.1g^:,.�I�7�0vòÌC�4��WE�\�EN2�03C�Ec894�X���:,.!HL03:,4�.JH�SÌ61E�G98923:,I�05:;4<."KåH�:,03CfK#7�S,S,gXY4�61ENS;G�03C�E��JE�C!Hv\1:,4�7F2�4LKaHc89:,29897�:,0@03CJH�0@�DH�G?I�25E�G3E�.105Eb6^�D:,03C^:,05G�:,.�IF7�0?G34lS,4�.FkH�k<4�05C!H�0D:,0DC!HLGDG3E�0503S,Eb6l6f4��D.�+-�KZH�.ñE�.103:,23E·G3g1G305E�X :,GlH�S,S,4��WEb6"034ãG5E�0305S,E¥H K#03E�2cEbH<85C 85C!H�.�k<E>:,.%:,05GY:,.�I�7�0v�03CFEY�DC�4<S;E[4�KM05C�EYG5g]G503E�X|:,G@03:,Eb6 7�I^K�4�2�HyG3E�0503S,:,.�kl05:;X[E�03C!HL0�61E�IJE�.!6fGY4�.^05C�ES,4�.�k<E�G30�IF234�IJH�k]HL03:,4�."I!H�05C��ÌG54^:,0�7�G37!HLSD034^I�STH<89E�x STHL0s85C�E�Gv� ä G34�X[E�03:,X[E�G�8�HLS;S,Eb6xQ23E�k<:,G303EN23Gb� ä H�0Ì05C�ED4�7�05I�7�05G�4LK�03C�EDX[4f6f7�S,E�G�03C!HL0�XcH�§�E�7�IYH?G3g1G503E�X·+(�ÌH<85CYSTH�0983CG3054�25E�G�05C�ED4�7F03I�7�0�K#254�XÎ:;05G�XY4�617�S,EÌ:,.p03C�EDI�25E�\1:,4�7�G�G305EbH�6fg�G50sH�05ED4�Kt03C!HL0ÌXY4�617FS;E<�H�S,S,4��D:,.�k?03C!HL0�X[4�617�S,ED034pI�234�89ENEb6c�D:,03C[03C�E�.�E9ð�0M8�H�ST897FS}HL03:,4�.��DCF:;S,E�03C�E?XY4�617FS;ENG03CJH�0DK�4�S,S,4�� :,0�HL23EpG305:;S,S�G3E�0503S,:,.�kY:,.1034[03C�EpI�23EN\]:,4<7�G?G303EvH�61glG50sHL03E�+?-/.c¨Jk�7�25Eª*<+ P<m��G37FI�I!4<G3E�05C!H�0?03CFE��©:,G?I�25E�G3E�.105Eb6·�D:,03C^H�G37J8�89E�G5G3:,4�.�à C 4�K�:,.�IF7�03Gv+?BDC�E�4<7�03IF7�0K#254�X�05C�E?S}HL0s85C ­�HL0MH�.1g�03:,XYED�D:,S,SJ�!E@05C�E?\�H�S,7�E�03C!HL0D�uHLG�I�25E�\1:,4�7�G5S;g[I�23ENG3E�.103Ev6034y:;0A�]g�����G34-®{8NH�.ã�JEª8�4�XYIFS;EN03:,.�kY05C�Eª8NH�ST897�STH�05:,4�.·4�KL®b±8�b±�à C ²X²®�DC�:,S;E���:,G�W4�23§1:,.�k@4<.�03C�E?8�H�ST897FS}HL03:,4�.�4LK4�b±�à C Õ'Ô ²�+�óñC�E�.Y05C�E�8�:;29897�:,0WC!H�GWG3E�0503S,Eb6[03CFEMSTH�0983C:,G�x�89S,4�83§<Eb6t� ä :,0Ì:,GÌ034<ST6p034�61:,G98�H�296�:,03G�8�7�2325E�.10D4�7�05I�7�0DH�.!6p054@I�234<I!H�k1H�05E��b±�à C Õ'Ô ²:,.�G305EbH�6 ä �1g�H?G5:,k�.!HLS].F4�0�G3C�4��D.�:,.p03C�EM6f:}HLk�29H�X>+JBDC�:,GÌ05Eb85C�.�:T�<7�ED4�Kt4�\�EN23STH�I�IF:;.FkH�G57!8�89ENG3G3:,4<.^4�Ku894<X���:,.!H�05:,4�.!HLS�8�H�ST897�STHL03:,4�.�GD:,G@8�HLS;S,Eb6 x IF:;IJE�S,:,.�:,.�k!�,+D�1:,.!89Ep:,0?C!H�G03CFE@E�ÌtEb890?4�K�G3C�4<2303EN.�:,.�kY05C�E@S,4�.�k<E�G30D05:,XYEM054�G3E�0503S,E��J:,0uHLS,S;4��DGDHpk�25EbH�05E�2M.17�X��JE�24�KÌ8�H�ST897FS}HL03:,4�.FGÌ034p�!E@894<XYI�S,E�05Eb6��1gYHp89:,2s897F:;0W:,.ªHAk�:,\�EN.Y03:,X[E�+�ÚD4<03:T89E��FC�4��WE�\�E�2v�

Page 27: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  P�e� ¯°¯° ®

­�:,k�7�25EZ*<+QP�mOw�HpI�:,IJE�S,:;.FEL� ò­ ò+®03CJH�0M05C�E�25E�:;G�.�4YS,4<.�k�E�2?H�G5:;.Fk�S,E�894<X���:,.!H�05:;4<.!H�St61E�G98923:,I�05:,4�.l4LK��DC!H�0�03C�Ep�DC�4<S;E89:,2s8�7�:,0D:;GM6f4�:,.�k!+-/0D:,GD7�G37!HLSt034p03C�:,.�§[4�K�03C�E?STH�0983CFE�GD:,.ªG57!85ClH�89:,29897�:,0MH�GD�JE�:,.�k�03CFE�25E�IJ4�G3:,054�23g4�KJ03C�EWG309H�03ED4LK!03CFEu89:,29897�:,0b+�BDC�ED8�HLS}8�7�STH�03:,4<.@�!EN:;.FkM:,XYI�S,E�X[E�.103Eb6��1g?03C�EM8�:;29897�:,0ÌH�0H�.1g�k<:;\<E�.c03:,XYEM6fE�I!EN.!61G?.�4�0D4<.�S,g�4�.[03C�E�8�:;29897�:,0MH�.J6Y05C�E?:,.�I�7�05GD034�:,0b�1��7F0MH�S,G344�.[03C�E?\�HLS;7FE�GD�!EN:;.Fk�C�ENS}6[:,.YSTHL0s85C�E�Gv+Ì�Ìg[XYEbHL.�GÌ4�K�03C�ENG3E@05C�E@8�H�ST897�STHL03:,4�.cH�0DH�.1gk�:,\<E�.l03:,X[E�8�H�.·�JE�:,.1�!7FE�.!89Eb6·�1glIJH�G30@8�HLST897�STH�05:;4<.�Gb+?-/.^H[I�:,I!ENS;:,.�EAS;:,§<E@03C!HL0?:;.¨!k<7�23E?*�+QP�ma03C�ED8�HLS}8�7�STH�03:,4<.���H�.!6?G54?03C�EW4�7�05I�7�0v��61E�IJE�.!61GW4�.FS;g?4<.�HW¨!.F:;05E�.17�X��JE�24�K�I!H�G50�:,.�IF7�03Gv�1:;.[03C�:,GD8�H�G5E@4�.[4�.�S,gp4�.�E<ò1��7�0D:,.Yk<E�.�E�29H�St03CFE�23E@XcHvg@�JE®8�gf8�S;ENGD:;.03CFEM89:,2s897�:,0Ì�D:,05C�05C�ED:,.�I�7�0�034@H?STHL0s85CZ6fE�I!EN.!61:,.�k@4<.�G54�XYE�K#7�.J8903:,4�.p4�Kt:,03G�4�7F03I�7�0v+-/.@05C!H�0�8�H�G5E�05C�E�G50sHL03EWC�E�ST6?:,.@03CFEÌSTH�0s85C@:,G�H�.�H<8�897�X�7�STHL03:,4�.�4�K!:,.1K#4<23XcH�03:,4<.MH��J4�7�003CFE��DC�4<S,EÌI!H�G50�C�:,G3034<23g?4�Kt8�H�ST897�STHL03:,4�.�GtIJE�2«K#4�25XYEb6?�1g?03CFEu89:,29897�:,0b��HL.!6A03C�EÌ4<7�03IF7�08�HL.¥61ENI!E�.J6^4�.^H�.^H�25��:,0329H�23:,S,gcSTH�23k<E�.17�X��JE�2?4�KWI!H�G50@:,.�I�7�05Gb+pBDC�E�25E�:;G?.�4c�DHvg4�KWk�:,\1:;.FkªHY8�4�.1\�E�.F:;EN.]0@HL.!6>8�4�.1\1:;.J89:,.�kªH<8�894�7F.]0?4LKuG57!85C¥89:,29897�:,03G@:,.l05E�23X[G?4�KuHG37J8�89E�G5G3:,4�.·4�K�:;.J61E�IJE�.!61E�.10?894�X���:,.!HL03:,4�.JH�S!8�HLST897�STH�05:;4<.�Gb+BDC�EYIF234�89E�G5G�4�K�61E�G5:,k�.�:,.�k>HyG3Ev��7FE�.103:TH�SD89:,2s897F:;0�H�IFI!EbHL23Gp034·�!E[G3:,k�.F:�¨t8�H�.103S,gC!HL2s61E�2W03CJH�.Y05C!H�0W4�K(6fE�G3:,k�.F:;.Fk�H�8�4�X���:,.!HL03:,4�.!HLS�4<.�E�w�E�\<E�.Y:,.�03CFEMG3:,X[I�S,EM8�H�G5EM4�KHAI�:,I!E�S,:,.�E�03C�E�25E@:,GuHL.ªH<6�61:,03:,4�.JH�S!894<.!89E�25.���05C!H�0D4LK�XªHL§]:,.�k?G57�23E?03CJH�0D03CFEM:,.�I�7�05G03CJH�0�HL2325:;\<E�054�k<E�03C�EN2®HL0@HY894<XYIJ4�.�E�.10MHL23Ep03C�4<G3EAK#4�2?03CFE�G9H�XYE@8�HLST897�STH�05:;4<.�òtH�.!6XY4<23E@k<E�.�E�29H�S,S,gc:;0�:,GM.�4<0�IJ4�G5G3:,��S,E@054ªG5E�I!HL2sH�05E�03C�E�894<.!89E�25.^4�K�k<E�0305:;.FkY03CFE�05:;X[E23:,k<C]0WK�234�X03C!HL0D4�KÌk�E�0503:,.�k�05C�E@\�H�S,7�E�23:,k�C10v+�­F4�23057�.!HL03E�S,g1�103C�E�25E�:,GMHpSTH�25k�E�2sH�.Fk�E4�K�89:,2s8�7�:,03G�K#4�2��DC�:T85C�:,0(:,GÌIJ4�G5G3:,��S,ED034A23EbHLG34�.�05C!H�0WH�6fE�G3:,k�.��DCF:}85C��W4�7�ST6A��4<23§�H�GH@894<X���:,.!H�05:,4�.!HLS]89:,2s8�7�:,0��W4�7�ST6p�W4�25§�X[4�23ED4<2ÌS,E�G3GW03CFEMGsHLXYED�DHvgZHLG�HAG3Eb�<7�E�.105:}HLS89:,2s8�7�:,0b+�#��b��X� ���XÐæ�¦����±�©e�'Ñe�!�'�BDC�E�G5Eb�<7�E�.103:TH�SD89:,2s8�7�:,03G@�D:,03C·�DC�:T85C^��E�H�25EY894�.J89E�23.FEb6~H�23E�05C�4�G5EYH��J4�7�0A�DC�:T83C:,0?:;G?G54�7�.!6y034y23EbHLG34�.·:,.>E�ðFH<8903S,g·03C�EpGsHLXYEp�uHvglHLG@03C�4<G3E�:,.lI�25E�\1:,4�7�G@G5Eb8905:;4<.�Gb+ó%C!HL0�05C!H�0WXYEvH�.�GÌ:,GÌ05C!H�0W03CFE®HLS,k�E���29H@:,GÌk<4�:,.�k@054��JEM05C�E?GsHLXYEMH�GW:,0��DH�GW:,.�I�23E�â\1:,4�7�GÌG5Eb8905:;4<.�Gb�F��7�0W03C�E?:,.103E�25I�23EN0sH�05:,4�.Y4LK�03C�E?G5g]X��J4�S,G��D:,S,S�C!Hv\�E�034p�!E?61:rÌ�EN23E�.10%w03CFE�\�H�23:THL��S,E�G?S;:,§<E¾­p��® HL.!6·G34l4<.>�D:,S,S�23E�IF23E�G5E�.10�G3Eb�<7�E�.105:}HLSu8�:;29897�:,03Gvò�HL.!6l05C�E894<X���:,.�:,.�k�K#4�25XYGW�D:;S,SJ�!Ep894�2523E�G5I!4<.!61:,.�k�S,gc61:rÌ�E�25E�.10b+BDC�:,.�§Y4LK�H�89:,2s897�:,0?H�GD23ENS}HL03:,.�k�.�4<0M\�HLS;7FE�Gb�1��7F0M03:,X[E9âåG5Eb�<7�E�.!8�E�GM4LK \�HLS,7�E�Gb+W�03:,X[E�G5Eb�<7�E�.!8�EY:,G(j97FG30@HpK#7F.!8903:,4<.cK#234<XzH�.l:,.!6fE9ð>�DC�:T85Cl23ENI�23E�G5E�.103Gp03C�E�05:,XYE@H�0�DC�:T85C>HpG3:,k<.!H�S�:;G�4���G5E�23\<Eb6y034Y05C�Ep\�H�S,7�E?03C!HL0M05C�E@G3:,k<.!H�S�C!H�G?H�0M05C!H�0�03:,XYE<+�ó^E�D:,S,S]7FG3ED03CFE�:,.103E�k<E�23G�034?23E�IF23E�G5E�.10DG37!8�8�E�G3G5:;\<EM05:;X[E�G(HL0��DC�:T83C�H�G3:,k�.JH�S1:,G 85C!HL.�k�Ev6!w

Page 28: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

P�i <>= ?A@BDC%?;EGFIHA@�@�J�C%?

H[G3:,k�.JH�S�25E�I�25E�G3E�.105:;.Fk¥Hc��4]4<S,EbH�.��J4<.�E�4�K�0/g1IJE²��z1z }/�t:,G@H&K#7�.!8�03:,4�.-��ðûõ���H�.!64�.FEl23E�IF23E�G5E�.103:,.�k H·I!HL:,2Y4�K���414�S,EbH�.FGb�D4<.�El4�K@0/g1IJE��³��z%z3}8�|��z1z }´�3�D:,GYH·K#7�.J8903:,4�.�Ëð ±�õjd�õD²N��05C!H�0�:,GYHyI!H�:,2«âå\�HLS;7FEb6·K#7F.!8903:,4<.���HL.!6 êAzvïYHyI!H�:,2�4�K�K#7�.!8�03:,4�.�Gv+�14[K#4<2�E�ðFHLXYI�S,E@054lGsHvgy03C!HL0YêAzvïªw���z%z3}Aðµ��z1z }Ì:,G?034yGsHvgl05C!H�0@:,.·03C�:,G?XY4�61ENS(:,023ENI�23E�G5E�.103GYHc25E�STH�05:;4<.>�JE�0/�WE�E�.~H�K�7�.!8905:;4<.>4LKu0/g1IJE��¦ðûõzHL.!6>HL.�4�05C�E�2@4LKu05C�EGsHLXYED0/g1IJE���H�.!6&034pGsHvg�05C!H�0D¶3zLì8wP�·��z1z }��|��z1z }���ð¸��z1z }t:,GW034pGsHvgp03C!HL0�:,0W23E�IF23E�G5E�.103GHp23ENS}HL03:,4�.[�!EN0/��E�EN.>HAK#7�.!8�03:,4�.[4�KÌ0/g1I!E<��ðø±�õ¹diõD²DH�.J6Y4<.�E?4�K�0/g]IJE���ðøõ�+ó%C�:T85Cã25E�STH�03:,4<.^G3C�4<7�ST6>¶�z�ìc�JEª:,.^05C�:,G�X[4f6fE�S³º�-/0pG3C�4<7�ST6^25E�STH�03EcHlIJH�:,2@4�K��4]4<S,EbH�.�Gp034y03C�E�:,2pS,4�k�:T8�HLS�xQE9ð!89S,7�G3:,\<EY4�2v�,�ÌH�.!6·:,0@G5C�4�7�ST6"614l03CF:;G�H�0AEbH�85Cã05:,XYE�+�1:,XY:,STH�25S,g��(HyG3Ev��7FE�.103:TH�SpêAzvï�G3CF4�7�ST6t�WH�0pEbH�85C%:,.�G50sH�.10v�Ì23ENS}HL03ElH^��4]4<S,EbH�."034^:,03G.�E�k1H�05:;4<.�+ntE�0"»�� �s­'� �Ì�JE�05C�Ep23E�STH�05:,4�.·03C!HL0«­©25E�I�23ENG3E�.103Gp:,.l03CFE�G3Eb�<7�E�.105:}HLSÌXY4�61ENSå�JH�.!6¼ � � ­'� �u�JEc03C�El25E�STH�05:;4<.ã05C!H�0p:,0�23E�I�25E�G3EN.]05Eb6ñ:;."03C�E·894�X���:,.!HL03:,4�.JH�S�XY4�61E�S/��05C�E�.I�254�\]:T61Ev6�­ C!H�G�.�4�:,.103E�25.!H�S�G30sHL03E��J�WE?�uHL.]0eÃX»�� �s­'� �-ÈñÅªÆ  ¤G5+�à C ¼ � �s­$� �-È C �JH�.!6�WE�G9HvgY05C!H�0MHL.]g¯­ K#4�2W�DC�:T85Cc03C�:,GD:,GD03257�E@:,GMè9ïX~vï3ç�},ç9è9è�+

ÚD4<03Ep03C!HL0M:,.c03C�EpG3Eb�<7�EN.]05:TH�S�XY4�61E�S�H�89:,2s897F:;0?C!HLG�H&G3:,.�k�S,E?03:,X[E�G5Eb�<7�E�.!8�E�:;.EbH<83C~4LK�:,03GY614<XªHL:;.^H�.J6ã29H�.�k<E�+~�14!� K#4�2pE9ð!H�X[I�S,E��ÌH·G3Eb�<7�EN.]05:TH�S"¶�z�ìl25E�STH�05E�GªHG3Ev��7FE�.!89Ep4�K�I!H�:,23GD4LK ��414�S,EbH�.FGD034YHpG3Ev��7FE�.!89Ep4�KÌ�Ì414�S,EbHL.�Gb+�#��b���¢ ÿå�¤ÐÏ�D�#�����O�_�#Ñ<½e�R���O��¥X¥X�'¥D�!�#ÐÏ�y�#�����O�X�#Ñï��ÑeÎÝ���ï�#Ñ�MHv\1:,.�k^61Eb89:T61Ev6~�DC!H�0�05C�El:,.103E�25I�23EN0sH�05:,4�.~4�K@G34<XYEc89:,2s897�:,05GY�D:,S,S��JEl:,.ã05C�ElG3E�â�<7�E�.103:THLS(X[4�61E�S/�J�DC!H�0?G3CF4�7�ST6c05C�E�:,.]05E�23IF23E�09H�03:,4<.>4LKu894�X[I!4<G3:,03:,4<.l�!E9º%�D0?S,EbH�G50K#4<2�G30sHL03E�S,E�G5Gl89:,2s897�:,05GY:,0�:,GYH�S,23EbH<61g 6fE�03E�25XY:,.�Eb6o�ÌK�4�2�:áK8­zH�.J6Û®©HL23ElG50sH�05E�S,E�G3G�WEª89E�250sHL:;.FS;g"�uHL.108­ ò�®�054>�JEcG309H�03ENS;ENG3Gb�WG54>05C�Ec4�.�S,g^IJ4�G3G5:,��:,S;:,0/g·:,G�054¥61E�¨!.�E»�� �s­ ò ®�� �u054c�!E=»�� �s­'� �tò9»�� �s®�� �ÌK#4<2�k<E�.�E�29H�S�­H�.!6�®W+Y�1:,XY:,STH�25S;g<��03CFE�:,.1\�E�25G3E�4LKaHG3Ev��7FE�.103:TH�St89:,2s897F:;0�:,GÌ:,.103E�25I�23EN03Eb6[H�G�03C�ED25E�STH�05:;4<.!H�SJ894�.1\�EN23G3ED4LK�:,05GÌ:,.]05E�23IF23E�09H�03:,4<.�w»�� �s­yâ�Ô8� �/³>»�� �s­'� ��â'Ôb��H�.!6[G54YH�S,G34AK#4�2W23ENI!EbHL03Eb6·894<XYIJ4�G3:,05:;4<.�+-/.c4�2s6fE�2M054�09H�S,§YH��J4�7�0D05C�E?:,.]05E�23IF23E�09H�03:,4<.ª4LKÌI!H�29H�S,S,E�S�8�4�XYIJ4�G5:,03:,4�.��<�WE�.FE�Eb6034y�!EYHL��S,E�034l25E�STH�03EcH[I!H�:,2@4LKuG5Eb�<7�E�.!89ENGY034y03C�E�4<�]\1:,4�7FG�G5Eb�<7�E�.!8�El4�KDI!H�:,25G@034�DC�:T85C%:,0ª894<2325E�G3IJ4�.!6fG%w~�WE¥HLS;25EbH�6fgãC!Hv\<E¥H G37�:,0sHL��S,El23ENS}HL03:,4�.��?¡�¢Q£ 61E9¨J.�Eb6 �1g�5Ã���È���¡�¢Q£bÄ�ÅªÆ  ¤G5+9�5ÃPCw��È9C��#³�Ä]C�H�.J6Y�WE@61E9¨!.FE<»�� �F�s­���®��F� �A³O� »�� �s­'� �E�,»�� �s®�� �F�,ù�¡�¢Q£K#4<2Yk�EN.�E�2sHLSD­hHL.!6¦®W+Î-/.%k�:,\1:,.�kãH�.%:,.103EN23I�25E�0sHL03:,4�.~K�4�2 gDL>S �a��El7FG3E"ïåì�êñ034894<.]\<E�230MH®03:,XYE9â/G3Ev��7FE�.!89E?4�K4ÒFâ/G3Ev��7FE�.!89E�G�:,.]054�H�.¡ÒFâåG5Eb�<7�E�.!8�E@4�K�05:;X[E9â/G3Eb�<7�E�.J89E�Gb+H�.J6Y61E9¨J.�E"»�� � g×L>S ­'� �/³ä± gDL>S »�� �s­'� �5²Oùaïåì�ê&K#4<2�k<E�.�E�29H�S�­p+�BDC�E?:,.]05E�23IF23E�09H�03:,4<.Y4�K03CFE�4<03C�EN2�894<X���:,.�:,.�k�K#4�25XYG�K#4�S,S,4��DG�K#254�X�05C�E�G3E<+�#��b��5ç ¾Ø��¥X�¨èÜ�4ÑRÎÝ�>�I�'�O��14�KåHL2 HLS,S]05C�EDG3Ev��7FE�.103:TH�S!8�:;29897�:,03G���EM8�HL.�09H�S,§�HL�!4<7�0�C!Hv\�EW�!ENE�.�G309H�03ENS;ENG3GW�!Eb8NH�7�G5EH�S,S�4<7�2D894�X���:,.�:,.�kaK#4�25XYG�I�25E�G3E�25\�E?G309H�05E�S,E�G3G5.�E�G3Gv+D-/.�4�2961E�2W034p0sHLS;§�H��J4�7F0�89:,2s897F:;05G�D:,03C[G30sHL03E�:;0W�D:,S,S��!E?E�.F4�7�k<C�K#4<2�05C�EMI�25E�G3EN.]0�034@:,.103254�617!89E?4�.FEM.�E�� I�25:;X[:,03:,\�E�wtH

Page 29: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  P�mæ�ç�}�~3¬����D25:;0503E�. ­ª+�-/05GMX[EbH�.�:,.�kA:;.[03C�EAG3Eb�<7�E�.105:}HLStXY4�61E�St:,GD05C�E?23E�STH�05:,4�.

ÃD­�È�Ūƿ ¤G3+�à C ³�È C Õ'Ô�DC�:T85CYG9Hvg]GW03CJH�0D61E�STHvg�25E�STH�05E�GD0/��4AG3:,k�.!HLS,G�:áK�03CFEM2sHL.�k�E�G3:,k�.JH�SJ:;GDH�0WH�S,S!05:,XYE�GÌ05C�EGsHLXYE?H�GD03CFE®6f4�XªHL:,.�G3:,k�.!HLStC!H�6[�JE�E�.lE�ðFH<8903S,g[4�.�E?03:,X[EDG303ENIlEbH�25S,:;EN2b+BDC�ED:,.1\�E�25G3EM4LKoH?61ENS}Hvg1��HL.ý~Lê1ï墷Àsæ�ç�}�~ ¬?�D25:,0303EN.Y4�K�894<7�23G5E5­¯â�Ô���:,GÌH�S,G54®H®7�G3E9K�7�S894<.!89E�I�0v+l-/0@25E�I�25E�G3E�.105GY03CFE�23E�STH�05:,4�.�ÃX­¯â'Ô�È ÅªÆ  ¤G3+�ÃPC«³ÜÈ9C â'Ô �DC�:T85C^GsHvg1G03CJH�0?:,0M23ENS}HL03E�GA0/��4cG3:,k<.!H�S,GM:áK�05C�Ep2sH�.Fk�E�G3:,k<.!H�S�:;G@HL0®HLS,S(05:,XYE�G�03C�EpGsHLXYE�HLG�05C�E614<XªH�:,.�G5:;k<.!H�SJ�W4�7�ST6[�!E?E9ð!H<8903S,gY4<.�E?03:,XYE�G305E�IlSTH�05E�2b+-�K�05C�E�G3Ey23E�STH�05:,4�.�G�H�25Eª054^�!Ec:,XYIFS;ENX�E�.103Eb6·�1gã89:,2s8�7�:,03G�0sHL§1:;.Fk>:,.�I�7F03GAK#234<X03CFE�:,2®6f4�XªHL:,.�GMH�.!6y23EN037�25.�:,.�kc4�7�05I�7�03GA:;.y03C�E�:,2?2sHL.�k�ENGb��03C�E�.q­{:;GÌj97FG30@H�STH�0985C�w03CFE�4�7�05I�7�0�H K#03E�2?EbH<85Cã89S,4f85§l:,G@05C�E�GsHLXYE�HLG@03CFE�:;.FI�7�0?:,XYX�Eb61:THL03E�S,gYIF23Eb89Ev61:,.�k:,0b+~BDC�El894<2325E�G3IJ4�.!6f:;.Fkã:,.103E�25I�23E�09H�05:;4<.~4�K"­¯â�ÔYHLGYH^89:,2s897�:,0�:,GYH�S,054�k�EN03C�E�2�S,E�G5G:,XYI�S,E�X[E�.10sHL��S,E�wJ:;0���4<7�ST6�C!Hv\<EM034pI�25Eb61:T890��9ç�{1z�ìsç�EvH�85Cª89S,4�85§Y�DC!HL0�:,05G�:,.�I�7F0��DH�Gk�4<:,.�k�054��JE�~+{9ï«çNì@05C!H�0M8�S;4�85§t+VW4�.1\�EN23G3ENS;g1��:áK!05C�ED23E�STHL03:,4�.�GÌHL23EW034?�!EW:,XYI�S,E�X[E�.103Eb6��1g�89:,29897�:,03G�0sHL§1:;.FkM:,.�I�7�05GK#254�X 03C�E�:,2t29H�.�k<E�G(HL.!6�23E�057�23.�:,.�k�4�7�05I�7�05G�:,.?03C�E�:,2�614<XªHL:;.FGb�,­¯â'Ô�:,G�HWS}HL0s85C���H�.J6M:,0:,G�­ 03C!HL0(�JEb894<XYE�G�7�.�:,XYI�S,E�X[E�.10sHL��S,E�+�ó%CJH�0�03C�:,GÌX[EbH�.FG�:,G�03C!HL0Ì:áK�H�.pE9ð�I�23ENG3G3:,4<.:,.!89S,7!61:,.�k�­z4�2D­¯â'Ô@��E�25EY054ª�JE�:,XYI�S,E�X�EN.]05Eb6c�1gl052sH�.FG3STH�05:;.Fkª:,0?:,.1034ªHc89:,29897�:,003CFE�23E?�W4�7�ST6A�!E�03C�E�G5E�H<6�61:,03:,4�.JH�S!894<.�G3052sHL:;.105G�4<.�03C�E?83CF4�:T89ED4�K(6f:;25Eb8905:;4<.pK#4�2�EbH�85C4�K�03C�E?G5:;k<.!H�SJ�J4��DGb�103CJH�0MH�S,SP­OH�.!6�­¯â�ÔD:,.c03C�E?E9ð�I�25E�G3G5:;4<.l�JE�:,X[I�S,E�X�E�.103Eb6p05C�E23:,k<C]0W�DHvgªH�254�7�.J6t+�14cS,4�.�kcH�G?03C�Ep03:,X[E9âåG5Eb�<7�E�.!8�E�G@:,.>05C�EpXY4�61E�SÌH�25E@K�7�.!8905:;4<.�G�K#234<XzH�S,S�4�K�05C�E:,.103E�k<E�23Gv�1I!4<G3:,03:,\�E?H�.!6p.FE�k]HL03:,\�E��<G34p03CJH�0W03C�E�25E?:;G�.�4@¨J23G30W03:,X[EuHL.!6�.�4AS}HLG30Ì05:,XYE��g�4<7 8�HL.~G3C�4���05C!H�0�­Oò.­¯â'Ô�³ûü8³Á­¯â�Ô?ò#­ª+"BDC�E�25El:,GZHyIJE�2/K#Ev890YG5g]X[XYE�0523g�JE�0/��ENE�.=­ HL.!6X­¯â�ÔDH�GÌIF23E�G5E�.103Eb6[C�E�25E�w�g�4<7�G5C�4�7FS}6p.F4�0Ì05C�:,.�§@4�KtE�:,03CFE�2�4LK�05C�E�XH�G?�JE�:,.�kcXY4<23E@25EbH�S,:,G305:}8L�!4<2?XY4�25E@:,XYI�S,E�X[E�.10sHL��S,EM03CJH�.·03C�Ep4�05C�E�2b+p-/.!6fE�Eb6t�t4<.�E4�K�03C�ENXO:,G�j97�G50D03C�EA4�03CFE�2D4�.�E?G5E�E�.l05C�E@4�05C�E�2D�DHvgªHL234�7F.!6t+��\�EN.%03C�4<7�k�C)­�XcH�§<E�G�.F4^G3E�.�G5E>:,.~03CFE>894�X��F:;.JH�03:,4<.!H�SÌX[4�61E�S/�Ì25EbH�G54�.�:,.�kH��J4�7F0M89:,2s897�:,05GM03CJH�0�8�4�.10sHL:;. ­O8�HL.l�!Ep614�.�EA:;.cE9ð!H<8903S,gY05C�E@G9H�XYE?�DHvgYH�G?H��J4�7�0894<X���:,.!H�05:;4<.!H�SJ89:,2s897�:,05Gb+Ì��.1gª8�HLS}8�7�STH�03:,4<.Y�D:,03ClHA\�H�23:THL��S,E«­�:,.c:,0b��H�8�HLST897�STH�05:;4<.03CJH�0@6141E�G?.�4�0@61ENI!E�.J6·4�.·03C�EpI!H�2503:T897�STHL2�IF234�IJE�2503:,E�G@4LKÀ­p��8NH�.·�!E�:,.�G50sH�.105:}HL03Eb6�1gYI�7F0303:,.�kX­©K#4�2�­p+Ì­�4<2�E�ðFHLXYI�S,E?�D4�25.�E�2v� GD257�S,E?03C!HL0D:�K$�s­���­'�fò1®å³Ë®·ò�­�05C�E�.±X± W�dvU ­¿²�ùª~9£!ì>â'Ô²Wò dvjId ®�³ d�j�d ± W�dvU ­�ò>®4²®:;G@H[I�254�IJE�230/g·4�KD03C�EY8�4�X���:,.�:,.�kpK#4<23X[GS,:,§�E@894�X[I!4<G3:,03:,4<.YH�.!6[23Ev617!89Ep23:,k�C10v�!H�.J6Y.F4�0D4�K�­ 4�2e®W+DVW4�.�G5Eb�<7�E�.103S,gc:,0D:;GD05C�E8�HLG3Ep03C!HL0�:áKL� ­7�¦­<�tò,®�³ñ®^ò]­O03C�EN.�±X± W�d�U ­¾²�ùª~�£!ì>â�Ô�²Wò d�j�d ®�³ d�j�d ± W�dvU ­ ò ®�²e³d�j�d ± Q�Z,j ­ ò�®�²�+�aKu894�7F23G3Ep03CFE�23E�H�25E@03C�:,.�k<GD03C!HL0�HL23E@05237�E�HL�!4<7�0$­��DC�:T83Cl614Y6fE�I!EN.!6l4<.l:,03G�JE�:,.�k>HcI!HL2305:}8�7�STH�2�89:,29897�:,0b��K#4<2@E9ð!H�X[I�S,E�05C!H�0 W�d�U ­�ò W�d�U ­¯â�Ôª³ g×L>S ü9����7�0Ag�4�7G3CF4�7�ST6·H�S,�uHvg1G�§�E�E�I^:,.·XY:,.!6[03CJH�0@:,0?:,G®HLS,G34ªH[IJE�2/K�Eb8903S,g^.�4<23XcH�S(8�4�XYIJ4�.FE�.10M4�K03CFED§]:,.!6A03CJH�0Ì�WEDC!Hv\�ED�JE�E�.�25EbH�G54�.�:,.�kpH��J4�7�0�HLS,SfHLS,4�.�kJ+t-/0Ì:,G!j97�G50�03C�:,GÌG5:;X[I�S,:T89:,0/g03CJH�0DXªHL§�E�GW03CFE®HLI�I�254]H�85CcI�25E�G3E�.105Eb6lCFE�23E@G54�7�G3E�K#7�S/+

Page 30: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

P�q <>= ?A@BDC%?;EGFIHA@�@�J�C%?

��.�E�4LKÌ03C�Ep23E�XcH�25§�H���S,E?I�234<I!EN2303:,E�G?4LK�­O:,G��<7�:,03EAC�4���I!4<S,g]X[4�25I�C�:T8D:,0D:,G%w5­8�HL.%�!Ey7�G3Eb6 034^23ENI�23E�G5E�.10>H·7�.�:,0Y61ENS}Hvg~H�I�IFS;:,Eb6"054^G3:,k�.!HLS,G�4LKAHL.1gã0/g1I!E<�MH�.!603CFE�05:;k<C103E�G50M0/g1I!E�âåG5I!Eb8�:�¨t8�H�05:;4<.^03C!HL0�8�HL.>�JE@k<:;\<E�.l:,GM05C!H�0D­öwOü!ðöü9+?xc4<23E�4�\<E�2­ýù¨Òª³ä± gDL>S ­¾²1ùAÒ��NG34?03C!HL0�K#4�2�E9ð!H�XYIFS;Ee~�£A}�ò�­Þ³Þ~9£¨}�ò gDL>S ­Þ³_� ­K� gDL>S ­<�bòX~9£¨}T+BDC�:,G@X[EbH�.�GA03C!HL0@E�\�EN.ã03CF4�7�k<C^��E�XcHvgl�!E�09H�S,§1:,.�klH��J4�7�0�8�:;29897�:,0�894�X[I!4<.�E�.103G03CJH�0M�D:,S,St�JE�25EbH�S,:,��Eb6lHLGMSTH�0985C�E�G?��Ep614�.�4�0pê!ç9ç9æc034[�!Ep894�.!8�E�23.�Ev6·�D:;05ClE9ð!H�8�03S,g�DC!HL0(0/g1IJED4�KtG3:,k�.JH�S,G�03C�E�gAC!H�.!6fS;E<�sj97FG30��D:,03Cp03C�EM61ENS}Hvg1:,.�k?I�254�IJE�2305:;ENGb+�BDC�EDE�ÌtEb890:,G�Hc89S,EbH�.^G5E�I!HL2sH�05:,4�.^4�KM0/�W4l894�.J89E�23.FG%w�05C!H�0@4LKuXcH�§1:,.�kYG57�23E[03C!HL0?03C�Ec894�2523Eb890\�H�S,7�ENGMH�23E?C!HL.!61S,Eb6t��HL.!6[03C!HL0D4�K�E�.�G37F23:,.�kY05C!H�0D05C�E�gcH�2325:,\�E@H�0D05C�E?23:,k�C10W03:,XYE�Gv+�#��b��5þ ���XÐæ��¥X�'���-ÑR�����­F4�2MH�.1g�G50sH�05E�S,E�G3G@89:,29897�:,0e­�g<4�7ª8NH�.cG3C�4�� 03CJH�0e­Ë³�­Éùr­ª+�-/.c03C�E�G5E@.�4<03E�G?H�.1g89:,2s8�7�:,0�­�K�4�2��DC�:T85C�­ ³ ­�ù6­d:,GYGsHL:T6ã054^�!E ïå¢�|�ç�};ç�èsè�+ �{03:,X[E�S,E�G3GY89:,29897�:,0:,Gc4�.�E·03C!HL0c:;X[I�S,E�X�E�.103G�05C�E·GsH�X[El23ENS}HL03:,4�. .�4��zHLGª:,0c61:T6%:,.%05C�E>IJH�G30v�@H�.!6G3:,X[:;STHL23S,g�05C!H�0?:,0M�D:,S,S�:,.l05C�EAK#7�037F23E�+DÚa4�03:T89Ep03CJH�0M05:,XYE�S,E�G5G3.�E�G5G@:,G�êAz ïM03CFE�GsH�X[EH�GAG30sHL03E�S,E�G5G3.�ENG3G%w ­z:,GpXY4<G30@61E9¨!.F:;05E�S,g>.F4�0@G50sH�05E�S,E�G3Gv�W:;.J61E�Eb6 :;0?05C�EYE�G5G3E�.J89El4�KG309H�05E9K#7�S,.�E�G5G+�(ÚDE�\<E�2305C�E�S,E�G3G�G3:,.!89E'­Ù³>­�â�Ô�ò¦­ ò¦­ä³�­Ûù�­ :,0Ì:,G�:,XYX[Eb61:THv03E K#234<X03CFE®6fE9¨!.�:,03:,4<.ª05C!H�05­�:,GD03:,X[E�S,E�G3Gv+Â�7�G50ÌH�G(HWG50sHL03E�S,E�G5G 8�:;29897�:,0�:,G�4�.�E�03CJH�0(6f4]ENG(.F4�0t�JE�C!Hv\�EW61:rÌ�E�25E�.103S,g@H�0�H�.1gM05:;X[EH�8N894�2961:,.�kl034c05C�EYC�:,G5034�25g>4LKu:,05G@:,.�I�7�05Gb��G34>H[03:,X[E�S,E�G3G@89:,2s8�7�:,0@:,G@4�.�E�05C!H�0p6141E�G.�4<0��JE�C!Hv\<E 6f:�ÌtE�25E�.103S,g^4�.~H�8�894<7�.10�4�KM05C�ElH���G54�S,7�03E[03:,XYE<+l�{G309H�05E�S,E�G3GY89:,29897�:,0:,G�.FEb89E�G5GsH�25:,S;g"03:,XYENS;ENG3Gb+·��.ãE9ð!H�X[I�S,E�4�K�Hy03:,XYE�K#7�S�89:,29897�:,0��W4�7FS}6 �!E[4�.�Ec05C!H�0k�EN.�E�2sHL03Eb6yH@G5:;k<.!H�SJ:,.!61:T8�HL03:,.�k@05:;X[ED��E�254!+Ì��61:rÌtE�23E�.10�G34�250D4�K�E9ð!HLXYI�S,ED�W4�7�ST6��JE

� K#4�2D�DCF:}85CiÃ<�¦È&:áK H�.J6Y4<.�S,gY:áK� �G3+�à ê C�³ËÈ ê Cs+�BDC�:,GM89:,2s897�:,0�:;GD.F4�0MH�.J83CF4�23Ev6lH�0HAG3:,.�k�S,E?:,.�G309H�.10W�!Eb8NH�7�G5E���ùy­¾êe³:���1��7�0D.FE�\�E�2503C�ENS;ENG3G<�Î:;GW.�4<0D03:,XYE�S,E�G5G�G5:,.!89E��ùr­ ;³Ã�&+��.�E^4�K�05C�E·23EbHLG34�.FGl03C!HL0Y05:;X[E�S,E�G3G5.�E�G5Gl:,GY:,.103E�25E�G305:;.Fk :,Gc03CJH�0cE9ð!H�8905S,g S,:,§�EG309H�05E�S,E�G3G5.�E�G3Gc:,0p:;G�IF23E�G5E�23\<Eb6~�1gãH�S,SD4�KM05C�El89:,2s897F:;0Y8�4�.�G503237J89034<23Gc03C!HL0��WEcC!Hv\�EG3ENE�.lG34pK/H�2b+�#��b��8\ Ä�¥X��k��XÑ���14AKåH�2W�WE�CJHv\�EM�DHvg1GD4�K�09H�S,§1:;.Fk�4<.�S,gZHL�!4<7�0M89:,2s897F:;05GD:,.Y�DC�:T85CªHLS;St4LK�03C�EAG3Eb�<7�E�.fâ03:THLS(894<XYIJ4�.�E�.105GM4�IJE�29H�03E�H�0�03C�EpGsHLXYE?2sHL03E�+?�14<XYE�05:;X[E�GW:;0�I�234�\<E�G?.�Eb89ENG3GsHL23g·03423EvH�G34<.%H��J4�7�0Y89:,29897�:,03G�:,.~�DC�:T85CãG34<XYEc894�X[I!4<.�E�.103G�4<I!E�29H�05E HL0Y61:rÌ�EN23E�.10Y29H�05E�GK#254�X 4<03C�EN23Gb+�-/.�IJH�2305:T897�STH�2�03CFE�23E?H�23ED\�HL23:,4�7FG 8�4�XYX[4�.?03Ev83CF.�:T��7FE�G��DCF:}85C�25Eb�<7�:,23EG34<XYEDI!HL2305GD4�K Hp89:,2s8�7�:,0�054��JE@89S,4f85§<Eb6cH�0W0/�D:}8�E�05C�E?2sHL03EM4LK(4<03C�E�2DIJH�2305Gb�14<2DG34�X[EG37J83CyG3XªHLS,S�X�7�S,03:,I�S,E�+-/.l4�2961E�2�034�0sHLS,§ªH��J4�7F0MG37J83C·89:,2s897�:,05Gb�J��EA7�G3E�Hp.FE���I�23:,X[:;05:,\�EM25E�STH�05:;4<.c£I~L¢Tì61E9¨J.�Eb6~�1g�Ã�£O~�¢íì«È ÅªÆ  ¤G5+�È9C8³0�7à ê CE��à ê C Õ'Ô ��+~��E9¨!.�ElH·Pvâ/G3S,4���\�EN23G3:,4<.ã4�K­Î�1g Q�a Y#� ­ñ³Å�s­���­$�-ùa£I~L¢Tì â�Ô +?BDC�EpE�Ì�Ev890@:,G?03C!HL0 Q�a Y#� ­�G3E�I!HL2sHL03E�G@05C�Ep03:,XYE9âG3Ev��7FE�.!89E�G�:,.l:,05G®6f4�XªHL:,. HL.!6y2sH�.Fk�EpEbH�85C^:,.1034Y0/�W4c:,.]05E�23S,EbHv\<Eb6yG3Eb�<7�E�.J89E�Gb�WH�.!6

Page 31: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  P�w

Æ ÆÇ �� ¯°¯° ® ¯°¯°

� ¯°¯° ® ¯°¯° � ÇÈÈ

� ¯°¯° ¯°¯° ® ¯°¯° ¯°¯°­�:,k<7�23E�*�+QP<qOw Q�a Y#� ±8� òR­ ò+® ò,­¾²MHL.!6�� òR­¾êDò&® ò­¾ê

IJE�2/K#4<23X[GÌ03C�E?8�H�ST897FS}HL03:,4�.�61E�G98923:,�JEb6[�1g¾­ñ4�.�EbH<85CY4�Kt03CFEMI!HL:;25GÌ4�K(8�4�2325E�G3IJ4�.J61:,.�kG37F��G3Eb�<7�EN.!89E�Gv+-/0M:,G�H&XªHL0303EN2D4�K�I�25414�KÌ03C!HL0?:�K�­Î:,GMH�.lE�ðfIF23E�G5G3:,4�.·:,.]\<4�S,\1:,.�k�4<.�S,gY05C�EZ8�4�X�â��:,.�:,.�kpK#4<23X[G�:,.103254f6f7!89Eb6yG34pKåHL2�HL.!6�­°H�.!6 G30sHL03E�S,E�G5G@894�X[I!4<.�E�.103Gv��03CFE�. Q�a Y#� ­:,GD03C�EAGsH�X[E�HLGM03CFE�89:,2s897F:;0D4<��0sHL:,.�Eb6[�1gY23ENI�STH�89:,.�kYHLS;S�4�8�897�2523E�.!8�E�G@4�K3­�:,.i­��1g­¾ê<+Ì­�4<2DE9ð!H�X[I�S,E Q�a Y#� ­Ù³o­¾ê<��H�.!6 Q�a Y#� ±/� ò­©ò+® ò,­¾²(³Ã�ñò­¾êDò9® ò­¾ê<+�BDC�EI�254]4LKÌ:;GW�1gYG503237J89037�29H�S�:,.!617!8�03:,4�.[4�.i­p+BDC�:,GDGsHvg1GW03C!HL0Dg�4�7c8�H�.c:,XYIFS;ENX�E�.10 Q�a Y#� ­ E�:,05C�E�2D�1gpK#4�S,S,4��D:,.�k?03C�E?25Eb89:,I!EA:;.03CFEY61E9¨!.�:,05:;4<. ä XªH�§1:,.�k�0/�W4l894�I�:,E�GA4�Ke­�H�.!6yG37FI�I�S,g1:;.Fkª05C�E�X¦�D:,03C^H�S,03EN23.!HL03E:,.�I�7�05GY054ã61E�23:,\<E¥HLS;05E�23.JH�03Ey4�7�05I�7�03G ä 4�2[�]g~614�7F��S,:;.Fk^7�I%EbH<83CñS}HL0s85C~:,. ­ äE�ÌtEb8905:;\<E�S,gãG5C!H�25:;.Fk>05C�EY25E�G30�4LK�03CFEYC!HL2s61�DH�25Eª:,.�­��JE�0/�WE�E�.~0/��4^8�HLS}8�7�STH�03:,4<.�Gb��D:,03Cp03C�E�G309H�03ED4LK�EvH�85CY8�H�ST897FS}HL03:,4�.p�JE�:,.�k@C�E�ST6A:,.�03C�EDE9ð�052sH?STH�0985C��DC�:,S;EW03CFED4�03CFE�28�HLS}8�7�STH�03:,4<.Y:,GD�!EN:;.FkZ614<.�E�+�#��b���b Í��;�I�_ÐÏ�XÑD�`DEN03:,XY:,.�kD:,GÌH�I�234�89Eb6f7�23EaK#4�2Ì61:,G3IJ4�G5:,.�k?S}HL0s85C�E�G�03C�254�7�k<CYH�8�:;29897�:,0b�<�D:,03C�H�\]:,E��"034:,XYI�254�\1:;.FkÌI�234<I!EN2303:,E�G�S;:,§<E(05C�EWS;EN.�k�05C@4�K�03CFE�S,4�.Fk�E�G50�7�.1��254�§�EN.@I�234<I!H�k1H�05:;4<.?I!H�05C�+BDC�Ep.!H�X[E@H�.!6y03C�EAK#4<23XªHLS,:;G9H�05:;4�.cH�25E�7�G57!H�S,S,glH�050323:,��7F03Eb6y034cntE�:,G3EN23G34<.z�QntE�:,GsqF*,�H�S,05C�4�7�k<CY05C�E@03Ev83CF.�:T��7FE@:,GD��E�S,Sáâ/§].F4��D.ªH�.J6YIF23E�G5E�.10sH�05:,4�.�G�4�KÌ:,0MH�23E?054��!E?K�4�7�.!603CF234�7Fk�C�4<7�0D03C�E?S,:,03E�29H�057�23E�+BDC�E?G3:,XYIFS;ENG30�K#4�25X©4�K(25E�03:,X[:;.Fk�:,GÌ05C�E?23E�IFS}H<89E�X[E�.10�4LK#±#03:,X[E�S,E�G3G�²#­ �1g¯­åù�­4�2D�1g¡­�ùr­¯â'Ô +�ó^E�8�HL.lk�E�0DX[4�25E�894<XYI�S,:T8�H�05Eb6�25E�03:,X[:;.Fk@STHv�DGD�]gcH�I�IFS;g1:,.�kp03C�:,G0329H�.�G«K#4�25XªHL03:,4�.·:,.!61E�IJE�.!61EN.]05S,g^034>61:rÌtE�23EN.]0��F7�0�IJ4�G5G3:,��S,g·4�\�E�25S}HLI�I�:,.�kcI!HL2303Gp4�KHY8�:;29897�:,0b+?�D4<23.�EN2b� G?237�S,E@g1:,E�ST61G�HL.lE9ð!H�X[I�S,EM4LK�G37!85C^H�894�X[I!4<G3:,03EA23E�05:;X[:,.�k�STHv�@+-/0@G9Hvg]G?05C!H�0@:áKe®�³É� ­ â�Ô �¦­ â�Ô �(ò ®ãò9­ö³Ü±/P�ò>®4²¤ù5­ª��03C!HL0@:,G?:�Ke®ñ:;GA03:,XYE�S,E�G5Gb�03CFE�.�±X± W�dvU ­¾²(ù¯~�£!ì>â�Ô�²Mò d�j�d ®Ï³ dvjId ± Q�Z,j ­°ò�®4²N+~�z89:,2s897F:;0[S,:;§<E d�j�d ± Q�Z,j ­°ò�®�²:,G@GsHL:T6·034l�JEYI�:,IJE�S,:,.�Eb6t���JEb8�HL7�G3Ec03CFE�23E[:;G�HcSTH�0985C^�!E�0/�WE�E�."EbH�85C"4�KM03CFEYG309H�k<E�G4�KD03CFE�23Eb617J8903:,4�.�+bÂ�4�7^8�HL.>25EbH�6·05C�:,G�:,.�G50sHL.!89EY4LKu�D4<23.�EN2b� G@237FS;EYHLG�K#4�S,S,4��DG%w�034:,XYI�S,E�X[E�.10ÌH dvjId ®"05C!H�0D:,GDI�:,IJE�S,:;.FEb6t�1:,XYI�S,E�X[E�.10 dvjId ± Q�Z,j ­ ò%®�²��JH�.!6cH�6Nj97�G30D05C�E

Page 32: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

U�� <>= ?A@BDC%?;EGFIHA@�@�J�C%?

03:,X[:;.Fk�4LKÌ03C�E@614<XªH�:,.�G5:;k<.!H�S,GDH�8�8�4�2s6f:;.Fk�034¡± W�d�U ­¾²!ùD~9£Jì>â�Ô�+�-�K 05C�E@89:,2s897F:;0D09H�§<E�G:,.�I�7�0oK#234<X�03C�ED614<XªH�:,.��N03C!HL0(H<6�j97�G503XYEN.]0�894�.FG3:,G305GÌ4�K�G37FI�I�S,g1:;.FkMEbH<83C�894<XYIJ4�.�E�.104�K�03C�EA:;.FI�7�0W4�.�E@05:,XYEDG305E�IlEbHL23S,:,E�2D03CJH�.c03C�E?4<.�E@034p:,03GDS,E9K#0v+�17!85C>H&G3IJEb89:á¨�8�HL03:,4�.l:,G?Hlæ�~vïX~&èÊLç]^Ì�!HL.!6lHL.ªE�ðfIF23E�G5G3:,4�.·S,:;§<Eb± W�d�U ­ª²�ùD~9£Jì>â�Ô8�HL.YE�:,03CFE�2�25E�I�25E�G3E�.10?H?G3§<E��D:,.�k�89:,2s8�7�:,0��DC�:T85C�:,G�:,X[I�S,E�X�E�.103Eb6pH�.J6pI!E�2«K#4�25XYGÌ05C�E23Ev��7F:;25Eb6·H�6�j97FG303X[E�.10b�14<2ME�S,G3Ep23ENI�23E�G5E�.10�H�G5I!Ev89:á¨�8�H�05:,4�.cK#4<2M05C�E@:,.103E�2«KåH�89EA034Y05C�E89:,2s8�7�:,0D�DC�:T83Cc:,GD:,XYI�S,E�X[E�.103Eb6o+ÕpÖ&Ë Ì ¹�Í¡¹�ÙÌÛ���ßbÞdÞMÛpÚÌÚ#½X�%º?ÙÌÛpÚBDC�:,GtG3Ev8903:,4�.A0323EvH�03GÌHD61ENG3:,k�.@H�G�HL.?E9ð!H�XYIFS;E�4�K�03CFEÌG30/g1S,EÌ�DC�:T85C?��EÌH�25E�H�6f\�4�8�H�05:,.�k!+VW4�2523E�STHL03:,4�.@:,G�4�.FE�4LK�05C�E�X[4�G50�:,XYIJ4�250sH�.10JK#7F.!8903:,4<.�G�:;.�61:,k�:,09H�S�G5:,k�.!HLS]IF234�89E�G5G3:,.�k!+�#�¦Î��X� Ä��D���!�+��èe�XÑ��Ë�O�R���!�#�[�O��¥_���O�#�BDC�E?23Ev��7F:;25E�XYEN.]0D:,GD054Y8�H�ST897�STHL03E

v1±1Ï�²#³>Ð â�ÔÑ C³Ò é}O±1Ï4`�G7²5d!� C ±³Ï�²

H�0DEvH�85Cc03:,XYE'Ïuk<:;\<E�.Y05:,XYEDG3Ev��7FE�.!89E�G�}�H�.!6K� C +BDC�E�¨J23G30A03C�:,.�kl054l614l:,G@034c25Eb8�H�G50�03C�E�G5I!Ev89:á¨�8�H�05:,4�.ã:,.1034lH[XY4<23Ep0329H�8909H���S,E.�4<0sH�05:,4�.�+�ó^E@G3ENI!H�29H�03E�05C�Ep03:,XYE@H�.J6cG3I!H<89EY61:,XYEN.�G3:,4�.FGD�]gc:,.103254f6f7!89:,.�kªH&.�E��G3Ev��7FE�.!89Ep4�K�\�H�S,7�E�Gv�B}�ÓC �<K#4<2D�DC�:T83Cv1±1Ï�²�³zÐ â�ÔÑ C³Ò é

} ÓC ±³Ï�²'d7� C ±1Ï�² Ê } ÓC ±³Ï�²�³:}[±³Ï3`{G7²

03CFE�IJ4�:,.10W�!E�:,.�kp03CJH�0D03CFEMI!HL230D�D:,03C[03C�E@H�25:,03C�X[E�03:T8W:,.Y:,0WS;414<§]GDH�GW03CF4�7�k<CY:,0u8NH�.�JE@:,XYI�S,E�X�E�.105Eb6p�1gªHAG30sHL03E�S,E�G5G@89:,2s897�:,0M8�HLST897�STH�05:;.Fkv�³ Ð â�ÔÑ C·Ò é

} ÓC d!�]C

H�.J6Y05C�E?4�05C�E�2MIJH�230DS,414�§1GWS,:;§<E�HpG5C�:áK#0/â/23E�k<:,G303EN2b+B�2sH�.FG3STH�05:;.FkY03CFE�G50sH�05E�S,E�G3GAI!H�250�4LK�03CFE�G5I!Eb8�:�¨t8�H�05:;4<.��tG57�I�IJ4�G3E��WEpC!Hv\�E�8�4�X�âIJ4�.�E�.105G8|pî-}�H�.J6å~�ë9ë�K#4�2W�DC�:T85CÔ�7Ã���È��¤|�î�}[±�ÃKdiÈ>²DH�.!6¡Ã¯~<ësëÀ±/Õ C ÃPC5²��F03C�EN.��} Ó �w�#�'±5¡�¢Q£Yò gDL>S |�î�}Jò-~<ësë1²�v

BDC�E�25E�:,G?HY61E�G5:,k�.^61Eb89:,G3:,4<.lXªH<61E?:;.·61:,\]:T61:,.�kp03CFE�:,.�I�7F03G�HL.!6y4�7�05I�7�03G��!EN0/��E�EN.614<XªH�:,.lH�.J6l29H�.�k<E�+�-/0@:,G?23E�k<23E�050sHL��S,g>C!HL2s6·054ªX[4�61:áK#gY05C�:,G�IJH�2305:T897�STH�2@61Eb8�:;G5:,4�.�D:,03C�4<7�0DG309H�2503:,.�k�H�k]HL:,.�+

Page 33: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  U�*ó^E�8�HL.lH�S,G34�61:,\1:}6fEM03CFE�G5C�:áK#0W23E�k<:;G503E�2�:,.]054ZHAG309H�05E�S,E�G3G?H�.!6cHAG3Eb�<7�E�.105:}HLStI!H�250�1gY:,.103254f6f7!89:,.�k�H�.�4<03C�E�2DG5Eb�<7�E�.!8�E�4�K(\�HLS,7�E�Gb�B}�Ó[ÓC �<K#4�2D�DC�:T85C

}[±1Ï�²#³z} Ó[ÓC ±1Ï�² Ê } Ó[ÓC ±³Ï3`�G5²#³:} ÓC ±³Ï�²K#4<2�EvH�85C�G3+pBDC�Ep¨J23G30AI!H�250@:,G�G50sHL03E�S,E�G5Gb�ÌH�.J6l:,G@H[XªH�.1g<â/�uHvgb{%z�ìÊJ+Z�f7�I�IJ4�G3E��WE8�HLS;SW03CF:;GAK#4<23§�����G34·03C!HL0�}��:}�Ó[Ó�+^­�254�X¦03C�El61E�¨!.�:,03:,4�.^4LK�­ª���WEª8NH�.~23E��D25:,03E03CFE�G5Eb894�.J6lI!HL230@H�G"} Ó[ÓC ­ C } ÓC �J4�2?H�G"} Ó[Ó>W�dvU ­O} Ó �JG34yè�í1¢ {9ï�³Ö� ò W�d�U ­c+MBDC�Ep�DC�4<S;E894<2323ENS}HL034<2D:;GD:,X[I�S,E�XYE�.105Eb6�H�GMHp894�X[I!4<G3:,03:,4<.�4�KÌ03C�ENG3E@I!HL2305Gb+

��}x��#�;± u5Q_W è�í1¢ {9ï(òL¡�¢Q£Yò gDL>S |�î�}Jò-~<ësë1²�vÚD4<03:T89E[03C!HL0@��Ec8�H�.^:,X[I�S,E�XYE�.10?H�S,SÌ4�KM05C�Eª8�4�XYIJ4�.FE�.103G�HLG?K#7�.!8�03:,4�.�G®K#234<Xh05C�E614<XªH�:,.c034[03C�E�29H�.�k<E��tG54ª:,.>H[G5E�.�G3E�05C�:,G?:;G@H[894�X[I�S,E�03E�61E�G5:;k<.>4LKuHc894�2523E�STHL034�2v+BDC�E?23ENG30M4LK(05C�E@61E�\�ENS;4<I�XYEN.]0W:,GDk�4<:;.Fk@034��JE@HpXªH�0503E�2W4�K�4�I�05:,XY:,��:,.�k?03C�:,GD:,.�:,03:THLS:,XYI�S,E�X[E�.10sHL03:,4�.�+?ó^Ep.�E�Eb6·054 85C�414<G3E�G37F:;09H���S,EpS,4���E�2?S,E�\<E�SÌ:,XYI�S,E�X[E�.10sHL03:,4�.�GW4�K03CFE�XcH�.1g<âå�DHvgpK#4�25§lH�.!6y03C�E�H�8N897�X�7�STH�054�2v��G34c05C!H�0?�WEZ8�HL.lE�S,:,XY:,.!HL03E W�dvU ­zH�.!6¡�¢Q£����J4�05C�4�K��DC�:T85CYH�25EM:,.�E9àª89:,E�.10Ì:,.�STHvg�4<7�0ÌH�25EbH�+�ó^EMHLS;G54@.�E�Ev6�034A032sHL.�G3STHL03EM05C�E:,XYI�S,E�X[E�.10sHL03:,4�.�K#254�X{4<.�E@03CJH�0?4�IJE�2sHL03E�G?4<.>.17�X��JE�23G�034[4�.�Ep03C!HL0M4<I!E�29H�05E�G@4�.��:,.!HL23g�23ENI�23E�G5E�.10sHL03:,4�.�G?4LK .17�X��JE�25Gb+�#�¦Î���¢ à�ÐÏ�e¥_��ÐÏ�!Ѥ�O�XÑD�¦�O�e�Ë���e�+�����O���¤�X�>�O���BDC�E�25EYH�25E�XcH�.1gY61:rÌ�EN23E�.10@�DHvg1GM4�KW��7�:,ST61:,.�kYH�XcH�.1g<âå�DHvgpK#4�25§[K#234<XzH�0/�W4�â/�uHvgK#4<23§t+Ì­�4<2�E�ðFHLXYI�S,E��

� ³ 2 Ô â�Ô ò d�Y#� ±/2 Ô òX{%zLìÊ-²�ò92 Ô³ 2 ê â�Ô ò T�YOa ±82 ê ò�{%z�ìÊ�²Ìò+2 ê

�DEN23E��W�WEYC!Hv\<EªH�S,S,4��WEb6cK�4�2p03C�E[I!4<G3G3:,��:,S,:,0/g>05C!H�0p�WEYXªHvgy�uHL.]0p03CFEYS,:,G30p:;.^05C�E2sHL.�k�EA4�Ky�Î054��!E@4LKÌ��E�234[S,E�.�k�05C�+WBDC�:,GD:,.ª057�23.yI!E�25XY:,03G��A034��JE�HpS,:,G30D4LK S,E�.Fk�03C��E�254!+�ó^ED�D:;S,St85C�414�G3E?054�7�G5E?03C�E?\�EN23G3:,4<.Y��7�:,S,0Ì7�G5:,.�k doY#� �!Ev8�H�7�G5E@�WEM§1.�4��%05C!H�003CF:;GW89:,2s897�:,0W:,G�894�X[I!4<G3Eb6p�D:,05C W�dvU ­ H�.J6p��EDC!Hv\<EMH?\�EN23G3:,4<.Y4�K��D4<23.�EN2b� G�257�S,EM05C!H�0XªHL0s85C�E�Gv+è�í]¢ {9ﻳ 2 Ô â'Ô ò doY#� ±82 Ô ò_{%z�ìRÊ-²�ò+2 Ô ò W�d�U ­

³ 2 Ô â'Ô ò doY#� ±82 Ô ò_{%z�ìRÊ-²�ò ±_± W�d�U ­ª²!ùD~9£!ì â�Ô ²�ò+2 Ô³ 2 Ô â'Ô ò doY#� ±82 Ô ò_{%z�ìRÊ®ò Q�Z j ­¾²Ìò92 Ô

BDC�E>61Ev89:,G3:,4�.%054ã:,XYIFS;ENXYE�.10@05C�ElG3CF:�K�0�23E�k<:;G503E�2c7�G5:,.�k H doY#� �D:,S,SM:,.1�!7�EN.!89E61E�G5:,k�.l61Eb89:,G5:;4<.�GDG37J83C·H�GD03CFE�85C�4�:T89E?4�K�C�4�� 034p��7�:,ST6Y05C�E@H�8�8�7�X�7�STH�054�2b+

Page 34: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

U�P <>= ?A@BDC%?;EGFIHA@�@�J�C%?

�#�¦Î��5ç ס¥_�XÐÏ�_Ñe�'�O�XÑ��Ø�O�e��ØJÙ�ÚBDC�Ep.�E9ð�0MG503E�I·:,GM054Y7�G5E�4<7�2M25E�G37�S,05G�H��J4�7�0���:,I�I�:,.�k�254��DG�054�k<E�03C�EN2�054YE�S,:,XY:,.!HL03E03CFE�¡�¢Q£ K#234<X

u5QXW è�í]¢ {�ï(ò�¡�¢Q£BDC�E�8�4�XYIJ4�.FE�.103GM.FE9ð�0M034[03C�EA��:,I>H�25E?¨!23G50@8�H�G50�:,.1034�05C�E?K#4<23X�4�KÌ0/�W4Y234��DG?H�.!603CFE�G3E�HL23E@05C�E�.c:,.103E�25S;EvHv\�Eb6t+u5QXW ±/2 Ô â�Ô ò doY#� ±82 Ô òX{%zLìÊ@ò Q�Z j ­¾²�ò+2 Ô ²�ò�¡�¢Q£

³ÜÛt0/g1I!EA4�K�¡�¢Q£"Ý�[2 Ô â�Ô ò d�Y#� ±82 Ô òX{%zLìÊ@ò Q�Z j ­¾²�ò+2 Ô � gDL>S ü1�!ò�¡�¢Q£

³ÜÛt:,XYI�S,E�X[E�.103:,.�k gDL>S ü�H�GMHp234�� Ý�[2 Ô â�Ô ò d�Y#� ±82 Ô òX{%zLìÊ@ò Q�Z j ­¾²�ò+2 Ô �w2 ê â'Ô ò d�Y#� ±/2 ê ò&2 Ô â'Ô ²Ìò&2 Ô �!ò�¡�¢Q£

³ÜÛt23EvH�2329H�.�k<:,.�k�03E�25XYG�Ý�[2 Ô â�Ô �w2 ê â�Ô ��ò#� d�Y#� ±/2 Ô òX{%zLìÊ@ò Q�Z,j ­¾²&� d�Y#� ±/2 ê ò+2 Ô â�Ô ²��!ò��[2 Ô �2 Ô ��òv¡�¢Q£

³ÜÛ>� 2 Ô â'Ô+�w2 ê â'ÔE�/³_�[2 Ô â'Ô|�2 ê â�Ô8�tò�¡�¢Q£"Ý�[2 Ô â�Ô �w2 ê â�Ô ��òv¡�¢Q£Yò� d�Y#� ±82 Ô ò�{%z�ìÊpò Q�Z,j ­¾²]� doY#� ±82 ê ò92 Ô â'Ô ²/��ò�[2 Ô �w2 Ô �tòv¡�¢¤£³ÜÛ��[2 Ô �w2 Ô ��òv¡�¢Q£¯³ ¡�¢Q£ â�Ô ò u5Q_W ¡�¢¤£Yò&2 Ô Ý�[2 Ô â�Ô �w2 ê â�Ô ��òv¡�¢Q£Yò� d�Y#� ±82 Ô ò�{%z�ìÊpò Q�Z,j ­¾²]� doY#� ±82 ê ò92 Ô â'Ô ²/��ò¡�¢Q£ â�Ô ò u7QXW ¡�¢Q£Yò&2 Ô³ÜÛt:,.103E�25S;EvHv\]:,.�k5Ý

�[2 Ô â�Ô �w2 ê â�Ô ��ò Q�Z j ¡�¢Q£[ò doY#� ­%ò+2 Ô�DC�E�25E8­Ë³Q�[2 Ô òX{1z�ìÊ@ò Q�Z,j ­7�2 ê ò+2 Ô â'Ô �-ù�¡�¢Q£ â�Ô³ÜÛ�2 ê â'Ô òL¡�¢Q£¯³ gDL>S 2 ê â�Ô�Ý�[2 Ô â�Ô � gDL>S 2 ê â'Ô ��ò d�Y#� ­ñò+2 Ô

ÚD4��ñK#4�2W03CFE�:,.103EN23S,EbHv\�Ev6ª8�4�XYIJ4�.FE�.103GW4�K(�DCF:}85Cc�WE�CJHv\�E�Hp254��Dw�05C�E�61ENGs8925:;Ifâ03:,4<. �WEcC!Hv\�E[K#4<2�03C�:,GY89ENS;S�:,G�4�.�Ec03CJH�0Y894<.�G3:,G305Gc4�K�0/�W4^G3ENI!H�29H�03E·894�X[I!4<.�E�.103GH�.J6lE�.F4�7�k<C^I�S,7�X���:,.�k�034cXcH�§�EA:;0@HLI�I!EvH�2?03C!HL0@03CFE�g¥HL23E�:,.103E�25S,EbHv\�Eb6o+��XY4�25EE9àª89:,E�.10�:;X[I�S,E�X�E�.10sHL03:,4�.�8�HL.l�!E?4<��0sHL:;.FEb6[�]gcHp��:,0D4�K�G3:,XYI�S,:á¨�8�HL03:,4�.���7�G3:,.�k�05C�E§1.�4��DS,Eb61k<E�03C!HL0@03C�E[S,E9K#0/â/XY4<G30?:,.�I�7�0A034·03C�E�254���:,G@I�234�\1:T61Eb6·05C�234<7�k�C u7QXW 2 Ô â�ÔH�.J6Y05C�E?034<Iª:,.�IF7�0D03C�254�7�k<C Q�Z,jÀg×L>S 2 ê â'Ô +�[2 Ô â�Ô �w2 ê â�Ô �!ò%­ ³ �[2 Ô â�Ô �w2 ê â�Ô ��ò�� 2 Ô ò�{%z�ìRÊ�ò Q�Z j ­7�2 ê ò92 Ô â�Ô �Iù�¡�¢Q£ â'Ô

³ �[2 Ô â�Ô �w2 ê â�Ô ��ò�� 2 Ô ò�{%z�ìRÊ�ò Q�Z j ­7�2 ê ò92 Ô â�Ô ��òv¡�¢Q£ â�Ô

Page 35: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  U�U

� � ¯°¯° � ¯°¯° � ¯°¯° � ¯°¯°

­�:;k<7�23E�*<+ P<wOwDæ�¢,è9ï#³�{1z�ìÊ@ò Q�Z,j 2 Ô HL.!6 d�Y#� ±�æ�¢,è9ïÌò Q�Z,j ­¾²³ � {%zLìÊ@ò Q�Z j ­K�w2 Ô â�Ô ��ò�¡�¢Q£ â�Ô³ {%zLìÊ�ò Q�Z,j ±/2 Ô ò­ ò92 ê â'Ô ²³ æL¢,è9ï ò Q�Z j ­ ò Q�Z,j 2 ê â�Ô�DC�EN23EªæL¢,è9ï�³�{%z�ìRÊ�ò Q�Z j 2 Ô

G34�G57���G503:,037�05:,.�kpK#4�2e­ :,.lH d�Y#� ­�:,.Y:,03GM8�4�.103E9ð�0�[2 Ô â�Ô � gDL>S 2 ê â'Ô ��ò d�Y#� ­%ò&2 Ô ³ doY#� ±�æ�¢}èsïÌò Q�Z,j ­¾²Ìò Q�Z,j 2 ê â'Ô ò+2 Ô

³ doY#� ±�æ�¢}èsïÌò Q�Z,j ­¾²Ìò&2 ÔH�.J6YIF7�0305:;.Fk�054�k�EN03C�E�2��DC!H�0D�WE?C!Hv\�E?G54pKåH�2

Þ$ßcà$à ³ doY#� ±�æ�¢,è9ïÌò Q�Z j ­ª²Ìò&2 Ô ò gDL>S |�î�}Jò-~�ë9ë:,XYI�S,E�X[E�.103GÌHp23ENS}HL03:,4�.&K#4�2D�DCF:}85C����.�w}(� Þ$ßcà$à v�+�1:,.!89E@�WE@§1.�4���05C!H�08~<ësëp8�HL.l�JE@:,XYI�S,E�X[E�.103Eb6p�1gc234��DG�4�2M894<S;7FXY.�GD4LK�8�4�X�âIJ4�.�E�.105GD�DC�:T83ClH<6�6YHAI!H�:,2W4�K�.]7FX��!E�25Gb�<:,0�S,414�§1GDH�GD03CF4�7�k<CY�WEMXY:,k<C]0��!E@H��FS;E�034:,XYI�S,E�X[E�.10 Þ$ßcà$à HLGMH@IJH�:,2�4LK(254��DGb��4<.�EM�JE�S,4�� 03C�E?4�05C�E�2v+�BDC�E?I!4<:;.10D4LK 614<:;.Fk03CF:;G�:,GM03CJH�0D± d�Y#� ®�²rme± d�Y#� °e²�³ doY#� ±�® m(°e²MH�.J6Y�WE�8�HL.lC�4<I!Ep034�XcH�§�E�K#7F2303CFE�2G3:,X[I�S,:�¨t8�H�05:;4<.�GÌ:,.Y05C�E�894<XYIJ4�.�EN.]0�®qm#°@+�#�¦Î��5þ à�ÐÏ�e¥_��ÐÏ�!Ѥ�O�XÑD�¦�O�e�Ë���!�!©eÐñ©e¥X�'�O�#���.l03CFE@KåH<89Ep4�KÌ:,0b�J03C�EN23Ep:;G�.�4ª85C�4<:T89E@C�E�25E�G3:,.!89Ep�WE@�uHL.10M034[:,XYI�S,E�X�E�.10D~�ë9ëpH�GHc254��@��:;0A�D:;S,SÌCJHv\�EY054l�JEYG34<XYE�05C�:,.�kcS,:;§<EYHcS,E9K#0p23Eb6f7!8903:,4<.ã4�K¾~<æ�æo��GsHvg¦~�ë9믳~9£¨} â�Ô ò d�j�a ~<æ�æt+�BDC�:,GD�W4�7�ST6p�JE®Hp25EbH�G54�.!HL��S,EM:,XYIFS;ENXYE�.10sHL03:,4�.��b�F7�0DG3:,.!89E?:,0D6141E�G.�4<0MH�S,S,4��%E�XYIF0/g�234��DGM:,0D�W4�7�ST6[.�4<0D�[email protected]�037F2sH�S�:,.ª05C�E�894<.103E9ð�0M4LK�HpI!4<03E�.103:THLS;S,g��E�254�â/�D:T6103CcG3CF:�K�0D23E�k<:;G503E�2v+���E9¨!.FE@:,.�G305EbH�6

~�ë9ë ³ 2 ê â�Ô ò u5QXW ¡NçNì�z®ò d�j�a ~�æ<æ�DC�E�25E8Ãp¡bç�ì�z(È�ÅªÆ Ãª³�ÈD³ �³ 2 ê â�Ô ò u5QXW ¡NçNì�z®ò doY#� ±~<æ�æ�ò&2 ê â�Ô ²�ò&2 ê

H�.J6Y:áK���E@614�:,.!61ENEb6[I�234�89E�Ev6c:,.ª05C�:,GM61:,23Eb8�03:,4�.Þ$ß5à$à ³ doY#� ±�æ�¢}èsïÌò Q�Z,j ­¾²Ìò92 Ô ò gDL>S |�î�}tò2 ê â�Ô ò u5Q_W ¡bç�ì�z?ò doY#� ±�~�æ�æpò92 ê â�Ô ²�ò+2 ê

Page 36: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

U�_ <>= ?A@BDC%?;EGFIHA@�@�J�C%?

~�æ<æ|pî�}� ¯°¯°

~<æ�æ|�î�}� ¯°¯°

~�æ�æ|pî�}� ¯°¯°

~�æ<æ|�î�}� ¯°¯°

~<æ�æ|pî-}� ¯°¯°

~�æ<æ|pî�}� ¯°¯°

á­�:,k<7�23E�*�+QU<�Ow�H�.c:,.�G309H�.!89E?4LK d�j�a ±,á�ò92 ê ò Q�Z,j ­¾²³ doY#� ±�æ�¢}èsïÌò���|pî�}��¦­<�5²�ò+2 Ô ò2 ê â�Ô ò u5Q_W ¡bç�ì�z?ò doY#� ±�~�æ�æpò92 ê â�Ô ²�ò+2 ê³ u7QXW 2 ê â�Ô ò

±_± u5Q_W ¡bçNì�z�ò doY#� ±~�æ<æpò+2 ê â�Ô ²X²3m doY#� ±�æ�¢}èsïÌò#�o|pî-}8�¦­<�5²X²�òQ�Z,j 2 Ô ò92 ê

³ u7QXW ±/2 ê â'Ô ò u5Q_W ¡bçNì�z>²�òdoY#� ±X±�~�æ�æ&ò+2 ê â�Ô ²3m�±�æL¢,è9ïÌò��o|�î�}��8­X� ²_²�ò2 ê ò92 Ô

³ u7QXW ±/2 ê â'Ô ò u5Q_W ¡bçNì�z>²�ò doY#� ±Eá ò Q�Z,j§Q�Z,j ­¾²�ò&2 ê ò92 Ô�DCFE�23E=á ³ä±~<æ�æpò+2 ê â'Ô ²3m�±�æ�¢,è9ïÌò u5Q_W |pî�}�²³ u7QXW ±/2 ê â'Ô ò u5Q_W ¡bçNì�z>²�ò d�j�a ±Eá ò&2 ê ò Q�Z,j ­¾²Ìò92 Ô

BDC�:,G�894<XYI�S,E�05E�GW03C�E�23EbHL232sHL.�k�ENXYE�.10W4�Kt03C�E@894<2323ENS}HL034<2�:,.1034�H®\�E�25g�23E�k<7�STH�2�89:,29897�:,0�D:,03C·K#EN��6f:�ÌtE�25E�.10�G54�2305G�4LK�894�X[I!4<.�E�.103Gv�(HL.!6·4�.FS;gyS;4�8�HLS�894<.�.�Eb8905:,4�.�Gp�!EN0/��E�EN.03CF4�G3El894<XYIJ4�.�EN.]05Gb+·-/.^K/H�890p03C�EN23Ec:,G�4<.�S,g>4<.�EYG54�230p4�K@894�X[I!4<.�E�.10@4<03C�E�2�05C!H�.STH�0983CFE�G%w[03C�Ec89E�S,S"á�IJE�2/K�4�23X[G@03CFEª4<.�S,g�xQ�W4�296<âåS,E�\<E�S/�t4�IJE�29H�03:,4<.ã03CJH�0p��E[.�E�Eb6t+��g�x �W4�296t��C�E�23Ey��E?j97�G30pXYEvH�.ãHy.]7FX��!E�21w��WEªH�25EcXªH�§1:,.�kcH>61:,G503:,.!8905:;4<.ã�D:,03CxQ��:,0/â/S,E�\�E�S/�<4�IJE�2sHL03:,4�.FGD�DC�:T83Cl61EvH�S�4<.�S,g��D:,03CY4<.�E�G?H�.!6[.�4<7�k�C103Gv+�#�¦Î��8\ S �4â��_Ñ��ñ�O�e�Ë�!�X�O�!©R�����>èe���O�#¥_�X�pD.fK#4�25037�.!HL03E�S,g HLS,03C�4<7�k�C%05C�E·�D:;25E�GcE9ð�I�S,:T89:,0ª:,.%05C�E·G303257!89057�23E"4�K�05C�E^234��zHL23EH�S,SDG5C�4�250 ä �DC�:T85C~:;G��DCJH�0��WElXYEbHL.ã�1gãG9Hvg1:;.Fk^03C!HL0�03C�E>8�4�.�.�Ev8903:,4�.FGªH�25E>H�S,SS,4�8�H�S ä 05C�E�23EpH�23EAG34�X[EMIJ4�05E�.103:TH�S,S,g�S,4�.�kpI�234<I!H�k1H�05:;4<.YI!HL03C�GD:,.c03CFE®8�:;29897�:,0b+�BDC�E4�.FEª�DCF:}85C%G50sHL.!61G�4�7F0Y:,.^¨!k<7�23E"*�+QU��y:,G�03C�ElS,4��WE�2�I!HL03C%H�S,4�.Fk>05C�El234��@�W05C!H�003CF234�7Fk�Cc03C�EpH�8�897FX�7�STH�034<2b+�ó^E���4<7�ST6YIF23E9K#EN2M034YHv\<4�:T6�05C�E�G5E�S,4�.Fk�I!HL03C�Gv��4<.ª05C�EH�G5G37�X[I�03:,4<.Y03CJH�0D03CFE�gY�D:,S,St0sHL§�E@HpS,4�.�kp03:,XYED054�G3E�0503S,E@:,.1034YHA§1.�4��D.cG30sHL03E�+W��7�2G3052sHL03E�k<gª:,GW034�052sH�6fE@STH�03EN.!89g�K�4�2W03C�254�7�k<C�I�7�0D�1gYIF:;IJE�S,:,.�:,.�kp03C�E?S,4�.�kpI!HL03C�Gv+Â�E�0�HL.�4�05C�E�2@:,.�G50sHL.!89EY4LKa�a4�25.�E�2b� G@257�S,EY8�H�.^�JEY7FG3Eb6·054lI�:,I!ENS;:,.�Ep03CF:;GAI!H�05C�+

Page 37: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  U�e

¯°¯°

¯°¯°

~<æ�æ|�î�}� ¯°¯°

¯°¯°

¯°¯°

~<æ�æ|pî-}� ¯°¯°

¯°¯°

¯°¯°

~<æ�æ|�î�}� ¯°¯°

¯°¯°

¯°¯°

~<æ�æ|pî-}� ¯°¯°

¯°¯°

¯°¯°

~<æ�æ|�î�}� ¯°¯°

­�:;k<7�23E�*<+ UF*�w�H�.c:,.�G309H�.!8�E�4LK dvjIa ± u5Q_W ­ ò.á�ò92 ê ò Q�Z,j ­¾²ã�.�4��D:,.�k�03CJH�0D±_± UrdoW ­¾²�ùb~9£A} â'Ô ²�ò d�j�a ­�³ d�j�a ± u5QXW ­ ò ­¿²W03E�X[I�03G�7�GM054YH�6�j97FG30M05C�E03:,X[:;.Fk�4LKÌ03C�E?:,.�I�7�05GMH�.!6[:,XYIFS;ENXYE�.10�.�4�0 Þ$ß5à$à ��7F0

±_± UrdoW ­ª²�ùD~9£¨} â�Ô ²�ò Þ$ß5à$à³ ± Urd�W ­¾²'ùD~9£¨} â�Ô ò u5QXW ±/2 ê â'Ô ò u5Q_W ¡bçNì�z ²�ò dvjIa ±,á�ò92 ê ò Q�Z,j ­¾²�ò+2 Ô³ u7QXW ±/2 ê â'Ô ò u5Q_W ¡bçNì�z>²�ò ±X± Urd�W ­¾²'ùD~9£¨} â�Ô ²�ò d�j�a ±Eá¿ò+2 ê ò Q�Z,j ­¾²Ìò&2 Ô³ u7QXW ±/2 ê â'Ô ò u5Q_W ¡bçNì�z>²�ò d�j�a ± u7QXW ­ ò#á¿ò+2 ê ò Q�Z j ­¾²�ò&2 ÔH�.pE9ð!H�X[I�S,E�4�K!�DC�:T85Cp:;G�G3C�4��D.p:,.@¨Jk�7�25E�*<+ UF*�+tBDCF:;G�89:,2s897F:;0�C!HLG�.�4@894�X���:,.!HL03:,4�.JH�SI�254�I!HLk]H�05:,4�.@I!HL03C�G�S;4<.�k�EN2�03CJH�.�4�.FEu89ENS;S/+��17!85CYHM6fE�G3:,k�.�:,GÌ8�HLS;S,Eb6AG3g1G5034�S,:T8���:,.p03C�:,G8�HLG3EY�W4�296<â/S;EN\�E�SÌG5g1G3034<S,:}8L��I!E�25C!H�IFG��JEb8�HL7�G3Ec03CFEY89S,4f85§1:,.�kl4LKu05C�EYSTH�0985C�E�GpI�7�XYIFG6�HL0sHpH�234<7�.!6p05C�E@89:,2s897�:,0v+��MGW��E�7�G3E?:,0ÌC�E�25E?03C�E?�W4�2s6ýxQG3g1G3054�S,:T8���XYEvH�.�Gtj97�G50�05C!H�003CFE�23E�HL23E?.�4Y894<X���:,.!H�05:,4�.!HLS�I!H�05C�G¿±åHL0MHpk�:,\�EN.YS,E�\�ENSt4�K�61E�09H�:,S�²�+BDC�E@I�254���S,E�X{�D:,05Cª05C�:,GM:,XYIFS;ENXYE�.10sHL03:,4�.p4�KÌ05C�EZ8�4�2325E�STH�054�2M:,G�03C!HL0b�!8�4�.10329H�23g034YHLI�IJEbH�29H�.!89ENGM:,.c4�7�2M61:THLk�2sHLXYGv��STH�0s85C�ENGM03EN.!6[034��JE�X�7J83C[��:,k�k<E�2MH�.!6[G54�XY4�25EE9ð�IJE�.�G3:,\<E�03C!HL.l03C�Ep4�05C�E�2@894<XYIJ4�.�E�.105G�:,.>H[89:,2s897F:;0v+?BDC�E�61E�G3:,k<.>:,.c¨!k<7�23Ec*�+QUF*C!HLGD:;.cEbH<85C>89E�S,S�05C�23ENE�STH�0985C�E�GM0/�W4�4�K��DC�:T85C HL23E@�F:;k�EN.�4�7�k<Cc034�G3054�25EZHp\�HLS;7FEM4�K

}J��H�.!6[4<.�E?4�K(�DCF:}85Cc:,GD��:,k�EN.�4�7�k<Cc034pG3034<23E�Hp\�HLS,7�EM4LK(03CFE�H�8�8�7�X�7�STH�05Eb6�G57�X>+nt414�§1:,.�k·K#4<2YH�. HLS,03E�25.!H�05:;\<EcG30329H�05E�k�g%�WElX[:;k<C10�0523g~G3§<E��D:,.�k^:,.%03C�Ey4�03CFE�261:,23Ev8903:,4�.±_± UrdoW ­ â'Ô ²�ùD~�£A} â�Ô ²�ò Þ$ß5à$à

³ u5Q_W ±82 ê â�Ô ò u7QXW ¡bç�ì�z ²�ò d�j�a ± u5Q_W ­ â'Ô ò#á¿ò+2 ê ò Q�Z j ­ª²�ò+2 Ô�DC�:T85C~:;.105234�617!89ENGªH�.105:�â361E�STHvg1Gp:;.1054>05C�ElH�8�897FX�7�STH�034<2b+"-/.ã4<2s61E�2[034^�JElH���S,Ec034:,XYI�S,E�X[E�.10?03C�E�G5E>�1g^STH�0985C�E�GY�WEc��4<7�ST6^.�ENEb6~034^25E�\�EN23G3E·03CFE 6FH�0sH â#�J4��O:,.ã05C�EH�8N897�X�7�STH�054�2v+tBDC�:,G��W4�7�ST6?.F4�0��!EW03414?61:áàª897�S,0�054®6f4!+��D4��WE�\�E�2v��03CFE�25EbH�S�IF234��FS;ENX�D:,03C·03C�:,G@:,X[I�S,E�X�E�.10sHL03:,4�.c:,G?03C!HL0ªxQ7�.�G3§<E��D:,.�k!�JC!HLG�8�HL.!89E�S,S,Eb6·03CFE�E�Ì�Ev890�4LKu05C�ESTH�0983CFE�GD:,.ª05C�E?G3C�:áK#0D25E�k�:,G503E�2v��K�4�2dvjIa ± u7QXW ­ â�Ô ò9á�ò92 ê ò Q�Z,j ­¾²

³ u5Q_W ­ â'Ô ò d�j�a ±,á ò+2 ê ò Q�Z j ­ òR­ â�Ô ²�ò­³ u5Q_W ­ â'Ô ò d�j�a ±,á ò+2 ê ò u5Q_W ­ â'Ô ò Q�Z,j ±³­ ò­ â�Ô ²X²�ò­³ u5Q_W ­ â'Ô ò d�j�a ±,á ò+2 ê ò u5Q_W ­ â'Ô ²�òR­

Page 38: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

U�i <>= ?A@BDC%?;EGFIHA@�@�J�C%?

~�æ<æ äå äå|pî�}�

~�æ<æ äå äå|pî�}�

~�æ<æ äå äå|pî�}�

~�æ<æ äå äå|pî�}�

~�æ<æ äå äå|pî�}�

­�:,k�7�25EZ*<+QU�POw�H�.c:,.�G309H�.!89EA4�K d�j�a ±,á ò+2 ê ò u5Q_W ­¯â'Ô²H�.J6�03CFE�23E@:,GD.�4�� HpS;4<.�k�894<X���:,.!H�05:,4�.!HLS�I�234<I!H�k1H�05:;4<.�I!H�05ClH�S,4�.�kA03C�E?034<Ic4�K(05C�E89:,2s8�7�:,0b�!HLGD:,S;S,7�G50329H�03Ev6�:,.[¨!k�7�25E�*�+QU�PF+ó^E@C!Hv\<E�257�.>7FI>H�k1H�:,.�G30?Hc894�X[XY4�.�IF234��FS;ENXz:,.l23ENk�7�STH�2?H�252sHvg>61ENG3:,k�.�+?ó^EC!Hv\<EY83CF4�G3EN.ã61:,23Eb8905:,4�.�Gp4�KM6�H�09H&�!4�� :,.^G37J83CãH[�DHvgl03CJH�0�HL0303ENXYI�05:;.Fkª054cXªH�§<E03CFE�89:,2s8�7�:,0�G5g]G5034<S;:T8W25E�G37�S,05G�E�:,05C�E�2W:;.�05414@XªHL.]gAS}HL0s85C�E�G�4�2W:;.�S,4<.�k@894�X���:,.!HL03:,4�.JH�SI!HL03C�Gv+@BDC�EpG34<S;7F03:,4�.l:,G�034c23E�\<E�23G5EY05C�EZ6f:;25Eb8905:;4<.>4LK�4�.FE�4LK�03C�E�6�HL0sH[I!H�05C�G@H�.!603CFE�.>054cG3S,4���03C�E�89:,2s8�7�:,0��JE9K#4<23EpG3§<E��D:,.�k!+@��4�7F��S,:;.Fk�7�I>05C�E�61E�STHvg1G�:,.l05C�EpG3C�:áK#023ENk�:,G305E�2�EN.�G37�25E�GD03CJH�0ÌG5§�E��D:,.�k@4<.�S,g��D:,IJE�GÌ4<7�0ÌC!HLS�Kt4�K�05C�4�G5EM61E�STHvg1Gb�<G34@05C!H�0W�J4�03CI!HL03C�GDE�.J6c7�Ic�!EN:;.Fk�I�254�IJE�23S,gcI�:,IJE�S,:;.FEb6t+ó^E@83CF4]4<G3E?034�25E�\�EN23G3EA03C�E@61:,23Ev8903:,4�.c4LK(03CFE@G3C�:áK#0«âå25E�k�:,G503E�2D�JEb8�HL7�G3E@05C!H�0DS,414�§1GEbHLG3:,E�2b+p�1:,.!89E QE��S¤d�Y#� ­Þ³ Q�Z,j ìsç]Y@ò d�Y#��QE��S ­�ò u5Q_W ìsç]YYH�.!6 QE�ÁS ±�æL¢,è9ï�ò Q�Z j ­¾²�³u5Q_W ­�â�ÔÌò]æL¢,è9ïu�WE@8�H�.l8�HLST897�STH�05E�05C!H�0

��}t��#�'± doY#� ±�æ�¢,è9ïÌò Q�Z j ­ª²Ìò+2 Ô ²�æÅªÆ �Á±/2 ê â'Ô ò Q,��S#doY#� ±�æ�¢,è9ïÌò Q�Z,j ­¾²X²3��æ��}(�ÅªÆ �Á±sì9ç&Y?ò92 ê â'Ô ò doY#� ± u5QXW ­ â'Ô ò]æL¢,è9ï+²�ò u5Q_W ì9ç&Y�²3��æ��}(�ó^EM§1.�4��ñK#254�X�4<7�2W¨!23G50�61ENG3:,k�.c03CJH�0�æ(± g×L>S |pî�}!ò�~�ë9ë�²�v��1G34

�Á±sìsç]Y@ò&2 ê â'Ô ò doY#� ± u5QXW ­ â'Ô ò�æ�¢,è9ï�²�ò u5QXW ±9ìsç]Y?ò gDL>S |pî�}!ò�~�ë9ë1²X²3��v#�w}(�H�.J6��JEb8�H�7FG3EYì9ç&Y�ò gDL>S |�î�}!³ gDL>S |�î�}�ò�ì9ç&YpH�.!6yìsç]YMò ~�ë9ë�³ï~�ë9ë��WE�8�HL.ª25E�XY4�\<E03CFE�:,.103E�25.!H�Stì9ç&Y�+�VWS,EbH�25S,gM�WEu614�.�4�0��uHL.10�034�:,XYI�S,E�X[E�.10!05C�E�ì9ç&Ya4�.@05C�E�S,E9K�0/â/C!H�.!6E�.!6p:,.pG3:,S,:T894�.��vG54@��EWI�STHvg@05C�ED0325:}85§@4LKo85C!HL.�k�:,.�k�03C�ED�DHvg@:,.p�DC�:T83Cp03CFED:;.FI�7�03GÌHL23EI�25E�G3E�.105Eb6[034@05C�E�89:,29897�:,0b�1H�.!6p:,X[I�S,E�XYE�.105:;.Fk@ìsç]Y�ò Þ$ß5à$à Ó �DC�E�25EL� Þ$ß5à$à Ó ��v#�}(��+ìsç]Y�ò Þ$ß5à$à Ó ³ 2 ê â�Ô ò doY#� ± u5Q_W ­ â�Ô ò1æ�¢,è9ïX²Ìò u5QXW ± gDL>S |pî�}!ò�~�ë9ë�²

³ 2 ê â�Ô ò doY#� ± u5Q_W ­ â�Ô ò1æ�¢,è9ïÌò u5Q_W |pî�}�²�òu7QXW ±/2 ê â'Ô ò u5Q_W ¡bçNì�z?ò d�Y#� ±�~�æ<æ�ò&2 ê â'Ô ²Ìò&2 ê ²�MGD�JE9K#4<23E��J�WE?23EbHL232sHL.�k�E?05C�:,GD:;.1054YH@I!HL:,2D4�K(254��DGb�14<.�E@�JE�S,4��%03C�EA4�03CFE�2b+

ì9ç&Y?ò Þ$ß5à$à Ó ³ 2 ê â�Ô ò u5Q_W>u5QXW ¡NçNì�z®ò doY#� ± u5Q_W�Q�Z,j ­ â'Ô ò9á�²Ìò92 ê�DC�E�25E=á ³ä±~<æ�æpò+2 ê â'Ô ²�m�±�æ�¢,è9ïÌò u5Q_W |pî�}5²³ 2 ê â�Ô ò u5Q_W>u5QXW ¡NçNì�z®ò d�j�a ± u7QXW�Q�Z j ­ â'Ô ò9á¿ò+2 ê ²

Page 39: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  U�m

~�æ�æ

äå äå|�î�}�

¯°¯° ~<æ�æ

äå äå|pî-}�

¯°¯° ~�æ�æ

äå äå|�î�}�

¯°¯° ~<æ�æ

äå äå|pî-}�

¯°¯° ~�æ�æ

äå äå|pî�}�

¯°¯°

­�:,k�7F23E�*�+QU�U[w�H�.c:,.�G50sH�.J89E@4�K dvjIa ± u5QXW � ­7�8­�â�Ô8�tò#á¿ò+2 ê ²ÚDE�ðf0v���WE?G3S,4��%03CFE�89:,2s897F:;0

ì9ç&Y?ò Q�a Y#��Þ$ß5à$à Ó ³ Q�a Y#� ±sì9ç&YAò Þ$ßcà$à Ó ²³ 2 ê â'Ô ò u5Q_W u5Q_W ¡NçNì�z�ò dvjIa ± u5Q_W-Q�Z,j ­ â/ê ò#á¿ò&2 ê ²

H�.J6Y25E�03:,X[EM7�G5:;.FkY�D4�25.�E�2v� GD257�S,EUrd�W ­ ò�ì9ç&Y@ò Q�a Y#��Þ$ß5à$à Ó

³ UrdoW ­ ò92 ê â�Ô ò u5QXW3u5QXW ¡bç�ì�z�ò d�j�a ± u7QXW�Q�Z j ­ â!ê ò9á ò&2 ê ²³ 2 ê â�Ô ò u5QXW>u5Q_W ¡bç�ì�z?ò ±_± UrdoW ­¾²!ùD~9£¨} â�Ô ²Ìò d�j�a ± u5QXW�Q�Z,j ­ â!ê ò#á¿ò+2 ê ²³ 2 ê â�Ô ò u5QXW>u5Q_W ¡bç�ì�z?ò d�j�a ± u5QXW ±1­ ò Q�Z j ­ â/ê ²�ò#á¿ò+2 ê ²³ 2 ê â�Ô ò u5QXW>u5Q_W ¡bç�ì�z?ò d�j�a ± u5QXW � ­7�¦­ â'Ô ��ò9á ò&2 ê ²

�DC�:T85C�:,GÌ:,S;S,7�G50329H�03Ev6p:;.p¨Jk�7�25E@*�+QU�UF+�BDC�EDS,E9K�0/â/C!H�.!6pG5:T61ED23E�X[:,.!61GÌ7�G�03C!HL0Ì��E�C!Hv\�E4�.FS;g?:,XYIFS;ENX�E�.103Eb6?HDG5S,4��¥894<2325E�STH�034<2ÌH�.!6A03C!HL0�05C�E��WE�:,k�C105G4�WG3CF4�7�ST6A�!EWI�23ENG3E�.103Ev6034�05C�E@89:,2s897F:;0D:,.c23EN\�E�25G3Ep4�2s6fE�2MH�.!6[05:;X[E9â/G3§�EN��Eb6o+BDC!H�0Ì894<XYI�S,E�05E�G�03C�ED61E�\<E�S,4�I�X[E�.10�4LK�0/�W4M�W4�296<âåS,E�\<E�S1G3g1G3054�S,:T8�8�4�2325E�STH�054�23Gv��4<.�E4�KÌ�DC�:T85Cc7�G3ENG®U�ç�S}HL0s85C�E�Gv�J03C�E@4<03C�EN2M4�KÌ�DC�:T85Cl7�G5E�GM4<.�S,gªP�çhHL0M05C�E@E9ð�IJE�.�G3Ep4�KH�614<7���S,Eb6Y8�S;4�85§YG5I!ENEb6t+�#�¦Î���b Í���è«Ñe�_Ñ��ä�I�ï�_ie����¥_�!á��'¥D�XÐæ�e¥X�'Ðï��Ѥ�I�'�O�X�¤ÑBDC�E[.�E9ð�0�G50sHLk�Ec4�KM05C�Eª61EN\�E�S,4�IFXYE�.10@:,Gp034l25E9¨!.�Ec03CFEª4<I!EN2sH�05:,4�.�Gp034l4<.�E�G�05C!H�0894<X���:,.�EZHL.!6·I�254f6f7!89EY�F:;0«âå\<Eb89054�23Gv��HL.!6·03C�EN23EY�WE��D:,S,SÌG3054�I�+l�ÌHL23S,:,E�2@I�25E�G3EN.]09Hvâ03:,4<.�G�4�Kt03C�:,G�89:,29897�:,0ÌG37J83CYHLGÌ23E�K#E�23EN.!89E=�Q�1C�E�E�29q�q|�!C!Hv\�EDXcH�61E�03C�:,GÌ25E9¨!.�E�X[E�.10ÌG305E�I:,.@4�.FE�S,EbHLI���H�IFI!EbHLS,:;.FkM034yxQ��E�S,Sáâ/§].F4��D.���:,XYIFS;ENXYE�.10sHL03:,4�.�GJ4�Kt03C�EDH�25:,03C�X[E�03:T8�K#7F.!85â03:,4<.�Gb+Ì�a4���E�\<E�2DG3:,.!8�E@��E@8�HL.lE9ð�I�25E�G3G�23E�I�25E�G3EN.]09H�05:;4<.¥HL.!6cH���G50329H�8905:;4<.c23E�STH�05:,4�.�G:,.^03C�E[GsHLXYE�.�4<0sH�05:,4�.^H�Gp03C�Ec89:,2s897�:,0v����E[C!Hv\�E�05C�EY4<I�I!4<23057�.�:,0/g>054>�F23:T61k�E�05C�Ek]HLI^�!EN0/��E�EN. �W4�296<â®HL.!6·��:,0/â/S,E�\�ENSå+yBDC�:,G@:,G@�W4�23§·G305:,S;SW:,.^I�234<k�25E�G3GYHL0�é?STH�G5k�4��H�.J6 �að1K#4<2s6t��G34^03CF:;GpG3Ev8903:,4�. 6141E�G�.�4^XY4<23E[03C!HL.ã4�7F03S,:,.�EY05C�ElG3CJH�IJEª05C!H�0�05C�E23E�¨!.�E�X[E�.10D��4<7�ST6�C!Hv\<E�+BDC�EcG3052sH�05E�k�g"K#4<2�25E9¨!.�:,.�k·K�234�X ��4<2s6<â@034^�F:;0«âåS,E�\<E�SD:,G%wc054¥61ENGs8925:;�JE^H�. HL�1âG3052sH<8903:,4�."23E�STHL03:,4�."03C!HL0�25E�STH�03ENG�03C�E[��:,0/â/\�Eb89054�25G�4�IJE�2sHL03Eb6"4�.^�1g^05C�El89:,2s897�:,0p034

Page 40: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

U�q <>= ?A@BDC%?;EGFIHA@�@�J�C%?

03CFEM.17�X��JE�23G�03CJH�0Ì05C�E�g�23ENI�23E�G5E�.10bòF034�894<XYIJ4�G5ED03C�:,GÌ25E�STH�03:,4<.��D:,03C�05C�ED�W4�2s6]âåS,E�\<E�S61E�G98923:,I�05:,4�.ã4LKM03C�Ec894�2523E�STHL034�2vòDH�.!6·05C�E�.ã054>G5:,XYI�S,:áK#gY05C�EY25E�G37FS;05:,.�k>E�ðfIF23E�G5G3:,4�.�+ó^E?�D:,S;St7FG3E�HAG3:,XYIFS;E���:,0/â/I!H�29H�S,S,E�St��:,.!HL23g�23ENI�23E�G5E�.10sHL03:,4�.·4�KÌ.17�X��JE�23Gv�1XY4�G50�G5:,k�â.�:á¨�8�HL.10(�F:;0�¨!25G30v+�ó^Ȩ1.�4��ã054®85C�414<G3ED03CF:;G�25E�I�23ENG3E�.10sHL03:,4�.��JEb8�HL7�G3E���EWC!Hv\<Eu614<.�E03CFE®6fE�\�E�S,4<I�XYE�.10Ì�JE9K#4<23E?7�G5:;.Fk�05C�E?S;EvH�G30WG3:,k<.�:á¨�8�H�.10W��:,0̨J23G30D25E�I�25E�G3E�.109H�03:,4<.>H�.!623ENk�23EN0303Ev6%05C�E¥85C�4<:T89E�ò�03C�El25E�G37FS;05:,.�k 89:,29897�:,0Y�DH�G�C!HL2s6~054^I�:,I!ENS;:,.�E<+ VWCF4]4<G3:,.�k03CFE�23E�I�25E�G3EN.]09H�05:;4<.ã�D:,03Cy03C�E�X[4�G30«âåG5:,k�.�:á¨�8�HL.10/â/��:,0W¨!23G50@k�:,\�ENG�G5:,XYI�S,E�2?6�H�09H��J4��03CF234�7Fk�Cc03C�E?��:,0«âåS,E�\<E�S�:,XYIFS;ENX�E�.10sH�05:,4�.p4�K(05C�E�89ENS;S3á +-�KX�N¢,ïM:,G?03CFE�:T61E�.105:;0/gc25E�STH�03:,4<.l4�.·��:,03Gv�t03C!HL0?:;G�:áK�:,0�:,G�03C�E�0/g1IJE�4LK���:,03Gv��H�.!6�N¢Têi³ g×L>S ��¢,ïÌò1ìsç]Y@ò W�dvU ±9d P>²Wò-~�ë9ë<��05C�E�.·G3:,.!89E!�N¢Tê â'Ô ò(��¢Têi³êA~vï�:;G�03C�EA:}6fE�.103:,0/g4�.~.!HL037�29H�S�.]7FX��!E�25Gb�"��¢Têñ:,GYH�.%H���G50329H�8905:;4<.~K#254�Xd��:,0�\<Eb89034<23G[034^03CFEl.!H�057�2sHLS.17�X��JE�23Gv+%xc4�25E�4�\�E�2[:áK��N¢Tê Ó ³ûÒ^ò��N¢Tê~03C�EN.Ö��¢íê Ó ò��N¢Tê â'ÔÓ ³ûÒ^ò g×L>S �N¢,ïYH�.!6�N¢Tê â'ÔÓ òx�N¢Tê Ó ³¦ê¨~vï Ó �DC�E�23E^êA~ ï Ó :,G@03CFEª0/g1IJEY4LKM03C�4<G3EY.17�X��JE�25G@:,.^03C�E[2sH�.Fk�E�XHoGyê P3Ó�23E�IF23E�G5E�.10sH��FS;Ep:,.�Òc�F:;05Gb��HAG37��fâå0/g1IJE�4LKuêA~ ïb+Ì�14!��¢íê Ó H���G50329H�8905GeÒFâå��:,0��:,0/â/\�Ev89034<23GD034�G5XªHLS;SFE�.�4�7Fk�Cc.17�X��!EN23Gb��HL.!6-�N¢Tê â�ÔÓ 25E�I�23ENG3E�.103G@HL.]g�G5XªHLS;SJE�.�4<7�k�C.17�X��JE�2uHLGMH�.iÒFâ/��:,0���:,0«âå\<Eb89034<2b+�17�I�IJ4�G5ED��EMHL23EW.�4�0�k�4�:,.�k�034?�DH�.10�054@k�:,\�E�.�E�k]HL03:,\�EW:,.�I�7�05GÌ034?05C�EM894�2523E�STHL034�21w03CFE�.ã�WEª8�HL.^G3C�4��03C!HL0@.�4·I!H�250@4�KM05C�Eª89:,29897�:,0�.FE�Eb6^05C�E�.~61EbH�SD�D:,05C^.�E�k]HL03:,\�E.17�X��JE�23Gv��H�.!6&03C!HL0�05C�E?4�7�05I�7�0DX�7�G50Ì�!E?.�4<.1â/.�E�k]HL03:,\�E<+�BDC�E?.�E�ðf0D05C�:,.�kp034�614�:,G034l61Ev89:T61E�4�.·G34<XYE�H�I�I�254�I�25:TH�03Ep�D:T6103CFGMK�4�2?03C�E��F:;0«âå\<Eb89054�23Gv+Y�1:,.!89E�EvH�85C>4LKu05C�E894<XYIJ4�.�E�.10@IJH�2305G�4�K<á�:,Gpk�4<:;.Fkl034·�!Ev894�X[EYH>894<S,7�XY.^4LK�89E�S,S,Gb��HL.!6^G5:,.!89EY�WE�D:,S,SÌ�uHL.10@034l:,.103EN23S,EbHv\�E[03C�ENG3El894�S,7�X[.�Gb�o:;0A�D:;S,SÌ�JEYG5:,XYI�S,E�G50@:áKu�WEª8�HL.ãH�252sH�.Fk�EK#4<2ÌE�\�EN23g103C�:,.�k�054@C!Hv\<EM03CFEMGsHLXYED�D:T6105C�+�BDC�:,GÌ:,GuH®k�23EvH�0DG3:,X[I�S,:�¨t8�H�05:;4<.����F7�0�4<.�E03CJH�0�g�4<7@.�E�Eb6p.F4�0�XªHL§�EÌ:áK!g<4�7�HL23ED61E�03EN23XY:,.�Ev6@054�IF234�617!89ED05C�EDG3XcH�S,S,E�G30tIJ4�G5G3:,��S,E:,XYI�S,E�X[E�.10sHL03:,4�.�4LKÌ03C�E@89:,2s8�7�:,0b+�MG@:,.l05C�EY89:,2s8�7�:,0�:,.·23E9K�E�23E�.J89E-�Qxl8�VDHL�!q�P]�3�t�WEAK#7�2305C�E�2@G5:,XYI�S,:áK#g�XªHL0305E�23G?�1gH�G5G37�X[:,.�k?03C!HL0�05C�EM25E9K#E�25E�.!89E@:,.�IF7�03G$�&C�H�25EM4�.FS;g�H?G5:;.Fk�S,ED��:,0Ì�D:T61E�+�-�K�05C�EMSTH�25k�E�G50}Lâå\�HLS,7�E@8�H�.l�JE@25E�I�23ENG3E�.103Ev6^�1glH�ë<â/�D:T61E?��:,0M\�Ev89034<2 ä 05C!H�0�:,Gb�J:áK :,0D:,GM:,.åÒ�s.Ïwì ä03CFE�.ãH�.1gc\�H�S,7�E@XcH�.�:,I�7FS}HL03Eb6[�1gl05C�EY89:,2s897F:;0@8�HL.>�JE�23ENI�23E�G5E�.103Eb6 �1g>H�.�ÒFâå�D:T61E��:,0/â/\�Ev89034<2b��IF234�\1:T61Eb6¡ÒKízç¹N�ët+ç�ò g×L>S êA~ ï Ô ò UrdoW ­ ò�ìsç]Y?ò Q�a Y#��Þ$ßcà$à Ó ò Q�Z j êA~ ïRì

³ çOò g×L>S êA~ ï Ô ò Urd�W ­ ò�ì9ç&Y@ò Q�a Y#��Þ$ß5à$à Ó ò��,êA~ ï Ó �bêA~ ï ì �³ çOò g×L>S êA~ ï Ô ò Urd�W ­ ò�ì9ç&Y@ò Q�a Y#��Þ$ß5à$à Ó ò��,êA~ ï Ó �bêA~ ï Ó �tò Q�Z,j êA~ ïwì

ÚD4��~4<7�2�G50329H�03ENk�gY:,GÌ054�25E�I�STH�8�E�EvH�85C>êA~ ï Ó �1g!��¢íê â�ÔÓ ò|�N¢Tê Ó H�.!6&034@I�7FG3Cc03C�E�23E�Ifâ23ENG3E�.10sHL03:,4�.y23E�STH�05:,4�.�GM614��D.c:,.1034�05C�E@89:,2s897�:,0v�!7F.]05:,St03C�E�8�:;29897�:,0�8NH�.c�!Ep61E�Gs8�23:,�!Ev6H�G@Hc894<S;S,Eb8�03:,4�.·4�Ku8�4�XYIJ4�.FE�.103G?03C!HL0?��Ep§1.�4�� C�4���054c:;X[I�S,E�XYEN.]0v+���4<:;.FkY03CF:;Gv��WEM¨J.!6[03C!HL0D��E?.�E�Ev6c034�:,XYIFS;ENXYE�.10�F�³�N¢Tê Ó �#��¢Tê Ó �E�|�N¢,ï1��ò#á¿ò+2 ê ò��³�N¢Tê Ó �#��¢Tê Ó � â�Ô

³ ±X±�³��¢Tê Ó �|�N¢Tê Ó ��ò�~�æ<æpòJ�N¢Tê â�ÔÓ ò+2 ê â'Ô ²�m±�æ�¢,è9ïÌò u7QXW ±w�³�N¢Tê Ó �#��¢}ï��tò�|pî�}!ò(��¢Tê â�ÔÓ ²X²_²�ò+2 ê

Page 41: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  U�wó^EWC!Hv\�EWG3C�4��D.pE�S,G3EN�DC�E�23E=� Â�4<.!w��]�JC�4��ãE9ð�I�25E�G3G5:,4�.�GÌS,:,§�E"�³��¢íê Ó �|�N¢Tê Ó � ò�~�æ�æ�òw�N¢Tê â�ÔÓ8�HL.l�!Ep:,XYI�S,E�X[E�.103Eb6&�1g HL2329Hvg]G?4LK G5:,XYI�S,E�2M89ENS;S,Gv+@�DE�25E��t�WE�G50sH�05E�05C�Ep.�Eb89E�G5GsHL23g03CFE�4�25E�XYGD�D:,03CF4�7�0WI�23414LKs+Ì­�:;25G305S;g

�³�N¢Tê Ó �#��¢Tê Ó ��ò�~<æ�æ&ò���¢Tê â'ÔÓ ³ ¡�¢Q£Yò%Ò[ò+2 Ô â'Ô ò Q�Z,j ¡bçNì�z?ò T�YOaîJï ò&2 ê�DC�E�25ED03C�ED25E�STH�05:;4<. î(ï :,G�j97�G50ÌHMG50sHL.!6�H�296AK#7�S,Sáâ«H<6�61E�2v��H���:,0/â/S,E�\�E�S�894<XYIJ4�.�EN.]0�05C!H�0�WE�§1.�4�� C�4��%054�:,XYI�S,E�X�E�.101w

îJï ³ �F�·�N¢,ï�|�N¢,ï���ò�~�æ�æ��|�N¢,ï��!ò-~<æ�æpò�~�æ�æ â�Ô ò��r±+dÌP�² â�Ô òJ�N¢,ï â�Ô �|�N¢,ï â�Ô ��1:,XY:,STH�25S,g�·�N¢Tê Ó �#�N¢,ï���ò�|pî�}!ò(��¢íê â�ÔÓ ³ T�Y[a¦ð ò+2 ê ò%Ò�DC�E�25E ð ³É{%zLìÊ�ò#�[2 ê �+�³�N¢,ï&�|�N¢,ï��!ò�|pî�}!ò(��¢,ï â�Ô �

H�.J6c03C�EA��:,0/â/X�7�S,03:,I�S,:�E�2"�³��¢}ïR�#�N¢,ï���ò�|pî�}tòJ�N¢,ï â'Ô 8�H�.y�!E@:,X[I�S,E�XYE�.105Eb6��1gY05C�EpGsH�X[EE�S,Eb8905234<.�:T89G�HLGDg�4�7c�W4�7�ST6&7�G3E?034�:,X[I�S,E�XYE�.10�S,4�k<:}8NH�S'x¤HL.!6t�,+BDC!H�0�:,XYI�S,E�X[E�.103GÌ05C�EZH<6�61:,03:,4<. HL.!6[X�7�S,03:,I�S,:T8�H�05:,4�.pI!H�2503G?4�KÌ03CFE�89E�S,SÌH�G�0/��4G3ENI!H�29H�03El894<S,7�XY.�Gv�(HLG@:,S,S;7FG30329H�05Eb6^:,.·¨!k<7�23E·*�+QU�_J+c-/0@��4<7�ST6·�!EcHck�414�6·:T61EbHy034E�S,:,XY:,.!HL03EÌG54�XYED�D:,25EM89234<G3G3:,.�k<Gb��HL.!6�054�614@05C�:,GÌ:,0Ì�D:,S;SF�!E�.�Eb89E�G5GsHL23gY054�:,.103EN23S,EbHv\�E03CFE�894<S;7FXY.�Gv+tó^EDG309H�230��]gpXYEN23k�:,.�k?05C�E�æ�¢,è9ï�HL0Ì03C�ED054�I�4LK�03C�E?61:TH�k�29H�X��D:,03C�05C�E894<S;7FXY.�4�KÌX�7�S,05:;IFS;:áE�2�89ENS;S,Gv+æ�¢,è9ïÌò u5Q_W ± T�YOaEð ò&2 ê ò%Ò!² ³ T�YOaEð Ó ò&2 ê ò1ÒYòL¡�¢Q£ â�Ô�DC�E�25E ð Ó ³©æ�¢,è9ïÌò u5QXWBð ò�}¤è�í

ÚD4��"��EMHL23E�:;.�H�I!4<G3:,03:,4<.�054@:,.]05E�23S,EbHv\<ED03C�EM8�4�S,7�XY.A4�K ð Ó!89E�S,S,GÌ�D:,03C�05C�EM894�S,7�X[.4�K îJï 89E�S,S,Gb+�I�³�N¢Tê Ó �#��¢íê Ó �E�|�N¢,ï��!ò#á¿ò+2 ê ò#�³��¢íê Ó �#��¢íê Ó � â�Ô

³ ±3¡�¢Q£Yò1ÒYò92 Ô â�Ô ò Q�Z,j ¡NçNì�z®ò T�YOaîJï ò92 ê ò&2 ê â�Ô ²ym± TYOaEð Ó ò92 ê ò%Ò[ò�¡�¢Q£ â�Ô ²X²�ò+2 ê

³ �á¡�¢¤£Zò1Ò3�w2 Ô â'Ô ò Q�Z j ¡bçNì�z]�tò T�Y[a õ ò&2 ê ò3±3¡�¢Q£�ò%Ò!² â�Ô�DC�E�25E8õ�³�±_±3è&^�~�£=m ð Ó ²�ò Q�Z j ì9è�íO²3lݱ î(ï mDèR^(~9£!²ó^EMCJHv\�E?G309H�03Ev6Y�D:,05C�4�7�0tj97�G503:á¨�8�HL03:,4�.cHp03C�EN4�23ENX°HL�!4<7�0�05C�E?:,.]05E�23S,EbHv\1:,.�kp4�K�0/��4894<S;7FXY.�Gv+%B�4ãH�I�IF234]H<85C%03C�:,Gc61E�G3:,k<. IF234�IJE�25S;g1�D:,0��W4�7�ST6"C!Hv\�Ey�!E�EN. �JE�0305E�2c034:,.103234�617J89E@Hp.�E�� C�:,k�C�E�2D4<2s61EN2WK#7�.!8905:,4�.ª8�4�2325E�G3IJ4�.J61:,.�kY054�03C�E?�DHvg�03C�E@89E�S,S�õ :,G��7�:,S,0�K#234<Xz05C�EY89E�S,S,G îJï HL.!6 ð Ó HL.!6l054>61E�\<E�S,4�I^G54�XYEp4�KD03CFEYH�S,k�E��F2sH[4�KM05C!H�0C�:,k�CFE�2D4�2961E�2DK�7�.!8905:;4<.�+­�:;k<7�23E·*�+QU�e[G5C�4��DG�05C�Eª8�4�S,7�XY.·03CJH�0@�WEYC!Hv\<EMj97�G50�XcH�61E�+[BDC�E[23E�STH�05:,4�.�õ8�HL.��!E�:;X[I�S,E�XYEN.]05Eb6?�1g�H�K�7�S,S�â3H�6F61E�2b�<H�.¡x�H�.!6o��k]HL03EMH�.J6pG34�X[E��D:,25:;.Fk!ò�G54@��EM8NH�.G3054�IcC�E�25E�H�.J6YIFS;7Fk�E�\<E�23g105C�:,.�k��!H�85§[034�k<E�03CFE�2b+

Page 42: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

_]� <>= ?A@BDC%?;EGFIHA@�@�J�C%?

� ñ ñ ñ ñ ñ ñ ñ ñ ñ ñ ññ � |pî-} ñ ñ ñ ñ ñ ñ ñ ñ ñ ññîJï

� ñ ñ ñ ñ ñ ñ ñ ñ ñ ñ ññ � |pî-} ñ ñ ñ ñ ñ ñ ñ ñ ñ ññîJï

� ñ ñ ñ ñ ñ ñ ñ ñ ñ ñ ññ � |pî-} ñ ñ ñ ñ ñ ñ ñ ñ ñ ññîJï

� ñ ñ ñ ñ ñ ñ ñ ñ ñ ñ ññ � |pî-} ñ ñ ñ ñ ñ ñ ñ ñ ñ ññîJï

­�:,k�7�25EZ*<+QU�_Awr�I�³�N¢TêBò��|�N¢TêBò]�E�|�N¢,ï1�!ò#á�ò Q�Z,j �³��¢TêPòJ�#�N¢Tê(ò&��â'Ôu:,X[I�S,E�X�E�.103Eb6p�1gYHL.ª:,.103EN2/âS,EbHv\1:,.�k�4LK(G5E�I!H�29H�05E�894�S,7�X[.�G

Page 43: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  _!*

¢ ¢¢ ¢¢ ¢ó ó

ó óó óó óó óó ó

ô ôô ôô ôô ôô ôô ôô ôô ôô ôô

£ £ £ £ £ £õ õ õ õ õ õ õ õ õ õ õ õ

ö ö ö ö ö ö ö ö ö ö ö ö ö ö ö ö ö öö � £ £ � |pî�} WîJï

� £ £ � |pî�} WîJï

� £ £ � |pî�} WîJï

� £ £ � |pî�} WîJï

££££

££ õõõõõõõõõõõõ

ööööööööööööööööööö ¢¢¢¢¢¢

óóóóóóóóóóóó

ôôôôôôôôôôôôôôôôôôô

­�:,k�7�25Eª*<+ U<eOw"�F�³��¢Tê(ò(�#��¢Tê(ò]�E�|�N¢,ï1�oò�á ò Q�Z j �·�N¢TêPò��|�N¢TêPò&��â�Ô�:;X[I�S,E�XYEN.]05Eb6[�1g H&G3:,.�k<S;E894<S;7FXY.�4�KÌ:,.103E�25S,EbHv\�Eb6c894<XYIJ4�.�EN.]05G

Page 44: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

_]P <>= ?A@BDC%?;EGFIHA@�@�J�C%?

ç�ò g×L>S êA~ ï Ô ò UrdoW ­ ò�ìsç]Y?ò Q�a Y#��Þ$ßcà$à Ó ò Q�Z j êA~ ïRì³ çOò g×L>S �N¢,ï â'Ô ò&2 ê â�Ô ò u5QXW>u5Q_WOgDL>S ¡bç�ì�zMò

d�j�a ± u5QXW � ­7�¦­ â�Ô ��ò#�F�³��¢Tê Ó �|�N¢Tê Ó �¦�#�N¢,ï³�tò#á¿ò+2 ê ò��³��¢Tê Ó �|�N¢Tê Ó � â'Ô ²�ò�³��¢Tê Ó �#��¢Tê Ó ��ò Q�Z,j ê¨~vï&ì³ çOò g×L>S �N¢,ï â'Ô ò&2 ê â�Ô ò u5QXW>u5Q_WOgDL>S ¡bç�ì�zMò

d�j�a ±�I� ­7�¦­ â'Ô ��òv¡�¢Q£Yò1Ò3�w2 Ô â�Ô ò Q�Z j ¡bçNì�z]�tò T�Y[a õ ò92 ê ò1±5¡�¢Q£Yò%Ò!² â�Ô ²�ò�³��¢Tê Ó �#��¢Tê Ó ò<êA~vï ì �³ çOò g×L>S �N¢,ï â'Ô ò&2 ê â�Ô ò#��¡�¢Q£[ò g×L>S!u7QXW ¡bçNì�z(� gDL>S ±/2 Ô â'Ô ò Q�Z j ¡bçNì�z ²/��ò

d�j�a ± u5QXW¨gDL>S � ­K�8­ â'Ô ��ò T�YOa õ ò+2 ê ²�ò¡�¢Q£ â'Ô ò#�³��¢íê Ó �#��¢íê Ó ò<êA~vï ì �³ çOò g×L>S �N¢,ï â'Ô ò&2 ê â�Ô ò#� gDL>S¨u5QXW ¡bçNì�z(� g×L>S ±82 Ô â�Ô ò Q�Z,j ¡NçNì�z>²��tò

doY#�¯T�YOa ± u5QXW � ­7�¦­ â'Ô ��ò1õD²Ìò2 ê ò�¡�¢Q£ â'Ô ò��³�N¢Tê Ó �#��¢Tê Ó ò�êA~vï ì �BDC�EWXY:T6�61S,E�03E�25X�4�.@05C�E�25:,k�C10/â/C!H�.J6MG5:T61E�:,G1j97�G30�H�.�ç��]g¿Òpk�25:}6®4�K�:T61E�.103:T8�HLSf8�E�S,S;Gv�H�.J6?03C�:,G�I!H�250(�W4�7FS}6?89EN230sHL:,.�S,g��JEW:;X[I�S,E�XYEN.]05Eb6MHLG�I!HL230�4�K�05C�Eu8�:;29897�:,0b+�BDC�EW03E�25XYGH�0�E�:,03C�EN2ÌE�.!6A4�K!05C�EWE9ð�I�23E�G5G3:,4�.YHL23EW�DC!H�0�23E�XcH�:,.�G�4�K�03C�ED25E�I�25E�G3E�.109H�03:,4<.�23E�STH�05:,4�.�+BDC�E�gã6fE�Gs8925:,�!EcC�4��Î03C�E[:;.FI�7�0@X�7�G50@�JEYI�25E�G3E�.105Eb6"034l05C�Eª89:,29897�:,0b�ÌHL.!6·C�4��©03423EvH�6A03C�ED4<7�03I�7F0%w�ç ò gDL>S �N¢,ï â�Ô XYEvH�.�G(x�HDS,:,G30�4�K¤ç4�.�E�âå��:,0�.17�X��JE�23Gv�;ò�HL.!6�¡�¢Q£ â�Ô ò

�³��¢íê Ó �|�N¢Tê Ó ò�êA~vï&ì]�tXYEbHL.�G�xQ03C�E�:,.]05E�23S,EbHv\1:,.�k@4LK(H�.¡ÒFâå��:,0Ì�F:;.JH�23gp23ENI�23E�G5E�.10sHL03:,4�.c4�K4�.FED.]7FX��!E�2ÌHL.!6p03C�EeÒFâ/��:,0Ì25E�I�23ENG3E�.10sHL03:,4�.[4�K�H�.�4<03C�EN2Ì.17�X��!EN2(�DCF:}85CY894<7�ST6pC!Hv\�E�JE�E�.Y25E�I�25E�G3E�.105Eb6c:,.�ëp�F:;05Gb�,+tBDC�E�23E�XcH�:,.�:,.�kD05E�23X[G�61E�G98923:,�JEM03CFEM0/g1:,.�k?4�K�89E�2309H�:,.S,:,.�E�GD034YHAS,E�\�ENS�23ENI�23E�G5E�.103:,.�kc03CFE��F:;0D�NE�234J�!H�.J6Y05C�E�61:,G98�H�2961:,.�k�4�K�03C�E@G5:,k�.!HLS;GW4�.4�05C�E�2�S;:,.�ENGb+�#�¦Î��8Î S �4â��_Ñ��ß�I�R�å�_ÐÏ�e¥_��Ðï�!Ѥ�I�'�O�X�¤ÑÛ�>èe�>�O�#¥X�_�¯�'�ª�O�e� ie�+�¾¥_�!á��'¥BDC�E>8�:;29897�:,0c23E�IF23E�G5E�.103Eb6 �1gz® ³ doY#��T�Y[a ± u5Q_W � ­K�8­¯â'Ô8�ÌòOõD²���:,S;S,7�G50329H�03Ev6~:,.ã¨Jk�â7�25EY*�+QU�iF��CJH�GD.�4pS,4�.�kpC�4�25:,��4�.10sHLS�894�X��F:;.JH�03:,4<.!H�S�IJH�03CFGD�!Eb8NH�7�G5E�4LK(03CFE�� ­7�¦­¯â'Ô8�03CF234�7Fk�Cl�DC�:T85CcEbH�85ClCF4�23:,��4<.10sH�S�6�H�09Hvâ/I!H�05CcI!H�G5G3E�G@H�0DEvH�85C¥8�E�S,Så+Dxc4<23E�4�\<E�2MG5:,.!89E03CFEu85C!HL.�k�EW4�K!25E�I�25E�G3E�.109H�03:,4<.�03C!HL0��WE�7�G5Eb6p61:T6?.�4�0�:,.]\<4�S,\�EWH�.1g�85C!HL.�k�EW:,.@03C�ED61:áâ23Ev8903:,4�.[4�K�05C�E@6�H�09Hvâ��!4��@���J4�03C[03C�E@61ENS}Hvg1G�HL.!6YHL.103:áâ«6fE�STHvg]G�:,.Y05C�E�8�:;29897�:,0W23E�XcH�:,.:,XYI�S,E�X[E�.10sHL��S,EuHLGDS}HL0s85C�E�Gv+BDC�E�25E>H�25EªCF4���E�\<E�2p\�E�2503:T8�H�SD7F.]�F234�§<E�.%894�X��F:;.JH�03:,4<.!H�S�I!HL03C�G�05C�234<7�k�C"EbH�85C894<S;7FXY.�4�KÌ89E�S,S,Gb+�-/.[¨!k<7�23E�*�+QU<e@05C�E�G3EpH�23E?05C�E?S;4<.�kp\�E�2503:T8�H�StS,:,.�E?03CJH�0D8�H�2523:,E�GM05C�E23E�K#E�23EN.!89Ec��:,0b�tH�.J6>H[234<7�03E�05C�234<7�k�C·03CFEY8�H�2523g<âåIJH�03C·03CJH�0Ìj94�:,.�G?05C�E î(ï 8�4�XYIJ4�â.�E�.105Gb+Ìó^E�X�7�G30�E�S,:;X[:,.!H�05ED03C�E�G5E?S;4<.�kpI!H�05C�GD�1g�G3§�EN�D:;.Fk!+�ó^EMS,EbHv\�E?05C�:,G�09H�G3§cH�GH�.cE9ð�E�2989:,G3E?K�4�2D03CFE�25EbH�6fE�2b+Á±å�D:,.10%w�05C�E@H�I�IF234�IF23:TH�05E�G5§�E��D:,.�k�STHv�~K�4�2D894�S,7�X[.�G�:,G23ENXY:,.�:,Gs89EN.]0D4LK �a4�23.FE�2b� GM257�S,E�K#4�2W23:,k�C10D25Eb617!8905:,4�.�G1w

± W�d�U ­�ùD~9£!ì â�Ô ²�ò T�YOa ­%ò Q�Z j#W�d�U ­ â�Ô ³ T�YOa ± Q�Z j ­ ò%­¿²

Page 45: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  _]U

õ¯°¯°äå äå õ¯°¯°

äå äå õ¯°¯°äå äå õ¯°¯°

äå äå

õ¯°¯°äå äå õ¯°¯°

äå äå õ¯°¯°äå äå õ¯°¯°

äå äå

õ¯°¯°äå äå õ¯°¯°

äå äå õ¯°¯°äå äå õ¯°¯°

äå äå

õ¯°¯°äå äå õ¯°¯°

äå äå õ¯°¯°äå äå õ¯°¯°

äå äå

­�:,k�7F23E�*�+QU�i[w(HL.Y:,.�G50sH�.J89E@4�K d�Y#�¡T�YOa ± u5QXW � ­7�¦­¯â'Ô8�!ò%õD²H�.J6lH�S,03CF4�7�k<Cª�WE�894�7�ST6cG5§�E��ÎEbH�85C^894�S,7�X[.Y:,.l057�23.��o:;0D:,G?G3:,X[I�S,E�G30D054YE9ð!85C!H�.Fk�E03CFE�254�� HL.!6c894�S,7�X[.�G305237!89057�23E<+ ²ÕpÖ÷ øOÝ[Ù(Ù#½?Ú3ù!Í Ø�½�Ù�gOÛ�Úrú¯¹��7�0305E�2/�!g".�E�0/�W4�25§]G�H�.J6^H�S,k�4<23:,03C�X[G@H�23EcHl61E�G5:,k�. 8�S;:T85C$�E�:,.ã61:,k�:,09H�SÌG5:;k<.!H�SWI�254�â89E�G5G3:,.�kJ�!j97�G50ZHLGZHL2329Hvg]GpH�.!6 k�23:T61G�H�25E�+lBWg1I�:T8�H�SDH�IFI�S,:}8NH�03:,4<.�G�H�25EYG54�2305:,.�k!��KåHLG30­F4�7�25:;EN2M0329H�.�G«K#4�25X>��HL.!6[03C�Ep:,.]05E�2s8�4�.�.�Ev8903:,4�.y4�KÌI�234�89ENG3G34<23G�HL.!6cX[E�XY4<23:,E�GW4�2D4�K.�E�0/�W4�25§1GM4�K�I�234�89ENG3G34<23Gv+M�Ì4<03Cl05C�Eªx�897��JE�894<.�.�Eb8�03Eb6·89g�89S,E��!HL.!6[03C�EGx C1g1IJE�2s897F�!E��8�HL.^�!E[XªH�6fE��1gcK#4<ST61:,.�kc7�IãH[��7�0305E�2/�Jg^.�E�0/�W4�23§t+l­F234<Xz03CFEYIJ4�:,.10�4LKu\1:,E��©4�KH�.^H�S,k<4�23:,05C�Xz61E�G5:;k<.�E�2v����7�0305E�2/�Jg>.�EN0/��4<23§1G�H�25E�:,.]05E�23ENG303:,.�k·�JEb8�H�7FG3EY05C�E�g·C!Hv\�EXªHL.1gªG5:,XYI�S,E@25Eb897�25G3:,\�Ec61Eb894<XYIJ4�G3:,05:;4<.�Gb+Aó^E�.�E�Eb6·G54�X[E�E9ð�052sHl`a7��1gª.F4�0sHL03:,4�.:,.Y4<2s61E�2�034��JE@H���S,E?034Y61ENGs8925:;�JE@��7F0303EN2/�!:,E�Gv+�#��û��X� ���e���y���������¨������©'üÏ�ó^EWC!Hv\�EDH�S,23EvH�61g@XcH�61EWHMS,4<0�4�Kt7�G5ED4�Kt03C�ED�D:,23:,.�k�23E�STHL03:,4�.[¡�¢Q£��DCF:}85Cp�uHLG�61E9¨J.�Eb6�1g��5Ã���È���¡�¢Q£¯ÄÝÅªÆ  ¤G5+�Ä C ³ý�7à C ��È C ��+���7�0503E�2«�!g^.�E�0/�W4�25§]G?7�G5EYH�25E�STH�03Ev6·I�:,Eb89E4�KWI�S,7�X���:,.�k!�105C�EpI!E�2«K#Eb890AG3C171¬YE@4<2ZìN¢ þ%ç�+@VW4�.FG3:T61E�2@HY6fEb85§l4�K̨FK#0/g<âå0/�W4Y8�H�2961Gbò:,0M8�H�.c�JE@23:á¬YEb6[�1gY61:,\1:T61:,.�k�:,.[C!H�SáKs�1:,.103E�25S,EbHv\1:;.Fk�054�k�:,\�E?0/�WE�.10/g�â/G3:áðYI!HL:,23Gb�JH�.!603CFE�.�xQ7�.�I!HL:,23:,.�k!�<�1gpK#4�25k�E�0503:,.�kYHL�!4<7�0�05C�E@I!HL:,23:,.�k!+BDC�:,G�IJE�23X�7F0sH�05:,4�.?4�.?E�\<E�.1â/S;EN.�k�05C�S,:,G305G�:,G�H�89057!H�S,S,gM7FG3Eb6A4�.@G5:,S;:T894<.@61E�G3IF:;05E�05C�E89254�G3G54�\�E�25G?03C!HL0D:;0W:,.103234�617J89E�Gb+Wó^E@8�HL. 6fE�Gs8925:,�!Ep:,0��1gª8�4�XYIJ4�G5:,.�k�05C�23ENE@G3:,XYIFS;EN2

Page 46: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

_�_ <>= ?A@BDC%?;EGFIHA@�@�J�C%?

�D:,23:,.�k�25E�STH�03:,4<.�Gb�'íI~3}�Y�ç1��¡�¢Q£¥HL.!6c£O~�¢Tì â'Ô ±_x 7F.�I!H�:,2v� ²N+DBDC�Ep23E�STHL03:,4�.�íO~ }�Y çp25E�STH�05E�GHcS,:,G30?4�KMEN\�E�.^S,E�.�k<03C^054>HcI!HL:;2@894<.10sH�:,.�:,.�kc05C�E�¨!25G30�H�.!6·G5Eb894<.!6^C!HLS,\�E�G@4LKu05C�ES,:,G30DG34cP�Òcò3íI~ }�Y çy³Ï~9£<£�â�Ô�ò�� Ò3��ÒP�3+WBDC�E@23ENS}HL03:,4�.c£O~�¢Tì�61E�¨!.�Eb6y�1gýî£I~L¢Tì�ÈëŪƠ¤G5+�È9C�³Q�5à ê Cw��à ê C Õ'Ô �Ì61:,\1:T61E�GÌH?S,:,G30�4�KtS,E�.�k<03CYP�Ò&:,.]054@H�.ªÒFâåS,:,G30�4�KtI!HL:;25Gb+¤±#ó^ED7�G5Eb6:,0DEbH�25S,:;EN2D�DC�E�.l61E9¨!.F:;.Fk Q�a Y#� +s²p�ME�¨!.�E

ìN¢ þ%ç ³ íO~ }�Y çaò�¡�¢Q£Yò9£O~�¢Tì â'Ô�14<XYEM4LK(05C�E?7�G3E9K�7�S�I�254�IJE�2305:,E�G?4�KuìN¢ þ%ç?H�23E

P>ÒYò<ì�¢ þ%ç ³ ì�¢ þ%çWòbP>ÒP�Ò[ò�ì�¢ þ çWò<ì�¢ þ%ç â�Ô ³ P�ÒP�Ò[ò�ì�¢ þ ç â�Ô ò<ì�¢ þ%ç ³ P�Ò

P ì ò�ìN¢ þ%ç ì ³ P ì

�#��û���¢ �qkå�Ï��ÑRÎÝ�XѤ�I�'�O¥X�'�¨á���MS,05C�4�7�k<C^��EY8�4�7�ST6·.�4���61E�G98923:,�JEc��7�0305E�2/�J:;ENG�7�G3:,.�kl05C�Eª8�4�X���:,.�:,.�k&K#4�25XYG@H�.!6�D:,23:,.�kl25E�STH�05:;4<.�G�H�S,23EbH<61g^:,.103234�617J89Eb6t�W0/�W4l.�E��{894�X��F:;.F:;.FkYK�4�23X[G@G3:,X[I�S,:�K�gª05C�E61E�G98923:,I�05:,4�.�+ntE�0¿­�H�.!6¡®"�J4�03Cc�JE?4�KÌ0/g1I!E gDL>S ü¨ð gDL>S ü9+Ì��E9¨!.�E

­Ãÿ�® ³ �s­���®��IùRíO~ }�Y ç â�ÔH�.J6

W���Y ­ ³ ­Ãÿ�­BDC�E?23ENS}HL03:,4�. W���Y ­ 23E�STHL03E�G��]g¯­ 03C�E�¨!25G30�C!H�S,\�ENGD4�K(05C�E?S,:;G503GD:,.Y:,05GM614�XcH�:,.YH�.!62sHL.�k�E<�ÌH�.!6·G5:;X[:,S}HL23S,gc03C�E[G3Eb8�4�.!6 C!H�S,\�ENGb+¡ÂW4�7ã8�HL.^03C�:,.�§·4�KM:,0�HLG�I�STH<89:,.�kc0/��4894<I�:,E�GD4�K4­�H<89234<G3GMHA��7�Gb+Ì�f:;X[:,S}HL23S,g W���Y ÓÀ­ I�STH<89E�GMP ÓY8�4�I�:,E�GD4LK4­�H�89254�G3GMHA��7�Gv+BDC�E·23E�STH�05:,4�. Ura k ­�4�.%05C�E^4�05C�E�2cC!HL.!6~23ENS}HL03E�Gy�]g¦­�03CFE^E�\�E�. .17�X��JE�23Eb6E�S,E�X[E�.103GÌ4LK�05C�EMS,:,G305GÌ:,.�:;05G�614<XªH�:,.�HL.!6p2sHL.�k�E<�]HL.!6pG3:,XY:,STH�25S,gM03CFEM4�6�6p.17�X��JE�23Eb6E�S,E�X[E�.103Gb+

Ura k ­ ³ ± W���Y ­¿²!ù?ì�¢ þ%ç�17�25I�23:,G5:;.Fk�S,g�E�.�4<7�k�C�� W���Y H�.!6 Ura k 8NH�.l�JE?E9ð!83CJH�.�k<Eb6

W���Y�Ura k ­ ³ Ura k�W���Y ­H KåH�890A03C!HL0��WEY�D:,S,S̨J.!6^\<E�23g^7�G5E9K#7�SDSTHL03E�2v+>-�KM�WEY§1.�4��©05C!H�0ª­{H�.!6�® 23E�STHL03E4�.FS;g[S,:;G503G�4�KÌEb�<7!H�S�S,E�.�k�05C��J03C�EN.l�!4<03C Ura k HL.!6 W���Y 61:,G30325:,��7�03EA4�\�E�2?894�X[I!4<G3:,03:,4�.'wUra k ±�­ñò%®�²#³ä± Ura k ­«²�ò1± Ura k ®�²MHL.!6 W���Y ±�­ ò�®�²(³�± W���Y ­¿²�ò ± W���Y ®�²�+

Page 47: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  _]e

? ?¢ ¢¢U UU UUW W£ £ £V V V VV

­

­

­

­

W W

£ £ £

V V V VV? ?

¢ ¢¢

U UU UU

? ?W W

? ?W W

­

­

­

­

? ?W W

? ?W W

­

­

­

­

­�:,k�7�25E�*�+QU�m[w(HA��7�0503E�2«�!gc4�K(G5:,��E�U�#��û��5ç ���'�¦�!�#ÐÏ�y�#�����O�X�#Ñ�ã�F7�0305E�2/�!g?.�EN0/��4<23§?4�K�G3:,��E5ë@894�.FG3:,G305G�4�K!HD894<XYIJ4�G5:;05:,4�.M4LKxëM29H�.�§1Gv��EbH�85C@4LK��DC�:T83C894<.]09H�:,.�GD05C�E?GsH�X[EM.17�X��JE�2W4�K 8�4�I�:,E�G�4�K(05C�E?�!H�G5:T8�8�E�S,Så�F��7�0M61:,G5I!4<G3Eb6c61:rÌtE�23E�.105S;gH�8�234�G5Gc03C�El�F7�Gb+�ó^Ey.�E�Eb6 H·�uHvg"4�KZ6fE�Gs8925:,��:,.�kã05C�:,GY§1:,.!6"4�K�894�X[I!4<G3:,03:,4<.ã4�KG3EN\�E�29H�SM61:rÌtE�23E�.10���7F0�G5:;X[:,S}HL2M25E�STH�03:,4<.�Gb+yBDC�:,G�\<E�23G5:;4<.ã4LK�894�X[I!4<G3:,03:,4�.�����y±#23EvH�6x KåH�0@894<XYIJ4�G5:;05:,4�.��s²��F�DC�E�.ãHLI�I�S,:,Eb6l054>H[S,:;G50?4�KD23E�STH�05:,4�.�G�8�4�XYIJ4�G5E�G?03C�ENX>+�BDC�:,GXYEvH�.�G�03CJH�0���ED.FE�Eb6YH�.�4<0sHL03:,4�.AK#4�2�S,:,G305G%w��D23:,03E"��G¤w���HzG�ê Ò�w�à C ��K#4<2�03C�EDS,:,G30�4�KS,E�.�k<03C¯Ò��<03C�E"GT05CYE�S,E�X[E�.10Ì4�K��DC�:T85C�:,G�ÃPCs+��14AK#4�2ÌE�ðFHLXYI�S,E �� ��G#w��XHzG3ê~_ªw�­DC��Ì:,G03CFED23E�STH�05:,4�.ª­ é ò7­ Ô ò5­ ê ò5­���+!ÂW4�7�8�H�.p03C�:,.�§A4�K �� H�GÌ05C�Eu�<7!HL.103:á¨!E�2�8�4�2325E�G3IJ4�.J61:,.�k034Y8�4�XYIJ4�G5:,03:,4�.��5j97�G30MHLG�Õ�:,GD03C�E@�<7!HL.]05:á¨!E�2M894<2323ENG3IJ4�.!61:,.�k[034YH<6�61:,03:,4�.�+�#��û��5þ ¾Ø�����!�O�EiR�XÑD���O�e�:ie©Á�-�O�'�(�eèëÑR�!�#kå�¤�BântEN0�7�G�H�G5G37�X[E�03C!HL0@4�7F2��!HLG3:T8�89E�S,Se­:,G@4�KM0/g1IJEªP Ó�Õ'Ô�ðdP Ó�Õ'Ô@K#4<2@G34<XYEA¨�ð�Eb6Ò�+ÃpaG37!HLS,S;g�Ò%�D:,S,SD�JEl��E�254!�WK#4<2�E9ð!H�X[I�S,EY�DC�E�.ñ��Ec��7�:,ST6"��7�0503E�2«�!:,E�GY4LKA8�4�X�âI!HL2sH�054�25G@4�2@4LKM0/��4y�uHvglG5�D:,0s85C�E�Gv+>�D4��WE�\<E�2@XªHL§1:;.Fk�Ò~HcI!HL2sH�X[E�03EN2@�D:,S;S��JEªH7�G5E9K#7�SJk�E�.FE�2sHLS;:,�bHL03:,4�.��DCFE�.�0325g]:,.�kA034@7�.J61E�23G50sHL.!6�05C�EM25Eb897�25G3:,\�E�G303257!89057�23E@4LK�05C�E.�E�0/�W4�25§t+� �F7�0305E�2/�!g�.FE�0/��4<23§�4LK�G3:,��ELë�8�4�.�G5:;G503GW4�K4ë�894<S,7�XY.�G�4<2�29H�.�§1Gb�<EbH<83Cc894�.109H�:,.1â:,.�k@P ì â�Ô�894<I�:,E�GW4�Kt03C�E��!H�G5:}8D8�E�S,Så+��ÌH<83C[2sHL.�§Z6f:;G50325:;�F7�03E�GW03CFE�G3E?894�I�:,E�GDH�8�234�G5G�05C�E��7�G ä �DCF:}85CcX�7�G50��JE?4�K(�D:T6105ClP ì Õ¨Ó ä :,.ªH�61:rÌtE�23EN.]0D�F7�0M25E�k�7�STHL2��DHvg]+

P Ó-Õ ì ò��Û­ ³ �� ��G¤w��XHoGyê�ë¡w W���Y C Ura k ì â C â�Ô ­"�� ��7�0305E�2/�JgY4�K�G3:,��E���E�234�:,GWG3:,XYIFS;gA03C�E?:T61E�.103:,0/g�4<.�S;:,G503GW4�K(S,E�.Fk�03CcP Ót+�-�K(�WED¨Fð�Ò034��JE@��EN234YG54�03C!HL0«­ñw]P�ð�Pp03C�EN.>Hp��7�0503E�2«�!gc4�KÌG3:,��E�UpCJH�GMUp2sHL.�§1Gb�FEbH�85Cl�D:,03C_Y894<I�:,E�GD4�K#­�+�-/0M8NH�.c�!EA\�H�23:,4<7�G3S,g�61E�Gs8�23:,�!Ev6>HLG

P � ò � ­ ³ Ura k ê ­%ò W���Y ± Ura k ­ñò W��4Y ­¿²³ Ura k ê ­%ò W���Y#Ura k ­%ò W���Y ê ­

Page 48: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

_]i <>= ?A@BDC%?;EGFIHA@�@�J�C%?

? ?¢ ¢¢U UU UUW W£ £ £V V V VV

­

­

­

­

W W

£ £ £

V V V VV? ?

¢ ¢¢

U UU UU

? ?W W

? ?W W

­

­

­

­

? ?W W

? ?W W

­

­

­

­

­�:,k�7�25EZ*<+QU�qOwo¨!25G30D23Ev897�23G5:,\�E�61Eb894<XYIJ4�G3:,05:;4<.�4�K�03C�E@�F7�0305E�2/�!g³ Ura k ê ­%ò Ura k�W��4Y ­%ò W���Y ê ­³ Ura k ± Ura k ­%ò W���Y ­«²�ò W���Y ê ­

Â�4<7Z8�HL.�05C�:,.�§p4�K!05C�E�G3E?61E�G98923:,I�05:;4<.�GDH�GÌ61:rÌ�EN23E�.10Ì�DHvg1G(4LKo6fEb894�X[I!4<G3:,.�k?03CFEDGsH�X[E23ENS}HL03:,4�.�+(­�:,k�7�25E@*�+QU�m�G5C�4��DG�4<.�EDIJ4�G3G5:,��S,ED�uHvgp4�KtSTHvg]:,.�k?4<7�0Ì03CFEM23ENS}HL03:,4�.�+�BDC�EN23EH�25E?4�K�894�7F23G3EAXªH�.1gp4�05C�E�23Gv+�10sHL2305:;.Fk·K#234<Xd4�7�2�:,05E�2sHL03:,\�El61E�G98923:,I�05:,4�.~4�K?03C�El�F7�0305E�2/�!g1�W��El8�HL.~7�G3El05C�EI�254�IJE�2305:;ENG@4�K W���Y � Ura k H�.!6"ì�¢ þ%çp054ª61EN23:,\�E�G5E�\�E�29H�S�HLS,03E�25.!H�05:;\<EZ6fEb894�X[I!4<G3:,03:,4<.�Gb+pD.1�D:,.!61:,.�kp03CFE®6fE9¨!.�:,03:,4<.ª4LK(05C�E@��7�0503E�2«�!g[K#234<X�03CFE�S,E9K�0Dk�:,\�E�GP Ó-Õ ì Õ'Ô ò��Û­ ³ �� ��G¤w���H�Gyêoë"N *¿w W���Y C Ura k� ì Õ'Ô�7â C â�Ô ­"�

³ ± Ura k ì ­¿²�ò �� ��G#w�*"H>G3êzëLN *¿w W���Y C Ura k ì Õ'Ô�7â C â�Ô ­"�³ ± Ura k ì ­¿²�ò �� �·¥¾w���H)¥�ê>ë¡w W���Y ¨ Õ'Ô Ura k� ì Õ'Ô�7â ¨ Õ'Ô�7â�Ô ­"�³ ± Ura k ì ­¿²�ò �� �·¥¾w���H)¥�ê>ë¡w W���Y#W���Y ¨ Ura k ì â ¨ â�Ô ­"�³ ± Ura k ì ­¿²�ò W���Y �� �F¥ªw��XH�¥�êoë¡w W���Y ¨ Ura k ì â ¨ â�Ô ­"�³ ± Ura k ì ­¿²�ò W���Y ±/P Ó�Õ ì ò � ­¿²

G3CF4��D:;.Fk�05C!H�0DH@�F7�0305E�2/�!gc4LK(G3:,��E<ëDN%*�:;GWXªH<61EWK#254�XOP ì 894<I�:,E�GD4�K4­ XªHL§]:,.�k?7�I03CFE?¨!23G50?2sH�.F§��FG34<XYE?�D:,23:,.�k!��HL.!6c0/�W4�23Eb8�7�23G5:;\<E�:,.�G50sHL.!89E�G?4�K�Hp��7F0303EN2/�!gl4LKÌG3:,��Eët+pBDC�:,G?:,G�IJE�25C!H�I�GpHYX[4�25E?KåH�X[:,S;:,H�2D61E�G98923:,I�05:;4<.^4�KD03C�Ep��7�0503E�2«�!g1+Y­�:;k<7�23Ec*�+QU<q4�7F03S,:,.�E�G�HL.�:,.�G50sH�.J89EM4LKoH���7�0503E�2«�!g�4�KtG3:,��E?P?H�.!6p4<.�ED4�KtG3:,��Ep*��D:,05C�:,.ZH?�F7�0305E�2/�!g4�K�G3:,��E�UF+�1:,XY:,STH�25S;gA7�.1�D:;.J61:,.�k�05C�E�KåH�0M8�4�XYIJ4�G5:,03:,4�.pK#254�X�05C�E?23:,k�C10Dk<:;\<E�GW7�G

P Ó-Õ ì Õ'Ô ò � ­ ³ �� ��G#w<��H�G3êzë"N *«w W���Y C Ura k ì Õ'Ô�7â C â'Ô ­"�³ ��,��G#w<��H�G3êzë�w W���Y C Ura k ì Õ'Ô�7â C â�Ô ­"��ò W���Y ì ­³ �� ��G#w<��H�G3êzë�w Ura k�W���Y C Ura k ì â C â'Ô ­L��ò W���Y ì ­³ Ura k ± ��,��G¤w��XHoGyêoë�w W���Y C Ura k ì â C â�Ô ­"�X²�ò W���Y ì ­³ Ura k ±åP Ó-Õ ì ò��Û­¿²�ò W���Y ì ­

Page 49: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  _]m

W W

£ £ £

V V V VV? ?

¢ ¢¢

U UU UU

? ?W W

? ?W W

­

­

­

­

? ?W W

? ?W W

­

­

­

­

? ?¢ ¢¢U UU UUW W£ £ £V V V VV

­

­

­

­

­�:,k<7�23E�*�+QU<wOw�HpG5Eb894�.J6c23Eb8�7�23G5:;\<E�61Eb8�4�XYIJ4�G5:,03:,4�.BDC�:,GW03:,XYEW��E?8�H�.cG5E�E?03C!HL0uH?�F7�0305E�2/�!gc894�.FG3:,G305GD4�K�0/�W4�G5XªH�S,S,E�2���7�0503E�2«�!:,E�GM:,.103EN2/âS,EbHv\�Ev6t�!894<XYIJ4�G5Eb6[�D:;05C>Hp2sHL.�§ª8�4�.�G5:;G503:,.�k?j97�G30�4�K W��4Y ì ­�+D­�:,k�7�25E�*�+QU�wp4<7�03S,:,.�E�G03CF:;GDG5Eb894<.!6c23Ev897�23G5:,\�E�61Ev894�X[I!4<G3:,03:,4�.�+�ÌEv8�H�7�G5E W���Y H�.!6 Ura k 8NH�.c�!E?E9ð!85C!HL.�k�Eb6o�!:,0WX�7�G30W�JE�05C�E�8�HLG3E@05C!H�0

W��4Y ±åP Ó-Õ ì ò��Û­¿²»³ W���Y �� �F¥¯w��XH�¥�êoë�w W���Y ¨ Ura k ì â ¨ â�Ô ­"�³ �� �·¥¾w��XH)¥�êzë¯w W���Y#W���Y ¨ Ura k ì â ¨ â�Ô ­"�³ �� �·¥¾w��XH)¥�êzë¯w W���Y ¨ Ura k ì â ¨ â'Ô ± W��4Y ­«²,�³ P Ó�Õ ì Õ'Ô ò � W���Y ­

H�.J6Ura k ±åP Ó-Õ ì ò � ­¿²»³ P Ó�Õ ì Õ'Ô ò � Ura k ­

�DC�:T85Clk�:,\<E�GD7�G�HL.�4�05C�E�2?I!HL:;2D4LK�61Eb894<XYIJ4�G3:,05:;4<.�GD4�K�H&��7�0305E�2/�JgªEvH�85C¥8�4�.10sHL:;.F:;.Fk4�.FS;g^HyG3:,.�k�S,E�:,.�G50sH�.J89Ec4�KM03CFEª.FE9ð�0�G5XªH�S,S,E�2@�F7�0305E�2/�!g1��HLS,03C�4<7�k�C^�D:,03CãHySTH�25k�E�2894<XYIJ4�.�E�.10v+P Ó-Õ ì Õ'Ô ò � ­ ³ ± Ura k ì ­¿²�ò3± � W���Y ­¿²

³ ± � Ura k ­«²�ò3± W���Y ì ­¿²BDC�E[G3Eb894<.!6"4�KM05C�E�G3E·61Eb894<XYIJ4�G3:,05:;4<.�G@:,G@:,S,S,7�G3052sH�05Eb6^:,.·¨!k<7�23E^*<+ _1�OwA03C�EcSTH�25k�E�24�7F03S,:,.�Eb6��J4vð�:;GDH�.[:,.�G309H�.!89E�4�K�� Ura k ­pò�H�.J6�03CFEMG3XcH�S,S,E�2�:,G�j97FG30 Ura k ê ­ñ�DC�:T83C[:,GuH61E�k<E�.�E�29H�05E�:,.�G50sH�.J89E?4�K�� Ura k ê ­p+BDC�E���7�0503E�2«�!g·C!H�G@XcH�.1gYX[4�25E�25Eb897�25G3:,\�Ec61Eb894<XYIJ4�G3:,05:;4<.�GM�JEb8�HL7�G3E[��E�.FE�Eb6.�4<0�61:,\1:}6fED:;0W:,.1034@H@G5:,.�k�S,ED2sHL.�§�H�.!6[H?23Eb8�7�23G5:;\<E@8�H�S,S�wt:,0u8NH�.��JEM03CFE®8�4�XYIJ4�G5:,03:,4�.4�K�0/�W4?G3:,XY:,STH�2�I!H�2503Gv+�BDC�E�61:,G9894�\�E�25g�4LK�03C�:,G�6fEb894�X[I!4<G3:,03:,4<.�:,GÌS,E9K#0WH�G�HL.�E9ð�E�2s89:,G5EK#4<2D03C�E?23EvH�61E�2v+­�:;.JH�S,S,g]�1S,E�0�7�G?23E�057�23.·034[03C�E�8�H�G5E�:,.c�DC�:T85Cl03CFE��!HLG3:T8@89ENS;S�:,GM4LK�0/g1I!EpPeðzPF+-/.l05C!H�0@8�HLG3E��t�WE�8�H�.l25E�STH�05E W���Y HL.!6 Ura k 054 gDL>S 034[k�E�0?G5:;X[I�S,E�2M61E�G98923:,I�05:,4�.�G?4�K03CFE®8�:;29897�:,0b+W�17�I�IJ4�G5E@03CJH�0e­�w�P�ð�P��105C�E�.

P ì Õ'Ô ò W��4Y ì ­ ³ P ì Õ'Ô ò ±X± g×L>S ­«²!ùW£O~�¢íì â'Ô ²

Page 50: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

_]q <>= ?A@BDC%?;EGFIHA@�@�J�C%?

¢ ¢¢¢ ¢¢£ £ £

£ £ £? ?W W

? ?W W

­

­

­

­

? ?W W

? ?W W

¢ ¢¢¢ ¢¢£ £ £

£ £ £? ?W W

? ?W W

­

­

­

­

? ?W W

? ?W W

­

­

­

­

­�:;k<7�23E�*<+ _1�Ow�G3:,.�k<S;g�25Eb897�25G3:,\�Ep\1:,E��-/.·4�03CFE�2?��4<2s61Gv�tEbH�85C�­�8�E�S,S(4<I!EN2sH�05E�Gp4�.lI!HL:,23G?4�KuH<6�j�H<89E�.10?E�S,E�XYE�.105GMK�234�X{05C�ES,:,G303GA:;.·03CFEY614�XcH�:,.>H�.J6l29H�.�k<E�+YBDCFEpK#4�25X ±X± g×L>S ­«²�ù�£O~�¢Tì â�Ô ²?H�25:;G5E�GpG34l4LK#03E�.03CJH�0D�WE®HL����25E�\1:}HL03E?:,0D034 S>g×L>S ­p+Ì�1:,XY:,STH�25S;g

P ì Õ'Ô ò Ura k ì ­ ³ P ì Õ'Ô ò ±_± S>g×L>S ­¿²!ù?ì�¢ þ ç â'Ô ²H�.J6c��EA4�K#05E�.>H��F��23E�\1:TH�05Eª±X± S�gDL>S ­¿²�ùAì�¢ þ%ç â'Ô ²�H�G d7S�gDL>S ­p+DBDC�EA23Eb897F23G3:,\<EZ61E�âGs8�23:,I�03:,4<.�GD4�K�HA��7�0305E�2/�Jgª4LK§­ñw�P�ðzPp8�HL.ª�JE@25E��D23:,0305E�.>HLG

P ì Õ'Ô ò � ­ ³ d5S>g×L>S ­ñò W���Y ±åP ì ò � ­¿²³ Ura k ±åP ì ò���­«²�ò S�gDL>S ­

ÕpÖ�� ����½��YÛ�ݪÚuß%½�Ú ÙÌÚ#ºpØ�¹���ÛpÚ(¶BDC�:,GÌ4<7�03S,:,.�E�GDH@61E�\<E�S,4�I�X[E�.10�4�K(H@894<XYX[4�.�61:,k<:;09H�S1G3:,k<.!H�Sáâ/I�234�89E�G5G3:,.�k�H�S,k�4<23:,03CFX>�C!Hv\1:,.�k·03C�ElH�:,X¦4�K?037�25.�:,.�k^03CFEªG5I!Ev89:á¨�8�H�05:,4�.~:,.]054>05C�E>`a7��1gã61E�Gs8�23:,I�03:,4<. 4LK®H��7�0503E�2«�!g^89:,2s897�:,0v+@BDC�E�25EY:,G�H&K#7FS;S,E�2�I�23ENG3E�.10sHL03:,4�.^4LK�03CFEY8�H�ST897�STHL03:,4�.l4LK�03CFE�:;X&âI�S,E�X[E�.10sH�05:,4�.pK#254�X�05C�E@G3IJEb89:á¨�8NH�03:,4<.ª:,.c23E�K#E�23EN.!89EK� Â<4�.!q<w]�3+�#�����X� ���e��ÎR�X���!�O�;�I�����#©e�O�_���ß�I�[�4ÑR�>��¤�OÐBD�WE�.10/g�â�¨!\<Elg�EbHL23GlH�k<4ãVW414�S,E�g HL.!6~B�7�§<E�g~23Eb61:,G9894�\�E�25Eb6�H�.ñ4�I�05:;X[:,��:,.�kl03Ev83Cfâ.�:T�<7�EY7FG37!HLS;S,gãHL030325:,��7�03Ev6ã054ÔéAH�7�G5Gb�W�DC�4·7�G3Eb6":,0p:;."C!H�.J6 8NH�ST897�STH�05:,4�.�+·BDC�E�gH�IFI�S,:;Ev6l05C�E�03Eb85C�.F:}�<7�E�054c03C�EY61:,G98923E�05Eª­F4�7�25:,E�2@0329H�.�G«K#4�25X>�J23Ev617!89:,.�k>HL.¥HLI�I!HL2/âE�.103S,g��b±�Ò!ê1²JI�234<��S,E�X 034D03CFE�H�S,XY4<G30J:,.�G309H�.103S,gD7���:T�<7�:,034<7�G��b±�ÒMS,4<k�Ò!²'x KåH�G50�­�4<7�23:,E�20329H�.�G«K#4�25X>�t�QVW4]4<STi�eR�«+BDC�EWKåHLG30Ì­�4<7�23:,E�2�052sH�.FG/K#4<23X :,G�.�4<0(4LK�894<7�23G5E�HM6f:�ÌtE�25E�.10�052sH�.FG/K#4<23X>�v��7F0 HaKåHLG30:,XYI�S,E�X[E�.10sHL03:,4�.M4LK�05C�Eu6f:;G98923EN03EM052sHL.�G/K#4<23X·+!-/05GÌk�25EbH�05E�G30�\]:,25037�EWS,:;ENG(:,.@05C!H�0�:,0(8NH�.

Page 51: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  _]w�JE@E9ð�Eb897�05Eb6y:;.��b±�S,4�k�Ò!²W05:;X[EM4<.��¾±�Ò!²DIF234�89E�G5G34�25G?:;.lHp7�.F:�K�4�23X�uHvg ä :;0DS,E�.J61G:,03G5E�SáK 054ZHpS,4��Wâ/STH�03EN.!89g�C�:,k�Cfâå05C�234<7�k�C�IF7�0�IF:;IJE�S,:,.�Eb6[C!HL2s61�DH�25E�:,X[I�S,E�XYE�.109H�03:,4<.�+BDC�El61:,Gs8925E�03E·­�4<7�23:,E�2p0329H�.�G«K#4�25Xd:,GZ61E�¨!.�Eb6":,.ã05E�23X[G�4LKM03C�ElH�25:,03C�X[E�03:T8p4�.H�.y:;.105E�k�29H�S(6f4�XªHL:,.�+¤Â�4�7>8NH�.l05C�:,.�§c4�KuHL23:,03C�X[E�03:T8�4�.·894�X[I�S,E9ðY.17�X��!EN23Gb�FK#4<2�H61E9¨J.�:,03E?E9ð!H�X[I�S,E��]HLS,03C�4<7�k�C[03C�E�25E�H�25E@H�I�I�S,:T8�HL03:,4�.�GW�DC�E�25E?¨!.�:,05EM¨JE�ST61GD4�2D\<Eb89034<2G3IJH�89E�GW4�\�EN2(:,.103ENk�2sHLS!614<XªH�:,.�G�H�25EuHLI�I�234<I�23:THL03E�+�BDC�EM6fE�23:,\�H�05:,4�.�61ENI!E�.J61G�4<.�S,g@4�.03CFEYH�S,k�E��F2sH�:T8AI�234<I!EN2303:,E�GA4�KD03C�EYHL23:,03C�X[E�03:T8��J.�4<0?4�.·03C�E�7�.J61E�23S,g1:,.�klH�25:;05C�XYEN03:T8:,03G5E�SáKs��G54�EN\�E�25g]05C�:,.�kpGsH�:T6&C�E�23E@HL�!4<7�0�05C�E�HLS,k�4�25:,03C�XÎ�D:;S,SJ�!E�03257�E�K#4�2�¨J.�:,03ED¨JE�ST61GH�.J6Y\<Eb89054�2DG3IJH�89E�G@HLGD��E�S,S/+BDC�EY61:,Gs8�23E�05EY­�4<7�23:,E�2?0329H�.�G«K#4�25Xz4LKaH&\�Eb89054�28÷4LK�S,E�.�k<03C�Ò^:,G@HY\<Eb89054�2DÈc4�K03CFE�G9H�X[EMS,E�.�k<03C[K#4�2D�DCF:}85C

È ¨ ³ Ñì � é"! ì # Ó

$ ¨&%Bì d¡Ã ì

�DC�E�25E $ :,G(H�I�25:;.J89:,I!H�S�ÒFâå05C�254]4<0�4�K!7�.F:;0/g1+�±�-/.@03C�EDE�ðFHLXYI�S,E�4�Kt894�X[I�S,E9ð�.17�X��JE�23Gv�g�4<7Z8NH�.p03C�:,.�§?4�K $ ³('%ê�) C+* Ó�+s²?BDC�ED25E�G37�S,0v�-ÈF��:,G�G54�X[E�03:,XYENG(8�HLS;S,Eb6®03C�E¿x K#25Eb�<7�E�.!89gG3IJEb8905237�X·��4LK(03CFE@GsHLXYI�S,EeÃ�+��\�EN.ã:áKM03C�E[I!4��WE�25G�4LK $ H�23E[I�23E�â«8�HLST897�STH�05Eb6t�Ì:,0@�W4�7FS}6^HLI�IJEbH�2@05C!H�0,�b±�Ò!ê%²X�7�S,03:,I�S,:T8�HL03:,4�.�G�HL23E�25Eb�<7�:,23Eb6 034lE�\�HLS,7!H�05E�03C�E��DC�4<S,E�4�KeÈcK#4<2�H�.1gåÃ�+[BDC�E�KåHLG30H�S,k<4�23:,05C�X Hv\<4�:T61GÌXcH�.1g?4�K�03CFE�G3E?�1g�XªHL§]:,.�k�7�G3E�4�K�05C�EDKåH<890W03C!HL0 $ Óª³ *<+�-�K4Òc:,G894<XYIJ4�G3:,05E��103C�E@8�HLST897�STH�05:;4<.ª8�HL.l�JE®6f:;\1:T61Eb6[:,.1034p�DC!H�0MHLXY4<7�.103GÌ054YHp.]7FX��!E�2W4�KG3XcH�S,S,E�2�­F4�7�25:,E�2�052sHL.�G/K#4<23X[Gb+��17�I�IJ4�G5E8Ò¯³)��dK�1�103C�EN.ª�1gYHp85C!H�.�k<E?4�K�\�H�25:TH���S,E�GÈ�-/. Õ10 ³ Ñ

2 � é"!32 #4-Ñ

5 � é"! 5 #16$ -�. Õ107 6 2�Õ 5 Ã86 2�Õ 5

³ Ñ2 � é"!32 #4-

Ñ5 � é"! 5 #16

± $ -�6 ² . 2 ± $ - ² . 5 ± $ 6 ² 072 $ 0 5 Ã86 2�Õ 5

³ Ñ5 � é"! 5 #36

± $ - ² . 5 $ 0 5 Ñ2 � é9!12 #&-

± $ 6 ² 072 Ã:6 2�Õ 5

�1:,.!89E $ 6 :,GYH!�fâå05C 25414�0Y4LK@7�.�:,0/g]�DHL.!6 $ - :,GcH��Nâå05C%23414�0[4�K@7�.�:,0/g1�W:;0�:,G[.�4�0G37F23I�25:;G5:,.�k^03C!HL0�03C�E·H��J4�\�Eª8NH�ST897�STH�05:,4�.ãS,EbH<61G�034ãHL.~:;X[I�S,E�XYEN.]09H�05:;4�.·:,.~�DC�:T83C�1â/G3:,��Ev6YH�.J6=�NâåG5:;�NEb6�052sH�.FG/K#4<23XYGÌHLI�I!EvH�2b+�-/0�:;GWC!HL2s61E�2v��CF4���E�\<E�2b�1054@G3ENEM�DC!HL0�05C!H�0:,XYI�S,E�X[E�.10sHL03:,4�.�X[:,k�C10Ì�JE�+�#������¢ ÿå���>�O�XÑD�Þ�O�R����¥E�¤�#�O���O�RÐ �XÑæ�I�R��Ñe���O�'�O�X�#ÑBDC�E?¨J23G30?09H�G3§c:,.>H[8�H�ST897�STHL03:,4�.l61EbHLS,:;.Fk��D:;05ClH�.>HLS;k<4�25:;05C�X�:,GM054ª8�HLG30?03CFE@G3IJEb85â:á¨�8�HL03:,4�.c:,.c03C�[email protected]�0sHL03:,4�.c05C!H�0D�D:,S,S��JE@7�G5Eb6c034[C!H�.J61S,E�05C�E�61EN\�E�S,4�IFXYE�.10b+WBDC�EN23EH�25E?0/��4�05C�:,.�k�GW�DC�:T85Cª�WE@614�:,.Y05C�:,GDG30sHLk�E�+��.�E�IJH�230�HLI�IJEbH�25G(054D�!E�S}HL23k<E�S,g�HWI�254f8�E�G3GÌ4LK�E�S,:;X[:,.!H�05:;.Fk(G57���G98923:,I�05Gb�<G3:,.!89EÌ05C�E7�G57!H�S!8�4�.1\�E�.105:;4<.�:,G(054@G3IJEb89:áK#gpG3ENI!H�29H�03ENS;g�EvH�85CY894�â/4�2961:,.!H�05ED4�K�H�.p4�7�05I�7�0Ì\<Eb89054�2b+

Page 52: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

e�� <>= ?A@BDC%?;EGFIHA@�@�J�C%?

BDC�E@894<.]\<E�.103:,4�.JH�SJ7�.!61E�25G309H�.!61:,.�kp4�KÌH?G3IJEb89:á¨�8NH�03:,4<.ª4LK(05C�EDK#4<23XëÈ9C�³Î+v+b+<:,G�05C!H�003CFE>G57���Gs8�23:,I�0l:,Gc7�.�:,\�EN23GsHLS,S;g%�<7!HL.]05:á¨!Eb6t��G34~03CJH�0Y05C�:,Gc4�.�E·Eb�<7!H�05:,4�.ñK#4�25XªH�S,S,g23ENI�23E�G5E�.103G�Hp.17�X��!EN2M4�K�61:rÌtE�23EN.]0?Eb�<7!HL03:,4�.FGb�J4�.�E®K#4�2DEbH<85C>\�HLS;7FE�4LKcG3+�B�4�XªH�§<E89S,EbHL2@03C!HL0�H�.ãHLS,k�4�25:,03C�X{4<I!E�29H�05E�G�7�.�:áK#4<23XYS,gcH�0�HLS;SW894�â/4�2961:,.!H�05E�G@4�KD:,03G@4<7�03IF7�0�WE��D25:,03E@HpG3:,.�k<S;E�Eb�<7!H�05:,4�.c�DC�:T85C 6fE9¨!.�E�G�03C�EA�DC�4�S,EMS,:,G30D4LK(4<7�03I�7F0D\�H�S,7�E�Gv+BDC�EW4�03CFE�2ÌI!HL230�4�K!05C�EW032sHL.�G3STHL03:,4�.@:,G�034�XªHL.�:,I�7�STH�05E(05C�EWG3IJEb89:á¨�8�HL03:,4�. ä �DC�:T83C:,G�7�G57!H�S,S,g@H�.@E�ðfIF23E�G5G3:,4�.�61E�G98923:,��:,.�k?03CFE�4<7�03I�7F0�4�KtHM8�HLS}8�7�STH�03:,4<.MK�4�2(Hak�:,\�EN.@:,.�I�7�0ä :,.1034�03CFE?K#4�25XO4LK�H�.lH�I�IFS;:T8�HL03:,4�.c054�03C!HL0M:,.�I�7�0D4LK�H�.cE9ð�I�23ENG3G3:,4<.>25E�I�23ENG3E�.103:,.�k03CFE�H�S,k�4<23:,03CFX>+�BDC�E?XªH�.F:;IF7�STH�03:,4<.�4LK 05C�E�HLS;k<4�25:;05C�XO8�HL.c03C�E�.yI�234�89E�Ev6l�D:,03CF4�7�023E�K#E�23EN.!89Ep034�03CFE@I!H�2503:T897�STHL2�:,.�I�7F0b+BDC�E�61:,G98923E�05E�­F4�7�25:;EN2D032sHL.�G/K�4�23X��DH�GWG3IJEb89:á¨!Eb6y�1g

Ȩ ³ Ñì � é"! ì # Ó

$ ¨&%Bì d¡Ãxì

�1g>�DCF:}85C^�DH�G@X[EbH�.10@05C!H�0A03C�E[4�7�05I�7�08ÈyG3C�4<7�ST6·�!Ec61E9¨!.FEb6 K#4�2@EvH�85C ¥l:;.^05C�E2sHL.�k�E@�XH)¥�ê¦Ò��1G34�XYEvH�.�:,.�k@05C!H�0ÈD³_�F¥ªw��XH�¥�ê Ò�w Ñ ��ë¡w<�<Hzë ê¦Òiw $ ¨&%Pì diÃtì#�E�

ÅªÆ Û�X[EbH�.�:,.�kA4�K(G57�XYXcH�05:;4<.ZHL.!6 gDL>S �1X[EbH�.F:;.Fk@4�KÌE9ð�IJ4�.�E�.105:}HL03:,4�.DÝ�·¥¾w��XH)¥�ê¦ÒiwB��ë¡w��XHoë êÛÒ�w $ ¨4%Bì dýà ì �E�'± g×L>S ~�ë9ë�²'È�DC�EN23E�~<ësëÁ³Ù~�£A} â�Ô ò d�j�a ~�æ<檳Þ~9£Jì â�Ô ò dvjId ~�æ<æ

ÅªÆ Û�X[EbH�.�:,.�kA4�K HL23:,03CFXYE�05:}8aE9ð�I!4<.�E�.103:THL03:,4�.���HLG3G54f8�:}HL03:,\1:,0/g�4�KLd Ý�·¥¾w��XH)¥�ê¦ÒiwB��ë¡w��XHoë êÛÒ�w�±_± $ d#² ¨ ² ì Ãtì#�E�§± gDL>S ~<ë9ë%²!È

ÅªÆ Û�X[EbH�.�:,.�kA4�K W�d�U Ý�·¥¾w��XH)¥�ê¦ÒiwB��ë¡w��XHoë êÛÒ�w�à ì �E�§± W�d�U_W�dvU ±9d $ ²�ò gDL>S ~<ë9ë%²!È

ÅªÆ Û�X[EbH�.�:,.�kA4�K3;1z�¢Tê"Ý��ë¯w���H�ë ê Ò�w�à ì ��±�< â'Ô ò�Òcò W�dvU_W�d�U ±+d $ ²Wò g×L>S ~<ë9ë�²�È�DC�EN23E,<�³ï~9£¨} â�Ô ò dvjIa ;%z�¢Tê�³Ù~�£!ì â�Ô ò dvjId ;%z�¢Tê

ÅªÆ Ãb±=< â�Ô ò�Ò[ò W�d�U_W�dvU ±9d $ ²�ò gDL>S ~�ë9ë�²'È�1:,.!89E $ 61E�IJE�.!61G[4�.�Ò����JEb8�HL7�G3E $ ÓÛ³¦*<����E[�D:;S,SÌ�JEcC�4�.FE�G30�H�.!6 �D23:,03E�±+d $ ²7�G5:;.Fk¥Hc.FE��O4<I!EN2sH�054�2,>K#4�2p�DC�:T85C�Ä?>ËÒ�³ÝÄKd $ +^BDC�:,G@4<I!E�29H�05:;4<.ãC!HLG�05C�EI�254�IJE�230/g1�J�DC�:T83Cc�D:,S,S��JE@7�G5E9K#7�S�STH�05E�2b�F03C!HL0D± >¾±I�Kd7� ²_² 6 ³ñ± >'�A²�+WBDC�EN23E�H�23EA0/��4:,.�G309H�.!8�E�G�4LKM23Eb6f7!8903:,4<.ã4�K�HL.ãH�G5G34�89:TH�05:;\<E�23E�STHL03:,4�.^:,.^03CF:;Gp61E�Gs8�23:,I�03:,4<.��ÌH�.!6·�WE8�HL.¥Hv\<4�:T6Y894<XYX[:;05X�E�.10uHL�!4<7�0MCF4���034Y:,X[I�S,E�XYE�.10W03C�ENG3Ep�]gc:,.103254f6f7!89:,.�kªH&.�E��4�IJE�29H�034<2 d�P�j K#4<2Ì�DC�:T85C dvP�j ­Ë³Þ~9£¨} â'Ô ò dvjIa ­�³Þ~�£!ì�â'Ô�ò d�j�d ­~K�4�2DH�.1gZHLG3G54f8�:}HL03:,\�E­p+ BDC�EY05E�23X :;.·��29H�85§�E�05G�03C!HL0@23ENS}HL03E�GªÃ^054åÈy23E�I�25E�G3EN.]05GY05C�Eª61:,G98923E�05El­�4<7�23:,E�20329H�.�G«K#4�25XhHLS;k<4�25:;05C�X>�F��7�0@4<.�S,gl:áKÀ÷:,G�H[S,:;G50?4�KDS;EN.�k�05C Ò��tG54l�WE��D:;S,SÌ8�HLS}8�7�STH�03E

Page 53: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  e�*

@ @ @@ @ @

@ @ @@ @ @

@ @ @@ @ @

@ @

�@Ò

A A A A AB B B B B:CW�dvU ­

B B B B B:Cg×L>S ­RÓ

­�:,k�7�25EZ*<+ _!*�w�:,S,S;7FG30329H�05:;4<.�4�K W�dvU ­ 6f:;\1:T61Eb6[:,.1034 g×L>S Ò[ò W�d�U�g×L>S ­RÓ�ò gDL>S/W�d�U ­K#254�X�05C�E�61E9¨J.�:,03:,4�.

ÒYò"D ³ Ò[ò ± dvP�j ;%zL¢TêA² â�Ô ò1ÒYò W�dvU_W�d�U ± >¿Ò!²Ìò g×L>S�d�P�j ~�æ�æ�#�����5ç ¾Ø��áe�XÎR�XÑD��¥X���B�#�Ë�e�O�rie¥X�'ÐÏ���XѤ�I�ï��ÐÏ��¥X¥_�����#Ñe�'��17�IFI!4<G3ED­ :,GuHL.YH�S,k�4<23:,03C�X©4<2u89:,29897�:,0ÌK�4�2D8�H�ST897�STHL03:,.�k@G54�XYEDS,:,G30«âå\�HLS,7�Eb6AK#7�.J8903:,4�.4�K�H^S,:,G30Y4LK@\�H�S,7�E�Gv+©-�K�:,0Y:,GYIJ4�G5G3:,��S,El034~E9ð�I�25E�G3G�­z:,.%05C�EyK#4�25X ® ò d�P�j ~�£�£��03CFE�.i®ã:,GDH�.lH�S,k<4�23:,05C�XÎK#4�2D894�.FG303257!8905:;.FkY03CFE�G9H�X[EM23ENG37�S,0D:,.YI!HL2305Gb�!HL.!6�XcHvg��JE:,XYI�S,E�X[E�.10sHL��S,E��1gªHA.17�X��JE�2�4LKÌ:;.J61E�IJE�.!61E�.10�I!H�2503Gb+Ì­F4�2DE�ðFHLXYI�S,E

± d�P�j ;%z�¢Tꨲ â'Ô ³ ± dvP�j ;%zL¢Tê!² â�Ô ò g×L>S ± d�P�j ;1z�¢Tꨲ â�Ô ò d�P�j ~�£�£61E�G98923:,�JE�GlH>6f:;\1:T61E9â3H�.J6<â«8�4�.!�<7�E�2�G50329H�03ENk�g"K#4�2AKåHL.�.�:,.�k·4�7�0�H·G3:,k�.JH�SW:;.1054^G34�X[E.17�X��JE�2�4LK 894<I�:,E�Gb�JH�.!6[05C�E�.l:,.!61ENI!E�.J61E�.103S,g�K/H�.�.�:,.�kp4�7F0DEbH�85Cc4�KÌ03CF4�G3E<+�1:,XY:,STH�25S;g d�P�j ~�£�£lò ­Î:,G�H�.·H�S,k�4<23:,03C�X��DC�:T85C>894<.�G305237!8905G�05C�EpGsH�X[E?23E�G57�S,0�H�G­ÎK#254�X¦HcI!H�2503:,03:,4<.>4LKu05C�E�GsHLXYEp:;.FI�7�0@:,.1034cHcS,:;G50?4�KDS;:,G503Gb+[-�KD:;0?:,G@IJ4�G5G3:,��S,E�034xQG3:,XYIFS;:áK#gt� d�P�j ~9£�£·ò ­�:,.1034lH[K#4<23X��DC�:T83C^CJH�G�H[I!HL2sH�S,S,E�SÌ:,X[I�S,E�XYE�.109H�03:,4�.��J05C!H�0k�:,\<E�GuHAG3052sHL03E�k<g�K#4<2u61:,\1:T61:,.�k?03C�E@8�HLST897�STH�05:;4<.�4�K4­p+�� I!H�2503:T897�STH�25S,g�7�G3E9K�7�St23E�G57�S,0:,.Y05C�E@I�25E�G3E�.10?8�H�G5E@:,GD03C!HL0

gDL>S Ò[ò d�P�j ~9£�£[ò W�d�U ­ ³ W�d�U�g×L>S ­ Ó ò gDL>S/W�d�U ­%ò g×L>S Ò[ò d�P�j ~�£�£�DC�:T85C>X[EbH�.FG�05C!H�0 W�dvU ­�8�HL.^�!E�:,X[I�S,E�XYE�.105Eb6[�]g^H[.17�X��!EN2�4LKe±#G5XªHLS;S,E�2�²�:;.J61E9âIJE�.!61E�.10W:,.�G309H�.!89ENG�4LK W�d�U ­%H�.!6�H�0523:TH�.�k<7�STH�2ÌH�252sHvg@4LK gDL>S ­ Ó 894�X[I!4<.�E�.103Gv+�BDC�:,GEb�<7!HLS;:,0/g>6fE�I!EN.!61G�4�.^05C�EY25E�G30523:T8905:;4<.~034>HcS,:,G30«âå4LKTâ/S;:,G503G?�DC�E�25EYE�\<E�23g^G57���S,:,G30pC!H�G03CFE�G9H�X[EMS,E�.�k<03C�+-/.cKåH<89034<23:,G3:,.�k�05C�EZ6f:;G98923EN03EY­F4�7�25:;EN2D032sHL.�G/K�4�23X·��05C�:,GM237FS;EA:;G?H�I�IFS;:,Eb6[0/�D:T89Ep034H�.c:,.�G50sH�.J89E?4�K�H�.[E9ð�I�23E�G5G3:,4�.y4�KÌ03C�E�K#4<23X W�d�U_W�dvU ­p+g×L>S¤g×L>S ± g×L>S �?ò d�P�j ~�£�£�²�ò3± gDL>S ��ò dvP�j ~�£�£!²Ìò W�d�U_W�dvU ­

³ gDL>S�g×L>S ± g×L>S �Mò dvP�j ~9£<£/²�ò W�dvU�gDL>S ­ - ò gDL>S�W�dvU ­ñò gDL>S ��ò dvP�j ~�£�£

Page 54: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

e�P <>= ?A@BDC%?;EGFIHA@�@�J�C%?

³ W�d�U�g×L>S ± W�dvU�gDL>S ­ -E%F6 ò gDL>S!W�dvU ­ - ²�ògDL>S�g×L>S ± g×L>S ��ò d�P�j ~9£<£/²�ò g×L>S!W�d�U ­ñò gDL>S �Yò d�P�j ~�£�£

³ W�d�U�g×L>S ± W�dvU�gDL>S ­ -E%F6 ò gDL>S!W�dvU ­ - ²�ò g×L>S!W�d�U ± W�dvU�gDL>S ­ 6 ò gDL>S!W�dvU ­¿²ÌògDL>S�g×L>S ± g×L>S ��ò d�P�j ~9£<£/²�ò g×L>S ��ò d�P�j ~9£<£

³ W�d�U�g×L>S!W�d�U�g×L>S ­ -E%E6 òW�d�U�g×L>S�gDL>S/W�d�U ­ - ò gDL>S!W�dvU_W�d�U�gDL>S ­ 6 ò gDL>S!W�dvU�gDL>S�W�dvU ­ñògDL>S�g×L>S ± g×L>S ��ò d�P�j ~9£<£/²�ò g×L>S ��ò d�P�j ~9£<£

BDC�:,G�KåH�8�034�25:,GsH�05:,4�.>894<2325E�G3IJ4�.!6fG�034c03C�Ep0/�W4 85C!HL.�k�ENG@4�KD\�H�25:}HL��S,E�GM:,.·03C�EpEbHL23S,:,E�28�HLS}8�7�STH�03:,4<.l�D:,03C·G37�X[XªH�05:,4�.�Gb+�BDC�E�4�2961E�2?4�KD03CFE�03E�25XYGM:,.�­�6141E�G?.�4<0�XcH�0503E�2�JEb8�H�7FG3EM05E�23X[G�:,. g×L>S H�.!6 W�dvU �D:,03Cp03C�EWGsHLXYEW23E�STH�05:,4�.@.�Ev89E�G3G9H�25:;S,g�894�X[X�7�03E��D:,03CEbH<83Cc4<03C�E�2v+�1:,.!89E[03C�Ei­:;.~�<7�E�G305:,4�.^:,G¯±7>¿Ò!²��Ì05C�:,G@:,G�05C�EYIJ4�:,.10@054>4<��G3E�25\�Ec03CJH�0pG34�X[EIJ4���E�25GM4LK§­ HL23E?k�4<:,.�k�054��JE�8�HL.!89E�S,STH��FS;E<�1G3IJEb89:á¨�8�HLS;S,g[03C!HL0W�d�U�gDL>S!W�dvU�gDL>S ±7>«Ò!² Ó ³ gDL>S4gDL>S#gDL>S�g×L>S ±7>�*%²

³ gDL>S4gDL>S#gDL>S�g×L>S ±9d $ ² é�DC�E�25ED±9d $ ²_éD:,GÌ03CFED:}6fE�.103:,0/g@4�.�05C�ED0/g1I!E�7�.!61EN23S,g1:;.Fk�05C�EMH�25:,03C�X[E�03:T8�+�BDC!H�0�05E�23X8�HL.�05C�E�.p�!ED8�H�.J89E�S,S,Eb6p�1g®HL��G34<23��:,.�k�:,0(:,.1034?H�.1g?4�K!05C�EW4�03CFE�2�03C�25E�EDG3:,XY:,STH�2J03EN23XYGvò03CF:;GD894<2323ENG3IJ4�.!61G�034p03C�E@8�HL.!89E�S,S,:,.�k@4LK $ ÓY:,.�03CFE®8NH�ST897�STH�05:,4�.�GÌ�D:,05CYG37FXYXªHL03:,4�.FGb+�#�����5þ ¾Ø��áe�XÎR�XÑD�Ë�I�R��Îe�_�-�!�[�!�O�(���#©R�O�X�'���O�O��Ñe�>���#�OÐ�17�IFI!4<G3E?03C!HL0ÀÒ¡³�� d��1+�BDC�EaKåH�89054�25:;G9H�05:;4<.Y4LK�03C�EDÒFâ/I!4<:;.10Ì052sHL.�G/K#4<23X�IF234�89E�Eb6fGb�H�GWG37Fk�k�ENG303Ev6ªHL�!4�\<E��1�1g�G5:,XYI�S,:áK#g1:,.�k�H?G5I!Ev89:á¨�8?:,.�G309H�.!8�EM4�K g×L>S �Wò dvP�j ~9£<£�ò�Òpò�Dc+BDC�E�I!H�2503:T897�STH�2W:,.�G309H�.!8�E�:,GD85C�4�G5E�. ä �D:,03C[C�:,.!61G5:;k<C10b�<4�K(894<7�23G5E ä G34p03CJH�0DH@05E�23X8�HL.ª�JE�8�HL.!89E�S,S,Eb6[STH�05E�2b+��ò gDL>S �Mò dvP�j ~�£�£Yò"D

³ ��ò g×L>S ��ò d�P�j ~�£�£cò�Òcò�D³¹Û(61E�¨!.�:,03:,4�.c4LKGDzÝ��ò g×L>S ��ò d�P�j ~�£�£cò1± d�P�j ;%zL¢TêA² â�Ô ò1ÒYò W�d�U_W�dvU ±7>DÒ!²�ò gDL>S�dvP�j ~�æ<æ

³¹ÛtKåH<89034<23:,G3:,.�k d�P�j ;1z�¢Tê"Ý��ò g×L>S ��ò d�P�j ~�£�£cò1± d�P�j ;%zL¢TêA² â�Ô ò3± gDL>S4d�P�j ;%z�¢íêA² â'Ô ò��ò gDL>S ��ò d�P�j ~�£�£cò W�dvU_W�d�U ±7>«Ò!²�ò g×L>S�d�P�j ~�æ�æ

³¹Û�I�254�X[4�03:,.�k dvP�j ~9£<£l4�\�EN2�j94�:,.�GtÝ��ò g×L>S ��ò ± d�P�j ;%z�¢íê/² â�Ô ò1± g×L>S¤dvP�j ;%zL¢TêA² â�Ô ò9�Mò g×L>S ��ògDL>S4gDL>S#d�P�j ~9£�£[ò d�P�j ~�£�£Yò W�dvU_W�d�U ± >DÒ!²�ò g×L>S�d�P�j ~�æ�æ

Page 55: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  e�U³¹ÛtKåH<89034<23:,G3:,.�k W�d�UXW�d�U Ý��ò g×L>S ��ò ± d�P�j ;%z�¢íê/² â�Ô ò1± g×L>S¤dvP�j ;%zL¢TêA² â�Ô òW�d�U�gDL>S�g×L>S'W�dvU ±7>«Ò!² - ò gDL>S�W�d�U_W�dvU�gDL>S ± >¿Ò!² 6 ò g×L>S!W�d�U�g×L>S!W�d�U ± >DÒ!²�ò��ò gDL>S ��ò gDL>S#g×L>S�d�P�j ~9£�£[ò d�P�j ~�£�£cò g×L>S¤dvP�j ~�æ<æ

³¹Û�I�254�X[4�03:,.�k g×L>S�d�P�j ~<æ�æ[4�\<E�2 dvP�j ~�£�£<Ý��ò g×L>S ��ò ± d�P�j ;%z�¢íê/² â�Ô ò1± g×L>S¤dvP�j ;%zL¢TêA² â�Ô òW�d�U�gDL>S�g×L>S'W�dvU ±7>L� ²�ò g×L>S'W�dvU_W�d�U�gDL>S ± >5�¨²Ìò gDL>S�W�dvU�gDL>S!W�dvU ±7>«Ò!²�ò��ò gDL>S ��ò gDL>S#g×L>S ± g×L>S�d�P�j ~9£�£cò d�P�j ~�æ<æO²�ò d�P�j ~9£<£

³¹Û(HLG3G34�89:THL03:,\1:;0/g�4LKÁ~<æ�æDÝ��ò g×L>S ��ò ± d�P�j ;%z�¢íê/² â�Ô ò1± g×L>S¤dvP�j ;%zL¢TêA² â�Ô ògDL>S/W�d�U_W�dvU�gDL>S ±7>c�¨²�ò gDL>S!W�dvU�gDL>S�W�dvU ±7>¿Ò!²Ìò W�d�U�gDL>S#gDL>S!W�dvU ±7>L� ²�ògDL>S4gDL>S ± g×L>S�d�P�j ~�æ�æpò dvP�j ~<æ�æO²�ò9�Mò g×L>S ��ò dvP�j ~9£<£

BDC�:,Gp:;GpHc�uHL03E�25G3C�Ev6ã:,."03C�Ec8�H�ST897�STHL03:,4�.�wA03C�ElHLS;k<4�25:;05C�XzCJH�G@.�4���!E�EN.ã03EvH�G3Ev6H�IJH�230�:,.1034·G37fàª89:,E�.103S,gãXcH�.1g>G571àª89:,E�.103S,g"G3XªHLS,S�G57��1â38�H�ST897�STHL03:,4�.�Gp03CJH�0��WE 8NH�.�JE�k�:,.·034YG5E�E�C�4��Î:;0�XY:,k�C10D�JE�25E9â3H�2329H�.�k<Eb6·:,.1034YG5XªHLS;S,E�2D:,.�G50sHL.!89E�G@4LK�03CFE�GsH�X[EH�S,k<4�23:,05C�X>+BDC�E@G5032sHL03E�k<gcK#254�X�03C�:,GDIJ4�:,.10M:,GD034[7�G3E�Hp.17�X��JE�2D4LK(K/H�8905G�H��J4�7F0M03CFE�H�25:;05C1âXYEN03:T8Ì054@E�S,:,XY:,.!HL03EÌG54�XYE gDL>S 4<I!EN2sH�054�25GÌK#254�X©03CFEDE9ð�I�23E�G5G3:,4�.�+�­�:,23G305S,g�05C�EMH�25:;05C1âXYEN03:T8D:,GM61E�05E�23X[:,.�:,G303:T8���HL.!6¡­%ò=;%z�¢Tê â�Ô ³H;%zL¢Tê â'Ô ò#�s­���­'�tK#4<2u61EN03E�25XY:,.�:,G305:}8�25E�STHvâ03:,4<.�G�­p�bG54D± dvP�j ;%zL¢TêA²â�Ô�ò g×L>S ­¦³Ë­�òo± dvP�j ;%z�¢íêA²�â'Ôb+��1Eb894<.!61S,g?G3:,.!89EÌX�7FS;05:,I�S,:}8NH�03:,4<.61:,G30523:,��7�05E�G?4�\�E�2?H�6�6f:;05:,4�.��FG34l6141E�G?>©H�.!6 gDL>S ±7>"ëO²Ìò d�P�j ~<æ�桳 dvP�j ~�æ<æ�ò>± >"ëO²N+B�4Z6f4�05C�:,G�05C�E?4�2s6fE�2D4�K�G34�X[ED4�K�03C�E?4�IJE�29H�034<23GDX�7�G50Ì�JE®85C!HL.�k�Ev6Y�1gY894<XYIJ4�G5:;.Fk�J4�03CcG5:}6fE�GM�D:,03CcHp0329H�.�G5I!4<G3:,03:,4�.�+ï/ì�ê�òE��ò g×L>S �?ò d�P�j ~9£�£cò9D

³ Û�I�23EN\]:,4<7�GM8�H�ST897FS}HL03:,4�.DÝ�Mò g×L>S ��ò3± d�P�j ;1z�¢Tꨲ â�Ô ò ± gDL>S�dvP�j ;%zL¢Tê!² â'Ô ò g×L>S¤g×L>S ï/ì�ê�òg×L>S!W�d�UXW�d�U�g×L>S ±7>$�A²�ò g×L>S!W�d�U�g×L>S!W�d�U ± >DÒ!²�ò W�dvU�gDL>S4gDL>S!W�dvU ± >"� ²�òg×L>S�gDL>S ± gDL>S#dvP�j ~<æ�æpò d�P�j ~�æ<æO²�ò+��ò gDL>S ��ò d�P�j ~9£�£

³ Û�0329H�.�G5I!4<G3:,.�k�IJ4�:,.10/�D:;G5EM4<I!E�29H�05:;4<.�G�Ý�Mò g×L>S ��ò3± d�P�j ;1z�¢Tꨲ â�Ô ò ± gDL>S�dvP�j ;%zL¢Tê!² â'Ô òg×L>S!W�d�U�gDL>S!W�dvU ±7>$�A²�ò g×L>S!W�d�U_W�dvU�gDL>S ± >DÒ!²�ò W�dvU�gDL>S/W�d�U�g×L>S ± >"� ²�òg×L>S�gDL>S ±3ï/ì�ê�ò gDL>S#d�P�j ~<æ�æpò d�P�j ~�æ�æ[²Ìò&�?ò gDL>S ��ò d�P�j ~9£<£

³ Û(894�X[X�7�0sHL03:,\�:,0/g@4LKÁ~<æ�æDÝ�Mò g×L>S ��ò3± d�P�j ;1z�¢Tꨲ â�Ô ò ± gDL>S�dvP�j ;%zL¢Tê!² â'Ô òg×L>S!W�d�U�gDL>S!W�dvU ±7>$�A²�ò g×L>S!W�d�U_W�dvU�gDL>S ± >DÒ!²�ò W�dvU�gDL>S/W�d�U�g×L>S ± >"� ²�òg×L>S�gDL>S ± gDL>S#dvP�j ~<æ�æpò d�P�j ~�æ<æO²�ò+��ò gDL>S ��ò d�P�j ~9£�£

Page 56: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

e�_ <>= ?A@BDC%?;EGFIHA@�@�J�C%?

³ Û(61:,G30523:,��7�05:;\1:,0/g�4�KI>�4�\<E�28~�æ<æDÝ�Mò g×L>S ��ò3± d�P�j ;1z�¢Tꨲ â�Ô ò ± gDL>S�dvP�j ;%zL¢Tê!² â'Ô ò g×L>S'W�dvU�gDL>S/W�d�U ± >5�¨²Ìòg×L>S�gDL>S4gDL>S�dvP�j ~<æ�æ�ò gDL>S�W�d�U_W�dvU ±7>«Ò!²�ò W�dvU�gDL>S�W�d�U ± >"� ²�òg×L>S�gDL>S4d�P�j ~�æ<æpò+��ò gDL>S �[ò dvP�j ~�£�£

³ Û(61E�05E�23X[:;.F:;G503:T8MHL23:,03CFXYE�05:}8�Ý�Mò g×L>S ��ò3± d�P�j ;1z�¢Tꨲ â�Ô ò W�d�U�gDL>S!W�dvU ±7>$�A²�òg×L>S�gDL>S4d�P�j ~�æ<æpò W�d�UXW�d�U ± >yÒ!²�ò ± d�P�j ;%z�¢íêA² â'Ô ò W�d�U�g×L>S!W�d�U ± ><� ²�òg×L>S�gDL>S4d�P�j ~�æ<æpò+��ò gDL>S �[ò dvP�j ~�£�£

³ Û�I�234<XY4<03:,.�k<�@4�\<E�2�j94<:;.FG�Ýg×L>S ��ò3± d�P�j ;1z�¢Tꨲ â�Ô òE��ò W�d�U�g×L>S!W�d�U ± >$�¨²�ò gDL>S�g×L>S�d�P�j ~<æ�æpòW�dvU_W�d�U ± >¿Ò!²�òg×L>S ��ò ± d�P�j ;%z�¢íêA² â'Ô ò+��ò W�d�U�g×L>S!W�d�U ± ><� ²�ò g×L>S�gDL>S�dvP�j ~�æ<æ�òdvP�j ~9£<£

BDC�E�25EYH�25E�0/�W4c4f8N897�2325E�.!89ENG�4�K�G5:;X[:,S}HL2DE9ð�I�23ENG3G3:,4<.�G@:,.>05C�Ep23:,k�C10/â/C!HL.!6cG3:T61E<�(61:áKTâK#E�25:,.�k�4�.�S,g�:,.c03C�EAI!H�29H�XYEN03E�2��c4<2��1+��ÌH<83Cy4�KÌ03C�ENG3E�8�HL.l�JE@G3C�4��D.c:,.c03C�EAGsH�X[E�DHvg�034�GsHL03:,G/K�gg×L>S ��ò3± d�P�j ;1z�¢Tꨲ â�Ô òE��ò W�d�U�g×L>S!W�d�U ± >$�¨²�ò gDL>S�g×L>S�d�P�j ~<æ�æ

³ gDL>S ��ò g×L>S ±X± dvP�j ;%zL¢TêA² â�Ô ò,�A²�ò�ï/ì�ê�ò W�dvU�gDL>S/W�d�U ± >5�¨²Ìò gDL>S#g×L>S�d�P�j ~�æ�æ³ gDL>S ±I�Yò1± dvP�j ;%z�¢Tꨲ â'Ô ò8�Yò W�d�U_W�dvU ±7>$�A²�ò g×L>S�d�P�j ~<æ�æ[²�ò�ï/ì�ê³ gDL>S ±I�Yò�Dª²ÌòLïåìNê

G34�G5C�4��D:,.�kp03C!HL0��ò gDL>S ��ò�ï/ì�ê�ò d�P�j ~9£�£[ò9D

³ gDL>S ±F��ò9Dª²�ò�ï/ì�ê�ò W�d�U_W�dvU ±7>¿Ò!²�ò gDL>S ±/�?ò9Dª²�ò�ï/ì�ê�ò d�P�j ~9£�£ÚD4��ïåìNê^:,G�:,05G@4��D.>:,.1\�EN23G3E<�ÌH�.!6 �cò g×L>S �Aò dvP�j ~�£�£ã:,G@H�S,G54 H[��: j9Ev8903:,4�.^4<.>05C�E614<XªH�:,.[4�K�05C�E@23:,k<C]0«âåCJH�.!6cG5:T61E��JG34c�J4�03C·8�H�.·�!Ep8�H�2523:,Eb6y4�\�E�2?034[03C�EA4�03CFE�2?G3:T61E4�K�03C�EAEb�<7!H�05:;4<.�+

ÒYò"D ³ ± dvP�j ~�£�£!² â�Ô ò�ï/ì�ê�ò gDL>S ±I�[ò�D¾²�òvïåì�ê�ò W�dvU_W�d�U ± >DÒ!²�ògDL>S ±/�?ò"D¾²�òLïåì�ê�ò d�P�j ~9£<£

BDC�E@25E�XªHL:,.�:,.�k�H�G5g1XYXYEN0323gp:,.Y05C�E@E9ð�I�25E�G3G5:;4<.l:,GMH�.�.F4�g]:,.�kJ�1��7�0DX[E�23E�S,g�G57�I!EN2/¨�â89:TH�SJK�4�2D4�KÌ894�7F23G3E&ïåì�ê�ò W�dvU_W�d�U ± >¿Ò!²#³ W�dvU_W�d�U ± >¿Ò!²Ìòvï/ì�ê�+�14�S,4�.�k�H�GW�J4�03C=�lHL.!6��pH�25E�G50325:}8�03S,gYS,E�G5GM03CJH�.iÒc�WE®8NH�.c7�G3EA03C�:,GM61Eb8�4�XYIJ4�âG3:,05:;4<.YH�GMHp61E9¨!.F:;05:,4�.�4�K#ÒYò"DÎK#4�2DH�.1g�894�X[I!4<G3:,03E¿Ò�+�BDC�E@61Ev894�X[I!4<G3:,03:,4�.Y8NH�.Y�JE23EvH�6 ä 0sH�§1:,.�k@05E�23X[G�K#254�X©S,E9K#0Ì054�25:;k<C10 ä H�GWH�61:,\1:T61E9â3H�.!6]â«894<.!�<7�E�2�HLS,k�4�25:,03C�X K#4�2

Page 57: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  e�e

¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢

¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢

¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢

¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢

¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢

¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢

J

J

JJ

J

JJ

J

JJ

J

J

¢ ¢¢ ¢¢ ¢¢

¢ ¢¢ ¢¢ ¢¢¢ ¢

¢ ¢¢ ¢¢

¢ ¢¢ ¢¢ ¢¢¢ ¢

¢ ¢¢ ¢¢

¢ ¢¢ ¢¢ ¢¢¢ ¢

¢ ¢¢ ¢¢

¢ ¢¢ ¢¢ ¢¢

J

J

J

J

J

J

J

J

J

J

J

J

J

J

J

J

J

J

g×L>S ±F�Yò�Dª² gDL>S ±/��ò9Dª²­�:,k�7�25E�*�+ _]P[w�25Eb897�25G3:,\�E�61Eb894<XYIJ4�G5:;05:,4�.�4�K(±I�qd7� ²Ìò�D

Page 58: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

e�i <>= ?A@BDC%?;EGFIHA@�@�J�C%?

:,XYI�S,E�X[E�.103:,.�k?0329H�.�G«K#4�25XYGW4�K�894<XYIJ4�G3:,05EM�D:T6103C'wÌ61:,\]:T61E?05C�E@:,.�I�7�0D:,.1034"�l85C17�.�§1G4�K�S,E�.Fk�03C!�1ò<:,.]05E�23S,EbHv\<E?03C�E�X·ò]HLI�I�S,g�H�.ªHL2329Hvg¡±#4�K4� ²W:,.!6fE�I!EN.!61E�.10��1â/IJ4�:,.10Ì0329H�.�G«âK#4<23XYGvò�:,.103E�25S;EvHv\�EW03C�E�23E�G57�S,03Gbò1X[4�61:áK#gM�1gpGs8�HLS;:,.�k?05C�E<��G,�8¥��«âå05C�G5:,k�.!HLS��1g¯±7>«Ò!² C�%#¨ òH�IFI�S,g HL.>H�252sHvg�±#4LK��A²�:,.!61E�IJE�.!61EN.]0<�Nâ/I!4<:,.]0�0329H�.�G«K#4�25XYGbòJ:,.103E�25S,EbHv\�E@05C�Ep23E�G57�S,03GbòH�.J6p¨!.!HLS,S;g�894<.!8�H�05E�.!HL03E@05C�E<�@25E�G37�S,05:;.Fk�S,:,G305Gb�1EbH<83Cc4LK(�DC�:T85CY:,GW4�K(S,E�.Fk�03C����1:,.1034H[G3:,.�k<S;EªÒFâ/S;:,G50b+@BDCF:;G?:,G?03C�EYHLS,k�4�25:,03C�X{§1.�4��D.^H�G?03CFE¡x K/H�G30@­F4�7�25:,E�2?032sHL.�G/K�4�23X·�,+BDC�E�Gs8�HLS;:,.�kAKåH<89034<23GW:;. W�dvU_W�d�U ± >¿Ò!²W8�H�.[4�K 8�4�7�25G3E?�!E�I�23E�â«8�HLST897�STH�05Eb6&K#4�2DH�.1gpk�:,\�E�.�lH�.J6��pH�.!6cH�25E?§].F4��D. HLG¿xQ0/�D:}6F61S,EDKåH<89034<23Gb�,+�#�����8\ ��©Á�I¥_�XÑR�����¡��ÑÝ�XÐÏ�R¥X��Ðï�!Ѥ�O���O�_�#ÑBDC�Ep7�G37JH�S�23Eb8�7�23G5:;\<EixQ��7�0503E�2«�!gt�J:;X[I�S,E�XYEN.]09H�05:;4<.�4�K�05C�EpKåHLG30�­F4�7F23:,E�2?0329H�.�G«K#4�25XH�IFI�S,:;ENGÌ4�.�S,g@054@0329H�.�G«K#4�25XYGÌ4<.�\�Eb8�034�25G�4LK�S,E�.�k�05CYP ÓAK#4�2�G34�X[EÀÒ�+�BDCF:;G�:;G��!Eb8NH�7�G5E:,0Ì:,G�\<E�23g�EvH�G3g�054Z6f4@0/��4LâåIJ4�:,.10Ì052sH�.FG/K#4<23XYG1w��JEb8�HL7�G3E?X[:;.17�G�4<.�EM:,GW03C�E�I�23:,.!89:,I!HLSGs�<7!HL23Ec23414<0�4LKM7�.�:,0/g]��03CFEª0/�W4�â/IJ4�:,.10@0329H�.�G«K#4�25XLKæ³zP�ò�D¦25E�STH�03ENG!�5à é ��Ã Ô �A034�5à é NÉÃ Ô ��à é ` Ã Ô �DH�.J6Y25Eb�<7�:,23E�G�.�4�X�7�S,03:,I�S,:T8�HL03:,4�.�Gb+­�4<2DC�:,k�C�EN2DI!4��WE�23GD4LKÌ0/��4J��05C�E?KåH<89034<23:,GsHL03:,4�.[7�G3Eb6 :;GP�Ò[ò�D ³ £O~�¢Tì�ò�ï/ì�ê�ò g×L>S ±�Ò[ò9Dª²�ò�ï/ì�ê�ò W�d�U_W�dvU ±7>?P�Ò!²�ò gDL>S K~òvïåìNê�ò íI~3}�Y�ç â�Ô

BDC�E[4�.�S,glE9ð�I�S,:T89:,0@X�7�S,05:;IFS;:T8�HL03:,4�.FGM:,.^03C�:,G?K/H�89054�23:,G9H�03:,4<.ãH�23E�:,.^05C�E W�d�U_W�dvU ±7>@P�Ò!²�DC�:T85Cã8�H�."�!E[:,XYI�S,E�X[E�.103Eb6y�1g¥HL.ãH�2329Hvg>4LK�P�Ò"X�7�S,03:,I�S,:T8�HL03:,4�.�G�4�.�S,g�ÒK`�*�4�K�DC�:T85ClH�23E?.�4<.1â/0323:,\1:TH�S/+�BDC�E�KåH�89054�25:;G9H�05:;4<.Y:,GD7�G5Eb6[23Eb897F23G3:,\<E�S,gª4<.c03C�E8Ò[ò�D�05E�23X7�.103:,St4<.�S,g�0/��4LâåIJ4�:,.10�052sHL.�G/K#4<23X[G�25E�XªHL:;.�+BDC�Ec7�G37JH�SW�uHvg·4�KM:,XYIFS;ENXYE�.103:,.�k[03C�:,G�H�S,k�4<23:,03CFX ä 05C!H�0p:,Gb��03CFEª7FG37!HLS��DHvg4�K?STHvg]:,.�kc4<7�0�03C�Ec89:,2s897F:;0 ä :,G�054¥6f:;\1:T61EMDh:,.1034·0/�W4>C�4<XY4<k�E�.�EN4�7�G@IJH�2305G%wcS,E�0DÞ³n»ãò9D�Ót�DC�E�25EP�Ò[ò9D Ó ³ íO~ }�Y çaò gDL>S ±�Ò[ò9D Ó ²�ò W�dvU_W�d�U ± >@P>Ò!²�ò ±_± gDL>S K�²'ù�ïåìNêO²Ìò1íI~3}�Y�ç â�Ô

H�.J6 P�Ò[ò» ³ £O~�¢íìMò�ï/ì�ê�ò g×L>S ±�ÒYò]»�²Ìò1íO~ }�Y�ç â'Ônt414<§]:,.�k^�JH�85§ã054ã03CFE>61:,Gs897FG3G3:,4<. 4LK®�F7�0305E�2/�!g 89:,2s897�:,05Gb�Dg<4�7%�D:,S,SDG3E�E·03CJH�0Y05C�E23Ev897�23G5:,4�.

P�Ò�ò"N ³ ± g×L>S ±�Ò[ò9N�²�ò1± gDL>S K�²!ù�ï/ì�êA²!ùRíO~ }�Y�ç â'Ô³ W���Y ±�ÒYò"N�²Ìò d5S>g×L>S K

C!HLGZHyG34<S;7F03:,4�.ONϳû±=�PKRâ�Ô�²�â'Ô +·BDC�:,Gp23Eb8�7�23G5:;4<.~:;G�H�S,X[4�G30A03C�E[GsH�X[EYH�G�05C!H�0K#4<2QD�Óå�tHL.!6l05C�EpG34�S,7�05:,4�.l.�ENEb6·4�.�S,g[�!EYH<6�j97�G503Eb6y034cH�8�894<XYX[4f6FH�03E?05C�E�0/�D:T6�6fS;EKåH<89034<23Gb+~��S,03E�25.!H�05E�S,g]��03C�El0/�D:T6�6fS;E&KåH�8�034�25G�XY:,k�C10@�JEl8�H�ST897FS}HL03Eb6":,. H·IF23E9â/I!H�G5G7�G5:;.FkYH�.�4<03C�E�2M8�4�â/S;4�8�HL03Eb6[��7F0303EN2/�!gc4�K�03C�EAGsH�X[EMG5C!H�IJE�H�G�NM+

Page 59: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

��� J��%� ��� E�@�B �r� ? � ?��y�O��  e�m�1:,XY:,STH�25S;g1��05C�EYG54�S,7�05:;4<.>054l03CFEY23Ev897�23G5:,4�.^K�4�2<»�:,G�HcIJE�25X�7�0sHL03:,4�.��o�DC�:T83C^:,GHc0523E�Ec4�KM052sHL.�G3IJ4�G5:;05:,4�.�Gv+l-/0p:;GA03C!HL0�\<E�23g·03C�4<234<7�k�C"G3C171¬YEY�DCF:}85CãHLI�I!EvH�23Gp:,.1âGs8�237�09H���S,gY:,.[XªH�.1gp:,XYI�S,E�X[E�.10sH�05:�4<.�G�4�K(05C�E�KåH�G50D0329H�.�G«K#4�25X>�1H�.!6&�DC�:T83C[23E�\<E�23G5E�G03CFE��F:;05GD4�KÌ03CFE�:,.!6fE9ðª4LK(03CFE@I!4<G3:,03:,4<.Y4�KÌHp\�H�S,7�E�:;.lHA\�Eb8�034�2v+BDC�E@61E�25:;\�HL03:,4�.�4LK�03C�EaKåH�G50uHLS,k�4�25:,03C�X�61:T6p.�4<0u61ENI!E�.J6Y4<.ªH?IJH�2305:T897�STH�2DH�25:;05C1âXYEN03:T8 wÌH�.1g[:;.105E�k�29H�S(6f4�XªHL:,.���4<7�ST6Y614J+u�f4�g�4�7l8�HL.c7�G3Ep03C�:,GM61EN23:,\�H�05:;4<.c034�S,EbH�6:,.1034·03C�El61E�G5:,k�.~4�K�H·89:,2s897�:,0�:,.~�DC�:T85Cã03CFEl0/�D:T6�61S,E9â�KåH�89054�2pX�7�S,03:,I�S,:,E�23GA4�IJE�2sHL03E4�.%894<XYI�S,E9ð~.17�X��!EN23Gb�W4<2�4�.%G5XªH�S,SW:,.]05E�k�EN23GY�D:,05C%XY4�617�S,4>HL23:,03CFXYE�05:}8L+ xc4<23E:,XYIJ4�250sH�.105S;g1�<03C�E�85C�4<G3E�.^H�25:,03C�X[E�03:T8M8NH�.l�JE�05C�E@IJ4�:,.10/�D:,G3E@4<I!E�29H�05:;4<.�GM4<.c03:,XYE9âG3Ev��7FE�.!89E�Gv�!HL.!6@05C�EM61E�25:,\�H�03:,4<.@4�Kt03C�EW��7�0503E�2«�!gY89:,2s8�7�:,0 8NH�.Mj97�G50ÌH�G�EbH�G5:,S;gA�!ED7�G5Eb6034�S,EbH<6�054YHpG3Eb�<7�E�.105:}HLS(89:,29897�:,0b+

ÕpÖbÕSR fö½���½?Ú#½AتÞR½¿¹�Q�Ì:,296�q�q|� `A+D�t+���:,2s6t�UT�ç9ë9ï/î1ìsç�èßzLê ë�z�ê1è9ï/ì�î�ë9ï/¢³Y�çª{�î1ê!ë�ïå¢7z�êA~3}M£Jì�z�é ì�~ |b|�¢Têfé �r 234�k<2sHLXYXY:á.�k `aE�G3EbHL2s85C é?254�7�I�05Eb85C�.�:T8�HLSªX[4�.�4<k�29H�I�C�rÌ`$é ä i�wF��fE�I�03ENX��!E�2@*vw�q<q�+�QVW414�STi�e|� ÂJ+�óÎ+(VW414�S,E�gãHL.!6�ÂJ+�óÎ+�B�7�§<E�g]� ï êÛ~ }¤é3zLì�¢,ï7í-|ï{%zLì�ï7ífç¡|ª~�ëí]¢TêJçë�z3|M£Jî�ïX~vï/¢5zLê�z�{�ë�z3|M£¨};çR¶ î zLî1ì�¢#çNì@èbçNì�¢#ç�è��?xlHL03C�E�XcH�05:}8�GM4�K�VW4<XYI�71â09H�05:;4<.�� �WV �t*bw<i�e�+�I�I�+JP�w<m ä U<��*<+�Q�?Hv\fq<w9� ãp+��?Hv\1:;G�H�.!6XÂ!+<�D7�k<C�E�G(±#Eb6fGb+s²�� î î]êJë9ï/¢5z�ê¨~ }4X�ì�z9é�ì�~3|8|p¢Tê1é�YIZ�}�~ èsé�z#^

[4\�]4\��Ì�1I�25:,.�k�E�2�ó^4�25§]G5C�4�IFG�:,.lVW4�X[I�7�03:,.�kJ��*bw<w��F+� Â�4<.!q�w|� é&+BÂ�4<.�E�Gv�_^®çNì�¢³Yv¢Tê1é�ï7ífçÁ{%~vè9ï î z�î1ì�¢#çNì¾~3}Qé�z�ì�¢}ï5í�| ��¬lë�~ },ë�î�}�~ ïå¢7z�ê��A:;.

�Q�?Hv\�q�wR�3+ª±år 234�k<2sHLXYXY:,.�kp`DE�G5EbH�2983C>é?234<7�Il05Eb85C�.�:T8�H�SW23ENI!4<230�rÌ`$é äBM` ä _ ä q�w>²� Â�4<.!w��|� é&+3Â�4�.FE�GªHL.!6ãx^+W�1C�E�EN2sH�.�� à ç�}o~vï/¢5z�ê1èå~Lê!æ^ì9ç+`ÌêJç�|�ç�êfïZ¢Tê ë�¢Tì9ë�î1¢,ïæ<ç9è�¢,é�ê���:,.-�Qxc4<23k1w��]�3+�QntE�:,G9q�*� V?+Ì�a+�ntEN:;G5E�23G54�.�� ï ì9ç�~^çba%ë�¢�ç�ê1ïdc1T�e4f>ë�z |�£!î<ïX~vï/¢5z�ê�� r�C�+Q�p+�03C�E�âG5:,Gb��VDHL23.�ENk�:,E9â3xcE�S,S,4�.�pD.�:,\�EN23G3:,0/g1�tr�:,0303G5��7�25k!��r�EN.�.�G3g1S,\�H�.F:}HF�@�?89034Lâ�JE�2@*vw�q�*<+�Qxl8�VDHL�!q�P|�Ax +]x^+�xy8�VDH��JE����p+�r�+]�A+�xl8�VDHL�!E��J�M+1����2sHLX��!ENI!4<S}HF��-�+OÚ@+�`a4���:,.1âG54�.lH�.J6Y�p+Bé�+�VW4�25g]��g@ç&^Ë~ }Qé�z�ìN¢,ï5í�|@èD~�ê!æ¡~Lìsëí]¢,ï3ç9ë9ï/î1ìsç�è4{%zLìhciT�e&fN�

éA�ÌVýÂ�4<7�23.!HLS?4�KZ��8�:;EN.!89E�Ê�B�Eb85C�.�4�S,4<k�g1�kjÌ4�S/+Ì_1q��eÚa4!+DP��A*bw�q<P�+IFI�+�i�q ä m�eF+�Qxc:,S,.!q�q|� é&+#Â!+�xc:,S,.�E¿±�Eb6t+s²��Ql'í�ç'{�î<è�¢7z�êiz�{RíI~Lìsæ.^�~�ì9ç�æ<ç9è�¢,é�êi~�ê!æ�Y�çNì�¢ `�ë�~vï/¢5zLê��

Úa4�2503C1â3�D4<S;STHL.!6t�J*bw�q<q�+

Page 60: C ontents 1 Circuit design in Ruby 1 1.1 Introduction

e�q <>= ?A@BDC%?;EGFIHA@�@�J�C%?

�Qxc4�25k]w<�9� V?+�V?+�xc4�25k]HL.�±�Eb6t+s²��mX�ì�zvëon Þ e î(ï�Þ e�^�z�ìÊvè�íIz�£Ûz�ê à ç+`�ê!ç�|�çNê1ïå��a7�23G5S,E�g]�(Â1H�.17!HL23g>*vw�w<��+¤±#B�4ZHLI�IJEbH�2aK#234<XO�1I�25:;.Fk�E�2@*vw�w��>²�Q�1C�E�EN2sq�q|� x +@�1C�E�E�29H�.�� à ç�ï/¢�|�¢íê1é ~�êJæ è�}�z.^�æ�z.^Ìê ¢Tê à îB��¬���:,.Å�Qxc:,S,.!q�q]�3+IFI�+�P�q<w ä U<��qF+