Так что вы хотите запустить пост-синтез моделирование netlists iCE40 BLIF.
Рассмотрим следующий простой пример конструкции (test.v
):
module test(input clk, resetn, output reg [3:0] y);
always @(posedge clk)
y <= resetn ? y + 1 : 0;
endmodule
И его испытательный стенд (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
Запуск моделирования до синтеза, конечно, просто:
$ iverilog -o test_pre test.v test_tb.v
$ ./test_pre
Для моделирования после синтеза мы должны сначала запустить синтезатор ESIS:
$ yosys -p 'synth_ice40 -top test -blif test.blif' test.v
Тогда мы должны преобразовать BLIF список соединений в Verilog список соединений, поэтому он может быть прочитан Icarus Verilog:
$ yosys -o test_syn.v test.blif
Теперь мы можем построить моделирования бинарных от испытательного стенда, синтезированные дизайн и модели iCE40 моделирования, и запустить его:
$ iverilog -o test_post -D POST_SYNTHESIS test_tb.v test_syn.v \
`yosys-config --datdir/ice40/cells_sim.v`
$ ./test_post
[..] не будет синтезировать с iverilog для моделирования.
Это, скорее всего, потому, что Йосис не такой строгий, как иверолог, когда речь заходит о соблюдении стандарта Verilog. Например, во многих случаях Yosys будет за исключением файлов Verilog с отсутствием ключевого слова reg
из проводов, для которого требуется ключевое слово reg
в соответствии со стандартом Verilog. Например, yosys будет принимать следующий ввод, даже если он не является действительным кодом Verilog:
module test(input a, output y);
always @* y = !a;
endmodule
Для Icarus Verilog нужно добавить недостающее reg
:
module test(input a, output reg y);
always @* y = !a;
endmodule
Может быть оффтоп, но если VHDL является вариант, у меня никогда не было проблемы с ghdl waveforms. – xvan
Что такое yosys? Никогда не слышал об этом. – Paebbels
yosys является частью цепочки инструментов Verilog с открытым исходным кодом для iCEstick & board –