2016-03-10 5 views
6

Я нашел, что имитация с использованием iverilog является менее подходящим методом, я могу имитировать проекты, которые не будут синтезироваться и, наоборот, проектировать, которые будут не только синтезироваться, но и работать как предназначенный для физического оборудования, не будет синтезироваться с помощью iverilog для моделирования.Возможно ли создать форму волны моделирования из выхода yosys

То, что я идеально надеюсь сделать принимать вывод yosys (а blif файл) и создать форму сигнал модели (VCD), что я могу иметь больше уверенности в.

+0

Может быть оффтоп, но если VHDL является вариант, у меня никогда не было проблемы с ghdl waveforms. – xvan

+1

Что такое yosys? Никогда не слышал об этом. – Paebbels

+0

yosys является частью цепочки инструментов Verilog с открытым исходным кодом для iCEstick & board –

ответ

8

Так что вы хотите запустить пост-синтез моделирование 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 
+0

спасибо за наконечник синтезатора эверилога (не говоря уже о великих инструментах!), честно говоря, у меня так же много проблем с действительным кодом эверилога, который не синтезируется, поскольку у меня есть другой путь круглый! (в основном это потому, что я делаю что-то из-за невежества с verilog, который будет скручивать ваши пальцы!) BTW - это ice40/cells_sim.v хорошо для 8k-доски? –

+0

@ChrisCamacho Откройте билет на github или вопрос здесь о stackoverflow, если у вас есть код Verilog, который, по вашему мнению, должен работать, но отклоняется yosys.И да, «ice40/cells_sim.v» подходит для устройств iCE40 1K, 4K и 8K. – CliffordVienna

 Смежные вопросы

  • Нет связанных вопросов^_^