콘텐츠로 이동

Log

Pitfall of Design Change

하드웨어 설계는 한번 실수에 대한 비용이 정말 큰 것 같습니다. 공정이 세밀화 되면서 실수 하나로 인해 작게는 Metal ECO에서 크게는 Re-synthesis 까지 가게 되면 비용은 수십억이 소요될 수도 있죠.

최근에 겪었던 일화를 하나 소개할까 합니다.

새로운 프로젝트가 진행되면서 기존에 있던 디자인을 개선을 하게 되었습니다. 이 모듈은 주변의 몇몇 모듈과 서로 신호를 주고 받고 있었죠. 개선을 하면서, 내보내는 신호의 특성을 바꾸게 되었는데, 이 수정되는 부분을 통신하는 반대편 모듈에도 적용을 하였습니다. 이상없이 잘 동작하는 것을 보고 칩을 Tape-out했죠.

문제는 다른데서 터집니다. 또다른 개선버전 프로젝트가 Original project에서 갈라져 나오게 되었는데, 이 프로젝트에서 개선된 디자인을 하나만 가져다 쓰게 된거죠. 서로 바뀐 프로토콜을 이해하고 수정된 디자인이 아니니, 기존 디자인은 예전 방식으로 신호가 올 것이라 기대를 하고 새로운 디자인은 새로 정의된 방식으로 신호를 주게 됩니다.

일반적인 상황에서는 이 부분이 보이지 않았으나 예외의 상황 -- 버퍼가 가득찼다던지, 버퍼가 비었다던지 -- 에서 문제가 발생합니다. 결국 이 프로젝트도 칩이 이미 나와버려서, 이 부분을 수정하려면 Metal ECO 외에는 선택지가 없었고 큰 비용을 지불하고 새로운 마스크를 만들어야만 했습니다.

어떻게 미리 막을 수 있을까요?

어떻게 이런 불상사를 미리 막을 수 있을까요?

Design Stage

일단, 디자인 단계에서부터 차근차근 방법을 생각해 봅시다. 디자인을 할 때, 양쪽 어디든 한 곳에서 SVA(System Verilog Assertion)을 사용 해, 기대하는 신호의 특성을 기술했었다면 디자인을 검증하는 단계에서 이 문제를 미리 찾을 수 있었을 겁니다. 예를 들면, 신호가 req/grant 방식에서 pulse 방식으로 바뀌었다고 하면, 양쪽의 SVA는 이렇게 달랐을 겁니다.

// Old Design (In)
property p_req_grant;
    @(posedge clk) disable iff (!rst_n) I_REQ |-> ##[1:3] I_REQ && O_GRANT;
endproperty
ap_req_grant: assert property (p_req_grant);
// New Design (Out)
property p_pulse;
    @(posedge clk) disable iff (!rst_n) O_REQ |-> ##1 !O_REQ;
endproperty
ap_pulse: assert property (p_pulse);

그러면, 받는 쪽에서 의도하지 않은 신호가 왔을 경우 Assertion Error가 났을겁니다.

다른 한 방법은 신호의 특성이 바뀌었으니 port 이름도 바꾸었다면 두 디자인을 엮을 때 발견할 수도 있었을 겁니다. 위의 예를 들면 O_REQO_REQ_PULSE 로 바뀌는 것을 예로 들 수 있겠네요.

IP Verification, SoC Verification

만일 디자인 단계에서 이 부분을 걸러내지 못했다면, 그 다음에 있을 검증 단계에서는 어떻게 찾을 수 있었을까요? IP 검증이나 SoC 검증에서 Functional Coverage가 잘 기술되어 있었다면, 이 문제를 발견할 수 있었으리라 봅니다. 너무나 단순한 실수임에도 불구하고, 그 상황이 예외적인 상황이었다면 그 문제를 발견하지 못하고 진행될 경우가 많습니다.

그러나 시작은 이 한 부분이었을지라도 그것에 영향을 끼치는 부분은 꽤 많이 있습니다. 위에서 예를 들었던, 버퍼가 가득찬 상태를 보죠.

만일 covgroup이 buffer full 상태를 포함하고 있었다면, 검증 엔지니어가 coverage report에서 부족한 부분을 발견하고 해당 testcase를 추가했을 겁니다. 그러면 문제가 조기 발견될 수 있었겠죠.

covergroup buffer @(posedge push_req);
    full: coverpoint buf_full {
        bins not_full = {0};
        bins full     = {1};
    }
    empty: coverpoint buf_empty {
        bins not_empty = {0};
        bins empty     = {1};
    }
endgroup

Closing

디자인을 할 때에나, 디자인을 수정할 때에 엔지니어에게 가장 중요한 것은 아무리 봐도 꼼꼼함 인 것 같습니다. 저도 시간에 쫓기며 워낙에 덜렁대다보니 이런 저런 실수를 종종 해왔는데요. 저부터 반성을 많이 하게 됩니다.

하드웨어 디자인 엔지니어 대부분이 systemverilog의 assertion 이나 covergroup을 들어본 적도 없다는 사실에 깜짝 놀랄 때가 많습니다. 이미 수십년간 하드웨어 디자인 언어가 발전해 오면서 가장 빈번하게 발생하는 사람에 의한 실수를 막을 수 있는 많은 방법이 언어에 녹아들어있습니다. 이런 새롭게 추가된 기능을 툴이 허용하는 한도 내에서 충분히 활용한다면, 꼼꼼함이 부족한 저같은 사람에게 큰 도움이 될 것 같네요.

새로운 기능을 시도할 때 주의할 점은, 이 기능이 현재의 디자인 프로세스에 모두 적용될 수 있는 지 검토하는 것 일것 같습니다. SystemVerilog 가 Hardware Description 기능도 많이 추가되었는데, 그 중 몇몇은 현행 버전 도구에서도 아직 지원하지 않는 것이 있습니다. 이게 Design Compiler가 지원을 하지 않으면 합성 전에 수정이 되어 괜찮은데, Design Compiler는 지원을 하고, FPGA Synthesis 도구는 지원을 하지 않거나, LEC(Logic Equivalent Check) 도구가 지원을 하지 않게 되면 나중에 이러지도 저러지도 못하는 상황이 발생할 수 있습니다.

모두 꼼꼼함을 최 우선 덕목으로 삼고 버그 없는 칩을 잘 만들어 봐요.

Reference

TK 졸업

6월이 되니 이제 대부분의 학교가 방학을 하게 됩니다. 알마덴 지역은 어제, 쿠퍼티노는 오늘, 그리고 제가 살고 있는 지역은 내일 방학을 하게 되네요.

첫째가 공립 유치원을 들어가고 벌써 10개월이 지났나봅니다. 그래서 Kindergarten을 들어가기 전, 경험했던 TK(Transitional Kindergarten)에 대해 간단히 기록을 남겨볼까 합니다.

일단, TK는 Kindergarten을 가기 전, 몇몇 아이들에게 제공되는 공립교육프로그램입니다. 킨더 입학 기준일이 12월에서 9월로 당겨지면서 원래 킨더를 들어갔어야 하는데 못 들어가게된 아이들을 위해 TK 프로그램을 만들게 됩니다. 그래서 킨더는 각 초등학교 별로 따로 있는데, 저희 지역에서는 교육청 내에 단 한 곳의 TK만 있습니다. 프리스쿨 비용이 워낙 비싸다 보니, TK를 갈 수 있게 되어서 좋았었네요.

TK 교육 프로그램은 킨더와 거의 유사하다고 하네요. 알파벳 교육, 미술 교육 같은 프로그램이 있지만 킨더에선 본격적으로 배우는데 반해 여기서는 놀이와 함께 배우고, 그 중요성이 크게 부각되지는 않는 것 같아요.

거의 보면, 학교에서 그리고, 뛰어놀고, 간식먹고 오는 것 같습니다. 그래서 아이가 적응하는 데에 그나마 부담이 덜 한 것 같네요. 처음부터 교육에만 집중되었다면 영어를 못 하는 첫째가 지금보다 더 힘들어 했을 것 같아요. 물론, 지금도 영어 때문에 힘들어하긴 합니다.

제가 살고 있는 지역은 아이들이 많다보니 TK, 킨더가 오전, 오후 두 반으로 나뉘어 있습니다. 그래서 교육시간이 3시간 20분으로 매우 짧아요. 주변 다른 교육청은 오후 1시 ~ 2시까지 하는 곳이 보통이더군요. 짧은 시간 덕분에 처음에 적응이 그나마 낫다는 점은 있지만, 영어에 충분히 노출되지 못해, 1년이 지난 지금도 영어는 아직 못하고 있습니다. 그만큼 아이가 학교가는 스트레스가 있게되는 것 같구요. (이건 아이 성향에 따라 다르니 개인차가 있겠습니다)

그럼에도 불구하고, 프리스쿨보다 나은 교육환경을 고려하면 잘 보냈다는 생각이 듭니다. 이제 8월 중순에 킨더를 가게 될텐데, 거기서도 지금처럼 잘 적응하면 좋겠네요. 킨터가 끝날 무렵 다시 한번 글을 써볼게요.

Lexington 저수지 낚시

이번 주 Lake Pinecrest로 캠핑을 가려고 계획했었습니다. 가서 토요일에 호수에서 낚시를 하기로 계획했었죠.

몇 달 전부터 지인 가족과 예약해 두고 설레며 준비하고 있었는데, 막상 출발 할 날짜가 되니 파인크레스트 캠핑장 날씨가 심상찮아졌네요. 가는 날 눈이 오고 이박삼일 내내 밤에 영하 5도까지 떨어지는 강추위가 이어진다고 예보가 나옵니다. 따뜻한 5월 봄날이라 전혀 생각지 못했다가 어린 아이들도 있고 해서 추운 날씨에 결국 캠핑 계획을 접었습니다.

캘리포니아에서는 [Crabbing at Half Moon Bay][crabbing-at-half-moon-bay] 글에서 언급한 바와 같이, Pier가 아닌 곳에서 낚시를 하려면 면허가 필요합니다. 파인크레스트 호수도 Pier가 있긴 하지만, 카약과 보트가 주변에 많아 낚시하기가 껄끄러워 1-Day 라이센스를 구입했었는데, 그게 그대로 허공에 날아가 버릴 참이었죠. 하루짜리 라이센스는 날짜가 명시되어 있어서 변경도 안되거든요.

예전에 낚시 용품 판매점에서 직원에게 들은 바 있어, Fremont에 있는 Quarry 호수로 낚시를 갈까 하다, 좀 더 가까운 곳인 렉싱턴 저수지(Lexington Reservoir)로 가보기로 합니다. Quarry 호수는 봄, 여름 격주 단위로 송어(trout)를 방류하기에 실리콘 벨리 근처에서 낚시가 재미있는 곳이라 합니다. 렉싱턴 저수지는 송어 방류는 거의 없어서 고기가 잘 잡히진 않는다고는 하는데, 그래도 꽤 큰 저수지 이다보니 자연산 배스가 꽤 잡힌다고 합니다.

집에서 15분 거리에 있는 렉싱턴 저수지는 제가 미국에 처음 와서 그 주말 산타크루즈를 가며 보았던 곳인데, 가뭄이 절정인 때라 물이 참 없었던 기억이 나는 곳입니다. 작년에는 극심해서 거의 호수 바닥이 보일 지경이었죠.

Lexington Reservoir

그러던 호수가 올 겨울 비가 풍족히 내린 덕분인지, 나무가 잠길정도로 물이 가득차고 넘치지 않기 위해 물을 방류할 만큼 상황이 좋아졌습니다. 그래서 그런지, 호수에는 이전에 자랐던 나무가 물에 잠겨 낚시하는 데 애로가 있네요. 릴을 감으면 세번 중 한번은 나무에 걸려 바늘을 끊어먹기 일쑤입니다.

결국 두시간 반을 나무와 사투하다 한마리도 잡지 못하고 점심 먹으러 내려갔네요.

이대로는 안되겠다 싶어, 저녁 5시 즈음 다시 한번 가 봅니다. 파크 레인저가 말해준 것이 기억이 나서 이번에는 댐에서 낚시를 해 보기로 합니다.

at Dam

댐에는 몇 사람이 낚시를 하고 있었고 한두마리 이미 잡은듯 해 보였습니다. 그 옆에 자리 깔고 낚시대를 드리우는데, 나무에 걸리는 건 매 한가지지만, 오전에 비해선 양호하더군요.

8시 해 질때까지 낚시를 했는데, 입질 두번 온 것 외에는 별다른 성과가 없네요. 그 사이 옆에서 낚시하던 낚시꾼은 5파운드 쯤 되어보이는 송어와, 10파운드는 족히 넘을 것 같은 잉어(carp)를 낚고 얼굴에 웃음을 띄며 집으로 돌아갔습니다.

역시, 제 낚시 실력이 문제네요.

부산행 자동차

보통은 대놓고 정치이야기를 하지 않는 편입니다.. 그러나 오늘 본 이 글은 정치에 국한된 것만이 아니라, 변화를 바라는 많은 상황에 항상 보이는 일이라 공유해 봅니다.

변화는 점진적인 것이지 도약일 수 없다는 것. 느릴지라도 꾸준히 앞으로 나아가다보면 언젠가는 도달할 수 있습니다.

부산행 자동차와 "일부" 진보주의자의 탈현실적 행태

나는 원리주의적인 이념의 소유자이지만 동시에 과정주의자이기도 하다. (이 사실이 내게는 일종의 균형감각으로 역할을 한다.) 이 대목에서 과정주의라 함은 무엇인가 목표에 도달하기 위해서는 그 목표를 향하는 움직임이 필요함과 동시에 그 목표 달성을 위한 단계가 물리적으로 존재함을 인지하고 그 각각의 단계를 존중하는 방식의 사유를 뜻한다. 예컨대, 서울에서 부산을 가기 위해서는 부산으로 향하는 움직임도 중요하지만, 출발한 지점이 부산에서 수백킬로 떨어진 서울이라는 사실과 가장 빠른 길을 선택한다 하더라도 천안과 대전, 대구를 거쳐야한다는 사실을 분명하게 인식하고, 그 물리적 현실을 받아들이는 것이 과정주의적 사유에 해당한다.

그런데 분명히 자동차가 서울에서 출발해서 부산으로 이동하고 있는데, 왜 아직도 천안이냐며 불만 섞인 목소리를 내면서 차에서 내리겠다고 선언하는 이들이 있다. 기억을 되돌이켜 보면 초등학생이던 시절, 부모님과 함께 외가집에 가던 길에서 내가 그랬다. 외가가 부산은 아니었고 대전이었는데, 나는 차가 막히면 대충 오산 쯤 부터 그런 땡깡을 부렸었던 것 같다. 나는 철이 없는 어린아이였고, 외가집에 가기 싫었던 것은 아니었지만 직접 자동차를 운전해야할 의무나 책임을 느끼지 못했기 때문에 그런 땡깡을 부렸던 것이다. 그렇기 때문에 나는 '지금 자동차가 위치해 있는 곳이 부산이 아니라는 이유로' 움직이는 자동차에서 내리겠다고 선언하는 이들의 사유를 초등학생 시절 내가 부렸던 땡깡과 거의 차이가 없는 '어린아이식 탈현실주의'로 이해한다. 더불어 그런 '어린아이식 탈현실주의'적 사유의 소유자들이 말하는 부산에 대한 의지, 그러니깐 직접 차를 운전하지 않는 상태에서 부산에 가야한다는 그 의지를 그다지 신뢰하지 않는다.

지금 우리에게 중요한 것은 서울에 머무르지 않고, 또 개성이나 평양으로 향하지 않고 실제로 부산으로 가는 것이다. 부산에 가기 위해서는 차가 막혀도, 도로가 비포장 도로여도, 아직 겨우 천안을 지나고 있을 뿐이라도 차에서 내리지 않고 계속해서 부산으로 움직여야 한다. (내 최종 목적지는 부산이 아니라 부산에서 다시 배를 타고 가야하는 대마도이기는 하다.)

<문재인의 낙선을 바란다는 '스스로를 진보주의자라 인식하는 이들'에 대한 상념>

출처: Min-soo Kwack on Facebook

총기사고와 차별

오늘은 충격적인 사건이 두가지가 발생했습니다.

한 사건은, 2015년에 총기 테러가 일어났었던 샌 버나디노에서 발생했는데 공교롭게도 총기사고입니다. 이번엔 초등학교내에서 총기 사고가 발생해서 어른 2명이 사망하고 아이 두명은 병원에 실려갔네요.

같은 캘리포니아 안에서 일어난 사고라 그런지, 아이들 걱정이 많이 됩니다. 출근길에 항상 총기 판매상을 지나가는데, 이런 일련의 사건들이 꾸준히 발생하는 데도 총기 규제가 좀처럼 안되고 있어서 정말 아쉽습니다.

North Park Elementary

두번째 사건은 유나이티드 항공사에서 승객을 물건취급하듯이 비행기에서 끌어내린 사건인데요. 항공사 직원을 태우기 위해 이미 탑승한 승객을 하차시키려고, 완력을 사용해서 끌어내렸는데 그 영상이 인터넷에 오르면서 심각해 진 것 같습니다.

New York Times 기사 참고

링크에 있는 영상을 보면, 다치신 분은 의사이고 루이스빌에 그 다음날 진찰할 환자가 있어서 못내린다고 거부했는데 강제로 끌어내려진 것 같습니다. 그 과정에서 입술이 터지게 되었구요.

이미 탑승한 상태에서 하차를 시키는 것도 문제지만, 하차할 승객을 선택하는 과정에서도 논란이 일어나는 것 같네요. 컴퓨터로 추첨한 것이 아니라 승무원이 적당히 아시안 3명을 선택했다고 하는데, 이부분은 확인되지 않아서 좀 더 지켜봐야할 것 같습니다.

다만 여기 미국에 살다보면, 은근한 인종차별을 가끔 겪게되는 것 같아요. 이런 사소한 것이 모여서 불신의 사회가 되어가는 것 같아 안타깝습니다.

SystemVerilog for Design

SystemVerilog를 RTL(Register Transfer Level) 디자인에 쓴다는 것은 듣고 있었지만, 써봤자 'logic', 'always_ff' 같은 것 정도만 생각하고 있었다가 각잡고 "SystemVerilog for Design" 책을 읽기 시작했습니다.

정말 알찬 내용이 많네요. 너무 기술적으로 도태되어있었다는 생각이 듭니다.

참고하시라고 링크

  1. Read.Pudn
  2. Sutherland 논문

Assertion (SVA)

Assertion에 대한 좋은 논문도 있네요. 역시 같은 저자입니다.

  1. Sutherland 발표자료
  2. SNUG 논문

하드웨어 디자인 코드리뷰

소프트웨어 분야는 하루가 다르게 새로운 기술이 쏟아져 나옵니다. 특히 웹 관련 기술은 최근에 트렌드가 정신없이 계속 바뀌고 있죠. 오죽하면 자바스크립트 기술 변화에 대한 유머까지 등장했겠어요.

이런 발빠른 변화를 쫓아가는 게 정말 벅찰 듯 합니다. 그런데 하드웨어 분야는 기술은 계속 바뀌어 가는데 개발 플로우는 십수년 째 전혀 바뀌지 않고 있어요. 개발 언어인 Verilog HDL 언어도 구닥다리 1995 버전을 쓰는 경우가 태반이고, 실제 칩 디자인에 SystemVerilog 2012를 사용하는 걸 본 적이 없네요. 검증은 대부분 SystemVerilog로 넘어가긴 했지만, 아직 설계는 여전히 Vim으로 한땀 한땀 정성들여 Verilog 포맷으로 코딩합니다. 수백개가 넘는 port를 연결하는 걸 보고 있으면 마치 수공예를 보는 것 같기도 하고, 어셈블리 코딩을 하는 것과 비슷한 느낌을 받기도 합니다.

사실 하드웨어는 한번 버그가 발생하면 수정하는 데 비용이 상당히 많이 들기에 항상 조심스러운 접근을 할 수 밖에 없다는 게 이해가 안되는 것은 아닌데, 그 정도가 심해도 너무 심하다는 생각이 듭니다.

Version Control System

이전 회사에 근무할 때에는 소스 코드 관리를 Clearcase라고 상용 툴을 썼는데, 거의 SVN과 유사한 시스템이었습니다. SVN만 되어도 사실 감사할 따름인데, 이 CC를 그냥 branch도 없고 tag도 없고 그냥 fetch, commit만 하는 수준으로 사용하고 있었어요. 거의 백업을 위해서 쓰는 정도였죠.

게다가 IP 디자인은 Clearcase도 아니고 초창기 파일 기반 버전 관리 도구인 CVS를 사용하고 있었습니다. CVS를 보았던 그때의 충격과 공포는 아직도 생각 나네요.

옮긴 회사는 더 충격적이게도 CVS에 GUI를 입힌 것 같은 도구를 사용합니다. 태그와 브랜치 기능이 있긴 한데 사용하기 까다롭고 한눈에 들어오지 않아서, 주변에서 브랜치를 쓰는 걸 본 적이 없네요. 파일 별로 버전관리가 따로 되다보니 하나의 IP가 여러 프로젝트에 쓰일 경우 점점 서로 뒤엉켜가는 걸 보게 됩니다.

Code Review

상황이 이런 지경인데, RTL (Register Transfer Level) 코드를 기술하고 소스코드 저장소에 업데이트 할 때 멤버라면 아무나 올릴 수 있습니다. 브랜치도 아니고, main에 올릴 수 있게되서, 하나의 잘못된 커밋이 전체 테스트를 fail 하게 되는 경우도 가끔 봅니다.

이런 일련의 경험을 하면서, '왜 하드웨어 디자인은 소프트웨어의 기법을 적용하지 않을까?' 하는 의구심이 계속 듭니다.

소프트웨어는 일찌감치 코드 리뷰에 대해 많은 고민을 해 왔습니다. 심지어 CVS 를 사용할 때에도 maintainer가 patch를 받아서 CVS에 업데이트 하는 것이 일반적이었고, 그래서 코드 리뷰는 자연스럽게 usenet이나 email 을 통해 이뤄지곤 했습니다.

그것조차 비효율 적이라 코드리뷰를 편하게 하기위한 시스템이 등장했지요. [Gerrit][ext:gerrit]은 구글이 코드리뷰를 하고자 Git 기반으로 만들어진 코드리뷰 도구이고, Github의 Pull Request는 email로 주고 받던 패치를 시스템상에서 간편하게 적용할 수있게 만든 도구입니다.

이 두 시스템 모두 main 저장소에 업데이트 할 수 있는 사람은 몇 안되고 나머지 사람은 각자의 branch나 저장소에서 작업 후 메인에 반영하기 위해 코드를 리뷰해야만 합니다. 이로 인해 약간의 지연이 발생하긴 하지만, 결과적으로 깔끔한 코드가 유지될 수 있습니다. 급한 경우엔 Gerrit은 main에도 곧장 업데이트 할 수 있도록 하고 있구요.

그러나 하드웨어는 이런 과정이 거의 없다고 봐도 무방합니다. 저장소에서 이러한 기능을 지원하지도 않을 뿐더러, 코드 리뷰를 한다고 하면 (리뷰하는 일도 거의 드물지만) 회의실에 모여서 소스코드 창을 띄우고 한줄 한줄 보는게 보통입니다. 시간을 가지고 코드를 깊게 볼 기회가 거의 없다고 봐도 되죠.

How to Improve?

일단은 코드리뷰가 가능하도록 저장소와 코드 리뷰 도구를 재정비하는 게 필요한 것 같아요. 지금은 웍스테이션 안에서만 코딩이 가능하다보니, JIRA와도 연동이 되지 않는게 보통입니다. 즉, 이슈와 실제 디자인 수정을 연결할 방법이 거의 없다고 봐도 되죠. (로그도 파일별로 남다보니..)

가장 우선은 Git based 저장소로 바꾸고 gerrit이나 pull-request가 가능한 GitLab이라도 써야 할 것 같아요. Subversion도 나쁘지 않은 선택이나, branch를 빈번하게 사용하고 코드 리뷰 요청을 넣는 flow에서는 조금 비효율적이라 git이나 mercurial이 더 나은 선택인 것 같아요.

여기에 더해서 Continuous Integration 을 이용해 바로 small set regression test를 돌릴 수 있게 설정해 둔다면 더욱 좋겠죠. (라이센스 비용은 좀 나가겠네요) pull request 전에 이 small regression을 통과하고 (아니면 적어도 compile과 elab까지만이라도) 그 후에 merge되는 게 정말 중요한 부분인 것 같습니다.

외부에서 받는 IP 같은 경우는 코드를 수정할 일이 거의 없다보니, IP는 release에 두던지 하고 configuration만 저장소에 두어서 리뷰를 할 수 있게 해야 합니다. 파라미터 세팅을 잘못 해서 빈번하게 실수가 발생하는 것을 봐서 (NIC CDAS scheme이라던지, outstanding capability라던지) 세팅 리뷰는 반드시 필요합니다.

Power Outage

Winter Storm이 온다고 해서 타호에서 3박4일 일정을 다 채우지 않고 전날 저녁에 길을 나섰습니다. 타호 가는 길에 눈으로 인해 4시간 반 걸릴 거리를 7시간을 넘겨 겨우 도착해서 가는 길도 그렇게 고생하고 싶지 않았습니다. 오늘 보니 눈이 많이 와서 아내 지인은 타호에서 새크라멘토로 오는 I-80 고속도로에서 네시간이 넘도록 갇혀 있었다고 하니, 오늘 출발 했으면 고생을 했겠다는 생각이 듭니다.

온 지 하루도 되지 않아 오늘 집 근처 일대가 모두 정전이 되었습니다. 아침부터 비바람을 맞으며 레몬나무를 다듬는데, 바람이 심상찮게 느껴졌었는데 결국은 오후 늦게 정전이 되어버리네요. 바람이 거세서 어디 전봇대 하나가 넘어지기라도 했나봅니다.

덕분에 캠핑용 랜턴을 꺼내 거실에 켜 두고 헤드 플래시와 스마트폰 플래시로 겨우겨우 버텨야 했습니다. 전기가 없어서 히터도 돌지 않고, 워터리스 가스 보일러라 뜨거운 물도 나오지 않은데 다행히 가스레인지는 동작을 해서 어찌 저찌 저녁은 겨우 해 먹었네요.

그래도 타호에서 일찍 오길 잘했습니다. 일찍 온 덕분에 집안 온도도 미리 68도로 끌어올려 둘 수 있었네요. 오늘 왔다면 차가운 집에서 히터도 틀지 못하고 추위에 벌벌 떨 뻔 했습니다.

얼마 전 지인 집이 정전되었을 때 다시 전기가 들어오는데 하루 반나절이 걸렸다는데, 이번에는 정전 된 지역이 워낙에 커서 더 오래 걸릴 수도 있겠다는 생각이 듭니다.

여긴 한국과 다르게 정전이 빈번한 듯 합니다. 매번 폭풍우가 온다고 하면 여기에 오래 계셨던 지인들은 정전을 걱정했었습니다. 한번 정전되면 복구도 꽤 오래 걸리는 것 같아요. 한국 같이 수 시간 내에 복구되는 일은 드물고 보통은 하루, 길게는 일주일이 넘도록 복구가 안되는 경우도 있다고 하네요. 느린 걸 전제로 사회체계가 굴러갑니다.

Half Moon Bay 게잡이

이곳 캘리포니아에 와서 새로 경험한 것이 정말 많습니다. 그 중에서, 겨울철이 되면 보게 되는 '게'가 그 중 한 종류일 것 같네요. 한국에서는 꽃게, 가끔씩 매우 비싼 베링해 근처에서 잡힌 킹크랩을 보는게 전부인데요. 이곳 캘리포니아에서는 가장 유명한 게를 꼽으라면 던저니스 크랩(Dungeness Crab)일 겁니다.

Dungeness Crag

정말 큰 크기에 깜짝 놀라고 살이 킹 크랩만큼 많이 들어있어서 또 한번 놀란 게 입니다. 지역이 다르니 먹거리도 다르구나.. 라는 생각을 들게 한 녀석이죠. 이쪽 북캘리에서부터 알래스카까지 퍼져있는 종 인데 겨울철 인기 음식입니다.

매번 사서 먹다가, 한번 직접 잡아볼 생각으로 지인에게 장비를 빌려서 다녀왔습니다.

면허 (License) & 규칙

캘리포니아에서는 한국과 다르게 아무 곳에서나 게를 잡거나 낚시를 하면 깜짝 놀랄만한 벌금을 물게 됩니다. 가장 큰 벌금은 '전복잡기' 인데요, 면허없이 잡으면 문제고, 면허가 있어도 정해진 수량 (2개)이상 잡으면 벌금이 10,000 달러가 넘을 정도로 큽니다.

게잡이나 낚시도 면허가 필요합니다. 그러나 면허가 없이 낚을 수 있는 곳이 있는데, 바로 공공 부두입니다.

Pacifica 공공부두: 출처 Fishermenneverlie

이곳에서는 정해진 규칙 안에 자유롭게 낚시와 게잡이가 가능합니다. 제가 사는 곳에서는 게잡이로 위 사진에 보이는 퍼시피카 부두로 가는게 보통인데, 저기는 전문적인 기술이 없으면 쉽지 않다고 해서 초보자에게 인기가 있는 하프 문 베이로 가보았습니다. 게잡이는 하프문 베이가 남쪽으로 잡을 수 있는 한계선이고, 그보다 아래에 있는 산타크루즈 피어나 Seaside 피어는 일반 낚시하러 갈 수 있습니다.

게잡이는 크기에 제한이 있는데, 던저니스 크랩은 등껍질 크기가 5.75인치 이상이 되어야 하고, 그 외의 게는 4인치 이상이 되어야 합니다. 또한 상업용도로 게잡이를 할 때에는 암컷은 놔주어야 하며, 일반인이 게잡을 때는 성별에 상관없이 잡을 수 있습니다. 다만 관례상 암컷은 풀어주는 게 보통입니다.

하프 문 베이 피어

Pillar Point Harbor

물이 찰 때 게를 잡아야 잘 잡힌다고 해서 일찍 서두른다고 했는데 하프문 베이 피어(위의 사진에서 보이는 필라 포인트 항구가 하프 문 베이 피어입니다)에 도착하니 9시 30분이 되어버렸네요. 서둘러 빌려온 낚시대 두개와 통발에 준비해 온 닭고기를 썰어 넣고 던졌습니다.

5~10분마다 한번 씩 들어올려보면서 게가 잡혔나 보는데, 작은 게들만 올라와서 바로 바로 풀어주었습니다. 던질때 마다 미끼로 준비해 간 닭고기가 싸그리 사라지는 걸 보니 게인지 아닌지 모르겠지만 바다속에 먹는 녀석이 매우 많나봅니다. 그런데 잡혀주질 않네요. ^^

12시까지 낑낑대면서 5인치 가량 되는 던저니스 크랩을 잡아서 아쉬워 해 보고, 작은 녀석들은 바로 바로 풀어주고 했지만, 운이 좋게 5인치쯤 되는 Red Rock Crab과 6인치쯤 되는 Red Rock Crab 두 마리를 잡을 수 있었습니다. 큰 게가 올라오자 아이들이 무척이나 즐거워 하네요. 이리 보고 저리보며 신기해 합니다.

근처에서 점심을 먹고 (다시는 Fish & Chips는 주문하지 않을겁니다) 다시 와서 한시간 가량을 더 낚으니 6인치쯤 되는 Red Rock Crab을 한마리 더 잡았네요.

3시간 반 정도 낚은 끝에 던저니스 크랩을 낚지도 못하고, 레드 락 크랩만 세마리 잡았습니다. 그래도 아이들도 게잡는 걸 지루해 하지 않았고, 날씨 좋은 날 바깥 구경도 하고, 집에 와서 잡은 게를 쪄서 먹으니 재밌는 경험이네요.

다음엔 좀 제대로 된 낚시대로 일반 물고기를 잡아볼까 생각 중입니다. 어릴 적 아버지와 함께 낚시를 종종 갔던 기억이 나네요. :)

미국에 넘어온 3년

오늘 2017년 1월 14일은 제가 미국에 넘어온 지 만 3년이 되는 날입니다. 달랑 캐리어 하나 들고 가족은 한국에 잠시 두고 장거리 비행을 한 후 초췌한 모습으로 입국 심사관을 대했던 게 기억에 나네요. 친한 형의 도움을 받아 그날 바로 중고 자동차를 구입하고 익숙하지 않은 차를 몰며, 익숙하지 않은 교통체계에 실수를 연발하며 어두운 밤길을 운전해 오던 것도 기억이 납니다. 그날 San Ramon에 멈춰서 인앤아웃에서 햄버거를 먹었던 것도 기억이 나고요.

3년이 지나고 나니, 어느새 아이들은 부쩍 커서 큰 아이는 킨더를 가고, 작은 아이는 자기 주장이 생겨서 미운 네.살이 되고, 단칸방 하숙에서 아파트를 거쳐 월세지만 단독주택에 지내게 되었네요. 영주권도 무사히 받아서 신분 걱정을 하지 않고 지내게 되었고요. 직장도 비록 회사 자체가 위태위태하지만, 직장 내에서 적당히 인정받고 열심히 일할 수 있게 되었습니다. 아이들과 아내는 아직은 완전히는 아니지만 꽤 많이 미국생활에 적응해 가고 있네요. 짧지 않은 시간이지만 그래도 정말 빠르게 지나간 것 같습니다.

3년동안 있었던 많은 일들이 추억으로 느껴질 만큼 아련하면서도 눈을 감으면 떠오를 만큼 선명하네요. 지나온 3년이 우리 가족에게 적응의 시간이어서 힘든 때도 있었지만, 그래도 나름 좋은 일이 가득했었던것 같습니다. 그래서, 앞으로 얼마나 길게 미국에 거주하게 될 지 모르겠지만, 앞으로의 시간도 좋은 일만 가득할 것 같다는 생각이 드네요.