Используйте инструмент Vivado с create_clock и create_generate_clock - PullRequest
0 голосов
/ 18 сентября 2018

Сначала я хочу знать, почему create_clock, create_generate_clock, задержка на входе, задержка на выходе.Я уже использую часы в своем коде Verilog, но когда я запускаю синтез и реализацию, я не могу получить сводку по времени.Я исследовал Google, они сказали create_clock, create_generate_clock, задержка ввода, задержка вывода важна.

Я не могу понять, как установить ограничения.Пожалуйста, научите меня.Вот мой код Verilog Я использовал эту кодовую иерархию.Этот код множитель 2by2

////// full_adder //////
`timescale 1ns / 1ns

module full_adder(A, B, C_in, C_out, S );

input A,B,C_in;

output S,C_out;

wire line1;

wire line2;

wire line3;

wire line4;

wire line5;

assign line1 = A^B,
line2 = line1 ^ C_in,
line3 = line1 & C_in, 
line4 = A & B,
line5 = line3 | line4;

assign S = line2;

assign C_out = line5;

endmodule

/////// three_input_FA//////
`timescale 1ns / 1ns

module three_input_FA(a,b,v,h,
s_in,
s_out, c_in, c_out );


input a, b, v, h, s_in, c_in;

output s_out, c_out;

wire vh;

wire vhab;

assign vh = v ^ h;
assign vhab = vh & a & b;

full_adder inst1(s_in, vhab, c_in, c_out, s_out);

endmodule

////// useful_2by2 ///// 
`timescale 1ns / 1ps


module useful_2by2(
a,b,v,h,s_out,c_out
);

input [1:0] a;
input [1:0] b;
input [1:0] v;
input [1:0] h;

wire [2:0] s_in;

output [2:0] s_out;

wire [1:0] c_in;

output [1:0] c_out;

wire [2:0]s0_in;

wire [3:0]s0_out;

wire [1:0]c0_in;

wire [3:0]c0_out;

three_input_FA inst1(a[0],b[0], v[0],h[0], s0_in[0], s0_out[0], c0_in[0],  
c0_out[0]); 

three_input_FA inst2(a[1],b[0], v[1],h[0], s0_in[1], s0_out[1], c0_out[0], 
c0_out[1]); 
three_input_FA inst3(a[0],b[1], v[0],h[1], s0_out[1],s0_out[2], c0_in[1],  
c0_out[2]);

three_input_FA inst4(a[1],b[1], v[1],h[1], s0_in[2], s0_out[3], c0_out[2], 
c0_out[3]);

assign s_in[0] = 0, s_in[1] = 0, s_in[2] = 0,
    c_in[0] = 0, c_in[1] = 0;

assign c_out[0] = c0_out[1], c_out[1] = c0_out[3];

assign s_out[0] = s0_out[0], s_out[1] = s0_out[2], s_out[2] = s0_out[3];

assign c0_in[0] = c_in[0] , c0_in[1] = c_in[1];

assign s0_in[0] = s_in[0], s0_in[1] = s_in[1], s0_in[2] = s_in[2];

endmodule

`timescale 1ns / 1ps

//////// top_2by2//////
module top_2by2(
a,b,v,h,p,clk
);

input [1:0] a;

input [1:0] b;

input [1:0] v;

input [1:0] h;

input clk;

output reg [3:0]p;

wire  [3:0] s;

wire [2:0] s_in;

wire [2:0] s_out;

wire [1:0] c_in;

wire [1:0] c_out;

useful_2by2 inst1(a,b,v,h,s_out,c_out);

assign s[0] = s_out[0],   s[1] = s_out[1],   s[2] = s_out[2],   s[3] = 
c_out[1];

always @ (posedge clk)
p = s;
endmodule

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

В вашем коде вам нужно использовать create_clock, чтобы сообщить Vivado, насколько быстро ваш clk.

У вас нет сгенерированных часов, поэтому вам не нужно использовать create_generated_clocks.Если вы используете ресурсы синхронизации Xilinx, такие как MMCM, Vivado автоматически получает ограничения для сгенерированных часов, поэтому вам не нужно использовать create_generated_clocks.

0 голосов
/ 18 сентября 2018

Вивадо требует ограничений, чтобы гарантировать, что синхронизация не нарушается от сигналов, которые являются внешними по отношению к модулю верхнего уровня, например, тактового сигнала.Инструмент гарантирует, что внутренние сигналы не будут нарушать синхронизацию удержания / настройки, но должен знать тактовую частоту, поэтому он должен генерировать тактовые импульсы в ограничениях.Кроме того, ваши входы a, b, v, h могут управлять логикой в ​​FPGA, но у Vivado нет возможности узнать, когда они могут измениться, то есть являются ли они синхронными или асинхронными по отношению к часам, и задержке, которую они могут иметь открай часов.Указывая, какие задержки имеют ваши входные данные, Vivado может обеспечить соблюдение сроков.Наконец, Vivado необходимо знать максимальную задержку вашего выхода, p, чтобы гарантировать, что сигнал не будет нарушать синхронизацию для внешних устройств.

См. https://www.xilinx.com/support/documentation/sw_manuals/xilinx2012_2/ug903-vivado-using-constraints.pdf для получения дополнительной информации об использовании ограничений.

...