Verilog a FPGA (bylo FPGA Altera a NIOS)

Jan Smrz jan.smrz na email.cz
Středa Únor 11 09:33:20 CET 2015


Zdravim,

k uvedenemu kodu bych mel par poznamek.

`include "counter.v" - obvykle je kompilovat to stejne knihovny namisto 
includovani do jednoho souboru


initial begin
       clock = 1;       // initial value of clock
  end

  // Clock generator
     always begin
         #10  clock = ~clock; // Toggle clock every 5 ticks
     end

Tady ridite jeden signal (clock) ze dvou procesu, coz vede k problemum, 
Doporucuji spise

     initial begin
        clock <= 1;
        forever
            #10  clock <= ~clock; // Toggle clock every 5 ticks
     end



  // Connect DUT to test bench
  counter U_counter (
   clock,
   reset,
   counter_out,
   enable
   );


Tento zapis je spravny, ale vrele doporucuji pouzivat celkovy zapis. U pozicniho 
zapisu je hrozne lehke udelat chybu, zejmena pri postupnych upravach kodu.

  // Connect DUT to test bench
  counter U_counter (
   .clock(clock),
   .reset(reset),
   .counter_out(counter_out),
   .enable(enable)
   );



Nelze ovsem provest syntezu, chybove hlaseni Error (12061): Can't synthesize 
current design -- Top partition does not contain any logic

Toto je celkem pochopitelne. Nektere konstrukty jazyka jsou urceny jen pro 
verifikaci a nelze je syntetizovat (protoze neexistuje jejich ekvivalent v 
cilove logice). Drive diskutovane zpozdeni #N je jednim z typickych prikladu.



J.S.


On 02/11/2015 06:17 AM, Jaroslav Buchta wrote:
> Jak definovat průběhy pro gate level simulaci?
>
> Pro RTL je nejlepsi vytvorit primo verilog soubor, v takovemto stylu?
>
> `include "counter.v"
> `timescale 1ns / 1ns
>
> module counter_tb();
>   // Declare inputs as regs and outputs as wires
>   reg clock, reset, enable;
>   wire [7:0] counter_out;
>
>   // Initialize all variables
>   initial begin
>       clock = 1;       // initial value of clock
>       reset = 0;       // initial value of reset
>       enable = 0;      // initial value of enable
>       #5  reset = 1;    // Assert the reset
>       #10  reset = 0;   // De-assert the reset
>       #10  enable = 1;  // Assert enable
>       #100  enable = 0; // De-assert enable
>       #500  $finish;      // Terminate simulation
>  end
>
>  // Clock generator
>     always begin
>         #10  clock = ~clock; // Toggle clock every 5 ticks
>     end
>
>  // Connect DUT to test bench
>  counter U_counter (
>   clock,
>   reset,
>   counter_out,
>   enable
>   );
> endmodule
> -------------------------------
> nebo se pouziva jina metoda?
>
> Nelze ovsem provest syntezu, chybove hlaseni Error (12061): Can't synthesize 
> current design -- Top partition does not contain any logic
>
> Kdyz provedu syntezu samotneho counter.v, tak to jde krasne simulovat na gate 
> level urovni, ale vstupni prubehy musim pokazde naklikat - neprisel jsem nejak 
> na logiku v altera modelsim
> jak je jednou vytvorit a ulozit pro dalsi simulace. A vubec se to blbe dela, 
> text je text...
>
> Jaky je bezny postup?
>
>
> ---
> This email has been checked for viruses by Avast antivirus software.
> http://www.avast.com
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list