Numero di versione Quartus® II Tcl in Verilog Register Bank

author-image

di

Questa procedura di esempio genera un file Verilog con un valore esadecimale archiviato in una banca di registri. È possibile utilizzare questa procedura per automatizzare la scrittura di piccole quantità di dati (ad esempio un numero di revisione) in una banca del registro nella progettazione.

Il file Verilog generato è denominato version_reg.v. Chiamare la procedura con il numero esadecimale che si desidera archiviare nella banca del registro. C'è un esempio di come chiamare la procedura in fondo a questa pagina.

Quando si chiama la procedura in uno script Tcl, è necessario avvolgere la chiamata della procedura in un'istruzione catch perché la procedura restituisce un errore in caso di problemi nella creazione del file Verilog. È possibile rilevare l'errore e visualizzarlo.

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
    }
}

 

Utilizzo di un'istruzione Catch

Di seguito è riportato un esempio di come chiamare la procedura sopra e rilevare eventuali errori:

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.

Il contenuto di questa pagina è il risultato della combinazione tra la traduzione umana e quella automatica del contenuto originale in lingua inglese. Questo contenuto è fornito soltanto a titolo di informazione generale e non ha pretese di completezza o accuratezza. In presenza di contraddizioni tra la versione in lingua inglese di questa pagina e la sua traduzione, fa fede la versione inglese. Visualizza la versione in lingua inglese di questa pagina.