Così si desidera eseguire post-sintesi simulazione di netlist BLIS di iCE40.
Si consideri il seguente disegno semplice esempio (test.v
):
module test(input clk, resetn, output reg [3:0] y);
always @(posedge clk)
y <= resetn ? y + 1 : 0;
endmodule
E il suo banco di prova (test_tb.v
):
module testbench;
reg clk = 1, resetn = 0;
wire [3:0] y;
always #5 clk = ~clk;
initial begin
repeat (10) @(posedge clk);
resetn <= 1;
repeat (20) @(posedge clk);
$finish;
end
always @(posedge clk) begin
$display("%b", y);
end
test uut (
.clk(clk),
.resetn(resetn),
`ifdef POST_SYNTHESIS
. \y[0] (y[0]),
. \y[1] (y[1]),
. \y[2] (y[2]),
. \y[3] (y[3])
`else
.y(y)
`endif
);
endmodule
Esecuzione di simulazione pre-sintesi è ovviamente semplice:
$ iverilog -o test_pre test.v test_tb.v
$ ./test_pre
Per la simulazione post-sintesi dobbiamo prima eseguire il synth ESIS:
$ yosys -p 'synth_ice40 -top test -blif test.blif' test.v
Poi dobbiamo convertire la netlist BLIF ad una netlist Verilog in modo che possa essere letta da Icarus Verilog:
$ yosys -o test_syn.v test.blif
Ora siamo in grado di costruire i binari di simulazione dal banco di prova, il sintetizzato progettazione e modelli di simulazione ICE40, ed eseguirlo:
$ iverilog -o test_post -D POST_SYNTHESIS test_tb.v test_syn.v \
`yosys-config --datdir/ice40/cells_sim.v`
$ ./test_post
[..] non sarà sintetizzare con iverilog per la simulazione.
Questo è più probabile perché Yosys non è così severo come iverilog quando si tratta di far rispettare lo standard Verilog. Ad esempio, in molti casi, Yosys eccetto i file Verilog con la parola chiave reg
mancante da fili che richiederebbe la parola chiave reg
in base allo standard Verilog. Ad esempio, yosys accetterà la seguente digitazione, anche se non è valido il codice Verilog:
module test(input a, output y);
always @* y = !a;
endmodule
Per Icarus Verilog si deve aggiungere il mancante reg
:
module test(input a, output reg y);
always @* y = !a;
endmodule
Forse offtopic, ma se VHDL è un'opzione, non ho mai avuto un problema con le forme d'onda ghdl. – xvan
Che cos'è yosys? Non ne ho mai sentito parlare. – Paebbels
yosys fa parte della catena di strumenti Verilog open source per l'iCEstick e la scheda –