2016-09-01 4 views
0

나는 다음과 같은 structeresystemVerilog에서 파일을 읽는 방법?

연구와 여러 줄의 파일, ACFE13D5,00000000

FE1234AC, w

, 00000000

이 중간 값은 헥사의 adreess, 마지막 값과 데이터를해야한다 32 비트 길이 (또한 헥사). `$의 fopen` :

direction_enum rw; // where-  typedef enum { READ = 0, WRITE = 1 }       direction_enum; 

    bit [31:0] addr; 
    bit [31:0] data; 
+1

IEEE 표준 1800년부터 2012년까지을 사용

간단한 방법 소유주가 이러한 파일을 읽고 다음과 같은 트랜잭션 프로토 타입으로 값을 얻을 무엇입니까 등등. – toolic

답변

3

은 $ fscanf

int fd; // file descriptor 
byte mode; 
int status; 
fd = $fopen("filename","r"); 
status = $fscanf("%c,%h,%h",mode,addr,data); 
if(status != 3) error;// you did not read in 3 values 
case(mode) 
"r": rw=READ; 
"w": rw=WRITE; 
default: error; 
endcase 
+1

@ dave_59- 파일의 모든 행을 실행하기위한 명령문을 추가해서는 안됩니까? – sara8d

+1

예. –

+1

@ dave_59-라고 쓰면 status = $ fscanf ("% c, % h, % h", mode, addr, data) 명령이 실행됩니다. 첫 번째 라인 만 "스캔"합니다. – sara8d