Verilog Register Bank의 Quartus® II Tcl 버전 번호

author-image

기준

이 예 절차는 등록 은행에 16진수 값이 저장된 Verilog 파일을 생성합니다. 이 절차를 사용하여 디자인의 등록 은행에 소량의 데이터(예: 개정 번호)를 자동으로 작성할 수 있습니다.

생성된 Verilog 파일의 이름은 version_reg.v입니다. 등록 은행에 저장하려는 16진수 번호로 절차를 호출합니다. 이 페이지 하단에 프로시저를 호출하는 방법에 대한 예가 있습니다.

Tcl 스크립트에서 프로시저를 호출할 때 Verilog 파일을 만드는 데 문제가 있는 경우 프로시저가 오류를 반환하기 때문에 프로시저 호출을 catch 문으로 감싸야 합니다. 오류를 파악하여 표시할 수 있습니다.

proc generate_verilog { hex_value } {

    set num_digits [string length $hex_value]
    set bit_width [expr { 4 * $num_digits } ]
    set high_index [expr { $bit_width - 1 } ]
    set reset_value [string repeat "0" $num_digits]

    if { [catch {
        set fh [open "version_reg.v" w ]
        puts $fh "module version_reg (clock, reset, data_out);"
        puts $fh "    input clock;"
        puts $fh "    input reset;"
        puts $fh "    output \[$high_index:0\] data_out;"
        puts $fh "    reg \[$high_index:0\] data_out;"
        puts $fh "    always @ (posedge clock or negedge reset) begin"
        puts $fh "        if (!reset)"
        puts $fh "            data_out <= ${bit_width}'h${reset_value};"
        puts $fh "        else"
        puts $fh "            data_out <= ${bit_width}'h${hex_value};"
        puts $fh "    end"
        puts $fh "endmodule"
        close $fh
    } res ] } {
        return -code error $res
    } else {
        return 1
    }
}

 

Catch 문 사용

다음은 위의 절차를 호출하고 오류를 파악하는 방법의 예입니다.

set my_hex_number "A5"
if { [catch { generate_verilog $my_hex_number } res] } {
    post_message -type error "Couldn't generate Verilog file\n$res"
}
# If the script gets here, there were no errors.

이 페이지의 콘텐츠는 원본 영어 콘텐츠에 대한 사람 번역 및 컴퓨터 번역의 조합으로 완성되었습니다. 이 콘텐츠는 편의와 일반적인 정보 제공을 위해서만 제공되었으며, 완전하거나 정확한 것으로 간주되어선 안 됩니다. 이 페이지의 영어 버전과 번역 간 모순이 있는 경우, 영어 버전이 우선적으로 적용됩니다. 이 페이지의 영어 버전을 확인하십시오.