01 · 뷰어
넷리스트를 열면 회로도가 펼쳐집니다. 저장하기 전까지는 파일에 아무것도 쓰지 않습니다
뷰어는 RNL 레코드가 포함된 SPICE 또는 Spectre 넷리스트를 include된 파일들과 함께 열어 회로의 각 레벨을 그리고, 그 옆에 넷리스트 텍스트와 문제 목록, 계층 구조를 나란히 표시합니다. 클립보드에 복사된 넷리스트 텍스트도 바로 열 수 있습니다. 파일 › 클립보드에서 불러오기(File › Load from Clipboard)를 선택하면 먼저 텍스트 내용을 보여주고 확인 시 엽니다.
모든 레벨 그리기
최상위 레벨과 각 서브서킷은 각각 독립된 도면으로 한 번에 한 레벨씩 표시됩니다. 드래그하여 이동하고 스크롤하여 확대/축소할 수 있습니다. 서브서킷 인스턴스를 더블 클릭하면 해당 서브서킷 도면으로 들어가고, Backspace 키를 누르면 상위 레벨로 돌아갑니다.
넷리스트 텍스트
넷리스트와 include된 파일들이 표시되며, RNL 레코드와 넷리스트 구문이 문법 강조로 구분됩니다. 효력이 없는 구문은 은은한 배경색으로 표시됩니다. 서브서킷 도면을 보는 동안에는 해당 서브서킷 정의 바깥의 텍스트가 어둡게 처리되며, 서브서킷에 진입하면 정의 시작 부분으로 자동 스크롤됩니다.
문제 목록
오류, 경고, 힌트가 텍스트 아래에 나열됩니다. 항목을 클릭하면 해당 줄로 이동하며, 문제가 있는 줄 번호도 색상으로 강조됩니다.
계층 구조
최상위 레벨부터 펼쳐지는 인스턴스 트리와, 그 아래에 첫 글자별로 묶인 전체 서브서킷 목록 및 검색창이 제공됩니다. 항목을 선택하면 해당 도면이 열립니다.
도면과 텍스트의 양방향 연동
도면에서 인스턴스나 배선을 클릭하면 텍스트에서 해당 선언문과 그 이름을 참조하는 모든 위치를 표시하고, 반대로 텍스트를 클릭하면 도면에서 해당 객체를 선택합니다.
그려지지 않은 객체
위치가 지정되지 않았거나(또는 심볼이 없는) 객체는 도면에 그려지지 않으며, 사이드 패널의 미표시 뷰에 심볼 및 단자 넷과 함께 나열됩니다. 이름으로 검색할 수 있고 항목을 클릭하면 넷리스트에서 해당 구문이 강조 표시됩니다. 상태 표시줄에는 그려지지 않은 객체 수가 표시되며, 이 메시지를 클릭하면 해당 뷰가 열립니다.
편집, 적용, 저장
두 뷰어 모두 넷리스트 텍스트를 편집할 수 있습니다. 텍스트를 수정하는 것만으로는 아무 일도 일어나지 않으며, 적용(Apply)할 때 도면이 다시 그려지고 저장(Save)할 때 파일에 기록됩니다. 자동으로 솔버가 실행되지도 않습니다.
텍스트 편집
편집 › 텍스트 편집(Ctrl+Q, macOS에서도 Control 키 사용)을 실행하면 넷리스트 뷰가 파일마다 줄 번호가 있는 텍스트 편집 상자로 바뀝니다. 저장되지 않은 변경 사항은 파일 경로 옆에 점으로 표시되며, 아직 적용되지 않은 변경 사항이 있으면 텍스트 상단 바에 안내가 나타납니다. 편집 › 변경 사항 버리기는 적용되지 않은 변경 사항을 버리고 편집을 종료합니다.
적용
편집 › 적용 후 편집 종료(Ctrl+Enter)는 편집된 텍스트로 넷리스트를 다시 빌드하고 회로도를 다시 그리며, 현재 레벨, 화면 위치, 선택 상태를 유지한 채 문제 목록과 계층 구조를 새로고침하고 편집을 종료합니다. 빌드에 실패하면 편집 상태가 그대로 유지되며 뷰어가 원인을 알려줍니다.
저장
파일 › 저장(Ctrl+S, 웹 뷰어에서는 파일 › 파일 다운로드): 데스크톱 뷰어는 수정된 파일만 원래 읽었던 경로에 각 파일의 인코딩과 줄바꿈 형식을 유지한 채 다시 기록하며, 웹 뷰어는 로컬 파일을 덮어쓸 수 없으므로 파일 다운로드를 통해 현재 표시 중인 파일을 다운로드합니다. 저장하지 않은 변경 사항이 있으면 다른 파일을 열거나 새로고침하거나 닫기 전에 먼저 확인합니다.
두 뷰어는 완전히 동일한 회로도를 그립니다. 하나의 Rust 코어가 데스크톱에서는 네이티브로, 브라우저에서는 WebAssembly로 실행되며 모든 선과 텍스트의 위치를 결정하고 내장된 글꼴로 텍스트를 배치합니다.
02 · 웹 뷰어
웹 뷰어: 설치 없이 바로 사용합니다
라이브러리 사이드바 탭(첫 번째 탭)에서는 연 파일이 중복 없이 파일 그룹에 추가됩니다. 파일 포함과 폴더 포함은 파일을 열지 않고 라이브러리에 추가하며, 제외는 현재 문서를 닫지 않고 검색 대상에서만 파일을 제외합니다. 공개 패키지 포함은 GitHub API를 사용하지 않고 이 사이트에서 호스팅하는 SKY130 등의 패키지를 추가합니다. 파일 그룹은 펼쳐진 상태로, 읽기 전용인 내장 그룹(표준 시리즈 0.3 및 0.2)은 접힌 상태로 시작하며, 접기 상태는 세션 동안 유지되고 루트 파일 행은 강조 표시됩니다. 붙여넣은 클립보드 텍스트는 검색 대상 바깥에 단일 임시 · 검색 제외 행으로 표시되며, 클릭하면 마지막으로 적용된 텍스트로 돌아가고, 다시 붙여넣으면 내용을 바꾸며, 닫으면 지워집니다. 브라우저는 임의의 로컬 PATH 디렉터리를 검색할 수 없으므로 웹 뷰어는 라이브러리에서 include 파일과 패키지를 찾습니다.
웹 뷰어는 WebAssembly로 컴파일된 RNL 코어가 내부에서 실행되는 정적 웹 페이지입니다. 컴퓨터의 파일이나 폴더 전체를 열거나 웹상의 넷리스트를 열 수 있으며, 페이지 위에 파일을 끌어다 놓아도 열립니다.
예제 회로 열어보기
RNL 적합성 테스트 코퍼스에서 가져와 웹 뷰어와 함께 배포되는 예제들입니다. 항목을 클릭하면 뷰어에서 바로 열립니다.
- 04계층 구조2단 버퍼 회로입니다. 각 서브서킷마다 도면이 있고 상위 레벨에서는 블록 심볼로 그려지며, include된 외부 파일 하나를 포함합니다.
- 17선 스타일사각형, 원, 타원, 호, 곡선 및 배선에 점선, 파선, 굵은 선, 이중선 등 모든 종류의 선 스타일을 적용한 예제입니다.
파일은 브라우저 밖으로 나가지 않습니다
컴퓨터에서 연 파일은 웹 페이지 안에서만 읽히며 어디로도 업로드되지 않습니다. 이 사이트는 정적 파일로만 구성되어 있어 파일을 전송받을 서버 자체가 없습니다.
URL로 열기
파일 › URL 열기(File › Open URL)는 다른 웹 서버에 있는 넷리스트와 그 넷리스트가 include하는 파일들을 같은 경로 기준으로 읽어옵니다. GitHub의 raw 파일 링크처럼 해당 서버가 교차 출처 읽기(CORS)를 허용해야 합니다.
지원 브라우저
Chrome 및 Edge 109 이상, Safari 16 이상, Firefox 114 이상(모듈 Worker를 지원하는 최초 버전)에서 작동합니다.
웹 뷰어는 위에서 설명한 것처럼 텍스트를 편집하고 변경 사항이 적용되면 회로도를 다시 그립니다. 브라우저 페이지는 로컬 파일을 덮어쓸 수 없으므로 파일 › 파일 다운로드(Ctrl+S)는 현재 표시된 파일을 원래의 줄바꿈 형식을 유지한 UTF-8로 다운로드합니다. 솔버 실행은 데스크톱 뷰어에서만 지원하며 웹 뷰어에는 풀기 메뉴가 없습니다.
뷰어 주소에 열려는 넷리스트 URL을 담아 링크로 공유할 수 있습니다. 예를 들어 viewer/?url=https://raw.githubusercontent.com/…/04-hierarchy.sp는 GitHub의 넷리스트를 include된 파일과 함께 바로 엽니다.
다른 웹 페이지에 임베딩
iframe에서 viewer/?embed=1을 사용하면 캔버스만 표시하는 인터랙티브 뷰어를 넣을 수 있습니다. 새로고침 없이 postMessage로 넷리스트, 레벨, 배경을 전환할 수 있습니다. 임베딩 API 및 예제를 참고하거나 데모 페이지를 직접 확인해 보세요.
이곳의 웹 뷰어는 main 브랜치의 최신 커밋으로부터 빌드됩니다. 도움말 › RNL Viewer 정보에서 버전과 커밋을 확인할 수 있으며, 도움말 › 데스크톱 뷰어를 선택하면 이 페이지로 돌아옵니다.
03 · 데스크톱 뷰어
Windows, Linux, macOS용 데스크톱 뷰어입니다
데스크톱 RNL Viewer는 디스크의 파일 경로를 기준으로 파일을 직접 읽고 씁니다. 넷리스트가 include하는 파일이 어디에 있든 찾아내고, 파일이 바뀌면 F5 키로 다시 읽으며, 편집한 텍스트를 원래 읽은 위치에 저장하거나 파일 › 다른 이름으로 저장으로 넷리스트를 새 이름으로 저장할 수 있습니다. 웹 뷰어와 동일한 인터페이스를 공유하며 자동 레이아웃을 위한 풀기 메뉴가 추가됩니다.
데스크톱 라이브러리는 파일 그룹과 내장 그룹 사이에 순서가 있는 PATH 그룹들을 기본 접힘 상태로 표시하며, 추가·이동·삭제 컨트롤을 제공합니다. 그룹을 펼치면 해당 폴더 바로 아래의 .rnl 파일들과 한 단계 아래 버전 번호 하위 폴더의 .rnl 파일들이 표시되며, 행을 열면 파일 그룹에도 추가됩니다. 라이브러리를 열 때와 PATH를 변경한 뒤에 디렉터리를 다시 스캔합니다. 솔버, 화면 표시, PATH를 포함한 모든 설정은 Tauri 애플리케이션 설정 디렉터리의 settings.json에 저장되며, 첫 실행 시 기존 웹뷰 설정을 마이그레이션하고 settings.json의 정확한 경로를 라이브러리 하단에 표시합니다. include 파일은 상대 경로를 먼저 시도하고, 단순 파일명만 적힌 경우 라이브러리, PATH 순서로 대체 검색하며 찾은 파일의 이름을 힌트로 알려줍니다. 패키지는 라이브러리, PATH, 내장 패키지 순으로 검색하여 요청한 버전과 일치하는 첫 번째 항목을 사용합니다. 각 디렉터리에서는 name.rnl과 version/name.rnl을 먼저 확인한 뒤 다른 .rnl 파일을 스캔해 PACKAGE 헤더를 검사하므로 파일명이 패키지명과 같지 않아도 됩니다. 사용자의 rnl-std로 내장 사본을 덮어쓸 수 있습니다.
-
설치 프로그램
RNL-Viewer-0.5.3-windows-x64-setup.exe현재 사용자 계정으로 설치하며 대부분의 사용자에게 권장됩니다.
-
MSI 패키지
RNL-Viewer-0.5.3-windows-x64.msi시스템 관리자의 배포용 Windows Installer 패키지입니다.
-
포터블 버전
RNL-Viewer-0.5.3-windows-x64.exe설치 과정 없이 다운로드한 단일 실행 파일을 바로 실행합니다.
-
체크섬
SHA256SUMS.txt위 파일들의 SHA-256 해시값입니다. PowerShell에서
Get-FileHash FILE로 계산한 값과 대조할 수 있습니다.
-
AppImage
RNL-Viewer-0.5.3-linux-x86_64.AppImageUbuntu 22.04 이상 x86_64 시스템용입니다. 다운로드 디렉터리에서
chmod +x RNL-Viewer-0.5.3-linux-x86_64.AppImage를 실행한 뒤./RNL-Viewer-0.5.3-linux-x86_64.AppImage로 실행하세요. FUSE가 없는 환경에서는./RNL-Viewer-0.5.3-linux-x86_64.AppImage --appimage-extract-and-run을 사용합니다. -
Debian 패키지
RNL-Viewer-0.5.3-linux-x86_64.debUbuntu 22.04 이상을 지원하며, 기타 Debian 계열 배포판에서는 호환되는 glibc와 WebKitGTK 4.1이 필요합니다. 다운로드 디렉터리에서
sudo apt install ./RNL-Viewer-0.5.3-linux-x86_64.deb를 실행한 뒤 애플리케이션 메뉴에서 RNL Viewer를 열거나rnl-viewer를 실행하세요. 제거할 때는sudo apt remove rnl-viewer를 실행합니다. -
체크섬
SHA256SUMS.txt체크섬 파일과 원하는 패키지를 같은 디렉터리에 다운로드한 뒤
sha256sum --check --ignore-missing SHA256SUMS.txt를 실행하세요.
Mac 칩에 맞는 DMG를 열고 RNL Viewer를 응용 프로그램(Applications) 폴더로 끌어다 놓은 뒤 디스크 이미지를 추출하세요. 이 앱은 임시(ad-hoc) 서명만 되어 있으며 Apple 공증을 거치지 않았습니다. macOS가 실행을 차단하면 시스템 설정 → 개인정보 보호 및 보안에서 ‘확인 없이 열기’를 선택하거나, 신뢰하는 다운로드 파일에 대해 터미널에서 xattr -dr com.apple.quarantine "/Applications/RNL Viewer.app"를 실행한 뒤 다시 여세요. 삭제할 때는 앱을 종료하고 휴지통으로 옮기면 됩니다.
Finder에서 다음으로 열기(Open With) → RNL Viewer를 선택해 열 수 있으며, 정보 가져오기(Get Info)에서 해당 파일 형식의 기본 앱으로 지정할 수 있습니다. 창으로 파일을 직접 끌어다 놓아도 됩니다. 대부분의 단축키는 Cmd 키를 사용하지만 텍스트 편집은 물리적 Control+Q를 유지하며 Cmd+Q는 앱을 종료합니다. 설정 파일은 ~/Library/Application Support/io.github.rich-netlist.viewer/settings.json에 저장되며 앱 삭제 후 필요에 따라 이 디렉터리를 지울 수 있습니다. 다운로드 파일 검증에는 해당 릴리스의 SHA256SUMS.txt와 shasum -a 256을 사용하세요.
-
Windows 포터블 버전
RNL-Viewer-0.5.3-with-packages-windows-x64.zip단일 Windows 파일과 그 옆의 public-packages 폴더를 zip으로 묶은 것입니다. 압축을 풀고 그 파일을 실행합니다.
-
AppImage(패키지 포함)
RNL-Viewer-0.5.3-with-packages-linux-x86_64.AppImage위와 같은 AppImage에 공개 패키지를 넣은 것입니다. 실행 권한을 준 뒤 같은 방법으로 실행합니다.
-
공개 패키지의 Debian 패키지
RNL-Viewer-0.5.3-linux-public-packages.deb위 뷰어의 Debian 패키지용이며, 뷰어는 /usr/share/rnl-viewer에서 찾습니다. 다운로드한 디렉터리에서
sudo apt install ./RNL-Viewer-0.5.3-linux-public-packages.deb를 실행합니다. - Apple 실리콘(패키지 포함)
RNL-Viewer-0.5.3-with-packages-macos-arm64.dmg - Intel(패키지 포함)
RNL-Viewer-0.5.3-with-packages-macos-x86_64.dmg
위의 설치 프로그램은 설치할 때 공개 패키지를 함께 설치할지 고를 수 있습니다. Windows 설치 프로그램은 별도의 페이지에서, MSI는 기능 항목으로 고릅니다. 여기 있는 것은 같은 다운로드에 패키지를 담은 다른 버전입니다. 릴리스를 빌드할 때의 rnl-packages에 있는 각 패키지의 최신 버전이며, 뷰어는 스스로 내려받지 않습니다. 어떤 패키지가 들어 있는지는 도움말 › 공개 패키지(Help › Public Packages)에 나옵니다.
- Linux의 한중일 글꼴UI와 넷리스트 영역은 내장된 Noto Sans SC 웹 글꼴을 대체 글꼴로 사용합니다. 다만 GTK 네이티브 메뉴, 네이티브 툴팁, 시스템 파일 대화상자에는 시스템 CJK 글꼴이 필요합니다. Debian/Ubuntu에서는
sudo apt install fonts-noto-cjk를 실행한 뒤 앱을 다시 시작하세요. AppImage도 동일합니다. - WebView2데스크톱 뷰어는 Windows 10과 11에 기본 탑재된 Microsoft Edge WebView2 런타임을 필요로 합니다. 설치되어 있지 않은 경우 Microsoft 웹 사이트에서 다운로드할 수 있습니다.
- SmartScreen 안내실행 파일에 아직 코드 서명이 적용되지 않아 Windows SmartScreen이 PC를 보호했다는 안내 창을 띄울 수 있습니다. ‘추가 정보’를 누른 뒤 ‘실행’을 선택하세요.
- 업데이트도움말 › 업데이트 확인(Help › Check for Updates) 메뉴에서 새 릴리스가 있는지 확인할 수 있습니다.
미리보기로 풀기
데스크톱 뷰어의 풀기(Solve) 메뉴는 rnl solve와 동일한 솔버를 사용해 위치가 지정되지 않은 객체들을 배치합니다. 결과는 창 안에서만 미리보기로 표시되며 원본 파일은 바뀌지 않습니다.
풀이 결과 미리보기
풀기 › 풀기(F9)는 적용된 텍스트를 기준으로 넷리스트와 include된 파일들을 rnl solve와 동일한 방식으로 풉니다. 백그라운드에서 실행되므로 작업 중에도 창을 그대로 사용할 수 있으며, 상태 표시줄에 현재 풀고 있는 레벨과 취소 버튼이 표시됩니다. 도면 상단 바에는 현재 화면이 미리보기이며 디스크의 파일은 변경되지 않았음이 표시되고, 사이드 패널의 풀기 뷰에는 솔버의 보고서가 표시되어 항목을 클릭하면 넷리스트의 해당 줄로 이동합니다. 풀기 › 미리보기 닫기를 선택하면 작성된 원래 파일 상태로 돌아갑니다.
풀이 결과 사본 저장
풀기 › 풀이 결과 사본 다른 이름으로 저장(Solve › Save Solved Copy As, Ctrl+Shift+S)은 솔버 결과를 원하는 위치에 저장합니다. 다른 파일을 include하지 않는 단일 넷리스트는 기본 이름 NAME-solved.EXT인 파일 하나로 저장하고, 여러 파일을 포함하는 경우에는 rnl solve -o DIR과 동일하게 솔버 결과가 반영된 파일들과 나머지 읽은 파일들을 폴더 하나에 담아 저장합니다. 원래 읽어들인 파일 중 어느 하나라도 덮어쓰게 되는 경로는 거부됩니다.
솔버 설정
풀기 › 설정에서는 솔버의 옵션을 구성합니다. 레벨별 시간 제한, 허용 오차, 격자, 빔 폭, 탐색 및 라우터 작업량, 그리고 배치 후보의 순위를 매기는 최적화 목표(활성화된 목표, 순위 비교 순서, 같은 단계 안의 목표 가중치)를 설정합니다. 제약 조건 우선순위(low, normal, high)는 넷리스트에 작성하며 이곳에서 설정하지 않습니다. 기본값 복원을 누르면 모든 옵션이 기본값으로 초기화되며, 설정은 다음 실행 시에도 유지됩니다.
04 · 명령줄 도구
다운로드하고, 압축을 풀고, 바로 실행하세요
rnl로 넷리스트를 검사하고, SVG를 렌더링하고, 레이아웃을 풀 수 있습니다. Rust를 설치할 필요가 없으며 Windows에서도 별도의 VC++ 런타임이 필요하지 않습니다. CLI와 npm 패키지는 뷰어 및 언어 표준과는 독립적으로 코어 버전을 공유합니다.
- Windows x64
.zip · MSVC압축을 푼 뒤
.\rnl.exe --version을 실행하세요. - Linux x86_64
.tar.gz · musl정적 링크된 바이너리입니다. 압축을 푼 뒤
./rnl --version을 실행하세요. - macOS · Apple Silicon
.tar.gz · arm64Apple Silicon 칩을 탑재한 Mac용입니다.
- macOS · Intel
.tar.gz · x86_64Intel 프로세서를 탑재한 Mac용입니다.
SHA256SUMS.txt: 실행하기 전에 압축 파일의 SHA256 해시를 검증하세요. rnl --version은 코어 버전과 빌드 커밋을 출력하며, 넷리스트 검사는 rnl check my.sp, 도면 내보내기는 rnl render my.sp -o svg를 사용합니다.
이 링크들은 항상 최신 core-v* 릴리스를 가리킵니다. 파일에는 코드 서명이 없으므로 Windows에서는 SmartScreen이 표시될 수 있고, macOS에서 브라우저로 다운로드한 경우 xattr -d com.apple.quarantine rnl 실행이 필요할 수 있습니다. Linux arm64는 현재 소스 빌드가 필요합니다. 다운로드, 압축 해제, 체크섬 검증 명령어는 CLI 가이드를 참고하세요.
05 · Virtuoso 내보내기
Virtuoso 회로도를 RNL로 내보냅니다
rnl-virtuoso는 Virtuoso 회로도 편집기에 RNL → Export RNL... 메뉴를, CIW에 File → Export → RNL... 메뉴를 추가합니다. 단일 셀이나 라이브러리 전체를 내보낼 수 있으며 계층 구조, 사용자 정의 블록 심볼, 소자 배치, 방향, 배선 및 버스를 그대로 유지하고 eda-symbol 및 eda-style 패키지를 사용해 그립니다.
- Linux x86-64
.tar.gz릴리스 페이지에서 다운로드하여 Virtuoso가 설치된 호스트에 압축을 푸세요. 해당 호스트에 Cadence 자체 내보내기 도구와 라이선스가 있어야 합니다.
- 설치 및 사용법
README설치 절차와 메뉴 설명, 상세 옵션은 저장소의 README에 정리되어 있습니다.
- RISCA reconfigurable ADC
galleryVirtuoso에서 실제로 내보낸 RNL 예제입니다.
06 · 툴체인
RNL 툴체인: 읽기, 풀기, 그리기, 편집하기
툴체인은 “RNL을 해석하는 일”과 “설계 의도를 좌표로 바꾸는 일”을 별도의 모듈로 분리합니다. 덕분에 솔버 없이도 도면을 열어볼 수 있고 필요할 때만 솔버를 실행할 수 있습니다. 현재 구현된 모듈은 런타임, 호스트 어댑터, 렌더러, 명령줄 도구, 앞서 소개한 두 뷰어, 그리고 rnl solve와 데스크톱 뷰어에 탑재된 첫 번째 버전의 솔버입니다. 사용 경로를 선택해 데이터 흐름을 살펴보고 각 모듈을 클릭해 역할을 확인해 보세요.
07 · 라이선스
오픈 소스로 누구나 자유롭게 사용할 수 있습니다
뷰어와 전체 RNL 툴킷의 소스 코드는 GitHub에 공개되어 있습니다.
MIT
뷰어 코드는 MIT 라이선스를 따릅니다. 저작권 고지만 유지하면 자유롭게 사용, 수정, 공유할 수 있습니다.
OFL-1.1
도면 내 텍스트의 조판과 렌더링에는 Adobe가 저작권(2014-2021)을 보유하고 SIL 오픈 폰트 라이선스 1.1로 배포되는 Noto Sans SC 글꼴을 사용합니다. 코어가 글꼴 메트릭 데이터를 내장하고 데스크톱 뷰어는 글꼴 파일을 포함하며, 웹 뷰어는 도면에 필요한 글꼴만 불러옵니다(결정 0009).