본문 바로가기
반응형

Digital Hardware Design/System verilog7

Blocking & Non-Blocking Verilog / System Veilog / VHDL에서 Blocking 와 Non-Blocking의 개념은 매우 중요하니, 잘 이해하시고 활용하시면 좋겠습니다. Ⅰ. Blocking - Blocking assignment 는 verilog/sytem verilog 기준 "="로 쓰며, procedural block 내에서 순차적으로 실행된다. - 하지만 prarallel 하게 실행되는 경우, 차례대로 수행됨 - Hardware 관점에서 생각을 해보면, Blocking 개념은 Combination logic을 설계할 때 사용하게 됩니다. + ADDER와 같은 Logic은 Clock에 관계없이 바로 출력이 되어야 겠지요? ⅰ. Simulation 1 - 예제를 참고하여 간단한 simulation 진행. .. 2022. 10. 25.
Control-Case Ⅰ. Case - verilog와 동일하기 때문에 짧게만 설명하겠습니다. - 앞에서 포스팅하였던 내용에서 unique / unique0 / priority 키워드가 나왔는데, case에도 동일하게 적용 가능합니다. 2022.10.11 - [Digital Hardware Design/System verilog] - Control - condition + unique-case : 하나도 매치가 안될 경우와 여러 case와 매치가 될 경우에 대해서 error report를 함 + unique0-case : 위와 유사하나, 아무것도 매치가 안될 때에는 report를 하지 않음 + prority-case : 조건 중에 어느 것도 매치가 안될 경우나 else에 대한 절이 없는 경우 error report를 함 ⅰ... 2022. 10. 24.
Control - condition Ⅰ. if-else - c언어, verilog와 동일하기 때문에 짧게만 설명하겠습니다. - if / else if / else 구문을 통해서 조건에 따라서 내가 수행하고자 하는 행위를 결정할 수 있도록 합니다.- system verilog 에서는 특이하게 unique/unique0/priority라는 키워드를 추가적으로 지원합니다. (* 잘쓸까? 하는 의문이 드네요) + unique-if : 하나도 매치가 안될 경우와 여러 case와 매치가 될 경우에 대해서 error report를 함 + unique0-if : 위와 유사하나, 아무것도 매치가 안될 때에는 report를 하지 않음 + prority-if : 조건 중에 어느 것도 매치가 안될 경우나 else에 대한 절이 없는 경우 error report를.. 2022. 10. 11.
Control - loop Ⅰ. Loop의 종류 - 여러 언어들의 Loop 형태를 모두 가지고 있다고 볼 수 있다. + C언어, Python 등 일반적인 프로그래밍 언어에서 사용되는 loop 형태와 거의 유사하거나 동일함 forever 무한루프 repeat 주어진 수 만큼 loop while C언어와 동일, 조건이 불만족할때 까지 Loop for C언어와 동일, 조건이 불만족할때 까지 Loop do while C언어와 동일, 조건이 불만족할때 까지 Loop * while과 다른점은 최초 1번은 loop를 수행 foreach array 형태의 변수를 가지고 사용하는데, 자동적으로 0에서부터 array의 가장 끝 element까지 loop를 수행 Ⅱ. while / do-while - C언어와 형태 및 사용법이 동일하므로 간단하게만 .. 2022. 10. 9.
Data type(3) Ⅰ. Structure - C언어에서 의 구조체와 동일하다고 생각하면 됨 + 같은 type 혹은 다른 type의 여러 변수들을 하나로 묶는 개념 (제 생각이지만, System verilog는 verilog 이외에 C의 장점도 잘 살린 언어인 것 같습니다.) // Structures 모양 struct { byte data1; int data2; string data3; logicdata4; bit data5; bit [5:0]bit_array; } struct_name; - 보통 C언어 공부를 할 때, Structure를 설명하면서 typedef를 이어서 설명하게 되는데, system verilog에서도 typedef가 있습니다! 그래서 이어서 설명할게요. + struct 키워드 이전에 "typedef"만.. 2022. 10. 9.
data type(2) Ⅰ. Static array - C언어에서와 동일하게 Array의 size를 명시해주는 형태 + packed array / unpacked array가 있음 > packed array : 연속적으로 형태로 뭉쳐진 array 형태를 의미 > unpacked array : 개별의 하나하나가 뭉쳐서, array 형태를 이루는 것을 의미 - 아래의 예시를 보시면 바로 이해가 가실 겁니다. bit [7:0] packed_data; // Packed array or vector logic unpaked_data [2:0]; // Unpacked array Ⅱ. Dynamic array - C언어 pointer와 유사하게, complier 단계에서는 size가 주어져 있지 않지만 runtime에서 define 되는 .. 2022. 10. 3.
Data type Ⅰ. Data type - verilog hdl의 경우, Hardware를 기술할 때에 "wire"와 "reg" 두 가지 data type으로 기술 - system verilog는 복잡한 Hardware의 verification을 위해서는 "reg" "wire" 만으로는 부족함 + 그렇기 때문에 C와 유사한 data type을 추가적으로 더 가지고 있음 Ⅱ. Logic / bit - Logic과 bit data type의 가장 큰 차이점은 4 state(※logic) / 2 state(※bit) 라는 것 + 4 state : 1(high), 0(zero), Z(high-impedance), X(unknown) + 2 state : 1(high), 0(zero) + testcase를 작성 시, 항상 4 s.. 2022. 9. 21.
반응형