// 
// definizione di comodo per stabilire il range temporale 
// 
`timescale 1ns / 1ps

// nome del modulo; senza parametri perchè è quello di test
module prova_commutatore();

  //
  // registri che conterranno i valori di input alla rete da testare
  //
  reg x; 
  reg y; 
  reg alpha;

  // 
  // filo per l'output della rete da testare (potrebbe anche essere reg)
  //
  wire z;

  // 
  // istanziazione della rete (non è una chiamata di procedura!)
  // i parametri attuali vengono collegati come specificato mediante 
  // i parametri formali nella definizione del modulo esIII4
  // prima delle parentesi tonde dei parametri troviamo il nome del modulo
  // istanziato (serve per distinguere fra istanziazioni diverse)
  // 
  commutatore k1(z,x,y,alpha);

  // 
  // statement da eseguire all'inizio della simulazione 
  // 
  initial
  begin
    
    // file di ouput per la visualizzazione del comportamento
    $dumpfile("prova_commutatore.vcd");
    // esegui il dump dei cambiamenti di tutte le variabili in gioco
    $dumpvars; 

    // assegnamento iniziale dei registri di input alla rete
    x = 0; 
    y = 1; 
    alpha = 0; 

    #10 alpha = 1; 
    #10 x = 1;
    #10 y = 0; 
    #10 alpha = 0; 
    #10 alpha = 1; 

    // attendi altri 10 nsec e termina la simulazione
    // (producendo il .vcd con il dump dei cambiamenti delle variabili)
    #10 $finish;

  // fine del (blocco di) comando da eseguire all'inizio della simulazione
  end

// fine del modulo di test
endmodule