<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="http://rss.egloos.com/style/blog.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
	<title>魔界空間과 카라의 추억</title>
	<link>http://honeamis.egloos.com</link>
	<description>기술적 허세</description>
	<language>ko</language>
	<pubDate>Fri, 25 Sep 2009 22:50:55 GMT</pubDate>
	<generator>Egloos</generator>
	<image>
		<title>魔界空間과 카라의 추억</title>
		<url>http://pds8.egloos.com/logo/200802/15/43/c0038443.jpg</url>
		<link>http://honeamis.egloos.com</link>
		<width>80</width>
		<height>80</height>
		<description>기술적 허세</description>
	</image>
  	<item>
		<title><![CDATA[ Linux in Vmware on Windows ]]> </title>
		<link>http://honeamis.egloos.com/5080512</link>
		<guid>http://honeamis.egloos.com/5080512</guid>
		<description>
			<![CDATA[ 
  1.<br />
일단 리눅이가 하나 항상 켜져있는 상태에서 얘랑 얘기는 부끄럽게도 <a target="_blank" href="http://www.chiark.greenend.org.uk/%7Esgtatham/putty/">putty</a> 이용!<br />
뭐 노는 모니터 없고 모니터 공유기따위 누가 사주시면 굽신굽신 받겠지만 내돈 쓰기는 싫고....<br />
그래도 뭔가 편하게 살아봐야지 낑낑대었으나 내공부족에 귀차니즘 만땅인 요즘!<br />
<a target="_blank" href="http://realvnc.com">VNC</a>, <a target="_blank" href="http://freenx.berlios.de/">freenx</a> 모두 설치하다가.... 손놨다.<br />
<br />
2.<br />
지금.... 서버보다 클라이언트쪽 사양이 훠얼씬 좋은 관계로 꼴랑&nbsp; putty 머쉰으로 쓰기에는 새컴이 아깝다.<br />
따라서 좀더 괴롭혀주기 위해서 vmware server 를 탑재, 거기다가 gentoo 장착, <a target="_blank" href="http://distcc.samba.org">distcc</a> 를 깔았다.<br />
bootup start option 을 쓰니 따로 신경쓸일은 없는데, 여전히 교조가 더욱 필요할 듯....<br />
근데... clustering은 lan performance 가 발목을 잡는구나~ 기가비트로 가야하나...<br />
<br />
3.<br />
<a target="_blank" href="http://www.linux-kvm.org">KVM</a>을 실험중인데, <a target="_blank" href="http://xen.org">Xen</a> 보다는 설정이 쉬운듯... 기본 아이디어도 맘에 들고....<br />
윈도우즈가 쌩쌩 돌아가.... 지는 않는 거 같지만 설치는 되었다.<br />
좀더 실험을 해야하나... 다시 귀찮..... (키보드 누르기도 귀찮은데 흑...)<br />
<br/><br/>tag : <a href="/tag/distcc" rel="tag">distcc</a>			 ]]> 
		</description>
		<category>삽질 대마왕</category>
		<category>distcc</category>

		<comments>http://honeamis.egloos.com/5080512#comments</comments>
		<pubDate>Fri, 25 Sep 2009 22:50:39 GMT</pubDate>
		<dc:creator>기술적허세</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 아~ 망했어요!!! ]]> </title>
		<link>http://honeamis.egloos.com/5073900</link>
		<guid>http://honeamis.egloos.com/5073900</guid>
		<description>
			<![CDATA[ 
  1.<br />
음... 대략... 코딩 라인 3줄당 버그하나라는 믿기힘든 내공의 소유자가 누구일까?<br />
<br />
2.<br />
이젠 말하기도 구찮......<br />
<br/><br/>tag : <a href="/tag/망했다" rel="tag">망했다</a>			 ]]> 
		</description>
		<category>하드웨어의 함정</category>
		<category>망했다</category>

		<comments>http://honeamis.egloos.com/5073900#comments</comments>
		<pubDate>Fri, 18 Sep 2009 13:07:56 GMT</pubDate>
		<dc:creator>기술적허세</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 새 칩이 나왔다. ]]> </title>
		<link>http://honeamis.egloos.com/5052560</link>
		<guid>http://honeamis.egloos.com/5052560</guid>
		<description>
			<![CDATA[ 
  1.<br />
허접하기는 이를데 없지만 돌기는 돈다. 일단 전류가 줄줄 새지는 않으므로 절반은 먹고 들어간다.<br />
<br />
2.<br />
눈에 거슬리는 부분이 몇몇있는데 리비전을 하게 될까?<br />
<br />
3.<br />
검증은 들인 시간만큼, 돌린 test 만큼 완성된다. 근데... test bench 하나로 버티는 사람은 뭐지?<br />
			 ]]> 
		</description>
		<category>하드웨어의 함정</category>

		<comments>http://honeamis.egloos.com/5052560#comments</comments>
		<pubDate>Wed, 26 Aug 2009 14:37:02 GMT</pubDate>
		<dc:creator>기술적허세</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Dynamic Array in SystemVerilog ]]> </title>
		<link>http://honeamis.egloos.com/5036497</link>
		<guid>http://honeamis.egloos.com/5036497</guid>
		<description>
			<![CDATA[ 
  1.<br />
primitive data type 에 대해서는 다음과 같은 식으로 undefine-sized array 를 생성한다.<br />
<br />
<blockquote>int array [];<br />
array = new [100]; // int type 의 100 element 를 가지는 array</blockquote><br />
<br />
2.<br />
class 에 대해서는 어떻게 될까?<br />
<blockquote>class T;<br />
    extern void function foo ();<br />
endclass : T<br />
<br />
T arrayT [];<br />
arrayT = new [100];<br />
</blockquote><br />
이경우 arrayT 의 element 는 class T 에 대한 reference 에 불과하다. 따라서<br />
<blockquote>arrayT[0].foo(); // ERROR! reference to null object<br />
</blockquote><br />
이건 C++ 하고 다른 점인데, 그럴 수 밖에 없는 것이 SystemVerilog 는 class member method 의 overloading 을 지원하지 않을뿐더러, function new [] 를 class 에 대해서 지원하지 않는다. 한편 모든 primitive data type 을 제외한 user defined data type 에 대해서는 reference 취급을 하고 있으므로 어쩔 수 없이 다음과 같은 code 를 작성해야한다.<br />
<blockquote>T arrayT [];<br />
arrayT = new [100];<br />
for (int iter = 0; iter &lt; arrayT.length(); iter++) arrayT[] = new;<br />
</blockquote><br />
3.<br />
공부하자!<br />
<br />
<br/><br/>tag : <a href="/tag/systemverilog" rel="tag">systemverilog</a>,&nbsp;<a href="/tag/array" rel="tag">array</a>			 ]]> 
		</description>
		<category>하드웨어의 함정</category>
		<category>systemverilog</category>
		<category>array</category>

		<comments>http://honeamis.egloos.com/5036497#comments</comments>
		<pubDate>Mon, 10 Aug 2009 02:24:50 GMT</pubDate>
		<dc:creator>기술적허세</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Singleton Pattern in SystemVerilog ]]> </title>
		<link>http://honeamis.egloos.com/5032354</link>
		<guid>http://honeamis.egloos.com/5032354</guid>
		<description>
			<![CDATA[ 
  1.<br />
다음의 예제를 보자.<br />
<code></code><pre><br />
class Singleton;<br />
    static Singletone uniqueInstance;<br />
<br />
    function Singleton get_instance ();<br />
        if (uniqueInstance == null) uniqueInstance = new;<br />
        return uniqueInstance;<br />
    endfunction : new<br />
endclass : Singleton<br />
<br />
<del>initial Singleton::uniqueInstance = null;</del> // only works in module/program/macromodule<br />
</pre><br />
C++ 이라면 Singletone 에 대해서 static member 인 uniqueInstance 는 'undefined' 상태이므로, 위와 같은 code 는 원칙적으로 성립할 수 없다. 물론 SystemVerilog 에 대해서도 Single class 는 instance 로 선언되었다 하더라도 언어의 명세상 해당 class instance 가 'null' value 를 가질 뿐, Singleton::uniqueInstance 에 대해서는 'undefiend' 상태라고 보는 것이 정확하다.<br />
<br />
2.<br />
그러나, Cadence ncsim 환경에서 실험해본 결과로는 Singleton::uniqueInstance 역시 'null' 값을 가지고 있다. 유추해보자면, 실험한 ncsim 환경에서 class 는 top scope 에서 정의될 수 없고, 코드재사용을 위해서라면 반드시 package 의 부속으로 정의되어야 하는데 이 경우에 package 안에서 module/program/macromodule 이 정의될 수 없고, <a href="http://agraja.wordpress.com/2008/10/03/system-verilog-singleton-example/">예제</a>의 initial statement 는 불가하다. 결국, 가장 많이 사용될 design pattern 중의 하나인 <a href="http://en.wikipedia.org/wiki/Singleton_pattern">singleton pattern</a> 을 사용할 수 없다는 문제에 빠지게 될 Cadence 의 engineer 들이 language implementation 상의 고육지책을 돌아돌아 해결했다고 볼 수 밖에 없다.<br />
<br />
또 한가지 문제는 SystemVerilog 에서 function new 는 local 이 될 수 없다는 점인데, 이로써 get_instance() 를 사용하지 않고, new () 를 사용하는것을 막을 수 있는 수단이 없다.<br />
<br />
3.<br />
물론, 언어 명세상 동작정의가 불명확한 부분에 해당한다는 점에서 어느정도 인정할 수 밖에 없지만, 그래도... 찝찝한거야......<br />
<br />
4.<br />
공부하자!<br />
    <br/><br/>tag : <a href="/tag/systemverilog" rel="tag">systemverilog</a>,&nbsp;<a href="/tag/singleton" rel="tag">singleton</a>			 ]]> 
		</description>
		<category>하드웨어의 함정</category>
		<category>systemverilog</category>
		<category>singleton</category>

		<comments>http://honeamis.egloos.com/5032354#comments</comments>
		<pubDate>Wed, 05 Aug 2009 12:17:26 GMT</pubDate>
		<dc:creator>기술적허세</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Singleton Pattern in SystemVerilog 어찌하오리까 ]]> </title>
		<link>http://honeamis.egloos.com/5031916</link>
		<guid>http://honeamis.egloos.com/5031916</guid>
		<description>
			<![CDATA[ 
  1.<br />
Hardware 구현상 mixed-level verification 이 요청되는 경우가 종종 발생하는데 대표적으로는 digital block과 analog block이 엮어들어가는 경우이다. 예를 들면 ADC/DAC 가 있는 경우가 그렇다. 현재 시점에서 판단하자면 이런 경우를 해결해주는 solution 은 각 EDA vendor 마다 뻥좀 보태서 3~4개 씩은 들고 있는 것 같다. 문제는 analog block 이 칩 외부로 interface 가 이루어져야 하는 경우인데, 단순히 analog block 자체의 환경을 위해서 interface 되는 경우가 아니라, 해당 interface 의 전기적특성 변화에 logic block 의 response 가 매번 이루어지는 경우가 test bench 의 작성을 곤란하게 한다.<br />
<br />
최근에 회사에서 개발이 진행중인 터치센서칩의 경우를 예로 든다.<br />
<br />
해당 칩은 칩 외부의 터치패드로 연결되는 capacitance 의 변화에 반응하는 analog block 을 포함하고 있으며, logic block 은 analog block 의 출력 결과에 따라 여러가지 실시간 처리를 수행한다. 따라서 test bench 는 logic block 의 verification 을 위해서 외부 capacitance 의 변화를 모델링할 수 있어야 했는데......<br />
<br />
2.<br />
일단 쉽게 생각할 수 있는 것이 기존의 solution 을 이용하는 것! analog block 은 spice circuit 으로 모델링하고 digital block 은 Verilog 등을 사용하는 것인데, 우선 analog block 으로 모델링해야할 영역이 엄청나게 늘어나고 - analog signal 을 받는 pad 와 digital signal 을 받는 pad 부터 분리해나가야 한다. - 게다가... spice 류의 simulation 을 해보면 알겠지만, capacitance 의 값을 실시간으로 제어한다는 거 자체가 삽질의 나락으로 들어가는 것이다. 더해서, "logic block 의 결과에 따라서 capacitance 의 변화를 조절해가면서 simulation 할 수 있을까?" 뭐 이런 요청사항이 발생하면.... (먼산~ 술 먹는 날~)<br />
<br />
다른 solution 으로는 Verilog-AMS 를 쓰면서 analog solver 를 쓰는 방법인데.... 이건 국내에 Verilog-AMS 를 쓰는 사람이 거의 없으므로 pass. 뭐~ 배워볼까~ 라고도 생각은 해봤지만..... <br />
<br />
3.<br />
완전히 Verilog 만을 가지고 해결하는 경우라면, analog block 을 Verilog 로 모델링하고 칩 외부의 capacitance 변화에 해당하는 효과를 analog block 에 어찌어찌 넘겨주는 것으로 풀이할 수 있겠다. 다만, 문제가 여전히 남는 것은 capacitance 변화를 test bench 에서 어떻게 제어할 것인가인데...<br />
<br />
analog block 의 경우는 실제 physical instance 이므로 chip scope 의 hierarchy 상 "저기~ 저기~ 저 깊은 구덩이 속~ This is Sparta!!!" 되겠다. 그럼 test bench 를 구성하는 사람은 그렇다 치고 여러 function 검증을 위한 program 을 구성하는 엔지니어(들)은 매번 길고 긴 hierarchy 를 제대로(!) 지정하는 수고를 해야한다. 또한, test bench 의 DUT scope 가 여러단계에서 반복되는 경우에는 bench program 의 reusability 는 저 멀리 안드로메다로.....<br />
<br />
4.<br />
Verilog-2001 에서 사용한 방법은 다음과 같다.<br />
내부의 analog block 이 볼 수 있는 top module 하나를 구성한다. 해당 top module 은 물론 bench program 에서도 볼 수 있다. 그리고, program 은 top module 내부의 data manipulation 을 하고, analog block 은 top module 의 data 를 필요한 순간에 reference 한다. 이렇게 하면 hierarchy 에 변화가 생기더라도 최소한 code reusability 는 확보되는데.....<br />
<br />
5.<br />
SystemVerilog 로 옮겨오면서 가능한 SystemVerilog 에 어울리는 coding 으로 전환중에 문제가 발생되었는데,<br />
<br />
기존의 방식을 옮겨오면서 program block 에서&nbsp; 기존의 top module 에 해당하는 부분을 class화 하고, Singleton pattern 으로 global service 를 제공하는 식으로 구성을 하였으나.... 철썩같이 믿고 있던 <a href="http://agraja.wordpress.com/2008/10/03/system-verilog-singleton-example/">예제</a>가 <span style="text-decoration: line-through;">진성허당이라능</span>...... 일부 오류가 있으나 쓸 수 없는 것은 아닌것 같다.<br />
<br />
6.<br />
공부하자!<br />
<br/><br/>tag : <a href="/tag/systemverilog" rel="tag">systemverilog</a>,&nbsp;<a href="/tag/singleton" rel="tag">singleton</a>			 ]]> 
		</description>
		<category>하드웨어의 함정</category>
		<category>systemverilog</category>
		<category>singleton</category>

		<comments>http://honeamis.egloos.com/5031916#comments</comments>
		<pubDate>Wed, 05 Aug 2009 02:27:06 GMT</pubDate>
		<dc:creator>기술적허세</dc:creator>
	</item>
	<item>
		<title><![CDATA[ virtual interface ]]> </title>
		<link>http://honeamis.egloos.com/5030689</link>
		<guid>http://honeamis.egloos.com/5030689</guid>
		<description>
			<![CDATA[ 
  1.<br />
interface 는 signal 의 collection 에 해당하므로 선언후 실제로 instance 가 될 수 있는 녀석이다. 즉, module 과 같은 식으로 취급받아야하고 실제로 물리적인 hierarchy 에도 포함된다.<br />
<br />
2.<br />
문제는 systemverilog 의 설계자들이 어떻게하든지 TLM 흉내를 내고 싶었다는 것. 무리해서 집어넣은 class 는 엄연히 data type 이고 instance 역시 추상화되어 있는데 TLM 비스므리하게 하려면 class 안에서 interface instance 의 manipulation 이 가능하여야 했다.<br />
<br />
3.<br />
그 결과가 virtual interface 인데.... 이렇게 까지 언어명세를 박살내는 방법밖에는 없었을까?<br />
<br />
4.<br />
다음과 같이 사용한다.<br />
<br />
<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200908/04/43/c0038443_4a77043d67cb3.png" width="500" height="293.296089385" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200908/04/43/c0038443_4a77043d67cb3.png');" /></div>어떻게 하든 실 interface instance 를 m_var 에다가 assign 하시면 되겠다. 그러면 reference 처럼 사용할 수 있는데, 이건 마치 file IO 가 아니라 file 자체를 reference 로 받아온 격이어서 어거지라하면 어거지일 수도.....<br />
<br />
5.<br />
공부하자<br />
<br/><br/>tag : <a href="/tag/systemverilog" rel="tag">systemverilog</a>,&nbsp;<a href="/tag/interface" rel="tag">interface</a>			 ]]> 
		</description>
		<category>하드웨어의 함정</category>
		<category>systemverilog</category>
		<category>interface</category>

		<comments>http://honeamis.egloos.com/5030689#comments</comments>
		<pubDate>Mon, 03 Aug 2009 15:42:56 GMT</pubDate>
		<dc:creator>기술적허세</dc:creator>
	</item>
	<item>
		<title><![CDATA[ systemverilog random function ]]> </title>
		<link>http://honeamis.egloos.com/5025688</link>
		<guid>http://honeamis.egloos.com/5025688</guid>
		<description>
			<![CDATA[ 
  1.<br />
ncsim 에서 random base function 을 바꾸는 option 은 -SVRNC<br />
이걸 바꿔가면서 시뮬레이션 할 일은 거의 없을 듯 하다.<br />
<br />
2.<br />
function randomize() 를 사용할 때 주의해야 할 점은 이게 verilog 체계를 뛰어넘는 것은 아니므로 반드시 return 값을 받아주어야 한다는 점이다. systemverilog 를 쓰다보면 이게 C 랑 헷갈리면서 task 와 function 을 구분하는 능력이 떨어지게 되는데, function randomize() 엄연히 return 값이 있다. 따라서 return value 를 받아주기 싫다면 반드시<br />
<blockquote><code>void'(foo.randomize())</code></blockquote>와 같이 하여야 한다.<br />
<br />
3.<br />
이걸로 삽질 한나절... ㅠㅠ<br />
<br/><br/>tag : <a href="/tag/systemverilog" rel="tag">systemverilog</a>,&nbsp;<a href="/tag/random" rel="tag">random</a>			 ]]> 
		</description>
		<category>삽질 대마왕</category>
		<category>systemverilog</category>
		<category>random</category>

		<comments>http://honeamis.egloos.com/5025688#comments</comments>
		<pubDate>Wed, 29 Jul 2009 02:06:25 GMT</pubDate>
		<dc:creator>기술적허세</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Design by Contract ]]> </title>
		<link>http://honeamis.egloos.com/5019248</link>
		<guid>http://honeamis.egloos.com/5019248</guid>
		<description>
			<![CDATA[ 
  1.<br />
SystemVerilog 를 공부하고 있다. assertion 에 도착하니 이게 뭔가 싶기도 하고 - 일단 C++ 은 저리가라할 정도록 난잡한 symantic 이라니!!! - 이게 SW 쪽에서 이야기하는 design-by-contract 랑 연결이 되는 것인가 궁금하기도 하고.... 그런 상태<br />
<br />
2.<br />
일단 여러가지 링크<br />
<br />
<a href="http://skyul.tistory.com/tag/Design%20By%20Contract">서광열의 프로그래밍 언어 이야기</a><br />
<a href="http://en.wikipedia.org/wiki/Design_by_contract">위키피디아</a><br />
<br />
더 없네.....<br />
<br />
3.<br />
헛다리 짚는거면 어떻게하지?<br />
<br/><br/>tag : <a href="/tag/systemverilog" rel="tag">systemverilog</a>			 ]]> 
		</description>
		<category>하드웨어의 함정</category>
		<category>systemverilog</category>

		<comments>http://honeamis.egloos.com/5019248#comments</comments>
		<pubDate>Wed, 22 Jul 2009 08:11:54 GMT</pubDate>
		<dc:creator>기술적허세</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 티맥스 윈도우 ]]> </title>
		<link>http://honeamis.egloos.com/5004236</link>
		<guid>http://honeamis.egloos.com/5004236</guid>
		<description>
			<![CDATA[ 
  1.<br />
솔직히 말해서 이 포스트의 카테고리를 못잡겠다.<br />
<br />
2. <br />
일단 ... <a href="http://dets.kipris.or.kr/ndets/srft1000a.do?masterKey=4019990008293&amp;DMP=s3:/usr59/TR_PDF/40/1999/0008/4019990008293.pdf">마이크로소프트 코퍼레이션의 상표등록현황</a><br />
여기에 무려 "Tmax Window 9"<br />
<img src="file:///C:/DOCUME%7E1/DANIEL%7E1/LOCALS%7E1/Temp/moz-screenshot.png" alt=""><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200907/07/43/c0038443_4a52f41b6a438.png" width="480" height="420" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200907/07/43/c0038443_4a52f41b6a438.png');" /></div><br />
<div style="text-align: center;">(이미지 출처 : http://meteos.tistory.com/163)<br />
<br />
<div style="text-align: left;">일단 등록상표의 지정상품과 대상상품이 동일한 것이야 말할 필요도 없을 것이고, 지정상품의 일반소비자 입장에서 국문 "윈도우즈"와 영문 "WIndow" 가 혼동의 개연성이 상당하다는 것은 뭐....<br />
게다가 마이크로소프트에서 윈도우즈7 을 대대적으로 마케팅하고 있는 상황에서 제품발표당일에 와서야 "Tmax Window 9" 이라고 윈도우즈7 보다 한끗발 높은 명칭을 사용하는 물타기 작전에는 혀를 내두를 수밖에 업다능..... 넵, 윈도우7 보단 윈도우9 가 당근 더 좋죠.<br />
<br />
3.<br />
무려 내장 DB 랍니다. <a href="http://blog.naver.com/forcekw/80020165075">이건 인터넷 브라우저나 미디어 플레이어에 대한 선택권을 침해했다는 공정위의 지난 행보</a>에 대한 정면 도전되겠습니다. 티맥스의 OS가 공공납품되는 경우 부록으로 주어지는 티베로 DB의 경쟁업체들은 걍 손가락이나 빨.... 리는 없고.....<br />
<br />
4.<br />
맹장이라..... <br />
</div></div><br/><br/>tag : <a href="/tag/티맥스" rel="tag">티맥스</a>			 ]]> 
		</description>
		<category>삽질 대마왕</category>
		<category>티맥스</category>

		<comments>http://honeamis.egloos.com/5004236#comments</comments>
		<pubDate>Tue, 07 Jul 2009 07:25:38 GMT</pubDate>
		<dc:creator>기술적허세</dc:creator>
	</item>
</channel>
</rss>
