들어가며#
회사 퇴사 이후에 agentic coding을 통해서 RTL을 생성하는 RTL agent team이라는 plugin을 만들고(아직 버전이 1.0도 못찍은 상태라 private 상태입니다.) 몇몇 분들에게 자랑질을 했는데, 어떻게 연결되어 검증회사, IP 개발 회사, SoC 개발회사, 디자인하우스까지 두루 두루 다니면서 세미나를 하게 되었습니다.
사실 다니면서, 저도 하드웨어의 각 분야에서 AI 활용이라는 주제로 많은 요구가 있구나.. 하는 것을 알게 되었고, 여러가지 피드백과 Agentic coding을 해보신 분들과 이야기를 나누면서 알게 되는 것도 많습니다. 할떄마다 좋은 시간이란 생각이 드네요.
짧게 관련 내용 공유하도록 할께요.
그리고, 많은 분들께서 환경(이라기보다 설정파일)에 대해서 문의를 주신 경우도 있어서, 후기와 더불어 제 환경도 공유하도록 하죠.
세미나를 하게 된 계기#
처음엔 연구실 선배 형님과 식사를 하다가, “오~ 이건 신세계에요. 안쓰면 인생 낭비인 것 같아요.“라는 말을 괜시리 했다가 세미나 제안을 받았습니다.
처음엔 가벼운 마음이었습니다.
그래서, 제가 하는 세미나의 제목은 “인생 짧아요. Agentic Coding” 입니다.
Agentic Coding, Coding Agent#
사실 제가 만든 plugin은 oh-my-opencode를 사용하면서, 이런 형태면 RTL에 적합하게 일부만 손대도 잘 만들겠다는 생각으로 시작한 개인 프로젝트라, 이쪽의 영향을 많이 받았습니다.
(실제 제가 agent를 만들때는, opencode에서 claude가 막히면서, 이 plugin을 claude쪽으로 마개조 이식한 oh-my-claudecode를 많이 참조했습니다. )
따라서, 세미나 내용에서 많은 부분은 coding agent가 뭔지, 어떻게 다루는 것이 효율적일지, 그리고, LLM/coding agent(특히 claude)에 다음을 어떻게 할지에 대해서 이야기하죠.
- 어떻게 여러분의 domain 지식을 주입할 것인지
- 어떻게 여러분의 flow를 모방할 수 있는지
- 실제로 결과가 나올때까지 동작하도록 강제할것인지
이 부분에 관련한 내용은 이전 posting에서 한번 다루었습니다.
그리고, 요 근래에는 제가 만든 RTL agent team(RAT)를 이용한 autopilot 모드가 작은 규모의 RTL 정도는 어느 정도 만들어주고 있어서, 제가 구현한 방법을 간단하게 설명 드리는 exmaple (appendix)도 추가해서 설명드리곤 합니다.
RTL agent team (R.A.T)#

사실 처음엔 간단하게 SKILL과 agent를 짜고, 필요한 tool들 자동 설치하고(그 과정에 필요한 유틸리티 몇개 만들고) routing table을 prompt에 주입하는 것으로 출발했습니다.
그러다가 spec을 만족할 수 없을 것 같으면 coding agent가 은근슬쩍 스펙을 고치면서, 다 되었어고 이야기하는 만행을 저지르는 광경을 두세번 목격하게 되었습니다.
그래서, 각 단계를 끝내기 전에 상위의 요구 사항을 만족했는지 확인하는 gating 조건을 추가하고, 설계 phase를 세분화하고, 각 phase를 Wave로 나누는 등.. 이것 저것 장치를 추가했더니, 적어도 거짓말은 잘 안하는 시스템이 되었습니다.
설계가 digital design 지식만으로 되는 건 아니죠. 실제 설계를 하는 대상인 domain(예를 들어, 저는 video codec과 video processing, bus protocol등)에 대한 지식도 필요합니다.
따라서, domain consult agent(사실 별도의 routing table 주입기)를 두고, 여기서 내용에 따라 각 분야에 domain expert agent들을 호출하게 하고, 전체 설계과정에서 중간 중간 이 domain expert들이 참견하는 시스템을 만들었습니다.
이 부분은 plugin에 포함된 것 이외에 project나 user 단위에 특정 디렉토리를 참고해서, 추가적인 사용자의 domain expert가 있다면 동적으로 routing table에 추가해서 사용할 수 있도록 해 두었죠.
아마도 위의 내용만으로도 저와 비슷한, 그리고 저보다 실제 작업에 더 적합한 agent plugin를 만드실 수 있을 것이라 생각합니다.
Spec의 중요성#
저는 Agentic coding을 software modeling으로 시작했는데, 그때 한창 SDD(Spec. Driven Developement)라는 말이 유행했습니다.
이 이야기는 하드웨어 설계 분야에서 더욱 더 중요하다고 생각합니다.
Coding Agent가 다룰 수 있는 정도의 크기로 코딩을 시키면, RTL에 있어서도 적절하게 RTL을 잘 작성합니다.
실제 code quality에 가장 중요한 요인이라 생각합니다. (아.. RTL coding은 Opus를 max effort로 쓰세요. 두번쓰세요.)
하드웨어 설계는 요청을 기반으로, 알고리즘, 아키텍처, 마이크로 아키텍처의 과정이 모두 spec의 상세화 과정일 수 밖에 없습니다.
또한, 문서 스펙을 소위 이야기하는 Executable spec이라 이야기하는 reference c model(아키텍처 수준)과 SystemC BFM를 통해서, 추상적이었던 spec이 구체화되면서 실제 동작이 잘 될 것인지 확인하는 과정도 거치게 됩니다.
(참고로, 저는 microarchitecture 수준에서 port interface까지 만들고 있어서, SystemC로 사용합니다.)
이 과정에서 얼마나 많은 reveiw를 하는지, 그리고 명확한 의도를 전달할 수 있는지가 RTL 설계의 질을 결정합니다.
Review를 반드시 사람이 할 필요는 없습니다만, 중간 중간 개입해서 방향을 맞추는 건 필요합니다. 물론, 끝까지 가보고, 수정하는 방법도 있죠.
사람은 퇴근해도 agent는 일을 할 수 있으니까요.
팁이 될지 모르겠지만, 이런 각 단계에 시간을 최대한 사용하고, 다방면으로 리뷰하고, 다양한 방법으로 검증하는 것이 정말 중요했습니다.
그래서, 후기#
회사에서 Agentic coding 세미나를 요청하시는 이유는 어찌보면 명확합니다.
생산성을 높이고 싶다!
사장님들꼐 농담삼아, “Agentic coding으로 2주 걸리던 일이 3일만에 된다고, 엔지니어들을 놀게 해주실 건 아니잖아요.” 라고 물어보곤 하는데.. 흠흠..
사실 제가 아주 조금 일찍 다뤄서, 세미나를 하고 다니는 거지 별 거 없고, 정말 쉬운 일입니다.
가장 강조하는게 회사의 조직을 복제하시라.. 는 이야기를 드리는데, 너무 어려워 하시는 것 같아요.
그냥 SKILL 부터 적어보시면 됩니다.
어려우시면 Claude (Claude code말고 chat이요) -> 사용자 지정 -> 스킬 -> “클로드와 함꼐 창작하기” 로 시작하셔도 됩니다.
다른 측면에서는 “이게 도움이 되겠어?“라고 생각하시는 분도 있는 것 같습니다.
그 분들께도 같은 이야기를 드립니다.
그냥 해보세요. 어렵지 않아요.
그리고, 생각보다 많이 도움이 됩니다
처음부터 너무 잘하려 하지 말고, 기본적인 틀을 만들고, 나중에 살을 붙이면 됩니다.
예제도 넣고, 이것 저것 넣고.. 이걸 agent로 연결하고, 이걸 부르는 skill들을 만드는 식으로 확장하셔도 됩니다.
너무 빠르게 실망하거나, 과도하게 기대를 가지시는 것도 좋지 않습니다.
몇가지 환경#
Codex Cross Review#
최근에는 대부분의 툴들이 CLI를 지원하기 시작했습니다.
초기에는 claude에서 codex를 부르려고 mcp를 썼는데, 이제 필요없습니다.
제 ~/.claude/CLAUDE.md 중, 일부를 보여드릴꼐요.
1
2## Codex Invocation Protocol
3"codex에 물어봐/확인해/요청해" 또는 "ask codex"라고 하면 아래 규칙을 따른다.
4### 단순 질의 (프롬프트 4KB 이하)
5```bash
6omc ask codex "<prompt>"
7```
8결과는 `.omc/artifacts/ask/codex-*.md`에 자동 저장된다.
9### 구조화 작업 (파일 리뷰, 대규모 분석 등)
10프롬프트가 크거나 파일 기반 작업일 때:
11```bash
12# 1. 프롬프트를 파일로 작성
13PROMPT_FILE="$(pwd)/.codex-prompt-$(date +%s).txt"
14# 2. 실행 (read-only 샌드박스, 15분 타임아웃)
15timeout 900 codex exec -s read-only "$(cat ${PROMPT_FILE})"
16# 3. 프롬프트 파일 정리
17rm -f "${PROMPT_FILE}"
18```
19### 규칙
20- 샌드박스: 리뷰/분석은 `-s read-only`, 구현 요청은 사용자 확인 후 `-s full-auto`
21 - 프롬프트에 파일 내용을 임베드하지 말 것 — 파일 경로만 나열하고 codex가 직접 읽게 한다
22- 타임아웃: 기본 900초, 대규모 작업은 최대 1500초
23- tmux 세션 안이면 `tmux split-window -v "timeout 300 codex exec ..."` 로 실행하여 사용자에게 진행 상황 노출
제가 기본적으로 oh-my-claudecode(omc)를 깔아서 사용하다보니, 간단한 건 omc에게 맡겨서 윗부분이 있는 것이고요. omc를 안쓰시는 분은 해당 부분(단순 질의 부분)을 지우시고 쓰면 됩니다.
물론 제가 사용하는 RAT에서는 구조화된 질문과 답이 필요해서 별도의 agent를 사용해서 json 형식으로 질문과 답을 하게 했지만, 보통때는 그냥 위의 prompt가 주입된 상태(CLAUDE.md니까 항상 주입되죠)에서, 이렇게 이야기하면 됩니다.
지금 수정한 부분을 codex에게 review하게 해. 결과에 동의하면 수정하고, 아니면 반박해. 최소 2회이상 이견이 없으면 Review를 끝내.
아주 재미있게도 codex와 claude가 싸우고 반박하면서 코드를 좋게 만들어 줍니다.
claude 혼자서는 찾지 못하던 문제를 codex와 같이 찾아내면 아주 잘 찾아냅니다.
Obsidian#
저는 Obsidian이라는 Markdown 기반의 메모 툴을 사용하고 있습니다.
예전에도 가끔 에디터처럼 썼는데, Agent를 사용해서 coding을 하면서는 거의 주력이 reader/editor가 되었죠.
그 이유를 설명해 드릴꼐요.
저는 windows상이 WSL과 Macmini를 사용합니다. PC가 더 powerful하고, macmini는 꺼지지 않고 계속 켜 있다는 장점이 있죠.
모든 장치에서 생산된 문서를 같이 보기위해서, 저는 Obsidian의 valut (자료 저장 위치)를 onedrive에 두고 있습니다.
WSL이나 mac 환경에서 ~/obsidian 이라는 위치에 onedrive에 지정된 Obsidian valut위치를 soft link로 겁니다. (ln -s요)
그리고, 아래와 같은 규칙을 ~/.claude/CLAUDE.md에 추가하시면 됩니다.
1## 문서화 규칙
2
3IMPORTANT: 프로젝트에서 문서의 위치가 지정되지 않은 상태에서 markdown 문서를 만들어달라는 요청을 통해 사용자에게 설명하기 위한 문서는 ~/obsidian/claude/ 밑에 해당 프로젝트의 경로를 만들어서, 적절한 이름의 markdown으로 작성하자.
4- 블럭 다이어그램은 D2, FSM이나 flow diagram등은 mermaid를 적극적으로 이용
5- 문서가 너무 길어지는 경우 효율적인 크기로 자르고, 상위 indexing용 MD 파일을 두자.
6- 옵시디언(obsidian)에 명시하는 경우에도 같은 규칙을 적용하고, 필요한 경우 서브 디렉토리를 더 가져가도 좋다.
7- 설명을 위해 필요하다면, 소스코드의 일부를 snippet으로 넣어도 좋다.
이렇게 되면 코드를 작성하시면서, 코드에 대한 설명이나, 계획등을 Obsidian에서 확인하고 수정하시기 매우 편해집니다.
직접 그림을 생성하기 보다는 text base로 그림을 생성하는 것이 훨씬 token 효율적입니다.
(초기에는 Atlassian MCP를 연결해서 개인 confluence와 연결해서 이런 것을 했었는데, confluence가 정말 토큰을 많이 먹더군요.)
회사에서 일하면서 스펙을 작성하게 하고, 집에서 리뷰하면서 방향을 잡는 등의 작업을 할때 편합니다.
alias & settings#
조금은 무섭고, 잘 권장하지 않지만..
저는 아래와 같이 설정하고 쓰고 있습니다.
중간 중간 commit하게 만들어놔서, 뭐 이상한 짓을 해봤자, 되돌리면 되고, PC나 Mac이야 다시 깔면 되지.. 라는 생각이고, 별것도 아닌 권한으로 알림 받는게 귀찮아서요.
그리고, 저는 설계, RTL에서 무조건 가장 좋은 모델을 씁니다.
이젠 인간의 review가 더 비싼 행동인데, 상대적으로 저렴한 토큰을 아낄 필요는 없죠.
(앞에 말씀드렸지만, opus를 max effort로, 리뷰에 쓰는 codex도 현재 gpt-4.5를 xhigh reasoning으로 사용합니다.)
1# Define via environment variable to ensure Tool Search (deferred loading) works in CLI
2export ENABLE_TOOL_SEARCH=true
3# or historically used as
4export ENABLE_EXPERIMENTAL_MCP_CLI=true
5
6alias claude='claude --dangerously-skip-permissions --effort max'
7
8alias cx='codex --full-auto'
9alias cxa='codex -a never -s workspace-write'
10alias cxd='codex --dangerously-bypass-approvals-and-sandbox'
끝으로#
후기로 시작했는데, 다른 말이 더 많았네요.
일종의 세미나 A/S라고 생각 하셔도 될지도..
Tools#
최근에는 이 작업을 하면서, 몇몇 부분에서 LLM의 “정성평가” 이외의 정량 평가를 해줄 도구라던지 기타 토큰을 좀 아낄 수 있는 도구가 필요해서, 만든 것이 있습니다.
- https://github.com/babyworm/slang-cdc : 간단한 CDC checker입니다. SV용 AST 생성기인 slang 기반으로 만들었는데, 아직 그리 좋은 상태는 아닙니다.
- CDC Agent가 원래 상용툴을 돌리고, 정성 review하는 건데, 오픈 소스로 쓸때도 뭔가 있어야 할 것 같아서 만들었습니다.
- plugin 상의 utility 였는데, 괜찮아 보여서 분리했습니다.
- CDC agent가 간단하게 shell 기반 clock 확인과 더불어 요 툴을 호출합니다.
- LLM이 따로 정성 평가합니다.
- 만들다보니 spyglass의 구조적 check를 약간 흉내냈습니다.
- https://github.com/babyworm/sv_to_ipxact : SV에서 port level IP-XACT 생성을 어려워하시는 분이 있어서..
- 원래 IP-XACT agent가 직접 만들었는데, 생각보다 토큰을 먹어서 예전에 만들었던 툴이 생각나서 엮었습니다.
- IP-XACT agent는 요걸 부르고, 리뷰합니다.
- RALGEN도 만들까.. 하는 생각은 있는데, 솔직히 register 쪽 IP-XACT는 다른 툴이 있어서, 그걸 부릅니다.
지난번에 Serena에 systemverilog를 묶었다는 이야기를 드렸는데, 요즘에 lsp를 묶는게 너무 쉬워서.. 요것도 필요하신 분이 있을 수 있으니, 같이 공개해 드리겠습니다. (원래 rtl-agent-team plugin repo안에 각각 설치 가능하도록 만들어 두었습니다.)
왜 할까..#
사실 왜 이런 것을 하냐는 질문을 들었는데..
음.. 하드웨어 하시는 분들과도 관련 지식을 공유하고 싶다는 생각이 큰 것 같습니다.
저 자신도 위에 말씀드린 여러 plugin들 (이외에 superpowers나 ouroboros 등과 같은 다양한..)을 참조했거든요.
하드웨어 workflow도 이런 참고할 것이 있으면 좋겠다는 생각입니다. 저는 아는게 별로 없어서 좋은 skill을 잘만들지는 못하거든요.
뭐.. 그러려면 저 부터 공개해야 하겠죠?
RAT는 1.x 버전이 되면 일부 공개할 예정입니다. (모사의 대표님과 약속도 했고..)
이제 어느 정도 동작이 안정화되고 있으니, 너무 지저분한 부분이나 과한 정보를 배제하고 오픈용 버전으로 공개할 예정입니다.
RTL을 대상으로 하다보니, hook 같은 것도 대부분 shell로 했는데, cladue가 동작하는 환경은 될테니 javascript 정도는 써도 되지 않을까.. 하는 생각이 들기도 해요.
게다가, 지식이 짧아서 과도하게 많은 agent와 skill, hook이 있어서 정리가 필요하죠 (거의 100개의 agent, 100개의 skill, 20개의 hook이라..)
많은 관심 부탁드리겠습니다.
p.s.
이번에도 제목과 앞부분과 뒤의 내용이 다른 글이 완성되었군요..

