Python에서 FPGA/테스트 벤치는 무엇입니까?

테스트 벤치는 무엇입니까?



Polyphony는 테스트 프로그램을 FPGA 세계의 전통에 따라 테스트 벤치로 표현합니다. L 치카의 예는 실제 프로그램과 테스트 벤치를 보여줍니다.


테스트 프로그램 보기



테스트 벤치
@testbench
def test(dut):
    for i in range(4):
        wait_value(1, dut.led)
        wait_value(0, dut.led)

device_under_test = Blink(10000)
test(device_under_test)

@testbench 및 test 함수


@testbench 라는 데코레이터로 규정된 함수가 테스트용 함수입니다. 여기에서는 test 라는 이름으로 하고 있습니다만, 다른 이름이어도 상관없습니다.

test 함수 내에서는 인수 dut 에 대상이 되는 테스트의 객체가 들어옵니다. dut은 사실 L 치카 프로그램입니다. L치카만 dut의 led 포트는 1(점등) 0(소등)을 반복합니다. Polyphony 가 제공하는 wait_value 함수로 그 변화를 기다리게 되어 있습니다. 그것을 4회 반복하면 종료입니다.

객체 생성 및 테스트 벤치 실행



Blink 클래스(L치카였습니다)의 객체를 생성해, 글로벌 변수 device_under_test 에 넣어, 테스트 함수를 호출합니다.

객체 생성
device_under_test = Blink(10000)
test(device_under_test)

파이썬에서 실행



Python (버전 3입니다)에서 실행해 보겠습니다. 잘하면 아무 일도 없었던 것처럼 끝납니다.

파이썬에서 실행
shell$ python blink.py

또는 Windows의 경우

Windows cmd에서 실행
> py -3.6 blink.py

위의 -3.6 인수는 Windows에서 여러 Python이 설치된 경우 지정하는 Python 버전입니다. 만약 하나만 설치하고 있다면 필요 없습니다.

오류입니다.



Polyphony가 설치되어 있지 않으면 다음 오류가 발생합니다. 내 환경에서는 Python 3.5에 설치하지 않았기 때문에 오류가 발생했습니다.

오류입니다.
>py -3.5 blink.py
  File "blink.py", line 14
    led_bit:bit = 1
           ^
SyntaxError: invalid syntax

print 추가



잘해도 아무 것도 표시하지 않으므로 print를 추가해 보겠습니다.

test
@testbench
def test(dut):
    v = 0
    for i in range(4):
        print("loop:", i)
        wait_value(1, dut.led)
        wait_value(0, dut.led)
    print("finished")

실행하면

실행 및 표시
> python blink.py
loop: 0
loop: 1
loop: 2
loop: 3
finished

수수한 느낌이 표시되었습니다.

좋은 웹페이지 즐겨찾기