본문 바로가기

digital logic/knowlege5

관성지연, 전달지연 인터넷에서 verilog code를 보다보면 아래와 같은 구문들이 가끔 눈에 보인다 wire #10 A; always @(posedge clk) B 2020. 10. 20.
blocking vs non-blocking assignment(feat. race condition) RTL 설계를 하다 보면 내가 원하는 설계 block을 설계하는 일도 있지만, 해당 block을 구현하기 위해 testbench를 따로 구현해야 하는 일도 있다. 신입 때는 아무 생각 없이 선배들이 전달해준 testbench를 기반으로 수정하여 사용했지만, 시간이 지날수록 내가 설계를 직접 해야 하는 일이 생겼었다. 그래서 verilog로 설계하던 것을 최근에 systemverilog로도 해보고 하다 보니 blocking, non-blocking으로 인해 결과 값이 제대로 나오지 않는 문제들이 simulator마다 다르게 발생하는 것을 경험했다. 따라서 오늘은 이 부분에 대해 까먹지 않을수 있도록 정리를 해놓으려고 한다. ----------------------------------------------.. 2020. 10. 19.
signed arithmetic verilog 하면서 제일 헷갈리는게 signed arithmetic 인거같다 ​ 매번 할 때 마다 나만의 부호 bit 체계로 하려다보니 설계할때 너무 비효율적이라 ​ 이번에 공부하면서 제대로 해볼려고 한다. ​ 우선 참고한 자료는 첨부파일 있으니 참조 우선 signed 선언은 일반적으로 선언하는 것뒤에 signed 붙이면 그걸로 끝나는 것같다 ​ reg → reg signed wire → wire signed ​ 해당 파일에서는 3bit 기준으로 정리를 했는데 ​ 예제에 쓰인 data는 위와 같은 표를 가지고 있고 ​ 음수는 2의 보수취하면 되는 것으로 보임 ​ 그리고 일반적으로 3bit + 3bit하면 4bit이 되는 것이 당연한 규칙 ​ 만약에 손으로 연산할 경우를 고려한건지 아니면 실제 연산을 고.. 2020. 10. 16.
Clock gating 우선 clock gating이란 F/F에 들어가는 Clock을 제어하는 방법이라고 볼 수 있는데 ​ 사용자가 해당 모듈을 사용하지 않을 경우에는 clock을 주지 않는 것이다. ​ 이렇게 되면 F/F은 그냥 현재 값을 유지하는 상태가 될 것이고, 사용하지 않을때는 data가 뭐가 출력이되도 상관이 없다면 이로인해 power 측면에서 이득을 볼 수가 있게 되는 것이다. ​ 그래서 구글링을 해서 찾아본 power에 관한 수식은 아래와 같고​ 이걸보면 static과 dynamic으로 나뉘는데 내가 일하고 있는 front-end에서는 ​ dynamic 쪽을 RTL 설계 당시에 반영하여 줄일수 있는데 이를 또 구글링해서 찾아보면 ​ 이렇게 회로도로 간략하게 보이는데 F/F에 enable 조건만 잘 맞춰주면 clo.. 2020. 10. 14.
CDC(Clock domain crossing) CDC는 서로 다른 clock domain 간 data를 주고받는 것을 의미하는데 이때 clock이 다른 domain이라 함은 신호가 사용되는 주파수가 다르다는 것을 의미한다. 위의 그림처럼 각 영역에서는 clock이 다르기 때문에 metastable 상태에 빠지는 case가 발생할 수가 있다 metastable이란 준안정성이라고 번역이 되는데 이를 hardware 관점에서 분석하면 signal spec(setup time, hold time)에 맞지 않도록 신호가 전달되어 받는 쪽에서 0/1을 구분하지 못하는 것이라고 생각하면 된다 digital system에서는 0/1에 대한 구분이 명확해야 결과에 대한 신뢰성이 높은 것이기 때문에 metastable 한 조건이 생성되면 해당 system은 신뢰할 수.. 2020. 10. 13.