ÁÖ·Î ÇÏ´Â ÀÏÀÌ °³¹ß, ±× Áß¿¡¼µµ ASIC
°³¹ßÀÌ´Ùº¸´Ï ³í¹®ÀÌ ¸ðµÎ ±¸Çö(implemetation)¿¡
°üÇÑ °ÍÀÔ´Ï´Ù.
Due to the nature of my works, they are all papers on implementations
ÀúÈñ ¿¬±¸¼Ò Á¤Áö¼º¾¾°¡ Á¦ÀÇÇÑ °Íµµ ÀÖÁö¸¸,
½Ã°£ÀÌ µÇ´Â ´ë·Î, »ý°¢³ª´Â ´ë·Î Ȥ½Ã ´Ù¸¥
»ç¶÷µé¿¡°Ô µµ¿òÀÌ µÉ ¸¸ÇÑ ±ÛµéÀ» ½á¼ ¿Ã·Á
µÎ·Á°í ÇÕ´Ï´Ù. Á¦°¡ ¾´ conference ³í¹®µéµµ ¸ðµÎ
¿Ã·Á ³õ°í ½ÍÁö¸¸ ºÒÇàÈ÷µµ ¿Ü±¹¿¡ ÆÄ°ß³ª°¡
ÀÖ´Â »çÀÌ Á¦ ÄÄÇ»ÅÍ¿¡ virus°¡ ħÀÔÇؼ ³í¹®
ÆÄÀϵéÀÌ ¸ðµÎ Áö¿öÁ® ¹ö·È´õ±º¿ä. ÈæÈæ!..
±×·¡µµ °¡²û¾¿ ã¾Æ¿Í ÁÖ¼¼¿ä. ÀÏ´Ü ÃÖ±Ù¿¡ ¿¬±¸¼Ò
°Ô½ÃÆÇ¿¡ ¿Ã·È´ø ±ÛÀ» ¿©±â ¿Ã¸³´Ï´Ù.
´©°¡ °£´ÜÇÏ°Ô ¼Ò°³Çؼ °Ô½ÃÆÇ¿¡ ¿Ã·Á ÁÖ¸é
ÁÁ°Ú´Ù°í Çؼ..
UNIX¿¡¼ ¾Ë¾ÆµÎ¸é Æí¸®ÇÑ ¸í·É¾îµé·Î´Â
1. sed (stream editor)
¸¸¾à ¾î¶² file¿¡¼ ¸ðµç "lion"À̶ó´Â ¸»À»
"cat"À¸·Î ¹Ù²Ù¾î tmp¶ó´Â file·Î ¸¸µé°í
½ÍÀ¸¸é
> sed -e '1,$s/lion/cat/g' filename > tmp
ÇÏ¸é µË´Ï´Ù. Á÷Á¢ ¿Áö ¾Ê¾Æµµ µÇÁÒ.
±×·³ "lion"À̶ó´Â ¸»ÀÌ µé¾î°£ ÁÙÀº ¸ðµÎ
Áö¿ö¼ tmp¶ó´Â file·Î ¸¸µé°í ½ÍÀ¸¸é
> sed -e '/lion/D' filename > tmp
ÇÏ¸é µË´Ï´Ù.
fileµéÀ» ÁöÁ¤ÇÒ ¶§
*/*.list (¸ðµç directory ¹Ù·Î ¹Ø¿¡ ÀÖ´Â *.list)
¿Í °°Àº °Íµµ µË´Ï´Ù. ¿¹¸¦ µé¾î
> rm */*.obj
°°ÀÌ ¸»ÀÔ´Ï´Ù.
2. foreach
¿¹¸¦ ¸ðµç *.vhd fileÀ» ¿¾î¼ lionÀ» tiger·Î ¹Ù²Ù°í
½ÍÀ¸¸é
foreach i (*.vhd)
sed -e '1,$s/lion/tiger/g' $i
end
ÀÌ·¸°Ô ÇÏ¸é µÇÁö¿ä.
¶Ç´Â ¸ðµç *.vhd fileÀ» ¿¾î¼ lionÀ» tiger·Î ¹Ù²Û
µÚ¿¡ ÆÄÀÏ È®ÀåÀÚ¸¦ .v·Î ¹Ù²Ù°í ½ÍÀ¸¸é
foreach i (*.vhd)
sed -e '1,$s/lion/tiger/g' $i > tmp
mv tmp `cat $i | sed -e '1,$s/vhd/v/g'`
end
ÀÌ·¸°Ô ÇÏ¸é µË´Ï´Ù. À§¿¡¼ ` `´Â ¾î¶² ¸í·ÉÀÇ
Ãâ·ÂÀ» ¶æÇϱ⠶§¹®¿¡ fileÀ̸§À» catÇÑ ÈÄ¿¡ vhd¸¦
v·Î ¹Ù²Û »õ·Î¿î À̸§À» ¸¸µé ¶§ »ç¿ëÇÑ °ÍÀÔ´Ï´Ù.
foreach´Â find¿Í °°ÀÌ »ç¿ëÇϸé Æí¸®ÇÒ ¶§°¡
¸¹½À´Ï´Ù.
¿¹¸¦ µé¾î ÇöÀç directoryÀÇ ¹Ø¿¡ À§Ä¡ÇÏ´Â ¸ðµç .vhd
file¿¡ ´ëÇؼ line¼ö¸¦ ¾Ë°í ½ÍÀ¸¸é
foreach i (`find . -name \*.vhd -print`)
wc -l $i
end
ÀÌ·¸°Ô ÇÏ¸é µÇÁö¿ä.
3. awk ( '¿ÀÅ©'·Î ¹ßÀ½)
Text fileÀÇ lineµéÀ» ÀÐÀ» ¶§¸¶´Ù patternÀ» °Ë»çÇؼ
¾î¶² actionÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. Ä÷³ ´ÜÀ§·Î ¾î¶²
ÀÏÀ» Çϱ⵵ ÆíÇÕ´Ï´Ù.
¿¹¸¦ µé¾î lionÀ̶ó´Â ÆÐÅÏÀÌ ³ª¿À´Â ÁÙ¸¶´Ù ¼¼
¹ø° À§Ä¡ÇÏ´Â ¸»À» ²¨³»¾î »Ì°í ½Í´Ù¸é
awk '/lion/{print $3}' filename
ÇÏ¸é µÇ´Â °ÍÀÔ´Ï´Ù. ¸¸¾à summary¶ó´Â ¸»ÀÌ ³ª¿À´Â
ÁÙ¸¶´Ù ¼¼ ¹ø° À§Ä¡ÇÑ °ª¸¸ ¸ðµÎ ÇÕÇؼ
¸¶Áö¸·¿¡ ÇÁ¸°Æ®ÇÏ°í ½ÍÀ¸¸é
awk '/summary/{sum = sum + $3}; END{print sum}' filename
ÀÌ·¸°Ô ÇÏ¸é µÇ´Â °ÍÀÔ´Ï´Ù. ƯÁ¤ Á¤º¸¸¦ »Ì¾Æ
¿¬»êÀ» ÇÒ ¼öµµ ÀÖ°í ³»ºÎ¿¡ º¯¼ö¸¦ µÎ¾î »ç¿ëÇÒ
¼öµµ Àֱ⠶§¹®¿¡ Àß ¾²¸é º°ÁþÀ» ´Ù(?) ÇÒ ¼ö
ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº manualÀ̳ª internetÀ»
ÂüÁ¶Çϼ¼¿ä. º¸Åë awk -f aa.awk filename ¿Í °°ÀÌ awk
script¸¦ ¸¸µé¾î »ç¿ëÇÕ´Ï´Ù.
½¬¿î ¿¹¸¦ ¸î°³¸¸ Ãß°¡ÇØ º¸ÁÒ(2001.8.30)
¿¹¸¦ µé¾î ù¹ø° Ä÷³°ú ¼¼¹ø° Ä÷³¸¸ printÇÏ°í ½Í´Ù¸é
awk '{print $1 $3}' file > tmp
ÀÌ·¸°Ô ÇÏ¸é µÇ°í¿ä
Å« verilog netlist¿¡¼ assign abc = abc; ¿Í °°ÀÌ self assignment°¡ ÀÖ´Â ºÎºÐ¸¸ commentó¸®ÇÏ°í ½ÍÀ¸¸é(ÁÙ ½ÃÀÛ¿¡
//¸¦ »ðÀÔ)
/assign/ {if ($2 ";" == $4 ) print "//" $0; else print $0}
!/assign/{print $0}
ÀÌ·¸°Ô ÇÏ¸é µË´Ï´Ù.
¶Ç ÇÕ¼º script¿¡¼ compileÀ̶ó´Â ¸í·É¾î°¡ ÀÖÀ¸¸é ±× ¾Õ¿¡ ¿¹¸¦ µé¾î
set_max_transition = 1.2 ¶ó´Â ÁÙÀ» »ðÀÔÇÏ°í ½ÍÀ¸¸é
/compile/{printf "set_max_transition\n"; printf $0}
!/compile/{print}
ÀÌ·¸°Ô ÇÏ¸é µË´Ï´Ù.
¸¸¾à¿¡ ¿©·¯°³ÀÇ *.scr ÆÄÀϵ鿡 ´ëÇØ À§¿Í °°Àº 󸮸¦ ÇÏ°í ½ÍÀ» ¶§ À§ÀÇ script¸¦ tt.awk¿¡ ½á µÎ¾ú´Ù¸é
foreach i (*.scr)
awk -f tt.awk $i >! tmp
\mv tmp $i
end
ÀÌ·¸°Ô ÇÏ¸é µÇÁö¿ä. ¸¸¾à ƯÁ¤ fileµé¿¡ ´ëÇØ ÇÏ°í ½Í°í ±× fileµéÀÇ ¸í´ÜÀÌ list¶ó´Â file¿¡ ÀÖÀ¸¸é
foreach i (`cat list`)
..¸¶Âù°¡Áö·Î
ÀÌ·¸°Ô ÇÏ¸é µË´Ï´Ù.
´ÙÀ½¿¡´Â vi¿¡ ´ëÇؼ ¾Ë¾ÆµÎ¸é ¸·°ÇÑ ±â´Éµé¿¡
´ëÇØ °£´ÜÈ÷ ¼Ò°³ÇØ º¸ÁÒ.
¸¹Àº »ç¶÷µéÀº vi°¡ ¾ÆÁÖ ´Ü¼øÇÏ°í Ãʺ¸ÀûÀÎ editor·Î
¾Ë°í Àִµ¥ »ç½ÇÀº °¡Àå ¸·°ÇÑ editorÀÔ´Ï´Ù.
¸¸¾à text editing ´ëȸ°¡ ÀÖ´Ù¸é vi¸¦ »ç¿ëÇÏ´Â
°í¼ö°¡ ¿ì½ÂÇÏÁö ¾ÊÀ»±î..
¸¶¿ì½º ¿òÁ÷ÀÌ´Â °ÍÀÌ ¾ó¸¶³ª ½Ã°£ÀÌ ¸¹ÀÌ
°©´Ï±î, ¶Ç window¿¡ Ä¿¼¸¦ À§Ä¡ÇÏ°í type-inÇÏ´Â
°Íµµ ½Ã°£ÀÌ ¸¹ÀÌ °É¸®°í¿ä. vi¿¡¼´Â ±×³É
Å°º¸µå¿¡¼ ¸ðµç °ÍÀ» ³¡³À´Ï´Ù.
¿©±â¼´Â ±âº»ÀûÀÎ °ÍÀº(h,j,k,l,p,P,a,A,b,u,w,r,R,d,D,dd,J,yy
...µî vi¿¡´Â ±â´ÉÀÌ ¾ø´Â Å°¸¦ ã±â°¡ Èûµé
Á¤µµÀÔ´Ï´Ù. ¹°·Ð ¸ðµÎ command ¸ðµå¿¡¼ µ¿ÀÛ) ¼³¸íÇÏÁö
¾Ê°í, »ç¶÷µéÀÌ ¸ô¶ó¼ Àß ¾²Áö ¾Ê´Â Æí¸®ÇÑ
±â´ÉÀ» ¼Ò°³ÇÏ°Ú½À´Ï´Ù.
1. Mark
¸í·É¾î´Â m ÀÔ´Ï´Ù. ƯÁ¤ lineÀ» a¶ó°í markÇÏ°í
½ÍÀ¸¸é ±×³É maÇÏ½Ã¸é µË´Ï´Ù.
³ªÁß¿¡ a·Î °¡°í ½ÍÀ¸¸é 'a ÇÏ¸é µÇ°í¿ä, aÀ§Ä¡¿¡¼
ÇöÀç ÁÙ±îÁö lionÀ» tiger·Î ¹Ù²Ù°í ½ÍÀ¸¸é
:'a,.s/lion/tiger/g'
ÇÏ¸é µË´Ï´Ù. ¶Ç enterµµ Ç¥½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. Ctrl V
´ÙÀ½¿¡ enter¸¦ Ä¡¸é ^MÀ¸·Î Ç¥½ÃµÇ¸é¼ enter°¡
µË´Ï´Ù. ±×·¯´Ï±î ¸ðµç ÁÙ¿¡¼ comma¸¦ ã¾Æ¼
'=>'·Î ¹Ù²Ù°í ÁÙÀ» ¹Ù²Ù°í ½ÍÀ¸¸é
$s/,/=> ^M/g
ÇÏ¸é µÇÁö¿ä. À§¿¡¼ ^MÀ» Âï±â À§Çؼ ½ÇÁ¦·Î´Â
Ctrl+VÇÑ ÈÄ¿¡ enterÅ°¸¦ Ä£ °ÍÀÔ´Ï´Ù.
¶Ç´Â ¾î´À ±¸°£ a¿¡¼ b±îÁö (¹°·Ð markingÇÑ ÈÄ¿¡)
lineÀÇ ½ÃÀÛ¿¡´Ù°¡ tabÀ» µÎ°í entry¶ó´Â ¸»À» ³Ö°í
½ÍÀ¸¸é
: 'a,'b s/^/ entry/g'
¶ó°í ÇÏ¸é µÇÁö¿ä.(entry ¾Õ¿¡ tabÀ» µÎ¾ú½À´Ï´Ù.)
¸Ç µÚ¿¡ ÀÖ´Â g ¿É¼ÇÀ» »©¸é ÇÑ ÁÙ¿¡ ´ëÇؼ ÇÑ
¹ø¸¸ ÇÑ´Ù´Â ¶æÀÔ´Ï´Ù.
¶Ç a¿Í b»çÀ̸¦ ¸ù¶¥ copyÇؼ ´Ù¸¥ À§Ä¡¿¡ °¡¼
placeÇÏ°í ½ÍÀ¸¸é
: 'a,'b y
ÇÑ ÈÄ¿¡ ÇØ´ç À§Ä¡¿¡ °¡¼ p ÇÏ¸é µÇ´Â °ÍÀÔ´Ï´Ù.
Èûµé°Ô ¸¶¿ì½º·Î ½ºÅ©·ÑÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. a¿¡¼
b±îÁö Áö¿ì·Á¸é 'a,'b d ÇÏ¸é µÇ°ÚÁÒ?
2. search & replace
À§¿¡µµ ³ª¿ÔÁö¸¸ ^´Â ÁÙÀÇ Ã³À½, $´Â ÁÙÀÇ
¸¶Áö¸·À» ¶æÇϹǷΠsearch¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
±×·¯´Ï±î ÁÙÀÇ ½ÃÀÛ¿¡ ÀÖ´Â lion¸¸ ã¾Æ¼ tiger·Î
¹Ù²Ù°í ½ÍÀ¸¸é
:s/^lion/tiger
ÇÏ¸é µÇ°í a Ç¥½ÃÇÑ °÷ºÎÅÍ ÇöÀç line±îÁö aa¸¦ bb·Î
¹Ù²Ù°í ½ÍÀ¸¸é :'a,. s/aa/bb/g ÇÏ¸é µË´Ï´Ù.
ÁøÁ¤ÇÑ viÀÇ power´Â regular expressionÀ» ¾µ ¶§ ³ªÅ¸³³´Ï´Ù. (Lenarning vi editor¶ó´Â Ã¥¿¡ Àß ³ª¿É´Ï´Ù.)
¿¹¸¦ µé¾î ¸ðµç ÁÙ¿¡¼ abc¶ó´Â patternºÎÅÍ ÁÙ ³¡±îÁö¸¦ tiger·Î °íÄ¡°í ½ÍÀ¸¸é
:%s/abc.*/tiger
ÇÏ¸é µÇ°í¿ä,
abc : out std_logic_vector(7 downto 0);
go_gen : in std_logic;
...
°ú °°Àº ºÎºÐÀ»
abc => abc,
go_gen => go_gen,
...
·Î ¹Ù²Ù°í ½ÍÀ¸¸é
:'a,.s/ \(.*\) :.*/\1 => \1,
·Î ÇÏ¸é µË´Ï´Ù.
¶Ç tabÀ̳ª space°¡ ¿©·¯°³ ÀÖ´Â °ÍÀ» ÇϳªÀÇ tabÀ¸·Î Ç¥½ÃÇÏ°í ½ÍÀ¸¸é
:s/[ ][ ]*/ /g
·Î ÇÏ¸é µË´Ï´Ù. ¿©±â¼ bracket¾È¿¡´Â tab°ú space¸¦ Çϳª¾¿ Àû¾ú½À´Ï´Ù.
g ¸í·Éµµ Æí¸®ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î schoolÀ̶ó´Â ¸»ÀÌ ³ª¿À´Â ÁÙ¸¶´Ù middleÀ» high·Î ¹Ù²Ù°í ½ÍÀ¸¸é
:%g/shcool/s/middle/high/g
·Î ÇÏ¸é µË´Ï´Ù.
¶Ç dog¶ó´Â ¸»ÀÌ ³ª¿À´Â ÁÙÀ» ¸ðµÎ Áö¿ì°í ½ÍÀ¸¸é
:%g/dog/d
ÇÏ¸é µÇÁö¿ä.
¸ðµç ÁÙÀ» ´ë¹®ÀÚ·Î ¹Ù²Ù°í ½ÍÀ¸¸é
:%s/\(.*\)/\U\1
·Î ÇÏ¸é µË´Ï´Ù. ¿¹°¡ ³Ê¹« ¸¹¾Æ¼ ´Ù µé ¼ö°¡ ¾ø½À´Ï´Ù.
3. Macro ÁöÁ¤
ÀÌ°ÍÀº ¹Ýº¹µÇ´Â key ÀÔ·ÂÀ» ÇϳªÀÇ macro·Î ÁöÁ¤ÇÒ
¼ö ÀÖ´Â ±â´ÉÀÔ´Ï´Ù. ¿¹¸¦ µé¾î ¾î´À file¿¡¼ ¸î
ÁÙ¿¡ °ÉÃÄ aa,bb,cc,dd,ee,..ÀÌ·± ÁÙÀÌ Àִµ¥ ÀÌ°ÍÀ»
aa => aa,
bb => bb,
cc => cc,
¶ó°í ¹Ù²Ù°í ½Í´Ù°í ÇսôÙ. ±×·¯¸é ¸ÕÀú
$s/,/ => ^M/g
ÇÑ ÈÄ¿¡
/[a-z]
·Î Çؼ ã±â¸¦ ÇØ µÐ µÚ (¾ËÆĺª ¼Ò¹®ÀÚ¸¦ ã´Â
°ÍÀÔ´Ï´Ù.) ³ªÁß¿¡ n (new:°è¼Óã±â)¸¦ »ç¿ëÇϱâ
À§ÇØ ¹Ì¸® ¼öÀÛ(?)À» ºÎ¸®´Â °ÍÀÓ.
map t yw$pn
À̶ó°í Çϸé (word¸¦ yankÇؼ ÁÙ ³¡À¸·Î °£ ÈÄ¿¡
yankÇÑ word¸¦ placeÇÏ°í, ´ÙÀ½ alphabet patternÀ» ã¾Æ
´ÙÀ½ À§Ä¡·Î °£´Ù.) Ä¿¼¸¦ aaÀÇ ½ÃÀÛÀ§Ä¡¿¡ µÎ°í
±×³É ttttt... ÀÌ·¸°Ô Çϸé t¸¦ Çѹø Ä¥ ¶§¸¶´Ù ÇÑ
ÁÙ¾¿ 󸮵˴ϴÙ. ÀÏÀÏÀÌ copy-À̵¿-paste-À̵¿ ÇÒ
ÇÊ¿ä°¡ ¾øÁö¿ä.
¶Ç
10000000000
01000000000
00100000000
00010000000
¹¹ ÀÌ·± ÆÐÅÏÀ» ¸¸µç´Ù°í Çصµ
00000000000À» ¸¸µé¾î yankÇؼ ¿©·¯ ÁÙÀ» ¸¸µç ÈÄ¿¡
map t r1jl Çؼ (1·Î replaceÇÑ ÈÄ¿¡ ¹ØÀ¸·Î ÇÑ Ä,
¿À¸¥ÂÊÀ¸·Î ÇÑ Ä) Á¤ÀÇÇÏ°í ±×³É tttt..Çϸé
ÀÚµ¿À¸·Î ¹Ù²î´Â °ÍÀÔ´Ï´Ù.
¶Ç ¾î¶² patternÀ» ãÀº ÈÄ¿¡ ±× ÁÙ µÚ±îÁö ¸ðµÎ
Áö¿ì°í ½ÍÀ¸¸é ¸ÕÀú ã±â¸¦ ÇØ µÐ ÈÄ¿¡
map T nd$
ÀÌ·¸°Ô ÇÏ¸é µÇ°ÚÁö¿ä?
3. ±×¿Ü
¶Ç line 255·Î °¥ ¶§µµ ±×³É 255G ÇÏ¸é µÇ°í¿ä, tabÀÇ
Å©±â¸¦ Á¶Á¤ÇÒ ¶§µµ set tabstop=4¿Í °°ÀÌ Çؼ tabÀÇ
°£°ÝÀ» Á¶ÀýÇϱ⵵ ÇÕ´Ï´Ù. ã±â¸¦ ÇÒ ¶§µµ case
insensitiveÇÏ°Ô ÇÏ°í ½ÍÀ¸¸é set icÇÏ¸é µÇ°í¿ä.
ÀÌ·± ¸ðµç settingÀº home directoryÀÇ .exrc¿¡¼ ¼³Á¤ÇÒ
¼öµµ ÀÖ½À´Ï´Ù.
±× ¿Ü¿¡µµ ÁÁÀº ±â´ÉÀÌ ¸¹Àº °Í °°Àºµ¥ »ý°¢ÀÌ
³ªÁö ¾Ê´Â±º¿ä.