전체 글 썸네일형 리스트형 Rust in Jupyter notebook Jupyter Notebook에서 Rust를 사용하려면, jupyter의 커널설치가 필요합니다. Rust 커널 설치: Jupyter Notebook은 다양한 프로그래밍 언어를 지원하기 위해 별도의 커널을 사용합니다. Rust용 Jupyter 커널은 evcxr_jupyter라고 불리며, 이를 설치하면 Jupyter Notebook에서 직접 Rust 코드를 실행할 수 있습니다. 먼저, Rust가 설치되어 있어야 합니다. Rust 공식 웹사이트에서 Rust를 설치할 수 있습니다. Rust가 설치된 후, 터미널이나 커맨드 프롬프트에서 다음 명령어를 실행하여 evcxr_jupyter를 설치합니다: cargo install evcxr_jupyter evcxr_jupyter --install 설치가 완료되면, Jup.. 더보기 Verilator Tutorial 5.xx Verilator가 5.xx 버젼으로 업데이트가 되었길래 관련 내용을 끄적여본다. 아래는 Verilator를 이용한 Tutorial이다. 이게 버젼 5.xx 부터는 개인 개발자뿐 아니라 여러 회사들까지 지원해서, 업그레이드가 되고 있는 것으로 보인다. 그리고, 이미 RISC-V등에서 Open source에서 사용하는 공식 simulator는 Verilator이기도 하고, 5.xx에서는 UVM지원들을 진행중이니 관심있게 봐도 좋을듯하다. 특징 verilator는 일단 verilog simulator와는 다른 점이 몇개 있다. 그중 하나는 cycle based simulator이다. 이 이야기는 #1 과 같은 delay구문이 동작하지 않고, 단지 clock에 의해서만 구동이 된다. 즉, 미묘한 타이밍 변화는.. 더보기 [UVM] uvm_config_db 관련 uvm에서 처음 접했을대 낯선것중에 하나가 uvm_config_db라는 구문입니다. 이것의 주요특징들은 아래와 같습니다. 돌아다니는 uvm 기본 예제들을 보면, 이것은 주로 interface를 만들어서 이것을 uvm_config_db로 각각의 agent, driver, monitor등에 일괄적으로 설정하는 예제들을 많이 볼수 있습니다. 이번글에서는 이 uvm_config_db를 왜 사용하는지랑 어떻게 해야 이것을 잘 쓸 수 있는지 적어 보려고 합니다. 먼저, 왜 uvm_config_db인지인데요, 이것은 uvm자체가 object기반이기때문에, object내부에서는 각각의 변수들을 관리하기가 그나마 낫지만, object가 부모라든지, 서로 관련 접점이 없다고 하면, access가 쉽지 않습니다. 그래서 이.. 더보기 [Rust] Clap과 커맨드 라인 argument 다루기 Rust에서 command line을 다루는 법은 기본적으로 std::env::args가 있습니다. Clap은 Rust에서 커맨드 라인 인터페이스를 쉽게 만들 수 있도록 도와주는 크레이트입니다. 다양한 옵션과 설정을 통해 복잡한 커맨드 라인 애플리케이션도 쉽게 구축할 수 있습니다. std::env::args 사용 예제 먼저 기본적으로 내장되어 있는 std::env::args를 사용한 예제를 알아봅니다. 예제 1 Command 라인 인자를 하나씩 처리합니다. use std::env; fn main() { let args: Vec = env::args().collect(); if args.len() > 1 { if args[1] == "-c" || args[1] == "--config" { if args.l.. 더보기 [Rust] Cargo 간단한 사용법 Rust 패키지 관리자인 Cargo는 라이브러리 의존성 관리, 빌드, 테스트, 문서 생성 등 다양한 작업을 쉽게 할 수 있도록 도와줍니다. 이 글에서는 Cargo의 기본적인 사용법에 대해 정리해보겠습니다. 파이썬의 pip와 비슷하면서도 빌드, 테스트, 문서화까지 이 한 커맨드로 가능합니다. 기본 명령어 프로젝트 생성 명령어설명 Command Description cargo new 새로운 바이너리 프로젝트 생성 cargo new --lib 새로운 라이브러리 프로젝트 생성 빌드 및 실행 명령어설명 Command Description cargo build 프로젝트 빌드 cargo build --release 최적화된 릴리즈 빌드 cargo run 프로젝트 빌드 및 실행 cargo check 코드를 빌드하지 않.. 더보기 [RUST] xlsxwriter RUST에서 excel형식의 파일을 생성할때는 xlsxwriter를 이용해서 작성한다 여기는 이 예제를 설명한다. cargo-edit 설치되어 있지않으면 cargo-edit를 먼저 설치 한다. cargo install cargo-edit 아래와 같이 xlsxwriter를 라이브러리에 추가 한다. cargo add xlsxwriter cargo-add가 설치되어 있지 않으면 Cargo.toml 파일을 아래와 같이 직접 수정한다. [dependencies] xlsxwriter = "0.6.0" 아래와 같이 작성하고 컴파일을 진행한다. use xlsxwriter::*; fn main() -> Result { let workbook = Workbook::new("simple.xlsx")?; let mut wor.. 더보기 [UVM] Agent 에이전트는 드라이버, 모니터, 그리고 시퀀서 세 가지 주요 구성 요소로 이루어져 있다. 활성 모드에서는 시퀀서와 드라이버가 구성되고, 시퀀서를 통해 드라이버에 시퀀스 아이템을 전달하여 자극이 생성된다. 동시에 모니터는 핀 레벨 활동을 분석 트랜잭션으로 조립한다. 반면에 수동 모드에서는 오직 모니터만 구성되며, 이는 Active Agent와 같은 기능을 수행한다. 따라서 Passive Agent에서는 시퀀서가 필요 없다. 에이전트의 필요성에 대해 말하자면, 이는 필수적인 요소라기보다는 복잡성을 줄이고 재사용성을 높이는 도구로 볼 수 있다. 에이전트를 사용하지 않으면 환경 수준에서 개별 인스턴스화를 해야 하는데, 이는 불필요하게 복잡하게 만들 수 있다. 따라서 검증 환경에서 에이전트를 사용하지 않는 것은 드.. 더보기 [UVM] Drivers UVM Driver는 testbench에서 Transaction을 전송하는 형태이다. UVM Driver의 예제코드들은 대부분 아래와 같이 사용된다. 여기에 짝으로 UVM Monitor등을 달아서 트랜잭션이 제대로 전달되었는지를 확인한다. 이것 처음보다보면, 왜 이 지점에서 이런것들이 나오는지 이해하기가 쉽지 않은 면이 있다. 갑자기 uvm_config_db가 나오는 것도 그렇고, build_phase라든지, run_phase라든지, 처음보는 입장에서는 맥락없는 장치들이 다수 있다. 이것들은 UVM으로 merge되기전에 OVM이라든지 VMM이라든지 각 회사들의 철학이 녹아들어있던것을 UVM으로 merge하다보니 몇몇 부분에서는 설명이 메뉴얼에도 없고, 잘안되어 있는 부분들이 존재한다. 그래서 일단은 익숙.. 더보기 이전 1 2 3 4 5 6 다음 목록 더보기