EDA/Open Source Tool

#2 Mixfighter 구조 분석

돌머리 돌돌 2026. 4. 23. 17:02

직전에 shell과 예시 ADC 코드가 주어져 돌려보기는 했습니다.
하지만 제대로 어떻게 동작하는지를 모르겠어서 메인 코드인 mixed_bridge.cpp 파일을 분석해보았습니다.

그리고 그린 Flowchart입니다.
설명하자면 Icaruse Verilog 파일을 shell을 통해 컴파일하면 vvp 파일이 생성됩니다.
이후 같은 메모리를 사용하게 한 후 세마포어, 회로 정보 등을 저장합니다.

이제 시뮬레이션을 시작하는데
아무래도 IVerilog의 시뮬레이션 속도가 아날로그보다 빠릅니다.
그래서 매 Latch마다 Spice_sync()라는 함수를 호출해서
그 때마다 NGSpice와 IVerilog를 동기화합니다.

위 그림은 FSM 그려본건데 처음에는 Bootstrap으로 한번 $spice_sync()를 실행해줍니다.
$Spice_sync() 구조는 하단 그림처럼 되어있습니다.

PPT로 만들고 캡쳐하다보니, 화질이 좀 깨지네요
쉽게 요약하자면 새 타임 스텝일 때마다 NGSpice를 기다리고
값을 업데이트 합니다.

이를 $Finish 명령까지 반복한다고 생각하시면 됩니다.

 

구조를 알아봤는데
걱정되는 것이 하나 있다면 동기화 할때 틱을 너무 길게 할경우 시뮬레이션 속도가 길어질테고
짧게 하면 고속 동작에서 상호간 제대로 동기화가 안될 듯 합니다.

또 제공된 시뮬레이션 파일도

하단 구조의 이상적인 회로입니다.
실제 회로에 접목되서 동작한다면 참 멋질 듯 한데 조금 더 시간이 필요해 보입니다.

'EDA > Open Source Tool' 카테고리의 다른 글

#1 Mixfighter 개요  (1) 2026.04.16