IT/ASIC | FPGA 2024. 9. 12.
tcl - foreach를 이용하여 리스트 요소 제거하기
foreach를 사용하여 리스트에서 특정 요소들을 하나씩 체크하면서 제거하는 방식은 다음과 같습니다:# 원래 클록 그룹 리스트set sync_clock_group {clk1 clk2 clk3}set elements_to_remove {clk2 clk3}# 새 리스트 생성set modified_clock_group {}# 리스트를 순회하며 요소를 제거foreach clk $sync_clock_group { if { [lsearch $elements_to_remove $clk] == -1 } { lappend modified_clock_group $clk }}# 결과 출력puts "Modified clock group: $modified_clock_group"설명:foreach clk..
IT/ASIC | FPGA 2024. 9. 12.
tcl - 리스트 확장 기능으로 리스트 요소 제거하기
{*}$elements_to_remove는 Tcl에서 리스트 확장(list expansion) 기능을 활용한 표현입니다. 이는 Tcl 8.5 이상에서 지원되며, 리스트의 요소들을 개별적인 인자로 분리해서 처리하고자 할 때 사용됩니다.구체적인 설명:$elements_to_remove: 이 변수는 리스트를 담고 있습니다. 예를 들어, 리스트 {clk2 clk3}가 들어 있습니다.{*}: 이 연산자는 리스트 확장(list expansion)을 의미합니다. 리스트 안에 있는 각 요소를 개별적인 인자로 확장하는 역할을 합니다.리스트 확장({*})의 역할:보통 Tcl에서 리스트는 하나의 단일 인자로 처리됩니다. 하지만 특정 상황에서는 리스트 내의 각각의 요소를 개별 인자로 넘기고 싶을 때가 있습니다. 그런 경우에 ..
IT/ASIC | FPGA 2024. 9. 4.
RTL 파일리스트 만들기 - find 활용
특정 디렉토리 아래에 있는 RTL 파일들의 리스트를 만들때, 아래 구문을 활용해 보세요.편리하게 쫙 나열됩니다. 일단 전체를 만든다음 이후에 필요없는 파일은 정리하면 되겠죠find RTL -type f -regex ".*\.\(v\|sv\|vh\)" > file_list.f 이 명령어는 최종적으로 .v, .sv, .vh 파일을 모두 한 번에 찾을 수 있는 간결한 방식입니다. -regex를 사용하여 파일 확장자들을 묶어서 처리하므로, 더욱 깔끔하고 효율적입니다. 결과는 이렇게 나오겠죠.RTL/module1/design.vRTL/module1/testbench.svRTL/module2/include.vhRTL/module3/submodule/design.svRTL/module3/submodule/defs.v..
IT/ASIC | FPGA 2024. 8. 19.
Verilog-mode - Lisp 함수 예약어 (vl-width, vl-dir, ...)
앞서 사용한 vl-width 같이 미리 지정된 함수 예약어 리스트만 따로 쭉 뽑아 봤다. 물론 홈페이지에 다 있지만, 찾을 때 편리하게 :) There are special variables defined that are useful in these Lisp functions: vl-name Name portion of the input/output port. vl-bits Bus bits portion of the input/output port (`[2:0]'). vl-mbits Multidimensional array bits for port (`[2:0][3:0]'). vl-width Width of ..
IT/ASIC | FPGA 2024. 8. 19.
Verilog-mode - 안쓰는 output port 처리
그냥 비워둬도 되지만, unused__module__시그널명 이런형태로 변수를 만들어 두고 싶다면, 아래와 같이 지정하면 된다. How do I use AUTOINST to tie off unused ports?Configure your lint program to ignore signals with a certain naming, such as those with unused in the name, then use AUTO_TEMPLATE to make a unique name for each port./* InstModule AUTO_TEMPLATE ( .out_signal (unused__@"vl-cell-name"__@"vl-name"[]), // [] is dropped for sin..
IT/ASIC | FPGA 2024. 8. 19.
Verilog-mode - input 시그널에 0 값 할당 방법
그냥 System verilog 에서 쓰이는 버스에 0 주는 방법 '0 를 활용하면 가장 편하다.그럼에도, 버스에 딱 맞춰서 주고 싶다면 {@"vl-width"{1'b0}}이런형태로 처리하는 것을 지원한다.How do I use AUTO_TEMPLATE to tie off inputs to zero?To tie off a single port:/* InstModule AUTO_TEMPLATE ( .\(.*\)_test ('0),); */If you don't want to use SystemVerilog's '0 you can use a Lisp format template, and the Lisp variable vl-width, which contains the width of the port:..
IT/ASIC | FPGA 2024. 8. 13.
VCS 컴파일 이전에 synopsys_sim.setup 파일 확인
VCS 컴파일 이전에 synopsys_sim.setup 파일 확인이 무조건 중요하다. 라이브러리 위치나 기본 work 폴더를 지정하는 것이 필수적이다. Before you analyze your design using vhdlan or vlogan, ensure that the library mappings are defined in the synopsys_sim.setup file, and that the specified physical library for the logical library exists. If the physical directory does not exist, VCS exits with an error message. 매뉴얼에 나와 있다. 샘플 예제가 가장 중요하지. 주석 기능이..
IT/ASIC | FPGA 2024. 8. 9.
VCS delay zero 처리 - +delay_mode_zero +notimingcheck
여러 옵션을 주는 중에 Warning-[UNKWN_IGOPTS] Unknown option(s) ignored Unknown option(s) '+notimingcheck +notiming +nospecify ' passed to 'vlogan' command line is(are) ignored. Please make sure that there are no typos in the option(s) passed, or the options are only applicable to VCS at elaboration step. Also check 'vlogan -help' for supported options. Warning-[ENBL_OPTS] Enabling option(s) Enab..
IT/ASIC | FPGA 2024. 8. 7.
Verilog mode 간단한 사용법 - Emacs verilog mode
예, .el 파일에서는 verilog-library-flags 설정을 빼고, 대신 각 Verilog 파일의 Local Variables 섹션에서 설정할 수 있습니다. 이는 각 파일별로 필요한 설정을 적용할 수 있는 좋은 방법입니다.최종 설정 파일 및 스크립트.el 파일에서 verilog-library-flags 설정을 제거하고, 각 Verilog 파일에 Local Variables 섹션을 추가한 상태로 스크립트를 작성하겠습니다.my-verilog-settings.el;; my-verilog-settings.el;; Verilog mode 설정(require 'verilog-mode)(add-to-list 'auto-mode-alist '("\\.v\\'" . verilog-mode))(add-to-lis..
IT/ASIC | FPGA 2024. 7. 19.
쉘 실행때 옵션에 따라서 다른 filelist 물고 실행하기
vcs, verdi 등등 툴을 실행할 때 옵션에 따라서 딱 파일리스트만 변경이 되는 경우 활용할 스크립트 입니다.#!/bin/csh# Usage: scriptname [-dft]# -dft: If this option is provided, use the dft_filelist.f file. Otherwise, use the non_dft_filelist.f file.# Set default valueset dft = "false"# Process optionsforeach arg ($argv) switch ($arg) case "-dft": set dft = "true" breaksw default: echo "U..
IT/ASIC | FPGA 2024. 7. 1.
Verdi 옵션 - kdb,fsdb 물고 실행
The Unified Compiler Flow (UFE) uses VCS with the -kdb option and the generated simv.daidar will include the KDB information.Verdi supports the following use models to import design from simv.daidir related files:"verdi -dbdir simv.daidir""verdi -ssf novas.fsdb"vcs -kdb 옵션으로 KDB를 생성할 수 있다. "verdi -dbdir path/simv.daidir -ssf novas.fsdb"
IT/ASIC | FPGA 2024. 6. 19.
tcl 멀티라인 지원 - 작성 내용이 너무 길어서 엔터치고 싶다!
Tcl(툴 커맨드 언어)에서 멀티라인 지원을 위해 몇 가지 방법이 있습니다. 주로 사용되는 방법은 백슬래시(\)를 사용하여 줄바꿈을 이스케이프하거나, 중괄호({})를 사용하여 여러 줄을 묶는 방법입니다. 참고로 여러가지 파일 처리 자동화를 위해 반대로 멀티라인을 제거하는 프로젝트는 생성해서 업데이트 중입니다. 전처리가 필요하면 참고하세요.https://github.com/bjnhur/tcl_line_processor GitHub - bjnhur/tcl_line_processor: This project provides a Python script to preprocess TCL files by handling multiline commandsThis project provides a Python scri..