Processor Architect.... egoist
프로세서, SoC, ASIC 설계에 대한 재미난 이야기들. 그리고, 쉼표...
BLOG main image
Notice
babyworm은?
CATEGORY
전체 (232)
SoC 설계 관련 (101)
마이크로 프로세서 이야기 (21)
유용한 설계도구 (7)
검증이야기 (14)
관련 새소식 (26)
초보자 코너 (11)
개인적인 (95)
책이야기 (13)
만화/애니메이션 (3)
영화/드라마이야기 (4)
음악이야기 (11)
Boards
질문 게시판
칩쟁이들 모임(올블카페)
TAGS
마이크로 프로세서 synopsys verilog HDL SystemVerilog verification 개인적인 EISC PLI AMD ARM Mentor 프로세서 GPU Cadence Synthesis FPGA 세미나 assertion Intel EDA
Recent Entries
중소기업 SoC의 딜레마 (1)
늙어가고 있는지도 모르겠... (2)
지금 머리속에는...
대충 살아가는 느낌이다.
나참..
via nano와 Intel atom간...
근황과 MPFJ2008
Core-A launching 행사 (8)
수원시대.. (2)
Microprocessor Forum Jap...
Recent Comments
현재 국내 대부분의 업체가...
10/10 - knight
네.. 코딩 할때는 즐거운 느...
10/04 - babyworm
Coding이 제일 재미있지요. ^...
10/02 - donny
VMWare의 경우 host OS 상에...
09/22 - babyworm
Vmware 에서 하드웨어로 가상...
09/21 - 라이천령
Recent Trackbacks
Verilog Coding Style for Sy...
Stay Tuned...
CEO's Leadership Seminar
Stay Tuned...
사악한 쌍둥이 full_case와 p...
Stay Tuned...
칩쟁이들의 모임등록
Stay Tuned...
드디어 리만 가설을 다읽었습...
blueecho의 생각바구니
Calendar
«   2007/12   »
일 월 화 수 목 금 토
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
Archive
2008/10
2008/09
2008/08
2008/07
2008/06
2008/05
2008/04
2008/03
2008/02
2008/01
2007/12
2007/11
Link Site
[B]babyworm의 개인적인 블로그
[B]PAPA JOHN'S
[Javaworld] 볕태들의 집합소
[JW] 얌탱옹 블로그
[JW] 킴송 사진첩
[JW]*ㅡ아바미아 스토리-*
[JW]:+: Welcome To (( sccid...
[JW]iDea Holic
[JW]JS™
[JW]Jung-Hyeon's weB@LOG
[JW]Kino's blog
[JW]zzbe의 tattertools
[JW]볕태 앙뷁
[JW]애니와 만화의 세계!
[JW]자유로운 늑대의 울음으로~~
[JW]첫사랑 첼로
[JW]최신컴터 놀이~
[KTUG]글과 음악
[KTUG]도은이네 집
[KTUG]문학적프로그래밍
[KTUG]시냅스
[W] eetimes
[W] KERIS 학술 정보 서비스
[W] Microprocessor Report
[W] verification guild
[W]ASIC&FPGA cafe
[W]filedic
[W]WWW CA Page
[W]개인적인 게시판
[W]아람92
내 금전출납부
185497 Visitors up to today!
Today 27 hit, Yesterday 134 hit

English Ver. (by Google)
Creative Commons License
이 블로그의 모든 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
한RSS에 추가 add to Bloglines
add to google


Add to Technorati Favorites



Candle
'2007/12'에 해당되는 글 4건
내일이면.. | 2007/12/18
bette middler | 2007/12/08
PLI에서 TCP/IP를 통해서 통신하고, perl server에서 처리하기 (2) | 2007/12/04
2007년의 마지막 한달 | 2007/12/01
내일이면..
[babyworm, 2007/12/18 18:32, 개인적인]
내일 대통령 선거일입니다.
어떤 결과가 나올지 알수 없습니다만..
어떤 사람은 부패가 승리하였다 할 지도 모르고, 혹은 현 좌파 정부에 대한 염증의 표시라는 말이 나올지도 모르겠습니다. 또 어떤 사람은 진실이 승리했다고 하고, 혹은 바른 정치가 승리했다고 할지 모르겠습니다만, 다른 편에서는 네거티브의 승리라 말할지도 모르겠습니다. 어떤 사람은 올바른 정치가 이겼다고 할지 모르겠고, 어떤 사람은 정책의 승리라 할 지도 모르겠습니다.
하지만, 어떤 결과가 나오던지간에 선택을 겸허히 받아들입시다. 절대 천민 민주주의의 승리니.. 우민 정치의 극치라느니 하지 맙시다.
수많은 국민이 투표하고, 그 결과가 모여진 집단 지성이 하나의 선택을 만든 것입니다.
승자에게 박수치고, 그 전의 사람에게 걸었던 기대와 희망을 다음 대통령에게 바라고 지지하고, 마지막에 그 결과에 대하여 온당히 평가하는 것이 대의 민주주의에서 우리의 일일것입니다.
지난 5년은 여러가지로 아쉬웠습니다. 노무현 대통령의 대부분의 정책은 성공한 것도 있고, 실패한 것도 있습니다만, 제 개인적인 생각으로는 많은 경우 그리 좋지 않은 평가를(온당하던, 온당하지 않건) 받았고, 그 기저에는 노무현 대통령을 인정하지 않는 많은 분들의 힘이 있었습니다.
내가 지지하였건 지지하지 않았던 승자에게 최선을 요구하고 노력할 수 있도록 하는 것이 우리를 더 빛나게 할 수 있을 것이라 믿습니다.

좋은 투표하십시오.
네이버에 북마크 다음에 북마크 마가린 바르기 HanRSS에 북마크하기 이올린에 북마크하기 News2.0에 투고하기 del.icio.us에 북마크하기 Digg에 번역해 투고하기 dzone에 번역해 투고하기 붐바
babyworm
2007/12/18 18:32 2007/12/18 18:32
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

Trackback0 : Comment0
누적조회 1645 : 오늘조회 0
Trackback Address :: http://babyworm.net/tatter/trackback/212
[로그인][오픈아이디란?]
Name
Password
Homepage

Secret
bette middler
[babyworm, 2007/12/08 23:27, 음악이야기]
오늘 개인적으로 약간 황당하기도 하고, 그리 좋지 못한 일이 있었습니다.
이상하게도 이런 일이 발생하면 처음에는 아무렇지 않고 침착하고 차분하다가도, 밤이 되면 괜히 일이 손에 안잡히고 화가 나고, 심란해지는 일이 많지요. (저만 그런가요?)

예전에 고등학생때인가.. 기억이 잘 안나는데 from a distance라는 곡이 있었습니다. 그해에 song of the year를 받기도 한 곡이었는데.. 가사도 맘에 들고 해서 상당히 좋아했던 곡인데(지금 들어보면 약간 건전가요 같기도 하군요..), 그 곡을 부른 가수가 바로 bette middler입니다.
이 가수의 노래 중에 "The Rose"라는 곡이 있는데, 제가 마음이 심란할때 제 마음을 약간이나마 차분하게 가라 앉혀주는 노래들 중에 하나입니다.



이 노래가 동명 영화의 OST라는데, 불행하게도 영화를 본적은 없습니다..
단지, 대략적인 이야기는 라디오를 통해서 들었는데, 감동적인 이야기였습니다. 언젠가 기회가 되면 봐야겠다고 생각했습니다만.. 아직 보지 못하고 있지요.

마음이 복잡하신 1분들께 권해드립니다.
네이버에 북마크 다음에 북마크 마가린 바르기 HanRSS에 북마크하기 이올린에 북마크하기 News2.0에 투고하기 del.icio.us에 북마크하기 Digg에 번역해 투고하기 dzone에 번역해 투고하기 붐바
  1. null [Back]
babyworm
2007/12/08 23:27 2007/12/08 23:27
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

Trackback0 : Comment0
누적조회 1727 : 오늘조회 0
Trackback Address :: http://babyworm.net/tatter/trackback/211
[로그인][오픈아이디란?]
Name
Password
Homepage

Secret
PLI에서 TCP/IP를 통해서 통신하고, perl server에서 처리하기
[babyworm, 2007/12/04 19:22, SoC 설계 관련/검증이야기]

예전에 PLI에서 윈도우 제어 하려고 별짓을 다했었는데, 그 중에 PLI에서 TK 윈도우를 바로 부른 것도 있었습니다. PLI에서 TK를 부르는(C-TK interwork을 이용한) 방법은 TK 스크립을 거의 직접 쓸 수 있다는 점에서 편리하긴 한데, NCVerilog에서 너무 버전을 심하게 탄다는 단점(TK의 버전도 맞춰 줘야 합니다. -_-;)이 있어서 환경이 바뀌면서 잘 안쓰게 되더군요.

게다가 시뮬레이션 돌리면서 이런 저런것을 실시간 출력할때 UNIX/Linux/Windows 안가리는 인터페이스를 고민하다보니, TCP/IP와 Perl 만한게 없더군요. Simulator에서 이런 저런 GUI 부분이 귀찮아서 socket 기반으로 만들었던 기억을 되살려 하나 만들어봤습니다. PLI에서 TCP/IP 패킷을 전송하는 부분을 하나 만들어봤습니다.

별 내용은 없고, 그냥 verilog code에서 cosim_hello()를 호출하면 loop돌면서 값을 출력하는 예제입니다.

------

#include <stdio.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>

#include "vpi_user.h"

#define DEST_IP "127.0.0.1"
#define DEST_PORT 7890



static struct sockaddr_in dest_addr;

static int count = 0;
static int sockfd;
int counta;

PLI_INT32 cosim_hello_calltf(PLI_BYTE8 *userdata) {
  char buf[1024];
  s_vpi_time ctime;
  ctime.type = vpiScaledRealTime;
  vpi_get_time(NULL, &ctime);
  vpi_printf("[%2.2f] Hello VPI: %d, %d\n", ctime.real, count, counta);
  sprintf(buf, "\n##[%2.2f] Hello VPI: %d, %d\n", ctime.real, count, counta);
  send(sockfd, &buf, sizeof(buf), 0);

  count++;
  counta++;
  return(0);
}

PLI_INT32 cosim_hello_init() {
  int len, result;
  counta = 100;
  sockfd = socket(AF_INET, SOCK_STREAM, 0);

  dest_addr.sin_family = AF_INET;
  dest_addr.sin_port = htons(DEST_PORT);
  dest_addr.sin_addr.s_addr = inet_addr(DEST_IP);

  len = sizeof(dest_addr);
  result = connect(sockfd, (struct sockaddr *)&dest_addr, len);

  if (result == -1) {
    fprintf(stderr, "socket open error\n");
    exit(1);
  }

  return(0);
}

void cosim_register_hello() {
  s_vpi_systf_data  tf_data;
  tf_data.type          = vpiSysTask;   // make as task
  tf_data.sysfunctype   = 0;
  tf_data.tfname        = "$cosim_hello";
  tf_data.calltf        = cosim_hello_calltf;
  tf_data.compiletf     = cosim_hello_init;
  tf_data.sizetf        = NULL;
  tf_data.user_data     = NULL;
  vpi_register_systf(&tf_data);
}

void (*vlog_startup_routines[])() = {cosim_register_hello, 0};

 

-----
[이 코드 틀은 다이나릿의 기안도 박사님 IDEC 강좌 자료에 있는 "HW/SW 동시 협조 시뮬레이션"이란 강좌의 첫번째 PLI 예제에서 따왔으며, 저는 이 함수에 TCP/IP 전송이 가능하도록 수정하였습니다.]

컴파일은 다음과 같이 일반적인 NCVerilog 컴파일과 다르지 않지요. (Windows에서 Modelsim 사용하시는 분은 gcc보다는 visual c++의 cl 을 사용하시는 것이 속 편합니다. MingW 버전의 gcc가 되기는 하는데, Modelsim에서 버전을 상당히 심하게 탔던 것으로 기억됩니다. 요즘 버전은 어떨지 모르겠습니다만. )

$gcc -I$CDS_HOME/tools/inca/include -c cosim_hello.c
$ld -shared -o cosim.so cosim_hello.o

$ ncvlog -work worklib test_hello.v
$ ncelab worklib.test_hello -loadvpi ./cosim:cosim_register_hello
$ ncsim worklib.test_hello

이런 식으로 사용하면 되는데, 위의 패킷을 받아줄 서버는 간단히 perl로 짜주면 됩니다. Perl-TK로 GUI를 작성하는 것도 가능하구요.

이때 한가지 주의해야 할 점은 perl의 IO::INET 의 accept() 함수가 blocking type이기 때문에 이것을 non-blocking type으로 해 주시고 loop을 돌려야지만 DoOneEvent() 함수가 정상적으로 수행된다는 점이지요.
(설마 MainLoop()로 돌리실 분은 없을 테니 ^^;) 저도 처음엔 DoOneEvent함수가 좀처럼 동작을 안하는 것처럼 느껴져서 헤맸습니다. 결론은 accept()함수 문제더군요.

perl 함수의 주요 부분만간단히 정리하자면(예제를 위해서 perl script를 하나 더 만들기가 귀찮고, 전체 내용은 회사 작업이라 공개할 수 없고.. 라는 어려움 때문에 별로 문제 안되는 부분만 올립니다. )

------


use strict;
use IO::Socket;
use Tk;
use encoding 'utf-8';    # 한글 쓰시려면..
use Fcntl qw(F_GETFL F_SETFL O_NONBLOCK);

my $portnum = 7890;

# make a socket

my $mw = MainWindow->new(-title=>"Terminal");

.....

my $sock = IO::Socket::INET->new(
  LocalHost => 'localhost',
  LocalPort => $portnum,
  Proto => 'tcp',
  Listen => 10,   # SOMAXCONN 으로 해도 됩니다.
  Reuse => 1,
  TimeOut => 1,
);

....
my($new_sock, $c_addr, $buf, $flag);
...

# NonBlocking으로 만듭시다.
$flag = fcntl($sock, F_GETFL, 0) or die "Can not get flag: $!\n";
$flag = fcntl($sock, F_SETFL, $flag | O_NONBLOCK) or die "Can not set flag: $!\n";

while(1) {
  while (($new_sock, $c_addr) = $sock->accept()) {
   ... 소켓에서 읽어서 일하세요....
  DoOneEvent(0);
}
 

요런 식이라는 것이지요. 중간 중간에 엄청 생략되어 있음은 유의하세요..

Technorati : PLI, TCP/IP, Verilog, perl

네이버에 북마크 다음에 북마크 마가린 바르기 HanRSS에 북마크하기 이올린에 북마크하기 News2.0에 투고하기 del.icio.us에 북마크하기 Digg에 번역해 투고하기 dzone에 번역해 투고하기 붐바
babyworm
2007/12/04 19:22 2007/12/04 19:22
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
PLI, TK, verilogHDL

Trackback0 : Comment2
누적조회 1853 : 오늘조회 0
Trackback Address :: http://babyworm.net/tatter/trackback/210
roy | 2008/01/15 17:49 | PERMALINK | EDIT/DEL | REPLY
이런 방법도 있었군요. 저는 RPC를 이용해서 했었는데요. OS안타고 할 수 있는 좋은 방법인 것 같습니다.
babyworm | 2008/01/16 16:57 | PERMALINK | EDIT/DEL
둘다 네트웍을 이용하는 것이니 비슷하지요 ^^;
저야 워낙 이쪽 저쪽 환경을 사용하다보니, OS를 타지 않는 환경만으로 구성하게 된 것이구요..
[로그인][오픈아이디란?]
Name
Password
Homepage

Secret
2007년의 마지막 한달
[babyworm, 2007/12/01 13:50, 개인적인]

2007년 마지막 달이 시작되었습니다.

좀 더 시간이 흐른 이후에 2007년이 저에게 어떤 의미로 다가 올지 모르겠습니다만, 다양한 일이 일어났던 한해였고, 아쉬움을 남기지 않기 위해서 남은 한달을 노력할 생각입니다.

지난 한 달 동안은 약간 일/생활 모두 리듬이 깨지는 바람에 약간 애를 먹었습니다.

가끔 이런 저런 아이디어는 많이 떠오르는데, 정작 그걸 실현 시킬 수 있는 방안들로 구체화시키고 평가하는 것에 애를 먹곤 하는데 지난 한달이 저에겐 그런 기간이었습니다. 뭔가 떠 올라서 달려들만하면 손안에 모래를 움켜쥔것 같이 대부분의 것들이 허무하게 사라지는 그런 일들이 반복되는 기간 말입니다.

물론, 이런 저런 생각하는 시간을 통해서 많은 것을 얻을 수 있는 것을 알고 있고, 그 동안 많은 좋은 아이디어들을 이런 과정을 통해서 정제하여 왔건만, 이상하게도 가시적인 성과를 기대하는 마음이 올해는 좀 더 컸던 것 같습니다. (늙어서 그런가. ^^;)

조바심은 오히려 역효과를 내는 경우가 있으니 지난 한달이 그랬던 것 같습니다. 머리 싸 매고 있다가 연구 노트에 이런 저런거 끄적이고, 결국엔 다른 거 하는 그런 패턴.. 결국 남은 성과라고는 일을 피해 책 읽은 거 밖에 없군요.

-----

첨부하는 곡은 Asturias라는 곡인데, 예전에 한참 열심히 연주했던 곡입니다(그다지 좋은 연주가 되지는 못했습니다만). 지금은 아마도 연주가 불가능 할 것으로 생각됩니다만.. 요즘에 가끔 집에서 기타를 잡아보는데, 정말 연주 가능한 곡이 이렇게 없었나... 하는 생각이 듭니다. 다시 곡을 볼려고 해도 독보하는 것도 귀찮고 해서.. 운지가 기억되는 곡들을 이것 저것 연주해봅니다.

개인적으로는 Pepe Romero의 Asturias를 좋아합니다만, Williams것도 발군이지요. (You Toube에는 Willams의 이 DVD가 다 올라와 있나 봅니다.. 이거 이름이 뭐였더라..기억도 안나는 군요.. ^^;)


Technorati : 2007년, December

네이버에 북마크 다음에 북마크 마가린 바르기 HanRSS에 북마크하기 이올린에 북마크하기 News2.0에 투고하기 del.icio.us에 북마크하기 Digg에 번역해 투고하기 dzone에 번역해 투고하기 붐바
babyworm
2007/12/01 13:50 2007/12/01 13:50
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

Trackback0 : Comment0
누적조회 1246 : 오늘조회 0
Trackback Address :: http://babyworm.net/tatter/trackback/209
[로그인][오픈아이디란?]
Name
Password
Homepage

Secret
*1
Location : Tag : GuestBook : Admin
babyworm’s Blog is powered by Tattertools.com / Designed by Hisday / Modified by Daisy